This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,46 @@
// Metro module 12201 (f12202).
import { useMemo } from "react";
import { PremiumSubscriptionSKUs } from "../../premium/PremiumConstants";
import { useRecommendationsForSingleUser } from "./useWishlistRecommendations";
import { useIsNitroWishlistingEnabled } from "../experiments/WishlistingNitroExperiment";
import { createNitroSuggestedSku } from "../WishlistUtils";
export function useAddToWishlistGridItems(a0) {
let c19727_4;
const { userId, wishlist, numWishlistItemsToRecommend: numWishlistItemsToRecommend2, maxWishlistItemsToShow = numWishlistItemsToRecommend2 } = a0;
const numWishlistItemsToRecommend = maxWishlistItemsToShow;
const source = a0.source;
c19727_4 = void 0;
const recommendationsForSingleUser = useRecommendationsForSingleUser({
userId,
numItems: numWishlistItemsToRecommend2,
source
});
const { recommendations, status } = recommendationsForSingleUser;
const isNitroWishlistingEnabled = useIsNitroWishlistingEnabled("add_to_wishlist_grid_suggested_nitro");
const memo = useMemo(() => {
const r5 = Set;
let r11 = wishlist == null ? void 0 : wishlist.items.map((item) => item.skuId);
if (r11 == null) {
r11 = [];
}
return new r5(r11);
}, [wishlist]);
const r28 = isNitroWishlistingEnabled && status === "success" && !memo.has(PremiumSubscriptionSKUs.TIER_2);
c19727_4 = r28;
return {
items: useMemo(() => {
const r11 = recommendations.filter((recommendation) => !memo.has(recommendation.id)).map((item) => ({
sku: item,
itemSource: "recommendation"
}));
if (c19727_4) {
r11.unshift({
sku: createNitroSuggestedSku(),
itemSource: "takeover"
});
}
return r11.slice(0, numWishlistItemsToRecommend);
}, [recommendations, memo, r28, numWishlistItemsToRecommend]),
status
};
}
@@ -0,0 +1,6 @@
// Metro module 9751 (f9752).
import { useMemo } from "react";
import { COLLECTIBLES_APPLICATION_ID } from "../../../Constants";
export function useWishlistApplicationIds() {
return useMemo(() => [COLLECTIBLES_APPLICATION_ID], []);
}
@@ -0,0 +1,14 @@
// Metro module 8690 (f8691).
import { useMemo } from "react";
import { SKUProductLines } from "../../../Constants";
let c5664_1 = new Set([SKUProductLines.COLLECTIBLES, SKUProductLines.PREMIUM, SKUProductLines.SOCIAL_LAYER_GAME_ITEM]);
export { c5664_1 as GIFTABLE_PRODUCT_LINES };
export function useWishlistGiftableItems(a0) {
return useMemo(() => {
let r6 = a0 == null ? void 0 : a0.items.filter((item) => c5664_1.has(item.skuProductLine) && !item.isOwned);
if (r6 == null) {
r6 = [];
}
return r6;
}, [a0]);
}
@@ -0,0 +1,197 @@
// Metro module 8673 (f8674).
import { useMemo, useEffect } from "react";
import UserProfileStore from "../../user_profile/UserProfileStore";
import AuthenticationStore from "../../../stores/AuthenticationStore";
import UserStore from "../../../stores/UserStore";
import WishlistStore from "../WishlistStore";
import { getWishlistSkuIds } from "../records/WishlistRecord";
import { useStateFromStoresArray, useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
import WishlistActionCreators from "../WishlistActionCreators";
import { uniq } from "../../../_bundle/Module12";
import { useGetOrFetchStorefrontPricesForSkuIds } from "../../storefront/hooks/useGetOrFetchStorefrontPrices";
import maybeFetchUserProfile from "../../user_profile/maybeFetchUserProfile";
import useDisplayProfileSocialLayerStorefrontApplicationIds from "../../slayer_storefront/hooks/useDisplayProfileSocialLayerStorefrontApplicationIds";
import { useWishlistGiftableItems } from "./useWishlistGiftableItems.native";
function $mk81116($env) {
return () => $env.$parent[8].getUser($env[0]);
}
function $mk81117($env) {
return () => {
const r5 = $env[0];
return {
userProfile: r5 != null ? $env.$parent[6].getUserProfile(r5) : null,
wishlistId: r5 != null ? $env.$parent[6].getFirstWishlistId(r5) : null
};
};
}
function $mk81118($env) {
return () => {
const r4 = $env;
if (r4[0] != null && r4[2] == null && r4[1] != null && r4[2] == null) {
const r11 = $env.$parent;
const r15 = (0, r11[1])(r11[2][11]);
const r7 = r4[1];
r15(r7.id, r7.getAvatarURL(null, 80));
}
};
}
let useFetchWishlist, c5648_11;
let env5648 = {};
const getUserWishlistKey = function getUserWishlistKey(a0, a1) {
return a1 != null ? `${a0}:${a1}` : `${a0}:default`;
};
useFetchWishlist = function useFetchWishlist({ wishlistId, userId, source = c5648_11.USER_PROFILE }) {
let c16707_3, c16707_4, c16707_5, stateFromStores;
const USER_PROFILE = source;
c16707_3 = void 0;
c16707_4 = void 0;
c16707_5 = void 0;
stateFromStores = void 0;
const [wishlist, r26, error, r28] = useStateFromStoresArray([WishlistStore], () => wishlistId == null ? [null, "success", void 0, void 0] : [WishlistStore.getWishlist(wishlistId), WishlistStore.getStatus(wishlistId), WishlistStore.getError(wishlistId), WishlistStore.getUpdatedAt(wishlistId)]);
c16707_3 = wishlist;
c16707_4 = error;
c16707_5 = r28;
useGetOrFetchStorefrontPricesForSkuIds({
skuIds: useMemo(() => c16707_3 == null ? [] : uniq((0, getWishlistSkuIds)(c16707_3)), [wishlist])
});
stateFromStores = useStateFromStores([UserProfileStore], () => {
if (wishlistId != null && userId != null) {
return UserProfileStore.getWishlistSettings(userId, wishlistId)?.updated_at;
}
});
(0, useEffect)(() => {
if (!(wishlistId == null || WishlistStore.isFetching(wishlistId) || c16707_4 != null) && (c16707_3 == null || stateFromStores != null && c16707_5 !== stateFromStores)) {
WishlistActionCreators.fetchWishlist(wishlistId, stateFromStores, USER_PROFILE);
}
}, [wishlistId, USER_PROFILE, wishlist, stateFromStores, r28, error]);
return {
wishlist,
isFetching: r26 === "fetching",
wasFetched: r26 === "success" || r26 === "error",
error
};
};
const r34 = {
WISHLIST: "wishlist",
POPULAR: "popular"
};
c5648_11 = {
USER_PROFILE: "user_profile"
};
export const WISHLIST_IN_DM_LENGTH = 5;
export const WISHLIST_IN_DM_LENGTH_MOBILE = 6;
export const WISHLIST_TOOLTIP_DELAY_MS = 350;
export { r34 as WishlistItemSource };
export { c5648_11 as WishlistFetchSource };
export function useFetchWishlists({ wishlistIdsAndUsers, source = c5648_11.USER_PROFILE }) {
let stateFromStoresArray, memo;
const USER_PROFILE2 = source;
stateFromStoresArray = void 0;
memo = void 0;
const stateFromStoresArray2 = useStateFromStoresArray([WishlistStore], () => wishlistIdsAndUsers.map(({ wishlistId: wishlistId2 }) => wishlistId2 != null ? WishlistStore.getWishlist(wishlistId2) : null), [wishlistIdsAndUsers]);
const stateFromStores2 = useStateFromStores([WishlistStore], () => wishlistIdsAndUsers.some(({ wishlistId: wishlistId2 }) => wishlistId2 != null && WishlistStore.isFetching(wishlistId2)), [wishlistIdsAndUsers]);
const stateFromStoresArray3 = useStateFromStoresArray([WishlistStore], () => wishlistIdsAndUsers.map(({ wishlistId: wishlistId2 }) => wishlistId2 != null ? WishlistStore.getError(wishlistId2) : void 0), [wishlistIdsAndUsers]);
stateFromStoresArray = useStateFromStoresArray([UserProfileStore], () => wishlistIdsAndUsers.map(({ wishlistId: wishlistId2, userId: userId2 }) => wishlistId2 != null ? UserProfileStore.getWishlistSettings(userId2, wishlistId2)?.updated_at : void 0));
memo = useMemo(() => {
const r0 = {};
let c26259_0 = r0;
wishlistIdsAndUsers.forEach(({ userId: userId2, wishlistId: wishlistId2 }, index) => {
if (!(index >= stateFromStoresArray.length)) {
c26259_0[wishlistId2 != null ? `${userId2}:${wishlistId2}` : `${userId2}:default`] = stateFromStoresArray[index];
}
});
return r0;
}, [wishlistIdsAndUsers, stateFromStoresArray]);
(0, useEffect)(() => {
for (const wishlistIdsAndUser of wishlistIdsAndUsers) {
const { wishlistId: wishlistId2, userId: userId2 } = wishlistIdsAndUser;
if (wishlistId2 != null) {
if (!WishlistStore.isFetching(wishlistId2) && WishlistStore.getError(wishlistId2) == null) {
const wishlist = WishlistStore.getWishlist(wishlistId2);
const updatedAt = WishlistStore.getUpdatedAt(wishlistId2);
const r48 = memo[getUserWishlistKey(userId2, wishlistId2)];
if (wishlist == null || r48 != null && updatedAt !== r48) {
WishlistActionCreators.fetchWishlist(wishlistId2, r48, USER_PROFILE2);
}
}
}
}
}, [wishlistIdsAndUsers, USER_PROFILE2, memo]);
return {
wishlists: stateFromStoresArray2,
isFetching: stateFromStores2,
errors: stateFromStoresArray3
};
}
export { useFetchWishlist };
export function useIsSkuInWishlist(c16710_0, c16710_1) {
return useStateFromStores([WishlistStore], () => c16710_0 != null && WishlistStore.hasSkuId(c16710_0, c16710_1));
}
export function useShouldShowWishlistInDMGifting({ isGift, giftRecipient, isSocialLayerStorefrontEnabled = true }) {
let c16711_3, wishlistGiftableItems;
let c16711_2 = isSocialLayerStorefrontEnabled;
c16711_3 = void 0;
wishlistGiftableItems = void 0;
useEffect(() => {
if (giftRecipient?.id != null) {
maybeFetchUserProfile(giftRecipient.id);
}
}, [giftRecipient?.id]);
const displayProfileSocialLayerStorefrontApplicationIds = useDisplayProfileSocialLayerStorefrontApplicationIds({
userId: giftRecipient?.id
});
c16711_3 = displayProfileSocialLayerStorefrontApplicationIds;
const stateFromStores2 = useStateFromStores([UserProfileStore], () => giftRecipient?.id == null ? null : UserProfileStore.getFirstWishlistId(giftRecipient.id));
wishlistGiftableItems = useWishlistGiftableItems(useFetchWishlist({
wishlistId: stateFromStores2 != null ? isGift ? giftRecipient != null ? stateFromStores2 : null : null : null,
userId: giftRecipient?.id
}).wishlist);
return useMemo(() => isGift === true && giftRecipient != null && (wishlistGiftableItems.length > 0 || c16711_2 && c16711_3.length > 0), [isGift, giftRecipient, wishlistGiftableItems, displayProfileSocialLayerStorefrontApplicationIds, isSocialLayerStorefrontEnabled]);
}
export function useCurrentUserWishlist() {
let env16712;
const stateFromStores2 = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId());
const r16 = env16712 = {
$parent: env5648
};
env16712[0] = stateFromStores2;
env16712[1] = void 0;
env16712[2] = void 0;
const stateFromStores3 = useStateFromStores([UserStore], $mk81116(r16));
env16712[1] = stateFromStores3;
const stateFromStoresObject = useStateFromStoresObject([UserProfileStore], $mk81117(r16), [stateFromStores2]);
const userProfile = stateFromStoresObject.userProfile;
env16712[2] = userProfile;
const wishlistId2 = stateFromStoresObject.wishlistId;
useEffect($mk81118(r16), [stateFromStores3, stateFromStores2, userProfile]);
return {
...useFetchWishlist({
wishlistId: wishlistId2,
userId: stateFromStores2
}),
wishlistId: wishlistId2,
userProfile
};
}
export function useFetchWishlistAndProfileInfoForUser(a0) {
let env16708;
const r1 = env16708 = {
$parent: env5648
};
env16708[0] = a0;
const stateFromStores2 = useStateFromStores([UserStore], $mk81116(r1));
env16708[1] = stateFromStores2;
const stateFromStoresObject = useStateFromStoresObject([UserProfileStore], $mk81117(r1), [a0]);
const userProfile = stateFromStoresObject.userProfile;
env16708[2] = userProfile;
const wishlistId2 = stateFromStoresObject.wishlistId;
useEffect($mk81118(r1), [stateFromStores2, a0, userProfile]);
return {
...useFetchWishlist({
wishlistId: wishlistId2,
userId: a0
}),
wishlistId: wishlistId2,
userProfile
};
}
@@ -0,0 +1,280 @@
// Metro module 9749 (f9750).
import _slicedToArray from "../../../_bundle/_slicedToArray";
import { useMemo, useEffect } from "react";
import UserProfileStore from "../../user_profile/UserProfileStore";
import AuthenticationStore from "../../../stores/AuthenticationStore";
import WishlistRecommendationsStore from "../WishlistRecommendationsStore";
import WishlistRecommendationRecord, { WishlistRecommendationReason } from "../records/WishlistRecommendationRecord";
import Durations from "../../../utils/Durations";
import { useStateFromStores, useStateFromStoresObject, useStateFromStoresArray } from "../../../_bundle/Module589";
import { WishlistFetchSource, useFetchWishlists } from "./useWishlistHooks";
import { isNotNullish } from "../../../utils/GlobalUtils";
import WishlistActionCreators from "../WishlistActionCreators";
import { uniq } from "../../../_bundle/Module12";
import { useGetOrFetchStorefrontPricesForSkuIds } from "../../storefront/hooks/useGetOrFetchStorefrontPrices";
import maybeFetchUserProfile from "../../user_profile/maybeFetchUserProfile";
import { useWishlistApplicationIds } from "./useWishlistApplicationIds.native";
import { useWishlistSkuFilter } from "./useWishlistSkuFilter.native";
function $mk83234($env) {
return () => {
const r1 = $env.$parent;
(0, r1[1])(r1[2][13])($env[0]);
};
}
function $mk83235($env) {
return () => ({
defaultWishlistId: $env.$parent[5].getFirstWishlistId($env[0])
});
}
function $mk83236($env) {
return () => {
const r0 = $env;
return [{
userId: r0[0],
wishlistId: r0[1]
}];
};
}
let c6459_9, c6459_10;
let env6459 = {};
const useWishlistRecommendationsWithWishlists = function useWishlistRecommendationsWithWishlists({ userIdsAndWishlistIds, numItems: numItems4, applicationIds: applicationIds3, source = WishlistFetchSource.USER_PROFILE, filterByApplicationIds = false }) {
let c17452_1, memo, memo2, memo3, isFetching, errors, filteredRecommendations, skusToUserAndReasonRecommendations, combinedSkus;
let numItems, applicationIds;
c17452_1 = void 0;
memo = void 0;
memo2 = void 0;
memo3 = void 0;
isFetching = void 0;
errors = void 0;
filteredRecommendations = void 0;
skusToUserAndReasonRecommendations = void 0;
combinedSkus = void 0;
const memo4 = useMemo(() => userIdsAndWishlistIds.map((userIdsAndWishlistId) => userIdsAndWishlistId.userId), [userIdsAndWishlistIds]);
numItems = numItems4;
applicationIds = applicationIds3;
const stateFromStores2 = useStateFromStores([WishlistRecommendationsStore], () => WishlistRecommendationsStore.getRecommendations(memo4, applicationIds));
useEffect(() => {
if (memo4.length !== 0 && applicationIds.length !== 0) {
const recommendations2 = WishlistRecommendationsStore.getRecommendations(memo4, applicationIds);
if (recommendations2 != null) {
if (recommendations2.state === "loading") {
return void 0;
}
const r2 = recommendations2.fetchedAt < Date.now() - c6459_9;
const r24 = recommendations2.state === "success" && recommendations2.data.skus.length >= numItems;
if (!r2 && r24) {
return void 0;
}
}
WishlistActionCreators.fetchWishlistRecommendations(applicationIds, memo4, numItems);
}
}, [memo4, applicationIds, numItems]);
const r37 = memo4.length !== 0 ? applicationIds.length === 0 ? c6459_10 : stateFromStores2 : c6459_10;
c17452_1 = r37;
const r38 = filterByApplicationIds ? applicationIds : void 0;
let wishlists, memo5, memo6;
const applicationIds2 = r38;
const stateFromStores = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId());
const fetchWishlists = useFetchWishlists({
wishlistIdsAndUsers: userIdsAndWishlistIds,
source
});
wishlists = fetchWishlists.wishlists;
const { isFetching: isFetching2, errors: errors2 } = fetchWishlists;
memo5 = useMemo(() => {
const r32 = wishlists.filter(isNotNullish);
const r33 = {};
for (const item of r32) {
for (const item2 of item.items) {
if (!(item2.sku == null || item2.isOwned || applicationIds2 != null && !applicationIds2.includes(item2.sku.applicationId))) {
const skuId = item2.skuId;
const r60 = {
...r33[item2.skuId] != null ? r33[item2.skuId] : {}
};
r60[item.userId] = WishlistRecommendationReason.WISHLIST;
r33[skuId] = r60;
}
}
}
return r33;
}, [wishlists, applicationIds2]);
memo6 = useMemo(() => Object.fromEntries(wishlists.filter(isNotNullish).flatMap((item) => item.items).filter((item) => item != null && item.sku != null && !item.isOwned && (applicationIds2 == null || applicationIds2.includes(item.sku.applicationId))).map((item) => [item.skuId, item.sku])), [wishlists, applicationIds2]);
memo = useMemo(() => Object.keys(memo6).sort((a, b) => {
let r5 = memo5[b];
if (r5 == null) {
r5 = {};
}
let r6 = memo5[a];
if (r6 == null) {
r6 = {};
}
const r17 = Object.keys(r5).length - Object.keys(r6).length;
const r18 = r6;
if (r17 !== 0) {
return r17;
}
const r23 = Boolean(r5[stateFromStores]);
return Number(Boolean(r18[stateFromStores])) - Number(r23);
}).map((item) => memo6[item]), [stateFromStores, memo6, memo5]);
memo2 = memo6;
memo3 = memo5;
isFetching = isFetching2;
errors = errors2;
const memo8 = useMemo(() => c17452_1 != null && c17452_1.state === "success" ? {
filteredRecommendations: c17452_1.data.skus.filter((sku) => !(sku.id in memo2)),
skusToUserAndReasonRecommendations: c17452_1.data.skusToUserAndReason
} : {
filteredRecommendations: [],
skusToUserAndReasonRecommendations: {}
}, [r37, memo6]);
filteredRecommendations = memo8.filteredRecommendations;
skusToUserAndReasonRecommendations = memo8.skusToUserAndReasonRecommendations;
const memo9 = useMemo(() => {
const combinedSkusToUserAndReason = {
...skusToUserAndReasonRecommendations
};
for (const item of Object.entries(memo3)) {
const r33 = _slicedToArray(item, 2);
const r34 = r33[0];
combinedSkusToUserAndReason[r34] = {
...combinedSkusToUserAndReason[r34],
...r33[1]
};
}
return {
combinedSkus: [...memo, ...filteredRecommendations],
combinedSkusToUserAndReason
};
}, [memo, filteredRecommendations, memo5, skusToUserAndReasonRecommendations]);
combinedSkus = memo9.combinedSkus;
const combinedSkusToUserAndReason = memo9.combinedSkusToUserAndReason;
const memo10 = useMemo(() => {
let r3;
L8: {
r3 = "loading";
if (!isFetching) {
const r2 = c17452_1 == null;
r3 = "loading";
if (!r2) {
if (c17452_1 != null) {
const state = c17452_1.state;
r3 = "loading";
if (state === "loading") {
break L8;
}
}
r3 = errors.filter(isNotNullish).length > 0 ? "error" : c17452_1.state === "error" ? "error" : "success";
}
}
}
return r3;
}, [isFetching, r37, errors]);
useGetOrFetchStorefrontPricesForSkuIds({
skuIds: useMemo(() => uniq([...filteredRecommendations.map((filteredRecommendation) => filteredRecommendation.id), ...combinedSkus.map((combinedSku) => combinedSku.id)]), [filteredRecommendations, combinedSkus])
});
return {
recommendations: filteredRecommendations,
wishlistAndRecommendations: combinedSkus,
skusToUserAndReason: combinedSkusToUserAndReason,
status: memo10
};
};
c6459_9 = 30 * Durations.Millis.MINUTE;
c6459_10 = {
state: "success",
data: new WishlistRecommendationRecord({
skus: [],
skus_to_user_and_reason: {},
applications: []
}),
fetchedAt: 0
};
export function useWishlistRecommendationsForSingleUser({ userId, numItems: numItems4, source = WishlistFetchSource.USER_PROFILE }) {
let env17455;
const r6 = env17455 = {
$parent: env6459
};
env17455[0] = userId;
useEffect($mk83234(r6), [userId]);
const defaultWishlistId = useStateFromStoresObject([UserProfileStore], $mk83235(r6)).defaultWishlistId;
env17455[1] = defaultWishlistId;
const wishlistRecommendationsWithWishlists = useWishlistRecommendationsWithWishlists({
userIdsAndWishlistIds: useMemo($mk83236(r6), [userId, defaultWishlistId]),
applicationIds: useWishlistApplicationIds(userId),
numItems: numItems4,
source
});
const { wishlistAndRecommendations: wishlistAndRecommendations2, skusToUserAndReason, status } = wishlistRecommendationsWithWishlists;
const wishlistSkuFilter = useWishlistSkuFilter({
wishlistAndRecommendations: wishlistAndRecommendations2,
skusToUserAndReason,
userId,
numItems: numItems4
});
return {
wishlistAndRecommendations: wishlistSkuFilter.slicedWishlistAndRecommendations,
skusToUserAndReason,
status,
defaultWishlistId,
totalUnownedWishlistItemCount: wishlistSkuFilter.totalUnownedWishlistItemCount
};
}
export function useRecommendationsForApplicationIds({ applicationIds: applicationIds3, userIds, numItems: numItems2, source = WishlistFetchSource.USER_PROFILE }) {
let wishlistAndRecommendations;
let stateFromStoresArray;
wishlistAndRecommendations = void 0;
const memo7 = useMemo(() => userIds == null ? void 0 : userIds.slice(0, 5), [userIds]);
stateFromStoresArray = void 0;
useEffect(() => {
memo7.forEach((item) => {
maybeFetchUserProfile(item);
});
}, [memo7]);
stateFromStoresArray = useStateFromStoresArray([UserProfileStore], () => memo7.map((item) => {
let r5 = UserProfileStore.getFirstWishlistId(item);
if (r5 == null) {
r5 = null;
}
return r5;
}));
const r39 = useWishlistRecommendationsWithWishlists({
userIdsAndWishlistIds: useMemo(() => memo7.map((item, index) => ({
userId: item,
wishlistId: stateFromStoresArray[index]
})), [memo7, stateFromStoresArray]),
applicationIds: applicationIds3,
numItems: numItems2,
source,
filterByApplicationIds: true
});
wishlistAndRecommendations = r39.wishlistAndRecommendations;
const { skusToUserAndReason, status } = r39;
return {
recommendations: useMemo(() => wishlistAndRecommendations.slice(0, numItems2), [wishlistAndRecommendations, numItems2]),
skusToUserAndReason,
status
};
}
export function useRecommendationsForSingleUser({ userId, numItems: numItems3, source = WishlistFetchSource.USER_PROFILE }) {
let env17459;
const r11 = env17459 = {
$parent: env6459
};
env17459[0] = userId;
env17459[1] = void 0;
useEffect($mk83234(r11), [userId]);
const defaultWishlistId = useStateFromStoresObject([UserProfileStore], $mk83235(r11)).defaultWishlistId;
env17459[1] = defaultWishlistId;
const r39 = useWishlistRecommendationsWithWishlists({
userIdsAndWishlistIds: useMemo($mk83236(r11), [userId, defaultWishlistId]),
applicationIds: useWishlistApplicationIds(userId),
numItems: numItems3,
source
});
const { recommendations, skusToUserAndReason, status } = r39;
return {
recommendations: useMemo(() => recommendations.slice(0, numItems3), [recommendations, numItems3]),
skusToUserAndReason,
status
};
}
@@ -0,0 +1,31 @@
// Metro module 9752 (f9753).
import { useMemo } from "react";
import { WishlistRecommendationReason } from "../records/WishlistRecommendationRecord";
import { SKUProductLines } from "../../../Constants";
import { useIsEligibleForSocialLayerStorefrontMobilePurchasing } from "../../slayer_storefront/experiments/SocialLayerStorefrontMobilePurchasingExperiment";
import { GIFTABLE_PRODUCT_LINES } from "./useWishlistGiftableItems.native";
import { isSlayerSkuAvailableOnThisPlatform } from "../../storefront/StorefrontUtils";
export function useWishlistSkuFilter({ wishlistAndRecommendations, skusToUserAndReason, userId, numItems }) {
const isEligibleForSocialLayerStorefrontMobilePurchasing = useIsEligibleForSocialLayerStorefrontMobilePurchasing({
location: "use_wishlist_sku_filter"
});
const memo = useMemo(() => wishlistAndRecommendations.filter((wishlistAndRecommendation) => {
let r12 = !!GIFTABLE_PRODUCT_LINES.has(wishlistAndRecommendation.productLine);
if (r12) {
let r16 = wishlistAndRecommendation.productLine !== SKUProductLines.SOCIAL_LAYER_GAME_ITEM;
if (!r16) {
let r18 = isEligibleForSocialLayerStorefrontMobilePurchasing;
if (isEligibleForSocialLayerStorefrontMobilePurchasing) {
r18 = isSlayerSkuAvailableOnThisPlatform(wishlistAndRecommendation);
}
r16 = r18;
}
r12 = r16;
}
return r12;
}), [wishlistAndRecommendations, isEligibleForSocialLayerStorefrontMobilePurchasing]);
return {
totalUnownedWishlistItemCount: useMemo(() => memo.filter((item) => skusToUserAndReason[item.id] != null && skusToUserAndReason[item.id][userId] === WishlistRecommendationReason.WISHLIST).length, [memo, userId, skusToUserAndReason]),
slicedWishlistAndRecommendations: useMemo(() => memo.slice(0, numItems), [memo, numItems])
};
}