Files
discord-decomp/modules/verification/native/components/VerificationModal.tsx
T
2026-11-01 12:12:55 +02:00

253 lines
11 KiB
TypeScript

// Metro module 16340 (f16341).
import { useMemo, useEffect } from "react";
import { View } from "react-native";
import PhoneVerificationStore from "../../../../stores/PhoneVerificationStore";
import UserRequiredActionStore from "../../../../stores/UserRequiredActionStore";
import UserStore from "../../../../stores/UserStore";
import { UserRequiredActions, VerificationModalScenes } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { EmptyState } from "../../../../design/void/native";
import { VerifyPhone } from "../../../../design/components/Illustration/native/redesign/generated/VerifyPhone";
import { intl, t } from "../../../../intl/index.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { ImpressionNames, ImpressionGroups } from "../../../../_bundle/Module503";
import { getHeaderNoTitle } from "../../../../design/components/Navigator/native/NavigatorHeader.native";
import { HeaderActionButton } from "../../../../design/components/Navigator/native/HeaderActionButton.native";
import Module8334 from "../../../../_bundle/Module8334";
import { showSimpleActionSheet } from "../../../action_sheet/native/showSimpleActionSheet";
import AuthenticationActionCreators from "../../../../actions/AuthenticationActionCreators";
import Overview from "./Overview";
import ResendEmail from "./ResendEmail";
import ConfirmEmailChangeCode from "./ConfirmEmailChangeCode";
import ConfirmEmailChangeStart from "./ConfirmEmailChangeStart";
import EnterEmail from "./EnterEmail";
import AddPhone from "./AddPhone";
import PhoneActionCreators, { ChangePhoneReason } from "../../../phone/PhoneActionCreators";
import VerificationUtils from "../../VerificationUtils";
import { waitUntil } from "../../../../_bundle/Module16347";
import VerifyPhone2 from "./VerifyPhone";
import UserSettingsConfirmPassword from "../../../user_settings/account/native/UserSettingsConfirmPassword";
import { useStateFromStores } from "../../../../_bundle/Module589";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import { dismissKeyboard } from "../../../../utils/native/ChatInputUtils";
import { Navigator } from "../../../../design/components/Navigator/native/Navigator.native";
let useStyles;
const PhoneThenEmailInterstitial = function PhoneThenEmailInterstitial(props) {
const navigation = props.navigation;
const styles = useStyles();
return <EmptyState Illustration={VerifyPhone} title={intl.string(t.KLnLIP)} body={intl.string(t.XGbCq3)}>
<View style={styles.button}>
<Button text={intl.string(t["3oK4qw"])} onPress={() => {
navigation.push(UserStore.getCurrentUser()?.email != null ? VerificationModalScenes.RESEND_EMAIL : VerificationModalScenes.ENTER_EMAIL);
}} />
</View>
</EmptyState>;
};
useStyles = createStyles({
button: {
position: "absolute",
right: 32,
bottom: 32,
left: 32
}
});
export default function VerificationModal() {
const stateFromStores = useStateFromStores([PhoneVerificationStore], () => PhoneVerificationStore.getCountrySelectorOpened());
const memo = useMemo(() => {
const r5 = [{
name: VerificationModalScenes.OVERVIEW
}];
if (stateFromStores) {
r5.push({
name: VerificationModalScenes.ADD_PHONE
});
}
return r5;
}, [stateFromStores]);
useEffect(() => {
ActionSheetActionCreators.hideActionSheet();
dismissKeyboard();
}, []);
return <Navigator screens={useMemo(() => {
const r1 = {};
r1[VerificationModalScenes.CHANGE_EMAIL_COLLECT_REASONS] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.CHANGE_EMAIL_COLLECT_REASONS
},
headerTitle: getHeaderNoTitle(),
render: () => null
};
r1[VerificationModalScenes.CHANGE_EMAIL_WARNING] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.CHANGE_EMAIL_WARNING
},
headerTitle: getHeaderNoTitle(),
render: () => null
};
r1[VerificationModalScenes.OVERVIEW] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.OVERVIEW
},
gestureEnabled: false,
headerLeft: () => null,
headerTitle: getHeaderNoTitle(),
headerRight: () => <HeaderActionButton source={Module8334} accessibilityLabel={intl.string(t.PdRCRg)} onPress={() => {
showSimpleActionSheet({
key: "VerificationOverviewMore",
options: [{
label: intl.string(t["2jxGer"]),
isDestructive: true,
onPress: () => AuthenticationActionCreators.logout("verification_modal")
}],
hasIcons: false
});
}} />,
render: () => <Overview />
};
r1[VerificationModalScenes.RESEND_EMAIL] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.RESEND_EMAIL
},
headerTitle: getHeaderNoTitle(),
render: () => <ResendEmail />
};
r1[VerificationModalScenes.CHANGE_EMAIL_COMPLETE] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.RESEND_EMAIL
},
headerTitle: getHeaderNoTitle(),
render: () => <ResendEmail />
};
r1[VerificationModalScenes.CONFIRM_EMAIL_CHANGE_CODE] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.CONFIRM_EMAIL_CHANGE_CODE
},
headerTitle: getHeaderNoTitle(),
render: () => <ConfirmEmailChangeCode isChangeEmail={false} />
};
r1[VerificationModalScenes.CONFIRM_EMAIL_CHANGE_START] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.CONFIRM_EMAIL_CHANGE_START
},
headerTitle: getHeaderNoTitle(),
render: () => <ConfirmEmailChangeStart />
};
r1[VerificationModalScenes.ENTER_EMAIL] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.ENTER_EMAIL
},
headerTitle: getHeaderNoTitle(),
render: () => <EnterEmail isChangeEmail={false} />
};
r1[VerificationModalScenes.ADD_PHONE] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.ADD_PHONE
},
headerTitle: getHeaderNoTitle(),
render: (a0, c31814_0) => <AddPhone {...a0} reason={ChangePhoneReason.USER_ACTION_REQUIRED} onComplete={(event) => c31814_0.push(VerificationModalScenes.VERIFY_PHONE, {
phone: event,
onVerified: (c32147_0) => {
let c32147_1;
const VERIFY_PASSWORD = VerificationModalScenes.VERIFY_PASSWORD;
let c32147_2 = async (c32178_0) => {
let r63;
let value;
let c32178_4 = 0;
try {
c32178_4 = 1;
r63 = VerificationUtils.isPhoneReverification(UserStore.getCurrentUser(), UserRequiredActionStore.getAction()) ? await PhoneActionCreators.reverifyPhone(c32147_0, c32178_0, ChangePhoneReason.USER_ACTION_REQUIRED) : await PhoneActionCreators.addPhone(c32147_0, c32178_0, ChangePhoneReason.USER_ACTION_REQUIRED);
c32178_4 = 0;
} catch ($e) {
const r31 = $e;
let r7 = r31;
value = r31;
if (c32178_4 !== 0) {
while (true) {
try {
c32178_4 = 0;
} catch (r92) {
r7 = r92;
value = r92;
if (c32178_4 === 0) {
break;
}
continue;
}
return value;
}
}
throw r7;
}
return r63;
};
c32147_1 = async () => {
let c32179_0;
c32179_0 = void 0;
await waitUntil(() => UserRequiredActionStore.getAction() !== UserRequiredActions.REQUIRE_VERIFIED_PHONE);
if (UserRequiredActionStore.getAction() === UserRequiredActions.REQUIRE_VERIFIED_EMAIL) {
c31814_0.push(VerificationModalScenes.PHONE_THEN_EMAIL_INTERSTITIAL);
} else {
c31814_0.push(VerificationModalScenes.OVERVIEW);
}
};
c31814_0.push(VERIFY_PASSWORD, {
hideUnverifiedBanner: true,
onSubmit: function() {
return c32147_2.apply(this, arguments);
},
onSuccess: function() {
return c32147_1.apply(this, arguments);
}
});
}
})} />
};
r1[VerificationModalScenes.VERIFY_PHONE] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.VERIFY_PHONE
},
headerTitle: getHeaderNoTitle(),
render: (a0) => <VerifyPhone2 disableKeyboardAvoidingView {...a0} />
};
r1[VerificationModalScenes.VERIFY_PASSWORD] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.VERIFY_PASSWORD
},
headerTitle: getHeaderNoTitle(),
render: (a0) => <UserSettingsConfirmPassword {...a0} />
};
r1[VerificationModalScenes.PHONE_THEN_EMAIL_INTERSTITIAL] = {
impressionName: ImpressionNames.USER_VERIFICATION_MODAL,
impressionProperties: {
impression_group: ImpressionGroups.USER_VERIFICATION_MODAL_FLOW,
step: VerificationModalScenes.PHONE_THEN_EMAIL_INTERSTITIAL
},
headerTitle: getHeaderNoTitle(),
render: (a0, a1) => <PhoneThenEmailInterstitial navigation={a1} />
};
return r1;
}, [])} initialRouteStack={memo} headerBackTitle={intl.string(t["13/7kX"])} />;
};