// 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 }; }