// Metro module 12475 (f12476). import _slicedToArray from "../../../../_bundle/_slicedToArray"; import { useRef, useState, useMemo, useLayoutEffect, useCallback } from "react"; import { View } from "react-native"; import UserStore from "../../../../stores/UserStore"; import ReferralTrialStore from "../../ReferralTrialStore"; import { AnalyticEvents } from "../../../../Constants"; import { createStyles } from "../../../../design/components/Styles/native/createStyles"; import Module712 from "../../../../_bundle/Module712"; import { useStateFromStores } from "../../../../_bundle/Module589"; import useDebounce from "../../../../hooks/useDebounce"; import Module38 from "../../../../_bundle/Module38"; import { isNotNullish } from "../../../../utils/GlobalUtils"; import makeUserListPillData from "../../../main_tabs_v2/native/shared_components/user_list/makeUserListPillData"; import { useReferralProgramEligibleUsers } from "../hooks/useReferralProgramEligibleUsers"; import { intl, t } from "../../../../intl/index.native"; import { AccessibilityAnnouncer } from "../../../../_bundle/Module3902"; import { buildReferralUserRow } from "./ReferralProgramShareActionSheetUtils"; import useAnalyticsLocations from "../../../app_analytics/useAnalyticsLocations"; import AnalyticsLocation from "../../../app_analytics/AnalyticsLocation"; import AnalyticsUtils from "../../../../utils/AnalyticsUtils"; import { createReferralTrials } from "../../ReferralTrialActionCreators"; import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators"; import "../../../../_bundle/asyncRequire"; import { presentError } from "../../../toast/native/ToastUtils"; import { BottomSheetTitleHeader } from "../../../../design/components/Sheet/native/BottomSheetTitleHeader.native"; import { Text } from "../../../../design/components/Text/native/Text"; import FastImage from "../../../../components_native/common/FastImage"; import Module12480 from "../../../../_bundle/Module12480"; import Module12481 from "../../../../_bundle/Module12481"; import { useUserListActionsProps } from "../../../main_tabs_v2/native/shared_components/user_list/SearchableUserListActions"; import { ActivityIndicator } from "../../../../design/components/ActivityIndicator/native/ActivityIndicator.native"; import { Button } from "../../../../design/components/Button/native/Button.native"; import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native"; import TagListInput_native from "../../../../design/components/TagListInput/native/TagListInput.native"; import { UsersFastList } from "../../../main_tabs_v2/native/shared_components/user_list/UsersFastList"; let useStyles; let env8621 = {}; const mapToUser = function mapToUser(a0) { return [a0, UserStore.getUser(a0)]; }; useStyles = createStyles({ searchBarContainer: { paddingHorizontal: Module712.space.PX_16, paddingBottom: Module712.space.PX_24 }, searchBarRowContainer: { paddingTop: Module712.space.PX_8 }, header: { height: Module712.space.PX_64 }, subtitle: { textAlign: "center", paddingHorizontal: Module712.space.PX_16, paddingBottom: Module712.space.PX_8 }, centeredContainer: { alignItems: "center" }, errorImage: { height: 200, width: 180, marginVertical: Module712.space.PX_16 }, emptyImage: { height: 200, width: 240, marginTop: Module712.space.PX_16 }, footer: { paddingHorizontal: Module712.space.PX_16, paddingBottom: Module712.space.PX_48 } }); export default function ReferralProgramShareActionSheet() { let c19857_0; let env19856 = { $parent: env8621 }; const styles = useStyles(); const ref = useRef(null); env19856[0] = ref; const stateFromStores = useStateFromStores([ReferralTrialStore], () => ReferralTrialStore.getReferralsRemaining()); env19856[1] = stateFromStores; const [state, onChangeText] = useState(""); const r49 = _slicedToArray(useState([]), 2); const r30 = r49[0]; env19856[2] = r30; env19856[3] = r49[1]; const debounce = useDebounce(state, 400); const r56 = _slicedToArray(useState(false), 2); let loading = r56[0]; env19856[4] = r56[1]; Module38(stateFromStores != null, "Referrals remaining should not be null"); const memo = useMemo(() => { const r3 = Map; const r5 = env19856[2]; return new r3(r5 == null ? void 0 : r5.map(mapToUser)); }, [r30]); env19856[5] = memo; const memo3 = useMemo(() => Array.from(env19856[5].values()).filter(isNotNullish).map(makeUserListPillData), [memo]); env19856[6] = memo3; useLayoutEffect(() => { const current = env19856[0].current; if (current != null) { current.scrollToTop(false); } }, [state]); const referralProgramEligibleUsers = useReferralProgramEligibleUsers({ searchQuery: debounce, selectedUsers: memo, limit: 15 }); const eligibleUsers = referralProgramEligibleUsers.eligibleUsers; env19856[7] = eligibleUsers; const fetchUsers = referralProgramEligibleUsers.fetchUsers; env19856[8] = fetchUsers; const isFetching = referralProgramEligibleUsers.isFetching; env19856[9] = isFetching; const hasError = referralProgramEligibleUsers.hasError; env19856[10] = hasError; const resendUsers = referralProgramEligibleUsers.resendUsers; env19856[11] = resendUsers; const memo4 = useMemo(() => env19856[2].filter((item) => !env19856[11].has(item)), [r30, resendUsers]); env19856[12] = memo4; const memo2 = useMemo(() => env19856[9] && !env19856[10] && env19856[7].length === 0, [isFetching, hasError, eligibleUsers]); const r34 = intl.string(t.DXgoi2); const callback2 = useCallback((c27293_0) => { (0, env19856[3])((a0) => { const indexOf = a0.indexOf; const r9 = indexOf.call(a0, c27293_0.id); const r10 = [...a0]; if (r9 === -1) { r10.push(c27293_0.id); } else { r10.splice(r9, 1); } return r10; }); }, []); env19856[13] = callback2; const callback = useCallback((a0) => { const r7 = env19856[6][a0]; const user = UserStore.getUser(r7.id); if (user != null) { (0, env19856[13])(user); AccessibilityAnnouncer.announce(intl.formatToPlainString(t.srlxB8, { text: r7.text })); } }, [callback2, memo3]); const memo5 = useMemo(() => [env19856[7].length], [eligibleUsers]); const callback3 = useCallback(() => ({ type: "section", props: { hideTitle: true } }), []); const callback4 = useCallback((a0, a1) => buildReferralUserRow({ eligibleUsers: env19856[7], row: a1, selectedUserIds: env19856[2], resendUsers: env19856[11], referralsRemaining: env19856[1], selectedNotResendUsers: env19856[12], onSelectUser: env19856[13] }), [eligibleUsers, callback2, r30, resendUsers, stateFromStores, memo4]); const analyticsLocations = useAnalyticsLocations(AnalyticsLocation.PREMIUM_MARKETING_REFERALL_PROGRAM_SHARE_MODAL).analyticsLocations; env19856[14] = analyticsLocations; c19857_0 = void 0; c19857_0 = async (c30521_0) => { let c30521_1, c30521_2; let c30521_3 = 0; const r15 = void 0; L10: { try { let env31656; c30521_2 = r15; const r31 = env31656 = {}; c30521_1 = r31; env31656[0] = c30521_0; env31656[1] = void 0; c30521_3 = 1; (0, env19856[4])(true); AnalyticsUtils.track(AnalyticEvents.REFERRAL_PROGRAM_SHARE_CTA_CLICKED, { location_stack: env19856[14] }); env31656[1] = await createReferralTrials(c30521_0.map((item) => item.id)); (0, env19856[4])(false); ActionSheetActionCreators.openLazy(import("./ReferralProgramShareConfirmationActionSheet"), "referral-program-share-action-sheet", { selectedUsers: env31656[0], trialCreationResult: env31656[1] }); c30521_3 = 0; } catch ($e) { let r30 = $e; if (c30521_3 !== 0) { while (true) { try { c30521_3 = 0; (0, env19856[4])(false); presentError(intl.string(t.R0RpRX)); break L10; } catch ($e) { r30 = $e; if (c30521_3 === 0) { break; } } } } throw r30; } } }; env19856[15] = useCallback(function() { return c19857_0.apply(this, arguments); }, [analyticsLocations]); const r144 = env19856[1] === 0 ? intl.string(t.SY9tyI) : intl.string(t["2dVCLl"]), [stateFromStores])} /> {r34} ; const header = hasError ? {intl.string(t.a9HOKg)} {intl.string(t.JjjeZb)} : eligibleUsers.length === 0 && debounce.length > 0 ? {intl.string(t["PFp+aJ"])} {intl.string(t.eBIGB4)} : r144; const userListActionsProps = useUserListActionsProps({ actions: [], style: state.trim().length > 0 ? void 0 : styles.searchBarRowContainer }); const { renderHeader, headerSize } = userListActionsProps; const callback5 = useCallback((a0) => { if (a0.nativeEvent.contentOffset.y + a0.nativeEvent.layoutMeasurement.height >= a0.nativeEvent.contentSize.height - 150) { (0, env19856[8])(); } }, [fetchUsers]); const r254 = ; const props = { size: "lg", text: intl.string(t.ItpQxk), onPress: () => { (0, env19856[15])(Array.from(env19856[5].values())); }, loading, disabled: null }; if (!loading) { loading = r30.length === 0; } props.disabled = loading; return