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

109 lines
4.3 KiB
TypeScript

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