Files
discord-decomp/modules/mfa/native/screens/BackupScreen.tsx
T
2026-11-01 12:12:55 +02:00

151 lines
4.5 KiB
TypeScript

// Metro module 14778 (f14779).
import _slicedToArray from "../../../../_bundle/_slicedToArray";
import { useState, useEffect, useCallback } from "react";
import { BACKUP_CODE_MIN_LENGTH, BACKUP_CODE_MAX_LENGTH } from "../../../../_bundle/finishMFACheck";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import useWideAuthView from "../../../auth/native/useWideAuthView";
import MfaOptionScreen from "./MfaOptionScreen";
import ClipboardCopyInput from "../components/ClipboardCopyInput";
import MFAButton from "../components/button";
const isValidClipboardCode = function isValidClipboardCode(a0) {
return a0.length >= BACKUP_CODE_MIN_LENGTH && a0.length <= BACKUP_CODE_MAX_LENGTH;
};
export default function BackupScreen(props) {
let c21336_0;
let env21335 = {};
const { mfaChallenge, finish } = props;
env21335[0] = finish;
env21335[1] = void 0;
env21335[2] = void 0;
env21335[3] = void 0;
env21335[4] = void 0;
env21335[5] = void 0;
env21335[6] = void 0;
env21335[7] = void 0;
env21335[8] = void 0;
const wideAuthView = useWideAuthView();
const r34 = _slicedToArray(useState(false), 2);
let disabled = r34[0];
env21335[1] = r34[1];
const r38 = _slicedToArray(useState(""), 2);
const r14 = r38[0];
env21335[2] = r14;
env21335[3] = r38[1];
const r42 = _slicedToArray(useState(void 0), 2);
const error = r42[0];
env21335[4] = r42[1];
const r46 = _slicedToArray(useState(false), 2);
const r16 = r46[0];
env21335[5] = r46[1];
const r50 = _slicedToArray(useState(10), 2);
const countdown = r50[0];
env21335[6] = countdown;
env21335[7] = r50[1];
useEffect(() => {
if (env21335[6] <= 0) {
return void 0;
}
let c27801_0 = setTimeout(() => {
(0, env21335[7])((a0) => a0 - 1);
}, 1000);
return () => clearTimeout(c27801_0);
}, [countdown]);
c21336_0 = void 0;
c21336_0 = async (data) => {
let message, c30770_4;
let c30770_5 = 0;
let c31734_0;
L10: {
try {
(0, env21335[4])(void 0);
(0, env21335[1])(true);
c30770_5 = 1;
await (0, env21335[0])({
mfaType: "backup",
data
});
(0, env21335[5])(true);
c30770_5 = 0;
(0, env21335[1])(false);
} catch ($e) {
const r26 = $e;
let r7 = r26;
c30770_4 = r26;
if (c30770_5 !== 0) {
while (true) {
try {
const r70 = c30770_4;
c30770_5 = 0;
c31734_0 = r70;
const r73 = env21335[4];
const r74 = c31734_0;
message = r74 == null ? void 0 : r74.body?.message;
if (message == null) {
message = c31734_0.message;
}
r73(message);
(0, env21335[1])(false);
break L10;
} catch (r66) {
r7 = r66;
c30770_4 = r66;
if (c30770_5 === 0) {
break;
}
}
}
}
throw r7;
}
}
};
env21335[8] = useCallback(function() {
return c21336_0.apply(this, arguments);
}, [finish]);
const props2 = {
headerText: intl.string(t.B2T1HD),
subtitle: intl.string(t.c5J7O0),
input: <>
{[<Text {...countdown > 0 ? {
variant: "text-md/normal",
children: [intl.string(t.RRtlLg), intl.format(t.tsWkAE, {
countdown
})]
} : {
variant: "text-md/normal",
children: [intl.string(t.RRtlLg), intl.string(t.v3a6Pd)]
}} />, <ClipboardCopyInput label={intl.string(t["C/ZAw/"])} placeholder={intl.string(t.fZSi1D)} isValidClipboardCode={isValidClipboardCode} maxLength={BACKUP_CODE_MAX_LENGTH} onChangeCode={function onChangeCode(event) {
(0, env21335[3])(event);
(0, env21335[4])(void 0);
}} error={error} isDisabled={disabled ? disabled : r16} autoFocus={!wideAuthView} />]}
</>,
submit: null,
screenProps: null,
mfaMethod: "backup"
};
const props3 = {
variant: "primary",
text: intl.string(t.geKm7t),
loading: disabled ? disabled : r16,
onPress: () => (0, env21335[8])(env21335[2]),
disabled: null
};
if (!disabled) {
disabled = r16;
}
if (!disabled) {
disabled = r14.length < BACKUP_CODE_MIN_LENGTH;
}
if (!disabled) {
disabled = countdown > 0;
}
props3.disabled = disabled;
props2.submit = <MFAButton {...props3} />;
props2.screenProps = {
mfaChallenge,
finish
};
return <MfaOptionScreen {...props2} />;
};