Files
discord-decomp/sources/modules/multi_account/native/ManageAccountsModal.tsx
T
2026-07-27 16:20:00 +03:00

372 lines
23 KiB
TypeScript

/* Metro module 14752; source: modules/multi_account/native/ManageAccountsModal.tsx; dependencies: [57, 5, 31, 27, 1226, 3996, 1878, 11876, 11877, 14753, 661, 33, 9884, 4501, 697, 566, 1305, 4496, 1244, 11880, 5278, 13770, 14309, 4017, 4504, 6266, 683, 6618, 14754, 14310, 11206, 14755, 6247, 7972, 10504, 5280, 9603, 9893, 14335, 5076, 8971, 14334, 2] */
function _fun111330(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#111330, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:6, offset: 0x0239e2b2, size: 623 bytes, params: 8, frame: 24
var object2;
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_4 = importDefault(57) /* metro dependency 57 */;
const env0_5 = importDefault(5) /* metro dependency 5 */;
let value = importAll(31) /* metro dependency 31 */;
const env0_7 = (require(27) /* metro dependency 27 */).View;
const authenticationStore = importDefault(1226) /* metro dependency 1226: AuthenticationStore */;
const streamerModeStore = importDefault(3996) /* metro dependency 3996: StreamerModeStore */;
const userStore = importDefault(1878) /* metro dependency 1878: UserStore */;
const env0_11 = (require(11876) /* metro dependency 11876: MultiAccountStore */).MultiAccountTokenStatus;
const constantsModule = require(11877) /* metro dependency 11877: Constants */;
const env0_12 = constantsModule.MANAGE_EDIT_TRANSITION_DURATION;
const env0_13 = constantsModule.MAX_ACCOUNTS;
const env0_14 = constantsModule.MultiAccountSwitchLocation;
const env0_15 = (require(14753) /* metro dependency 14753: ManageAccountsConstants */).ManageAccountsScreens;
const constantsModule2 = require(661) /* metro dependency 661: Constants */;
const env0_16 = constantsModule2.AnalyticEvents;
const env0_17 = constantsModule2.AuthStates;
const value4 = require(33) /* metro dependency 33 */;
const env0_18 = value4.jsx;
const env0_19 = value4.jsxs;
const env0_20 = (require(9884) /* metro dependency 9884 */).createNativeStackNavigator();
const createStylesModule = require(4501) /* metro dependency 4501: createStyles */;
const createStyles = createStylesModule.createStyles;
object2 = {};
let BACKGROUND_BASE_LOW = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_BASE_LOW;
object2.container = {'backgroundColor': null, 'flex': 1, 'paddingTop': 16, backgroundColor: BACKGROUND_BASE_LOW};
BACKGROUND_BASE_LOW = (importDefault(697) /* metro dependency 697: native */).colors.BACKGROUND_BASE_LOW;
object2.sortableListView = {flex: 1, backgroundColor: BACKGROUND_BASE_LOW};
const TEXT_LINK = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_LINK;
object2.addAccountLabel = {color: TEXT_LINK};
object2.trailingIconContainer = {'width': 24, 'height': 24};
object2.trailingIcon = {position: 'absolute'};
const env0_21 = Reflect.apply(createStyles, createStylesModule, [object2]);
object2 = {code: 'function ManageAccountsModalTsx1(){const{withTiming,leadingWidth,MANAGE_EDIT_TRANSITION_DURATION}=this.__closure;return{width:withTiming(leadingWidth.get(),{duration:MANAGE_EDIT_TRANSITION_DURATION})};}'};
value = value.memo(ManageAccountsModal);
(require(2) /* metro dependency 2 */).fileFinishedImporting('modules/multi_account/native/ManageAccountsModal.tsx');
exports.default = value;
}
function RemoveMultiAccountUserButton({user}) { // fn#111331, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:762, offset: 0x0239e521, size: 434 bytes, params: 2, frame: 20
var env0_1;
const hidePersonalInformation = (require(566) /* metro dependency 566: flux */).useStateFromStores([StreamerModeStore],
function() {
return StreamerModeStore.hidePersonalInformation;
});
const currentUser = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], function() {
return UserStore.getCurrentUser();
});
if (currentUser?.id === user.id) {
const Spacer = (require(1305) /* metro dependency 1305: native */).Spacer;
return <Spacer size={21} />;
}
const username = user.username;
if (!hidePersonalInformation && user.discriminator !== '0') {
env0_1 = username + ('#' + user.discriminator);
}
const value4 = _fun111334();
const PressableOpacity = (require(5278) /* metro dependency 5278: Pressables */).PressableOpacity;
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
const string = intl.string;
const lSLMaU = (require(1244) /* metro dependency 1244: indexNative */).t.lSLMaU;
const CircleMinusIcon = (require(13770) /* metro dependency 13770: CircleMinusIcon */).CircleMinusIcon;
const ICON_FEEDBACK_CRITICAL = (importDefault(697) /* metro dependency 697: native */).colors.ICON_FEEDBACK_CRITICAL;
return (
<PressableOpacity
accessibilityRole="button"
accessibilityLabel={Reflect.apply(string, intl, [lSLMaU])}
onPress={value4}
>
<CircleMinusIcon color={ICON_FEEDBACK_CRITICAL} />
</PressableOpacity>
);
}
function ManageAccounts({isEditing, navigation}) { // fn#111338, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:1946, offset: 0x0239e87b, size: 775 bytes, params: 2, frame: 37
var r10;
var FadeInOut;
var FormRow;
var Label;
var intl;
const styles = useStyles();
const useMultiAccountModule = require(14309) /* metro dependency 14309: useMultiAccount */;
const useMultiAccountUsers = useMultiAccountModule.useMultiAccountUsers;
const multiAccountUsers = Reflect.apply(useMultiAccountUsers, useMultiAccountModule, []).multiAccountUsers;
const fluxModule = require(566) /* metro dependency 566: flux */;
const useStateFromStoresObject = fluxModule.useStateFromStoresObject;
const env0_4 = Reflect.apply(useStateFromStoresObject, fluxModule, [[AuthenticationStore], function() {
var object = {};
object.currentUserId = AuthenticationStore.getId();
return object;
}]).currentUserId;
const value2 = (require(4017) /* metro dependency 4017: ReanimatedRexport */).useSharedValue(0);
const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */;
const useAnimatedStyle = reanimatedRexportModule.useAnimatedStyle;
const closure = ManageAccountsL;
closure.__closure = {withTiming: (require(4504) /* metro dependency 4504: timing */).withTiming,
leadingWidth: value2, MANAGE_EDIT_TRANSITION_DURATION: MANAGE_EDIT_TRANSITION_DURATION};
closure.__workletHash = 3389178545077;
closure.__initData = env0_22;
const env0_6 = Reflect.apply(useAnimatedStyle, reanimatedRexportModule, [closure]);
const env0_7 = (importDefault(6266) /* metro dependency 6266: usePrevious */)(isEditing);
env0_6.useEffect(_fun111341);
const SafeAreaPaddingView = (require(6618) /* metro dependency 6618: SafeAreaView */).SafeAreaPaddingView;
const SortableListView = importDefault(14754) /* metro dependency 14754: SortableListView */;
let object = {data: multiAccountUsers, onRowMoved: onRowMoved};
const value3 = !isEditing;
object.disableSorting = value3;
object.wrapperStyles = styles.sortableListView;
object.renderRow = renderRow;
object.keyboardShouldPersistTaps = 'handled';
object.scrollEventThrottle = 16;
object.scrollEnabled = true;
const TransitionGroup = (require(11206) /* metro dependency 11206: TransitionGroup */).TransitionGroup;
if (isEditing) {
r10 = value3;
} else {
FadeInOut = importDefault(14755) /* metro dependency 14755: FadeInOut */;
var defaultImport2Props = {duration: MANAGE_EDIT_TRANSITION_DURATION};
FormRow = (require(7972) /* metro dependency 7972: native */).FormRow;
var formRowProps = {leading: ((CirclePlusIcon) => <CirclePlusIcon color={(importDefault(697) /* metro dependency 697: native */).colors.TEXT_LINK} />)((require(10504) /* metro dependency 10504: CirclePlusIcon */).CirclePlusIcon)};
Label = (require(7972) /* metro dependency 7972: native */).FormRow.Label;
var labelProps = {style: styles.addAccountLabel};
intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
labelProps.text = intl.string((require(1244) /* metro dependency 1244: indexNative */).t.bPP34Q);
formRowProps.label = <Label {...labelProps} />;
formRowProps.onPress = onPress_111345;
r10 = <FadeInOut {...defaultImport2Props}><FormRow {...formRowProps} /></FadeInOut>;
}
object.footer = <TransitionGroup component={View} transitionEnter transitionLeave transitionAppear>{r10}</TransitionGroup>;
return (
<SafeAreaPaddingView style={styles.container} bottom>
<SortableListView {...object} />
</SafeAreaPaddingView>
);
}
function ManageAccountsModal({initialRouteName = ManageAccountsScreens.MANAGE_ACCOUNTS}) { // fn#111346, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:4255, offset: 0x0239f01b, size: 398 bytes, params: 2, frame: 22
const env0_0 = (require(5280) /* metro dependency 5280: NavigatorNative */).useAccessibilityNativeStackOptions();
let binding = env0_6;
const [env0_1, env0_2] = env0_4(binding.useState(false), 2);
binding = env0_20;
const Navigator = binding.Navigator;
const object2 = {initialRouteName: initialRouteName, screenOptions: screenOptions_111347};
let Screen = binding.Screen;
const MANAGE_ACCOUNTS = ManageAccountsScreens.MANAGE_ACCOUNTS;
const items2 = [<Screen name={MANAGE_ACCOUNTS} options={options_111349}>{children_111352}</Screen>];
Screen = binding.Screen;
const ACCOUNT_DISABLED_OR_DELETION_SCHEDULED = ManageAccountsScreens.ACCOUNT_DISABLED_OR_DELETION_SCHEDULED;
items2[1] = <Screen name={ACCOUNT_DISABLED_OR_DELETION_SCHEDULED} options={function() {
var object = {};
object.title = require(dependencyMap[18]).intl.string(require(dependencyMap[18]).t.WbFpq4);
return object;
}}>{children_111354}</Screen>;
Screen = binding.Screen;
const LOGIN = ManageAccountsScreens.LOGIN;
items2[2] = <Screen name={LOGIN} options={function() {
return {headerShown: false};
}}>{children_111358}</Screen>;
Screen = binding.Screen;
const MFA = ManageAccountsScreens.MFA;
items2[3] = <Screen name={MFA} options={function() {
return {headerShown: false};
}}>{children_111360}</Screen>;
return (
<Navigator {...object2}>
{items2}
</Navigator>
);
}
function _fun111334() { // fn#111334, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:1085, offset: 0x0239e6e2, size: 36 bytes, params: 1, frame: 12
const env0_0 = env1_5(_fun111336);
return _fun111337;
}
function ManageAccountsL() { // fn#111340, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:2212, owner: ManageAccounts.l, offset: 0x0239eb9c, size: 70 bytes, params: 1, frame: 15
const timingModule = require(4504) /* metro dependency 4504: timing */;
return {width: timingModule.withTiming(env0_5.get(), {duration: MANAGE_EDIT_TRANSITION_DURATION})};
}
function _fun111341() { // fn#111341, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:2437, offset: 0x0239ebe2, size: 61 bytes, params: 1, frame: 12
var binding;
if (env0_7 != null && env0_7 !== isEditing) {
binding = env0_5;
binding.set(isEditing ? 37 : 0);
}
}
function onRowMoved({from, to}) { // fn#111342, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:2581, owner: ManageAccounts.onRowMoved, offset: 0x0239ec1f, size: 52 bytes, params: 2, frame: 14
const value = environment.__proto__;
(importAll(11880) /* metro dependency 11880: MultiAccountActionCreators */).moveAccount(from, to);
}
function ManageAccountsRenderRow(a0, a1) { // fn#111343, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:2687, owner: ManageAccounts.renderRow, offset: 0x0239ec53, size: 499 bytes, params: 3, frame: 30
var environment;
const env0_0 = a0;
const value = environment.__proto__;
const value2 = undefined;
const AccountSwitcherListItem = importDefault(14310) /* metro dependency 14310: AccountSwitcherListItem */;
const defaultImportProps = {user: a0, onPressUser: isEditing ? null : _fun111344, showActiveAccountLabel: true};
const TransitionGroup = (require(11206) /* metro dependency 11206: TransitionGroup */).TransitionGroup;
const View2 = (importDefault(4017) /* metro dependency 4017: ReanimatedRexport */).View;
defaultImportProps.leading = <TransitionGroup component={View2} transitionEnter transitionLeave style={env0_6}>{isEditing && ((Component) => <Component duration={MANAGE_EDIT_TRANSITION_DURATION}><RemoveMultiAccountUserButton user={a0} /></Component>)(importDefault(14755) /* metro dependency 14755: FadeInOut */)}</TransitionGroup>;
isEditingBinding = isEditing;
const FadeInOut = importDefault(14755) /* metro dependency 14755: FadeInOut */;
defaultImportProps.trailing = <TransitionGroup component={View} transitionEnter transitionLeave transitionAppear style={styles.trailingIconContainer}>{isEditingBinding ? <FadeInOut duration={MANAGE_EDIT_TRANSITION_DURATION} style={styles.trailingIcon} key="drag">{((DragIcon) => <DragIcon />)((require(6247) /* metro dependency 6247: DragIcon */).DragIcon)}</FadeInOut> : <FadeInOut duration={MANAGE_EDIT_TRANSITION_DURATION} style={styles.trailingIcon} key="status">{((AccountStatusIcon) => <AccountStatusIcon user={a0} />)((require(14310) /* metro dependency 14310: AccountSwitcherListItem */).AccountStatusIcon)}</FadeInOut>}</TransitionGroup>;
defaultImportProps.delayLongPress = isEditing ? 100 : value2;
return <AccountSwitcherListItem {...defaultImportProps} key={a1} />;
}
function ManageAccountsOnPress() { // fn#111345, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:3970, owner: ManageAccounts.onPress, offset: 0x0239ef0f, size: 268 bytes, params: 1, frame: 20
var navigationBinding;
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
const t = (require(1244) /* metro dependency 1244: indexNative */).t;
var value;
if (multiAccountUsers.length >= MAX_ACCOUNTS) {
value = importDefault(4496) /* metro dependency 4496: AlertActionCreators */;
value.show({title: intl.string(t.w7wfXi), body: intl.formatToPlainString(t.WOyelG,
{maxNumAccounts: MAX_ACCOUNTS}),
isDismissable: true});
} else {
navigationBinding = navigation;
navigationBinding.push(AuthStates.LOGIN);
value = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
value.track(AnalyticEvents.LOGIN_VIEWED, {source: 'multi_account_add_account'});
}
}
function ManageAccountsModalScreenOptions({navigation}) { // fn#111347, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:4471, owner: ManageAccountsModal.screenOptions, offset: 0x0239f1a9, size: 134 bytes, params: 2, frame: 17
var r7;
var environment;
var r3;
var value3;
const object2 = {headerTitle: headerTitle_111348};
if (env0_1) {
r3 = undefined;
} else {
value3 = environment.__proto__;
r3 = require(dependencyMap[36]).getRenderModalCloseImage(navigation);
r7 = dependencyMap;
}
object2.headerLeft = r3;
object2.headerTitleAlign = 'center';
copyDataProperties(object2, env0_0, r7);
copyDataProperties(object2, importDefault(dependencyMap[37])(), r7);
return object2;
}
function ManageAccountsModalOptions() { // fn#111349, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:4727, owner: ManageAccountsModal.options, offset: 0x0239f286, size: 194 bytes, params: 1, frame: 20
var environment;
const object2 = {};
let value = environment.__proto__;
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
let string = intl.string;
const t = (require(1244) /* metro dependency 1244: indexNative */).t;
const WbFpq4 = t.WbFpq4;
object2.title = Reflect.apply(string, intl, [WbFpq4]);
const binding = env0_1;
value = require(9603) /* metro dependency 9603: HeaderShared */;
const getRenderHeaderTextButton = value.getRenderHeaderTextButton;
string = intl.string;
object2.headerRight = binding ? Reflect.apply(getRenderHeaderTextButton, value, [Reflect.apply(string, intl,
[t.i4jeWR]), _fun111350]) : Reflect.apply(getRenderHeaderTextButton, value, [Reflect.apply(string, intl,
[t.bt75uw]), _fun111351]);
return object2;
}
function ManageAccountsModalChildren({navigation}) { // fn#111352, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:4980, owner: ManageAccountsModal.children, offset: 0x0239f348, size: 49 bytes, params: 2, frame: 14
return <ManageAccounts isEditing={env0_1} navigation={navigation} />;
}
function ManageAccountsModalChildren_111354() { // fn#111354, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:5174, owner: ManageAccountsModal.children, offset: 0x0239f3bd, size: 65 bytes, params: 1, frame: 15
var environment;
const value = environment.__proto__;
return ((Component) => <Component handleLogin={handleLogin_111355} onReset={onReset} />)(importDefault(14335) /* metro dependency 14335: AccountDisabledOrDeletionScheduled */);
}
function ManageAccountsModalChildren_111358() { // fn#111358, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:5368, owner: ManageAccountsModal.children, offset: 0x0239f471, size: 46 bytes, params: 1, frame: 14
const value = environment.__proto__;
return ((Component) => <Component isMultiAccount />)(importDefault(8971) /* metro dependency 8971: Login */);
}
function ManageAccountsModalChildren_111360() { // fn#111360, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:5469, owner: ManageAccountsModal.children, offset: 0x0239f49f, size: 39 bytes, params: 1, frame: 13
const value = environment.__proto__;
return ((Component) => <Component />)(importDefault(14334) /* metro dependency 14334: MFA */);
}
function* _fun111336() { // fn#111336, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:1105, offset: 0x0239e711, size: 362 bytes, params: 1, frame: 24
if (true) {
value = environment.__proto__.__proto__.__proto__;
var binding = env3_1;
var binding2 = env3_3;
var value3 = binding(binding2[17]);
var confirm = value3.confirm;
var object2 = {};
binding = env3_0;
var intl = binding(binding2[18]).intl;
var string = intl.string;
object2.title = Reflect.apply(string, intl, [binding(binding2[18]).t.n0Fbg6]);
intl = binding(binding2[18]).intl;
object2.body = intl.formatToPlainString(binding(binding2[18]).t.phEQmS, {username: importDefault});
intl = binding(binding2[18]).intl;
string = intl.string;
var N86XcP = binding(binding2[18]).t.N86XcP;
object2.confirmText = Reflect.apply(string, intl, [N86XcP]);
var ButtonColors = binding(binding2[16]).ButtonColors;
var RED = ButtonColors.RED;
object2.confirmColor = RED;
intl = binding(binding2[18]).intl;
object2.cancelText = intl.string(binding(binding2[18]).t['ETE/oC']);
object2.isDismissable = true;
yield Reflect.apply(confirm, value3, [object2]);
var value5 = undefined;
if (false) {
return value5;
}
if (value5) {
value = env3_2(env3_3[19]);
value.removeAccount(require.id);
}
}
}
function _fun111344() { // fn#111344, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:2732, offset: 0x0239ee46, size: 201 bytes, params: 1, frame: 18
var tokenStatus;
var value2;
var navigationBinding;
const binding = env0_0;
let value = environment.__proto__;
if (!isEditing) {
if (binding.id !== currentUserId) {
tokenStatus = binding.tokenStatus;
value2 = environment.__proto__.__proto__;
if (tokenStatus === MultiAccountTokenStatus.INVALID) {
navigationBinding = navigation;
navigationBinding.push(AuthStates.LOGIN);
value = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
value.track(AnalyticEvents.LOGIN_VIEWED, {source: 'multi_account_invalid_user'});
} else {
value = importAll(11880) /* metro dependency 11880: MultiAccountActionCreators */;
value.switchAccount(binding.id, undefined, MultiAccountSwitchLocation.MANAGE_ACCOUNTS_MODAL);
}
}
}
}
function screenOptionsHeaderTitle_111348(a0) { // fn#111348, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:4503, owner: ManageAccountsModal.screenOptions.headerTitle, offset: 0x0239f22f, size: 87 bytes, params: 2, frame: 16
const children = a0.children;
const value = Object.create(null);
value.children = 0;
const value2 = copyDataProperties({}, a0, value, children);
const GenericHeaderTitle = (require(9603) /* metro dependency 9603: HeaderShared */).GenericHeaderTitle;
return <GenericHeaderTitle title={children} {...value2} />;
}
function childrenHandleLogin(a0, a1, a2) { // fn#111355, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:5202, owner: ManageAccountsModal.children.handleLogin, offset: 0x0239f3fe, size: 64 bytes, params: 4, frame: 13
const value = environment.__proto__.__proto__;
(importDefault(5076) /* metro dependency 5076: AuthenticationActionCreators */).login({login: a0, password: a1,
undelete: a2});
}
function onReset() { // fn#111356, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:14949:5269, owner: ManageAccountsModal.children.onReset, offset: 0x0239f43e, size: 40 bytes, params: 1, frame: 12
const value = environment.__proto__.__proto__;
(importDefault(5076) /* metro dependency 5076: AuthenticationActionCreators */).loginReset(true);
}