279 lines
11 KiB
TypeScript
279 lines
11 KiB
TypeScript
// 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 = <View style={styles.header}>
|
|
<BottomSheetTitleHeader title={useMemo(() => env19856[1] === 0 ? intl.string(t.SY9tyI) : intl.string(t["2dVCLl"]), [stateFromStores])} />
|
|
<Text variant="text-xs/medium" color="text-default" lineClamp={2} style={styles.subtitle}>{r34}</Text>
|
|
</View>;
|
|
const header = hasError ? <View style={styles.centeredContainer}>
|
|
<FastImage source={{
|
|
uri: Module12480
|
|
}} resizeMode="contain" style={styles.errorImage} />
|
|
<Text variant="heading-xl/bold" style={styles.subtitle}>
|
|
{intl.string(t.a9HOKg)}
|
|
</Text>
|
|
<Text variant="text-md/medium" color="text-default" style={styles.subtitle}>
|
|
{intl.string(t.JjjeZb)}
|
|
</Text>
|
|
</View> : eligibleUsers.length === 0 && debounce.length > 0 ? <View style={styles.centeredContainer}>
|
|
<FastImage source={{
|
|
uri: Module12481
|
|
}} resizeMode="contain" style={styles.emptyImage} />
|
|
<Text variant="heading-xl/bold" style={styles.subtitle}>
|
|
{intl.string(t["PFp+aJ"])}
|
|
</Text>
|
|
<Text variant="text-md/medium" color="text-default" style={styles.subtitle}>
|
|
{intl.string(t.eBIGB4)}
|
|
</Text>
|
|
</View> : 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 = <ActivityIndicator />;
|
|
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 <BottomSheet scrollable startExpanded header={header} footer={<View style={[styles.footer]}>
|
|
<Button {...props} />
|
|
</View>}>
|
|
<View style={styles.searchBarContainer}>
|
|
<TagListInput_native onChangeText={onChangeText} onRemove={callback} tags={memo3} placeholder={intl.string(t.Kd5RaI)} />
|
|
</View>
|
|
{memo2 ? r254 : null}
|
|
<UsersFastList ref={ref} inActionSheet sections={memo5} getItemProps={callback4} getSectionProps={callback3} renderListHeader={renderHeader} listHeaderSize={headerSize} insetEnd={80} onScroll={callback5} />
|
|
</BottomSheet>;
|
|
};
|