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,28 @@
// Metro module 9187 (f9188).
import { Endpoints } from "../../Constants";
import TrackedHTTPUtils from "../../utils/TrackedHTTPUtils";
import { NetworkActionNames } from "../../_bundle/Module503";
export function sendConfirmationCode(is_resend = false) {
return TrackedHTTPUtils.put({
url: Endpoints.USER_EMAIL,
trackedActionData: {
event: NetworkActionNames.USER_ACCOUNT_EMAIL_CHANGE_SEND_CODE,
properties: {
is_resend
}
},
rejectWithError: false
});
}
export async function confirmEmailChange(code) {
return (await TrackedHTTPUtils.post({
url: Endpoints.USER_EMAIL_VERIFY_CODE,
body: {
code
},
trackedActionData: {
event: NetworkActionNames.USER_ACCOUNT_EMAIL_CHANGE_VERIFY_CODE
},
rejectWithError: false
})).body;
}
+60
View File
@@ -0,0 +1,60 @@
// Metro module 9179 (f9180).
import { create } from "../../_bundle/Module644";
import { batchUpdates } from "../../_bundle/Module705";
function $mk82057($env) {
return () => $env.$parent[3].setState($mk106296($env));
}
function $mk106296($env) {
return (a0) => {
const r2 = $env;
const errors = {
...a0.errors
};
errors[r2[0]] = r2[1];
return {
errors
};
};
}
let env6025 = {};
const r11 = {
EMAIL: "email",
EMAIL_TOKEN: "email_token",
PASSWORD: "password"
};
const c6025_2 = {
errors: null,
emailToken: null
};
const c6025_3 = create(() => c6025_2);
export { r11 as ChangeEmailFields };
export { c6025_3 as useChangeEmailStore };
export function setChangeEmailError(a0, a1) {
let env17051;
const r1 = env17051 = {
$parent: env6025
};
env17051[0] = a0;
env17051[1] = a1;
batchUpdates($mk82057(r1));
}
export function useChangeEmailError(c17052_0) {
return [c6025_3(({ errors }) => errors == null ? void 0 : errors[c17052_0]), (a0) => {
let env26383;
const r2 = env6025;
const r4 = env26383 = {
$parent: r2
};
env26383[0] = c17052_0;
env26383[1] = a0;
batchUpdates($mk82057(r4));
}];
}
export function setEmailToken(emailToken) {
batchUpdates(() => c6025_3.setState({
emailToken
}));
}
export function resetChangeEmailStore() {
batchUpdates(() => c6025_3.setState(c6025_2, true));
}
+13
View File
@@ -0,0 +1,13 @@
// Metro module 9182 (f9183).
import { ChangeEmailReasons } from "./VerificationConstants";
import { intl, t } from "../../intl/index.native";
let c6027_2;
const r14 = {};
r14[ChangeEmailReasons.DISCORD_EMPLOYEE_ASKED_ME_TO] = () => intl.string(t.naBTFO);
r14[ChangeEmailReasons.SOMEONE_ASKED_ME_TO] = () => intl.string(t.LQ0RUP);
r14[ChangeEmailReasons.NEW_EMAIL] = () => intl.string(t.oOqQjw);
r14[ChangeEmailReasons.SOMETHING_ELSE] = () => intl.string(t.p38n1b);
c6027_2 = r14;
export function getChangeEmailReasonDisplayText(a0) {
return c6027_2[a0]();
}
@@ -0,0 +1,22 @@
// Metro module 9181 (f9182).
const r15 = {
DISCORD_EMPLOYEE_ASKED_ME_TO: 0,
0: "DISCORD_EMPLOYEE_ASKED_ME_TO",
SOMEONE_ASKED_ME_TO: 1,
1: "SOMEONE_ASKED_ME_TO",
NEW_EMAIL: 2,
2: "NEW_EMAIL",
SOMETHING_ELSE: 3,
3: "SOMETHING_ELSE"
};
const r24 = [r15.DISCORD_EMPLOYEE_ASKED_ME_TO, r15.SOMEONE_ASKED_ME_TO, r15.NEW_EMAIL, r15.SOMETHING_ELSE];
const set = new Set([r15.DISCORD_EMPLOYEE_ASKED_ME_TO, r15.SOMEONE_ASKED_ME_TO]);
export { r15 as ChangeEmailReasons };
export { r24 as CHANGE_EMAIL_REASONS_ORDER };
export { set as SUSPICIOUS_CHANGE_EMAIL_REASONS };
export const COMMON_SCAMS_EDUCATION_HC_ARTICLE = "https://discord.com/safety/understanding-and-avoiding-common-scams";
export const FREE_TEXT_RESPONSE_MAX_LENGTH = 1024;
export const VERIFICATION_LAYER_KEY = "verification";
export const AGREEMENTS_MODAL_KEY = "AGREEMENTS_MODAL_KEY";
export const EMAIL_VERIFICATION_MODAL_KEY = "Email Verification";
export const PHONE_THEN_EMAIL_INTERSTITIAL_MODAL_KEY = "PHONE_THEN_EMAIL_INTERSTITIAL_MODAL_KEY";
@@ -0,0 +1,43 @@
// Metro module 9185 (f9186).
import { UserRequiredActions, VerificationTypes } from "../../Constants";
import { intl, t } from "../../intl/index.native";
import Module12 from "../../_bundle/Module12";
const { CAPTCHA, EMAIL, PHONE, REVERIFY_EMAIL, REVERIFY_PHONE } = VerificationTypes;
const r21 = {};
r21[UserRequiredActions.REQUIRE_VERIFIED_EMAIL] = [EMAIL];
r21[UserRequiredActions.REQUIRE_VERIFIED_PHONE] = [PHONE];
r21[UserRequiredActions.REQUIRE_REVERIFIED_EMAIL] = [REVERIFY_EMAIL];
r21[UserRequiredActions.REQUIRE_REVERIFIED_PHONE] = [REVERIFY_PHONE];
r21[UserRequiredActions.REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE] = [EMAIL, PHONE];
r21[UserRequiredActions.REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE] = [PHONE, REVERIFY_EMAIL];
r21[UserRequiredActions.REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE] = [EMAIL, REVERIFY_PHONE];
r21[UserRequiredActions.REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE] = [REVERIFY_EMAIL, REVERIFY_PHONE];
r21[UserRequiredActions.REQUIRE_CAPTCHA] = [CAPTCHA];
r21[UserRequiredActions.AGREEMENTS] = [];
r21[UserRequiredActions.REQUIRE_SAFETY_FLOWS] = [];
let c6030_5 = r21;
const r45 = {
isPhoneReverification: (a0, a1) => a0 !== void 0 && a0.isPhoneVerified() && (a1 === UserRequiredActions.REQUIRE_REVERIFIED_PHONE || a1 === UserRequiredActions.REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE || a1 === UserRequiredActions.REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE),
isEmailReverification: (a0) => a0 === UserRequiredActions.REQUIRE_REVERIFIED_EMAIL || a0 === UserRequiredActions.REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE || a0 === UserRequiredActions.REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE,
isFullScreenVerification: function isFullScreenVerification(a0) {
return a0 === UserRequiredActions.REQUIRE_CAPTCHA || a0 === UserRequiredActions.REQUIRE_VERIFIED_EMAIL || a0 === UserRequiredActions.REQUIRE_VERIFIED_PHONE || a0 === UserRequiredActions.REQUIRE_REVERIFIED_PHONE || a0 === UserRequiredActions.REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE || a0 === UserRequiredActions.REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE || this.isEmailReverification(a0);
},
getVerificationTypes: (a0) => a0 != null && typeof a0 !== "symbol" ? c6030_5[a0] : [],
getButtonTitle: (a0) => {
if (VerificationTypes.EMAIL === a0) {
return intl.string(t["1MPz27"]);
}
if (VerificationTypes.PHONE === a0) {
return intl.string(t.mjJeco);
}
if (VerificationTypes.REVERIFY_EMAIL === a0) {
return intl.string(t.nmdPFX);
}
if (VerificationTypes.REVERIFY_PHONE === a0) {
return intl.string(t.of2125);
}
return intl.string(t["oF6+Ww"]);
},
areVerificationTypesEqual: (a0, a1) => Module12.isEqual(a0, a1)
};
export default r45;
@@ -0,0 +1,69 @@
// Metro module 9225 (f9226).
import { ChangeEmailFields, setChangeEmailError } from "../ChangeEmailStore";
import { saveAccountChanges } from "../../../actions/UserSettingsAccountActionCreators";
import { showInvalidUsernameToast } from "../../user_settings/account/native/showInvalidUsernameToastNative";
import { VerificationModalScenes } from "../../../ConstantsIOS";
export async function saveEmail(c26396_0, c26396_1, c26396_2) {
let r52;
let c26396_4;
let c30064_0, c30064_1, c30064_2, c30064_3, c30064_4, c30064_5, c30064_6;
L28: {
L27: {
c26396_4 = void 0;
c30064_0 = c26396_1;
c30064_1 = c26396_2;
c30064_2 = void 0;
c30064_3 = void 0;
c30064_4 = void 0;
c30064_5 = void 0;
c30064_6 = void 0;
c30064_2 = await saveAccountChanges(c26396_0, {
close: false
});
if (!c30064_2.ok) {
if (c30064_2.body?.username != null) {
showInvalidUsernameToast();
}
if (c30064_2.body?.email != null) {
(0, setChangeEmailError)(ChangeEmailFields.EMAIL, c30064_2.body.email[0]);
c30064_3 = c30064_0.getState().routes.length;
c30064_4 = (0, c30064_1)(VerificationModalScenes.ENTER_EMAIL);
if (c30064_4 !== -1) {
c30064_0.pop(c30064_3 - c30064_4 - 1);
break L27;
}
c30064_0.replace(VerificationModalScenes.ENTER_EMAIL);
break L27;
}
if (c30064_2.body?.email_token != null) {
(0, setChangeEmailError)(ChangeEmailFields.EMAIL_TOKEN, c30064_2.body.email_token[0]);
c30064_5 = c30064_0.getState().routes.length;
c30064_6 = (0, c30064_1)(VerificationModalScenes.CONFIRM_EMAIL_CHANGE_CODE);
if (c30064_6 !== -1) {
c30064_0.pop(c30064_5 - c30064_6 - 1);
} else {
c30064_0.replace(VerificationModalScenes.CONFIRM_EMAIL_CHANGE_CODE);
}
}
}
r52 = c30064_2;
break L28;
}
return null;
}
return r52;
}
export function finishChangeEmailFlow(a0, a1) {
a0.replace(VerificationModalScenes.CHANGE_EMAIL_COMPLETE, {
email: a1
});
}
export function finishVerifyEmailFlow(a0, a1) {
const length = a0.getState().routes.length;
const r15 = a1(VerificationModalScenes.RESEND_EMAIL);
if (r15 !== -1) {
a0.pop(length - r15);
} else {
a0.replace(VerificationModalScenes.RESEND_EMAIL);
}
}
@@ -0,0 +1,209 @@
// Metro module 9234 (f9235).
import { useState, useRef, useEffect } from "react";
import { ScrollView, View } from "react-native";
import PhoneStore from "../../../phone/PhoneStore";
import UserRequiredActionStore from "../../../../stores/UserRequiredActionStore";
import UserStore from "../../../../stores/UserStore";
import { UserFlags } from "../../../../Constants";
import { NOOP_NULL } from "../../../../_bundle/Module505";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useStateFromStores } from "../../../../_bundle/Module589";
import VerificationUtils from "../../VerificationUtils";
import PhoneActionCreators from "../../../phone/PhoneActionCreators";
import { APIError } from "../../../../errors/index";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import FormPhoneOrEmail from "../../../phone/native/FormPhoneOrEmail";
import { PhoneOrEmailSelectorForceMode } from "../../../phone/PhoneOrEmailUtils";
import ModalActionCreators from "../../../../actions/ModalActionCreators";
import { Button } from "../../../../design/components/Button/native/Button.native";
import AlertActionCreators from "../../../../actions/native/AlertActionCreators";
const useStyles = createStyles({
background: {
flex: 1,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
},
container: {
padding: 16,
flex: 1
},
title: {
textAlign: "center"
},
input: {
marginTop: 24
},
redesignInput: {
borderRadius: Module712.radii.lg
},
button: {
marginTop: 8
}
});
export default function AddPhone(props) {
let r69;
let stateFromStores, isPhoneReverification, c17081_5, state, setState, state2, setState2, setState3, ref, setState4;
let header = props.header;
const { onComplete, onDeletePhone, reason, style } = props;
stateFromStores = void 0;
isPhoneReverification = void 0;
c17081_5 = void 0;
state = void 0;
setState = void 0;
state2 = void 0;
setState2 = void 0;
setState3 = void 0;
ref = void 0;
setState4 = void 0;
let _handleSubmit2 = function _handleSubmit() {
const r9 = async () => {
let c30068_2;
let c30068_3 = 0;
let c31498_0, c31498_1, c31498_2;
L12: {
try {
c31498_0 = void 0;
c31498_1 = void 0;
const r37 = `${state}${state2}`;
c31498_0 = r37;
setState4(true);
c30068_3 = 2;
if (isPhoneReverification) {
await PhoneActionCreators.beginReverifyPhone(r37, reason);
} else {
await PhoneActionCreators.beginAddPhone(r37, reason);
}
(0, onComplete)(c31498_0);
c30068_3 = 1;
c30068_3 = 0;
(0, setState4)(false);
} catch ($e) {
const r33 = $e;
let r7 = r33;
c30068_2 = r33;
let r34 = c30068_3;
if (r34 !== 0) {
while (true) {
if (r34 === 1) {
try {
const r131 = c30068_2;
c30068_3 = 0;
(0, setState4)(false);
throw r131;
} catch (r129) {
r7 = r129;
c30068_2 = r129;
r34 = c30068_3;
if (r34 === 0) {
break;
}
}
} else {
try {
const r108 = c30068_2;
c30068_3 = 1;
c31498_2 = r108;
c31498_1 = new APIError(c31498_2);
(0, setState3)(c31498_1.getAnyErrorMessage());
c30068_3 = 0;
(0, setState4)(false);
break L12;
} catch (r105) {
r7 = r105;
c30068_2 = r105;
r34 = c30068_3;
if (r34 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
};
_handleSubmit2 = r9;
return r9.apply(this, arguments);
};
const styles = useStyles();
stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const stateFromStores3 = useStateFromStores([UserRequiredActionStore], () => UserRequiredActionStore.getAction());
const phone = stateFromStores?.phone;
isPhoneReverification = VerificationUtils.isPhoneReverification(stateFromStores, stateFromStores3);
const r48 = onDeletePhone != null && phone != null && stateFromStores?.email != null && !isPhoneReverification;
const stateFromStores2 = useStateFromStores([PhoneStore], () => PhoneStore.getCountryCode());
const [countryCode, r62] = stateFromStores2.code.split(" ");
c17081_5 = r62;
let r65 = countryCode;
if (r65 == null) {
r65 = "";
}
[state, setState] = useState(r65);
if (phone != null) {
r69 = phone.replace(state, "");
} else {
r69 = r62;
if (r69 == null) {
r69 = "";
}
}
[state2, setState2] = useState(r69);
let error;
[error, setState3] = useState(null);
ref = useRef(true);
let loading;
[loading, setState4] = useState(false);
useEffect(() => {
if (ref.current) {
ref.current = false;
} else {
let r5 = c17081_5;
if (r5 == null) {
r5 = "";
}
setState2(r5);
}
}, [r62]);
if (header == null) {
header = <Text style={styles.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{phone != null && !isPhoneReverification ? intl.string(t.WO0zBE) : intl.string(t.hY8QTR)}
</Text>;
}
const label = phone != null && !isPhoneReverification ? intl.string(t.K6R0UP) : intl.string(t["64bX0M"]);
const handleSubmit = function handleSubmit() {
return _handleSubmit2.apply(this, arguments);
};
return <ScrollView style={[styles.background, style]} keyboardShouldPersistTaps="handled" alwaysBounceVertical={false}>
<View style={styles.container}>
{header}
<FormPhoneOrEmail style={styles.input} textInputStyle={styles.redesignInput} label={label} alpha2={stateFromStores2.alpha2} countryCode={countryCode} value={state2} onChangeText={(text, a1) => {
setState2(text);
setState(a1);
}} forceMode={PhoneOrEmailSelectorForceMode.PHONE} returnKeyType="done" onSubmitEditing={handleSubmit} error={error} onPressCountrySelector={() => ModalActionCreators.pushLazy(import("./CountrySelectModal"))} autoFocus />
<View style={styles.button}>
<Button variant="primary" size={r48 ? "md" : "lg"} text={intl.string(t.PDTjLN)} onPress={handleSubmit} loading={loading} />
</View>
{r48 ? <View style={styles.button}>
<Button variant="secondary" size="md" text={intl.string(t.kYvzoQ)} onPress={function onPress() {
if (stateFromStores != null) {
if (stateFromStores.hasFlag(UserFlags.MFA_SMS)) {
AlertActionCreators.openLazy({
importer: () => import("../../../user_settings/account/native/SMSBackupWarningAlert").then(({ default: Component }) => (a0) => {
let onConfirm = onDeletePhone;
if (onDeletePhone == null) {
onConfirm = NOOP_NULL;
}
return <Component {...a0} onConfirm={onConfirm} />;
})
});
} else if (onDeletePhone != null) {
onDeletePhone();
}
}
}} />
</View> : null}
</View>
</ScrollView>;
};
@@ -0,0 +1,77 @@
// Metro module 9180 (f9181).
import { useCallback, useMemo } from "react";
import { ScrollView, View } from "react-native";
import UserStore from "../../../../stores/UserStore";
import { CHANGE_EMAIL_REASONS_ORDER, SUSPICIOUS_CHANGE_EMAIL_REASONS } from "../../VerificationConstants";
import { AnalyticEvents } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import AnalyticsUtils from "../../../../utils/AnalyticsUtils";
import { VerificationModalScenes } from "../../../../ConstantsIOS";
import { TableRadioGroup } from "../../../../design/components/TableRow/native/TableRadioGroup.native";
import { TableRadioRow } from "../../../../design/components/TableRow/native/TableRadioRow.native";
import { getChangeEmailReasonDisplayText } from "../../ChangeEmailUtils";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
const useStyles = createStyles({
background: {
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
},
container: {
paddingVertical: Module712.space.PX_12,
paddingHorizontal: Module712.space.PX_16
},
radioGroup: {
paddingTop: Module712.space.PX_16,
paddingBottom: 38
},
title: {
textAlign: "center"
}
});
export default function ChangeEmailCollectReasons(props) {
let navigation, callback;
const { changeEmailReason, setChangeEmailReason } = props;
navigation = void 0;
callback = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
navigation = useNavigation();
const callback2 = useCallback(() => {
AnalyticsUtils.track(AnalyticEvents.USER_ACCOUNT_EMAIL_CHANGE_REASON_CONTINUE, {
change_email_reason_enum: changeEmailReason
});
if (changeEmailReason != null && SUSPICIOUS_CHANGE_EMAIL_REASONS.has(changeEmailReason)) {
navigation.push(VerificationModalScenes.CHANGE_EMAIL_WARNING);
} else {
navigation.push(VerificationModalScenes.ENTER_EMAIL);
}
}, [navigation, changeEmailReason]);
callback = useCallback((a0) => {
AnalyticsUtils.track(AnalyticEvents.USER_ACCOUNT_EMAIL_CHANGE_REASON_SELECTED, {
change_email_reason_enum: a0
});
setChangeEmailReason(a0);
}, [setChangeEmailReason]);
const memo = useMemo(() => {
let value = changeEmailReason;
if (changeEmailReason == null) {
value = "";
}
return <TableRadioGroup value={value} onChange={callback} hasIcons={false}>
{CHANGE_EMAIL_REASONS_ORDER.map((item, index) => <TableRadioRow key={`formrow-${index}`} label={getChangeEmailReasonDisplayText(item)} value={item} />)}
</TableRadioGroup>;
}, [changeEmailReason, callback]);
return stateFromStores == null ? null : <ScrollView keyboardShouldPersistTaps="handled" alwaysBounceVertical={false} style={styles.background}>
<View style={styles.container}>
<Text style={styles.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{intl.string(t["41NIIh"])}
</Text>
<View style={styles.radioGroup}>{memo}</View>
<Button size="md" variant="primary" onPress={callback2} text={intl.string(t.XiOHRX)} disabled={changeEmailReason == null} />
</View>
</ScrollView>;
};
@@ -0,0 +1,69 @@
// Metro module 9231 (f9232).
import { Image as Image2, ScrollView, View } from "react-native";
import { resetChangeEmailStore } from "../../ChangeEmailStore";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import EmailVerificationModalActionCreators from "../../../../actions/native/EmailVerificationModalActionCreators";
import Module9188 from "../../../../_bundle/Module9188";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
let useStyles;
const handlePress = function handlePress() {
resetChangeEmailStore();
EmailVerificationModalActionCreators.close();
};
useStyles = createStyles({
contentContainer: {
flexGrow: 2,
paddingHorizontal: Module712.space.PX_16,
paddingBottom: Module712.space.PX_16,
gap: 20,
alignItems: "center"
},
image: {
height: 190,
width: 220,
resizeMode: "contain"
},
title: {
textAlign: "center"
},
body: {
textAlign: "center"
},
bodyInner: {
gap: 2
},
tooltip: {
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH,
width: "100%",
padding: 12,
borderWidth: 1,
borderStyle: "solid",
borderRadius: Module712.radii.sm,
borderColor: Module712.colors.BORDER_SUBTLE,
...Module712.shadows.SHADOW_LOW
}
});
export default function ChangeEmailComplete(props) {
const email = props.email;
const styles = useStyles();
return <ScrollView keyboardShouldPersistTaps="handled" alwaysBounceVertical={false} contentContainerStyle={styles.contentContainer}>
<Image2 style={styles.image} source={Module9188} />
<View style={styles.bodyInner}>
<Text style={styles.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{intl.string(t["8O+nF7"])}
</Text>
<Text style={styles.body} variant="text-sm/medium" color="text-default">
{intl.format(t.Zvx0O3, {
email
})}
</Text>
</View>
<Text style={styles.tooltip} variant="text-sm/normal">
{intl.string(t.yb7itQ)}
</Text>
<Button text={intl.string(t.BddRzS)} onPress={handlePress} grow />
</ScrollView>;
};
@@ -0,0 +1,68 @@
// Metro module 9183 (f9184).
import { useCallback } from "react";
import { ScrollView, View } from "react-native";
import UserStore from "../../../../stores/UserStore";
import { COMMON_SCAMS_EDUCATION_HC_ARTICLE } from "../../VerificationConstants";
import { AnalyticEvents } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import { useStateFromStores } from "../../../../_bundle/Module589";
import AnalyticsUtils from "../../../../utils/AnalyticsUtils";
import { VerificationModalScenes } from "../../../../ConstantsIOS";
import { TrafficConeSpotIllustration } from "../../../../design/assets/native";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
import EmailVerificationModalActionCreators from "../../../../actions/native/EmailVerificationModalActionCreators";
const useStyles = createStyles({
container: {
flex: 1,
padding: Module712.space.PX_16,
alignItems: "center",
justifyContent: "center"
},
title: {
marginTop: Module712.space.PX_16
},
body: {
marginTop: Module712.space.PX_8,
textAlign: "center"
},
buttonContainer: {
flexDirection: "row",
gap: Module712.space.PX_8,
marginTop: Module712.space.PX_16
}
});
export default function ChangeEmailWarning(props) {
const changeEmailReason = props.changeEmailReason;
const styles = useStyles();
const navigation = useNavigation();
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const callback = useCallback(() => {
AnalyticsUtils.track(AnalyticEvents.USER_ACCOUNT_EMAIL_CHANGE_WARNING_CONTINUE, {
change_email_reason_enum: changeEmailReason
});
navigation.push(VerificationModalScenes.ENTER_EMAIL);
}, [navigation, changeEmailReason]);
return stateFromStores != null ? <ScrollView keyboardShouldPersistTaps="handled" alwaysBounceVertical={false}>
<View style={styles.container}>
<TrafficConeSpotIllustration />
<Text style={styles.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{intl.string(t.hhR7gX)}
</Text>
<Text style={styles.body} accessibilityRole="header" variant="text-md/normal" color="mobile-text-heading-primary">
{intl.format(t.rqWXUf, {
hcArticle: COMMON_SCAMS_EDUCATION_HC_ARTICLE
})}
{"\n\n"}
{intl.string(t["3LW10C"])}
</Text>
<View style={styles.buttonContainer}>
<Button size="md" variant="tertiary" text={intl.string(t.rwTBFs)} onPress={callback} shrink />
<Button size="md" variant="primary" text={intl.string(t["ETE/oC"])} onPress={() => EmailVerificationModalActionCreators.close()} shrink />
</View>
</View>
</ScrollView> : null;
};
@@ -0,0 +1,28 @@
// Metro module 9189 (f9190).
import { useCallback } from "react";
import { setEmailToken } from "../../ChangeEmailStore";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import { VerificationModalScenes } from "../../../../ConstantsIOS";
import ConfirmEmailCode from "./ConfirmEmailCode";
import { confirmEmailChange, sendConfirmationCode } from "../../ChangeEmailActionCreators";
import { intl, t } from "../../../../intl/index.native";
export default function ConfirmEmailChangeCode(props) {
let c17059_0;
const isChangeEmail = props.isChangeEmail;
const navigation = useNavigation();
const callback = useCallback((a0) => {
setEmailToken(a0 == null ? null : a0);
if (isChangeEmail) {
navigation.push(VerificationModalScenes.CHANGE_EMAIL_COLLECT_REASONS);
} else {
navigation.push(VerificationModalScenes.ENTER_EMAIL);
}
}, [isChangeEmail, navigation]);
c17059_0 = void 0;
c17059_0 = async (c30054_0) => await confirmEmailChange(c30054_0);
return <ConfirmEmailCode onFormSubmit={function() {
return c17059_0.apply(this, arguments);
}} onSuccess={callback} onResend={async () => {
await sendConfirmationCode();
}} headerText={intl.string(t["2x/2Uo"])} confirmButtonText={intl.string(t.PDTjLN)} />;
};
@@ -0,0 +1,132 @@
// Metro module 9186 (f9187).
import { useState, useCallback } from "react";
import { Image as Image2, ScrollView, View } from "react-native";
import UserStore from "../../../../stores/UserStore";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { sendConfirmationCode } from "../../ChangeEmailActionCreators";
import { VerificationModalScenes } from "../../../../ConstantsIOS";
import APIError from "../../../../errors/APIError";
import ToastActionCreators from "../../../toast/native/ToastActionCreators";
import { intl, t } from "../../../../intl/index.native";
import Module9188 from "../../../../_bundle/Module9188";
import { Text } from "../../../../design/components/Text/native/Text";
import { Button } from "../../../../design/components/Button/native/Button.native";
const useStyles = createStyles({
container: {
flex: 1,
padding: 16,
alignItems: "center",
justifyContent: "center"
},
image: {
height: 190,
width: 220,
resizeMode: "contain"
},
title: {
marginTop: 16,
textAlign: "center"
},
body: {
marginTop: 8,
lineHeight: 18,
textAlign: "center"
},
button: {
marginTop: 16,
width: "100%"
}
});
export default function ConfirmEmailChangeStart() {
const styles = useStyles();
const navigation = useNavigation();
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const [loading, setState] = useState(false);
const callback = useCallback(async () => {
let c26384_2;
let c26384_3 = 0;
let c30053_0, c30053_1;
L10: {
try {
c30053_0 = void 0;
setState(true);
c26384_3 = 2;
await sendConfirmationCode();
navigation.push(VerificationModalScenes.CONFIRM_EMAIL_CHANGE_CODE);
c26384_3 = 1;
c26384_3 = 0;
(0, setState)(false);
} catch ($e) {
const r27 = $e;
let r7 = r27;
c26384_2 = r27;
let r28 = c26384_3;
if (r28 !== 0) {
while (true) {
if (r28 === 1) {
try {
const r107 = c26384_2;
c26384_3 = 0;
(0, setState)(false);
throw r107;
} catch (r105) {
r7 = r105;
c26384_2 = r105;
r28 = c26384_3;
if (r28 === 0) {
break;
}
}
} else {
try {
const r75 = c26384_2;
c26384_3 = 1;
c30053_1 = r75;
c30053_0 = new APIError(c30053_1).getAnyErrorMessage();
if (c30053_0 != null) {
ToastActionCreators.open({
key: "CONFIRM_EMAIL_ERROR",
content: c30053_0
});
}
c26384_3 = 0;
(0, setState)(false);
break L10;
} catch (r72) {
r7 = r72;
c26384_2 = r72;
r28 = c26384_3;
if (r28 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
}, [navigation]);
if (stateFromStores == null) {
return null;
}
const r16 = intl.format(t.oMFSgi, {
oldEmail: stateFromStores.email
});
return <ScrollView keyboardShouldPersistTaps="handled" alwaysBounceVertical={false}>
<View style={styles.container}>
<Image2 style={styles.image} source={Module9188} />
<Text style={styles.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{intl.string(t.dQ71Wa)}
</Text>
{r16.map((item, index) => <Text key={index} style={styles.body} variant="text-sm/medium" color="text-default">
{item}
</Text>)}
<View style={styles.button}>
<Button text={intl.string(t.rXV81H)} onPress={callback} loading={loading} grow />
</View>
</View>
</ScrollView>;
};
@@ -0,0 +1,169 @@
// Metro module 9190 (f9191).
import { useState, useCallback } from "react";
import { ScrollView, View } from "react-native";
import UserStore from "../../../../stores/UserStore";
import { ChangeEmailFields, useChangeEmailError } from "../../ChangeEmailStore";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useStateFromStores } from "../../../../_bundle/Module589";
import APIError from "../../../../errors/APIError";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import FreeFormInputGroup from "../../../../design/void/Form/native/FreeFormInputGroup";
import { LinkButton } from "../../../auth/native/components/Login";
import ToastActionCreators from "../../../toast/native/ToastActionCreators";
import { Button } from "../../../../design/components/Button/native/Button.native";
const useStyles = createStyles({
background: {
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
paddingVertical: Module712.space.PX_12,
paddingHorizontal: Module712.space.PX_16
},
title: {
textAlign: "center"
},
prompt: {
marginTop: 8,
lineHeight: 18,
textAlign: "center"
},
input: {
marginTop: Module712.space.PX_24
},
contentContainer: {
gap: Module712.space.PX_24
}
});
export default function ConfirmEmailCode(props) {
let state, c17060_4, setState;
const { onFormSubmit, onSuccess, onResend, headerText, confirmButtonText } = props;
state = void 0;
c17060_4 = void 0;
setState = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
let onChangeText;
[state, onChangeText] = useState("");
const [error, r16] = useChangeEmailError(ChangeEmailFields.EMAIL_TOKEN);
c17060_4 = r16;
let loading;
[loading, setState] = useState(false);
const callback = useCallback(async () => {
let c26387_2;
let c26387_3 = 0;
let c30055_0, c30055_1, c30055_2;
L12: {
try {
c30055_0 = void 0;
c30055_1 = void 0;
c26387_3 = 2;
c17060_4(null);
setState(true);
c30055_0 = await onFormSubmit(state);
onSuccess(c30055_0?.token);
c26387_3 = 1;
c26387_3 = 0;
(0, setState)(false);
} catch ($e) {
const r27 = $e;
let r7 = r27;
c26387_2 = r27;
let r28 = c26387_3;
if (r28 !== 0) {
while (true) {
if (r28 === 1) {
try {
const r91 = c26387_2;
c26387_3 = 0;
(0, setState)(false);
throw r91;
} catch (r89) {
r7 = r89;
c26387_2 = r89;
r28 = c26387_3;
if (r28 === 0) {
break;
}
}
} else {
try {
const r69 = c26387_2;
c26387_3 = 1;
c30055_2 = r69;
c30055_1 = new APIError(c30055_2);
(0, c17060_4)(c30055_1.getAnyErrorMessage());
c26387_3 = 0;
(0, setState)(false);
break L12;
} catch (r66) {
r7 = r66;
c26387_2 = r66;
r28 = c26387_3;
if (r28 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
}, [state, r16, onFormSubmit, onSuccess]);
return stateFromStores != null ? <ScrollView style={styles.background} keyboardShouldPersistTaps="handled" alwaysBounceVertical={false} contentContainerStyle={styles.contentContainer}>
<View>
<Text style={styles.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">{headerText}</Text>
<Text style={styles.prompt} variant="text-sm/medium" color="text-default">
{intl.string(t.SZJowy)}
</Text>
<FreeFormInputGroup style={styles.input} label={intl.string(t["8mZX6M"])} textContentType="emailAddress" keyboardType="email-address" value={state} onChangeText={onChangeText} onSubmitEditing={callback} returnKeyType="done" autoCapitalize="none" error={error} autoFocus />
<LinkButton text={intl.string(t.K0NPQ6)} variant="text-sm/medium" onPress={async () => {
let c26388_2;
let c26388_3 = 0;
let c30056_0, c30056_1;
L10: {
try {
c30056_0 = void 0;
c26388_3 = 1;
await onResend();
ToastActionCreators.open({
key: "USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_CODE_SENT",
content: intl.string(t["84yeoz"])
});
c26388_3 = 0;
} catch ($e) {
const r27 = $e;
let r7 = r27;
c26388_2 = r27;
if (c26388_3 !== 0) {
while (true) {
try {
const r71 = c26388_2;
c26388_3 = 0;
c30056_1 = r71;
c30056_0 = new APIError(c30056_1).getAnyErrorMessage();
if (c30056_0 == null) {
break L10;
}
ToastActionCreators.open({
key: "CONFIRM_EMAIL_ERROR",
content: c30056_0
});
break L10;
} catch (r67) {
r7 = r67;
c26388_2 = r67;
if (c26388_3 === 0) {
break;
}
}
}
}
throw r7;
}
}
}} />
</View>
<Button text={confirmButtonText} onPress={callback} loading={loading} disabled={state === ""} />
</ScrollView> : null;
};
@@ -0,0 +1,23 @@
// Metro module 9237 (f9238).
import { useMemo, useEffect } from "react";
import { intl, t } from "../../../../intl/index.native";
import { getHeaderCloseButton } from "../../../../design/components/Navigator/native/NavigatorHeader.native";
import ModalActionCreators from "../../../../actions/ModalActionCreators";
import CountryCallingCodeSelect from "../../../phone/native/CountryCallingCodeSelect";
import PhoneActionCreators from "../../../phone/PhoneActionCreators";
import RunAfterInteractionsUtils from "../../../../utils/native/RunAfterInteractionsUtils";
import PhoneVerificationActionCreators from "../../../../actions/native/PhoneVerificationActionCreators";
import { Navigator } from "../../../../design/components/Navigator/native/Navigator.native";
export default function CountrySelectModal() {
const memo = useMemo(() => ({
COUNTRY_SELECT: {
title: intl.string(t.gzXECH),
headerLeft: getHeaderCloseButton(ModalActionCreators.pop),
render: () => <CountryCallingCodeSelect onClose={() => ModalActionCreators.pop()} onCountrySelected={(event) => PhoneActionCreators.setCountryCode(event)} />
}
}), []);
useEffect(() => () => {
RunAfterInteractionsUtils.runAfterInteractions(PhoneVerificationActionCreators.setCountrySelectorClosed, 400);
}, []);
return <Navigator screens={memo} initialRouteName="COUNTRY_SELECT" />;
};
@@ -0,0 +1,107 @@
// Metro module 9178 (f9179).
import { useState, useMemo } from "react";
import UserStore from "../../../../stores/UserStore";
import { resetChangeEmailStore } from "../../ChangeEmailStore";
import { VerificationModalScenes } from "../../../../Constants";
import EmailVerificationModalActionCreators from "../../../../actions/native/EmailVerificationModalActionCreators";
import { ImpressionGroups, ImpressionNames } from "../../../../_bundle/Module503";
import { getHeaderNoTitle, getHeaderCloseButton } from "../../../../design/components/Navigator/native/NavigatorHeader.native";
import ChangeEmailCollectReasons from "./ChangeEmailCollectReasons";
import ChangeEmailWarning from "./ChangeEmailWarning";
import ResendEmail from "./ResendEmail";
import ConfirmEmailChangeStart from "./ConfirmEmailChangeStart";
import ConfirmEmailChangeCode from "./ConfirmEmailChangeCode";
import EnterEmail from "./EnterEmail";
import UserSettingsConfirmPassword from "../../../user_settings/account/native/UserSettingsConfirmPassword";
import ChangeEmailComplete from "./ChangeEmailComplete";
import { useStateFromStores } from "../../../../_bundle/Module589";
import useInitialValue from "../../../../hooks/useInitialValue";
import { Navigator } from "../../../../design/components/Navigator/native/Navigator.native";
import { intl, t } from "../../../../intl/index.native";
const closeModal = function closeModal() {
resetChangeEmailStore();
EmailVerificationModalActionCreators.close();
};
export default function EmailVerificationModal(props) {
let email_verified, state, setState;
const isChangeEmail = props.isChangeEmail;
email_verified = void 0;
state = void 0;
setState = void 0;
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
let r22 = stateFromStores?.verified;
if (r22 == null) {
r22 = false;
}
email_verified = useInitialValue(r22);
[state, setState] = useState();
return <Navigator screens={useMemo(() => {
const isChangeEmail2 = isChangeEmail;
const state2 = state;
const setState2 = setState;
const impressionProperties = {
impression_group: ImpressionGroups.USER_ACCOUNT_EMAIL_CHANGE_FLOW
};
const r21 = {};
r21[VerificationModalScenes.CHANGE_EMAIL_COLLECT_REASONS] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(closeModal),
impressionName: ImpressionNames.USER_ACCOUNT_EMAIL_CHANGE_COLLECT_REASONS,
impressionProperties,
render: () => <ChangeEmailCollectReasons changeEmailReason={state2} setChangeEmailReason={setState2} />
};
r21[VerificationModalScenes.CHANGE_EMAIL_WARNING] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(closeModal),
impressionName: ImpressionNames.USER_ACCOUNT_EMAIL_CHANGE_WARNING,
impressionProperties,
render: () => <ChangeEmailWarning changeEmailReason={state2} />
};
r21[VerificationModalScenes.RESEND_EMAIL] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(closeModal),
impressionName: ImpressionNames.USER_ACCOUNT_EMAIL_RESEND_VERIFICATION_EMAIL,
impressionProperties,
render: () => <ResendEmail />
};
r21[VerificationModalScenes.CONFIRM_EMAIL_CHANGE_START] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(closeModal),
impressionName: ImpressionNames.USER_ACCOUNT_EMAIL_CHANGE_SEND_CODE,
impressionProperties,
render: () => <ConfirmEmailChangeStart />
};
r21[VerificationModalScenes.CONFIRM_EMAIL_CHANGE_CODE] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(closeModal),
impressionName: ImpressionNames.USER_ACCOUNT_EMAIL_CHANGE_VERIFY_CODE,
impressionProperties,
render: () => <ConfirmEmailChangeCode isChangeEmail={isChangeEmail2} />
};
r21[VerificationModalScenes.ENTER_EMAIL] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(closeModal),
impressionName: ImpressionNames.USER_ACCOUNT_EMAIL_CHANGE_ENTER_EMAIL,
impressionProperties: {
...impressionProperties,
email_verified
},
render: () => <EnterEmail isChangeEmail={isChangeEmail2} changeEmailReason={state2} />
};
r21[VerificationModalScenes.VERIFY_PASSWORD] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(closeModal),
impressionName: ImpressionNames.USER_ACCOUNT_PASSWORD_VERIFY,
impressionProperties,
render: (a0) => <UserSettingsConfirmPassword {...a0} />
};
r21[VerificationModalScenes.CHANGE_EMAIL_COMPLETE] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(closeModal),
impressionName: ImpressionNames.USER_ACCOUNT_EMAIL_CHANGE_COMPLETE,
impressionProperties,
render: (a0) => <ChangeEmailComplete {...a0} />
};
return r21;
}, [state, isChangeEmail, email_verified])} initialRouteName={!isChangeEmail && stateFromStores?.email != null ? VerificationModalScenes.RESEND_EMAIL : stateFromStores?.verified ? VerificationModalScenes.CONFIRM_EMAIL_CHANGE_START : VerificationModalScenes.ENTER_EMAIL} headerBackTitle={intl.string(t["13/7kX"])} />;
};
@@ -0,0 +1,105 @@
// Metro module 9224 (f9225).
import { useState, useCallback } from "react";
import { ScrollView, View } from "react-native";
import UserStore from "../../../../stores/UserStore";
import { ChangeEmailFields, useChangeEmailError, useChangeEmailStore } from "../../ChangeEmailStore";
import { AnalyticEvents } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { VerificationModalScenes } from "../../../../ConstantsIOS";
import { saveEmail, finishChangeEmailFlow, finishVerifyEmailFlow } from "../ChangeEmailUtils";
import AnalyticsUtils from "../../../../utils/AnalyticsUtils";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import FreeFormInputGroup from "../../../../design/void/Form/native/FreeFormInputGroup";
import { Button } from "../../../../design/components/Button/native/Button.native";
const useStyles = createStyles({
background: {
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
},
container: {
paddingVertical: 12,
paddingHorizontal: 16
},
title: {
textAlign: "center"
},
prompt: {
marginTop: 8,
lineHeight: 18,
textAlign: "center"
},
input: {
marginTop: 24,
marginBottom: 16
}
});
export default function EnterEmail(props) {
let state, c17076_5, emailToken, callback;
const { isChangeEmail, changeEmailReason } = props;
state = void 0;
c17076_5 = void 0;
emailToken = void 0;
callback = void 0;
const styles = useStyles();
const navigation = useNavigation();
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
let onChangeText;
[state, onChangeText] = useState("");
const [error, r13] = useChangeEmailError(ChangeEmailFields.EMAIL);
c17076_5 = r13;
emailToken = useChangeEmailStore().emailToken;
callback = useCallback((c26394_0) => navigation.getState().routes.findIndex((route) => route.name === c26394_0), [navigation]);
const callback2 = useCallback(() => {
const VERIFY_PASSWORD = VerificationModalScenes.VERIFY_PASSWORD;
let c26395_0 = async (password) => {
let r27;
L11: {
const r26 = stateFromStores == null;
r27 = null;
if (r26) {
break L11;
}
c17076_5(null);
return await saveEmail({
email: state,
password,
emailToken
}, navigation, callback);
}
return r27;
};
navigation.push(VERIFY_PASSWORD, {
onSubmit: function() {
return c26395_0.apply(this, arguments);
},
onSuccess: () => {
if (isChangeEmail) {
AnalyticsUtils.track(AnalyticEvents.USER_ACCOUNT_EMAIL_CHANGE_SAVE_NEW_EMAIL, {
change_email_reason_enum: changeEmailReason
});
finishChangeEmailFlow(navigation, state);
} else {
finishVerifyEmailFlow(navigation, callback);
}
},
hideUnverifiedBanner: true
});
}, [navigation, stateFromStores, r13, state, emailToken, callback, isChangeEmail, changeEmailReason]);
return stateFromStores == null ? null : <ScrollView style={styles.background} keyboardShouldPersistTaps="handled" alwaysBounceVertical={false}>
<View style={styles.container}>
<Text style={styles.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{stateFromStores.email != null ? intl.string(t.Vm8akB) : intl.string(t["CDTD/K"])}
</Text>
<Text style={styles.prompt} variant="text-sm/medium" color="text-default">
{stateFromStores.email != null ? intl.formatToPlainString(t.Z7CaI7, {
email: stateFromStores.email
}) : intl.string(t.YXXMxK)}
</Text>
<FreeFormInputGroup style={styles.input} label={intl.string(t["w/qqKK"])} textContentType="emailAddress" keyboardType="email-address" value={state} onChangeText={onChangeText} onSubmitEditing={callback2} placeholder={intl.string(t.dI4d4S)} returnKeyType="done" autoCapitalize="none" error={error} autoFocus />
<Button text={intl.string(t.Vm8akB)} onPress={callback2} disabled={state === "" || state === stateFromStores.email} />
</View>
</ScrollView>;
};
@@ -0,0 +1,108 @@
// Metro module 16346 (f16347).
import { useCallback } from "react";
import { View } from "react-native";
import UserRequiredActionStore from "../../../../stores/UserRequiredActionStore";
import UserStore from "../../../../stores/UserStore";
import { Endpoints, VerificationModalScenes, VerificationTypes, HelpdeskArticles } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import HelpdeskUtils from "../../../../utils/HelpdeskUtils";
import { useStateFromStores } from "../../../../_bundle/Module589";
import VerificationUtils from "../../VerificationUtils";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import useBackPressHandler, { BackPressHandler } from "../../../routing/native/useBackPressHandler";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { intl, t } from "../../../../intl/index.native";
import CaptchaUtils from "../../../../utils/native/CaptchaUtils";
import { HTTP } from "../../../../_bundle/sendRequest";
import { accountDetailsInit } from "../../../../actions/UserSettingsAccountActionCreators";
import { Text } from "../../../../design/components/Text/native/Text";
import { emailSupport } from "../../../../utils/native/SupportUtils";
const useStyles = createStyles({
container: {
flex: 1,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
},
containerInner: {
flex: 1,
padding: 20,
justifyContent: "center",
alignItems: "center"
},
title: {
marginTop: 20,
fontSize: 17,
textAlign: "center",
color: Module712.colors.MOBILE_TEXT_HEADING_PRIMARY
},
body: {
marginTop: 4,
marginBottom: 20,
fontSize: 14,
textAlign: "center",
color: Module712.unsafe_rawColors.PRIMARY_400
},
blocks: {
width: "60%",
justifyContent: "center"
},
verificationType: {
marginBottom: 20
},
button: {
marginBottom: 20,
marginHorizontal: 20,
alignSelf: "center"
}
});
const articleURL = HelpdeskUtils.getArticleURL(HelpdeskArticles.VERIFICATION_FAQ);
export default function Overview() {
let navigation;
const styles = useStyles();
const stateFromStores = useStateFromStores([UserRequiredActionStore], () => VerificationUtils.getVerificationTypes(UserRequiredActionStore.getAction()), [], VerificationUtils.areVerificationTypesEqual);
navigation = useNavigation();
useBackPressHandler(BackPressHandler.minimize);
const callback = useCallback(() => <>
{stateFromStores.map((stateFromStore) => {
return stateFromStore === VerificationTypes.CAPTCHA ? <Button text={intl.string(t["3413d0"])} onPress={() => {
CaptchaUtils.showCaptcha().then((result) => {
HTTP.post({
url: Endpoints.CAPTCHA,
body: {
captcha_key: result
},
oldFormErrors: true,
rejectWithError: true
});
});
}} grow /> : <View key={stateFromStore} style={styles.verificationType}>
<Button text={VerificationUtils.getButtonTitle(stateFromStore)} onPress={() => {
let ADD_PHONE = VerificationModalScenes.ADD_PHONE;
if (!(stateFromStore !== VerificationTypes.EMAIL_OR_PHONE && stateFromStore !== VerificationTypes.EMAIL && stateFromStore !== VerificationTypes.REVERIFY_EMAIL)) {
accountDetailsInit();
ADD_PHONE = UserStore.getCurrentUser()?.email != null ? VerificationModalScenes.RESEND_EMAIL : VerificationModalScenes.ENTER_EMAIL;
}
navigation.push(ADD_PHONE);
}} grow />
</View>;
})}
</>, [navigation, stateFromStores, styles.verificationType]);
return <View style={styles.container}>
<View style={styles.containerInner}>
<Text variant="heading-lg/semibold" style={styles.title} accessibilityRole="header">
{intl.string(t.Iz0kDg)}
</Text>
<Text variant="text-sm/medium" style={styles.body}>
{intl.format(t["0rqMV5"], {
helpCenterURL: articleURL
})}
</Text>
<View style={styles.blocks}>
{callback()}
</View>
</View>
<View style={styles.button} accessibilityRole="link">
<Button variant="secondary" text={intl.string(t["Yl/Riu"])} onPress={emailSupport} />
</View>
</View>;
};
@@ -0,0 +1,111 @@
// Metro module 9232 (f9233).
import { VerificationModalScenes } from "../../../../Constants";
import { PHONE_VERIFICATION_MODAL_KEY } from "../../../phone/PhoneConstants";
import { getHeaderNoTitle, getHeaderCloseButton } from "../../../../design/components/Navigator/native/NavigatorHeader.native";
import AddPhone from "./AddPhone";
import PhoneActionCreators from "../../../phone/PhoneActionCreators";
import ModalActionCreators from "../../../../actions/ModalActionCreators";
import { ImpressionNames } from "../../../../_bundle/Module503";
import VerifyPhone from "./VerifyPhone";
import UserSettingsConfirmPassword from "../../../user_settings/account/native/UserSettingsConfirmPassword";
import { Navigator } from "../../../../design/components/Navigator/native/Navigator.native";
import { intl, t } from "../../../../intl/index.native";
export default function PhoneVerificationModal(props) {
let c17080_0 = props;
const screens = {};
screens[VerificationModalScenes.ADD_PHONE] = {
headerTitle: getHeaderNoTitle(),
headerLeft: getHeaderCloseButton(props.onClose),
render: (a0, c26398_1) => {
let c26398_0 = a0;
let reason = a0?.reason;
if (reason == null) {
reason = c17080_0.reason;
}
return <AddPhone {...a0} reason={reason} onComplete={(event) => c26398_1.push(VerificationModalScenes.VERIFY_PHONE, {
phone: event,
onVerified: (c31496_0) => {
c26398_1.push(VerificationModalScenes.VERIFY_PASSWORD, {
hideUnverifiedBanner: true,
onSubmit: (a0) => {
let r13 = c26398_0?.reason;
if (r13 == null) {
r13 = c17080_0.reason;
}
return PhoneActionCreators.addPhone(c31496_0, a0, r13);
},
onSuccess: () => {
ModalActionCreators.popWithKey(PHONE_VERIFICATION_MODAL_KEY);
}
});
}
})} onDeletePhone={c17080_0.allowDeletePhone ? () => {
c26398_1.push(VerificationModalScenes.VERIFY_PASSWORD, {
hideUnverifiedBanner: true,
onSubmit: (a0) => {
let r11 = c26398_0?.reason;
if (r11 == null) {
r11 = c17080_0.reason;
}
return PhoneActionCreators.removePhone(a0, r11);
},
onSuccess: () => {
ModalActionCreators.pop();
}
});
} : null} />;
}
};
screens[VerificationModalScenes.VERIFY_PHONE] = {
headerTitle: getHeaderNoTitle(),
impressionName: ImpressionNames.USER_VERIFY_PHONE,
render: (a0, c26399_0) => <VerifyPhone {...a0} disableKeyboardAvoidingView onVerified={(c30067_0) => {
const VERIFY_PASSWORD = VerificationModalScenes.VERIFY_PASSWORD;
let c30067_1 = async (c31497_0) => {
let r40;
let value;
let c31497_4 = 0;
try {
c31497_4 = 1;
r40 = await PhoneActionCreators.addPhone(c30067_0, c31497_0, c17080_0.reason);
c31497_4 = 0;
} catch ($e) {
const r27 = $e;
let r7 = r27;
value = r27;
if (c31497_4 !== 0) {
while (true) {
try {
c31497_4 = 0;
} catch (r56) {
r7 = r56;
value = r56;
if (c31497_4 === 0) {
break;
}
continue;
}
return value;
}
}
throw r7;
}
return r40;
};
c26399_0.push(VERIFY_PASSWORD, {
hideUnverifiedBanner: true,
onSubmit: function() {
return c30067_1.apply(this, arguments);
},
onSuccess: () => {
ModalActionCreators.popWithKey(PHONE_VERIFICATION_MODAL_KEY);
}
});
}} />
};
screens[VerificationModalScenes.VERIFY_PASSWORD] = {
headerTitle: getHeaderNoTitle(),
render: (a0) => <UserSettingsConfirmPassword {...a0} />
};
return <Navigator screens={screens} initialRouteName={VerificationModalScenes.ADD_PHONE} headerBackTitle={intl.string(t["13/7kX"])} />;
};
@@ -0,0 +1,97 @@
// Metro module 9184 (f9185).
import { useState, useRef, useEffect, useCallback } from "react";
import { View } from "react-native";
import UserRequiredActionStore from "../../../../stores/UserRequiredActionStore";
import UserStore from "../../../../stores/UserStore";
import { VerificationModalScenes } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { useNavigation } from "../../../../design/components/Navigator/native/useNavigation.native";
import { useStateFromStores } from "../../../../_bundle/Module589";
import Module38 from "../../../../_bundle/Module38";
import VerificationUtils from "../../VerificationUtils";
import EmailVerificationModalActionCreators from "../../../../actions/native/EmailVerificationModalActionCreators";
import { EnvelopeOpenSpotIllustration } from "../../../../design/assets/native";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
import AuthenticationActionCreators from "../../../../actions/AuthenticationActionCreators";
import ToastActionCreators from "../../../toast/native/ToastActionCreators";
const useStyles = createStyles({
container: {
flex: 1,
padding: 16,
justifyContent: "center",
alignItems: "center"
},
title: {
marginTop: 16,
textAlign: "center"
},
body: {
marginTop: 8,
lineHeight: 18,
textAlign: "center"
},
resend: {
marginTop: 16,
width: "100%"
},
change: {
marginTop: 8,
width: "100%"
}
});
export default function ResendEmail() {
let verified, ref;
const styles = useStyles();
const navigation = useNavigation();
const stateFromStores = useStateFromStores([UserStore], () => {
const currentUser = UserStore.getCurrentUser();
Module38(currentUser != null, "ResendEmail: user cannot be undefined");
return currentUser;
});
const email = stateFromStores.email;
verified = stateFromStores.verified;
const isEmailReverification = VerificationUtils.isEmailReverification(useStateFromStores([UserRequiredActionStore], () => UserRequiredActionStore.getAction()));
let r42 = !isEmailReverification;
const [state, setState] = useState(false);
ref = useRef(verified);
useEffect(() => {
let r1 = verified;
if (verified) {
r1 = ref.current === false;
}
if (r1) {
EmailVerificationModalActionCreators.close();
}
}, [verified]);
useEffect(() => {
ref.current = verified;
});
const callback = useCallback(() => {
navigation.push(VerificationModalScenes.ENTER_EMAIL);
}, [navigation]);
const r70 = [<EnvelopeOpenSpotIllustration scale={0.75} />, <Text style={styles.title} accessibilityRole="header" variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{intl.string(t.fUtddV)}
</Text>, <Text style={styles.body} variant="text-sm/medium" color="text-default">
{state ? intl.format(t.JqLgQL, {
email
}) : intl.string(t.tSXg8O)}
</Text>, <View style={styles.resend}>
<Button text={intl.string(t.WnX4J2)} variant="primary" onPress={function onPress() {
setState(true);
AuthenticationActionCreators.verifyResend();
ToastActionCreators.open({
key: "USER_SETTINGS_ACCOUNT_CHANGE_EMAIL_CONFIRM_CODE_SENT",
content: intl.string(t["84yeoz"])
});
}} grow />
</View>, ,];
if (!isEmailReverification) {
r42 = <View style={styles.change}>
<Button text={intl.string(t.Vm8akB)} variant="secondary" onPress={callback} grow />
</View>;
}
r70[4] = r42;
return <View style={styles.container}>{r70}</View>;
};
@@ -0,0 +1,252 @@
// 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"])} />;
};
@@ -0,0 +1,123 @@
// Metro module 9259 (f9260).
import _slicedToArray from "../../../../_bundle/_slicedToArray";
import { useState, useCallback } from "react";
import PhoneActionCreators from "../../../phone/PhoneActionCreators";
import useSmsAutofill_android from "../hooks/useSmsAutofill.android";
import CodeField, { CodeType } from "../../../phone/native/CodeField";
import { intl, t } from "../../../../intl/index.native";
let env6090 = {};
export default function VerifyPhone(props) {
let env17095 = {
$parent: env6090
};
const phone = props.phone;
env17095[0] = phone;
let loading = props.loading;
if (loading === void 0) {
loading = false;
}
let c17097_0;
let error = props.error;
const onCodeEnteredIntercept = props.onCodeEnteredIntercept;
env17095[1] = onCodeEnteredIntercept;
const onVerified = props.onVerified;
env17095[2] = onVerified;
const { backgroundStyle, disableKeyboardAvoidingView } = props;
env17095[3] = void 0;
env17095[4] = void 0;
env17095[5] = void 0;
const r22 = _slicedToArray(useState(null), 2);
const r15 = r22[0];
env17095[3] = r22[1];
const r26 = _slicedToArray(useState(false), 2);
const disabled = r26[0];
env17095[4] = r26[1];
let c17096_0 = async (c30072_0) => {
let r52;
let c30072_3;
let c30072_4 = 0;
let c31500_0, c31500_1;
L12: {
L17: {
try {
c31500_0 = c30072_0;
c31500_1 = void 0;
c30072_4 = 1;
const r36 = env17095[1];
if (r36 != null) {
if (await r36(c30072_0)) {
c30072_4 = 0;
break L17;
}
r52 = await PhoneActionCreators.verifyPhone(env17095[0], c31500_0, false);
} else {
r52 = await PhoneActionCreators.verifyPhone(env17095[0], c31500_0, false);
}
c31500_1 = r52.token;
(0, env17095[2])(c31500_1);
c30072_4 = 0;
break L12;
} catch ($e) {
const r33 = $e;
let r7 = r33;
c30072_3 = r33;
if (c30072_4 !== 0) {
while (true) {
try {
const r126 = c30072_3;
c30072_4 = 0;
env17095[3](r126.body?.message);
break L12;
} catch (r123) {
r7 = r123;
c30072_3 = r123;
if (c30072_4 === 0) {
break;
}
}
}
}
throw r7;
}
}
return void 0;
}
};
const callback = useCallback(function() {
return c17096_0.apply(this, arguments);
}, [onCodeEnteredIntercept, onVerified, phone]);
env17095[5] = callback;
c17097_0 = void 0;
c17097_0 = async (c30073_0) => {
let c30073_1;
c30073_1 = void 0;
(0, env17095[4])(true);
await (0, env17095[5])(c30073_0);
(0, env17095[4])(false);
};
useSmsAutofill_android(useCallback(function() {
return c17097_0.apply(this, arguments);
}, [callback]));
const props2 = {
title: intl.string(t.Xclkxp),
description: intl.string(t["4qMI6A"]),
error: null,
backgroundStyle: null,
loading: null,
onCodeEntered: null,
codeType: null,
disabled: null,
disableKeyboardAvoidingView: null
};
if (error == null) {
error = r15;
}
props2.error = error;
props2.backgroundStyle = backgroundStyle;
props2.loading = loading;
props2.onCodeEntered = callback;
props2.codeType = CodeType.NUMERIC;
props2.disabled = disabled;
props2.disableKeyboardAvoidingView = disableKeyboardAvoidingView;
return <CodeField {...props2} />;
};
@@ -0,0 +1,17 @@
// Metro module 9260 (f9261).
import { useCallback, useEffect } from "react";
import * as _Module17 from "react-native";
const { NativeModules, NativeEventEmitter } = _Module17;
const SmsAutofillManager = NativeModules.SmsAutofillManager;
let c6091_2 = new NativeEventEmitter(SmsAutofillManager);
export default function useSmsAutofill(a0) {
let c17098_0 = a0;
const callback = useCallback((a0) => c17098_0(a0.code), [a0]);
return useEffect(() => {
let c26404_0 = c6091_2.addListener("verificationCodeReceived", callback);
SmsAutofillManager.startSmsRetriever();
return () => {
c26404_0.remove();
};
}, [callback]);
};