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

78 lines
3.6 KiB
TypeScript

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