391 lines
24 KiB
TypeScript
391 lines
24 KiB
TypeScript
/* Metro module 15772; source: modules/multi_account/MultiAccountManager.tsx; dependencies: [6, 7, 15, 17, 18, 1878, 11876, 661, 3, 25, 692, 683, 12491, 694, 4860, 2] */
|
|
import Logger from '../debug/Logger.tsx'; /* Metro dependency 3 */
|
|
import ClassCallCheck from '../../by-id/module-00006-ClassCallCheck.js'; /* Metro dependency 6 */
|
|
import CreateClass from '../../by-id/module-00007-CreateClass.js'; /* Metro dependency 7 */
|
|
import PossibleConstructorReturn from '../../by-id/module-00015-PossibleConstructorReturn.js'; /* Metro dependency 15 */
|
|
import Module00017 from '../../by-id/module-00017.js'; /* Metro dependency 17 */
|
|
import Inherits from '../../by-id/module-00018-Inherits.js'; /* Metro dependency 18 */
|
|
import AnalyticsUtils from '../../utils/AnalyticsUtils.tsx'; /* Metro dependency 683 */
|
|
import Dispatcher from '../../Dispatcher.tsx'; /* Metro dependency 694 */
|
|
import UserStore from '../../stores/UserStore.tsx'; /* Metro dependency 1878 */
|
|
import MultiAccountStore from './MultiAccountStore.tsx'; /* Metro dependency 11876 */
|
|
import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
|
|
import * as Fast_connectModule from '../gateway/native/fast_connect.tsx'; /* Metro dependency 25 */
|
|
import * as ConstantsModule from '../../Constants.tsx'; /* Metro dependency 661 */
|
|
import * as TokenManagerModule from '../../external/discord_common/js/shared/lib/TokenManager.tsx'; /* Metro dependency 692 */
|
|
|
|
function _fun121187(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#121187, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:6, offset: 0x025407df, size: 380 bytes, params: 8, frame: 20
|
|
const env0_0 = require;
|
|
const getFastConnectUserId2 = getFastConnectUserId;
|
|
const Object = global.Object;
|
|
Object.defineProperty(exports, '__esModule', {value: true});
|
|
let value = Logger;
|
|
value = new value('MultiAccountManager');
|
|
value = importDefault(4860) /* metro dependency 4860: AutomaticLifecycleManager */;
|
|
value = _fun121193(value);
|
|
(FileImportTrackerModule).fileFinishedImporting('modules/multi_account/MultiAccountManager.tsx');
|
|
exports.default = value;
|
|
exports.getMultiAccountManagerState = getMultiAccountManagerState;
|
|
exports.getFastConnectUserId = getFastConnectUserId2;
|
|
function _isNativeReflectConstruct_121188() { // fn#121188, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:193, offset: 0x0254095b, size: 98 bytes, params: 1, frame: 18
|
|
var Boolean;
|
|
var prototype;
|
|
var valueOf;
|
|
var call;
|
|
var Reflect;
|
|
var construct;
|
|
var closure;
|
|
var value;
|
|
var error;
|
|
try {
|
|
Boolean = global.Boolean;
|
|
prototype = Boolean.prototype;
|
|
valueOf = prototype.valueOf;
|
|
call = valueOf.call;
|
|
Reflect = global.Reflect;
|
|
construct = Reflect.construct;
|
|
Boolean = global.Boolean;
|
|
closure = function() {
|
|
};
|
|
value = Reflect.apply(construct, Reflect, [Boolean, [], closure]);
|
|
value = Reflect.apply(call, valueOf, [value]);
|
|
var result = !value;
|
|
} catch (error) {
|
|
}
|
|
return (_isNativeReflectConstruct_121188_isNativeReflectConstruct = function() {
|
|
return !!result;
|
|
})();
|
|
}
|
|
|
|
function isDiagnosticsEnabled() { // fn#121191, offset: 0x025409bd, size: 14 bytes, params: 1, frame: 2
|
|
return env0_18 && true;
|
|
}
|
|
|
|
function getFastConnectUserId() { // fn#121192, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:506, offset: 0x025409cb, size: 37 bytes, params: 1, frame: 11
|
|
return (Fast_connectModule).getLastFastConnectIdentifyUserId();
|
|
}
|
|
|
|
function _fun121193(a0) { // fn#121193, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:594, offset: 0x025409f0, size: 97 bytes, params: 2, frame: 16
|
|
const MultiAccountManager2 = MultiAccountManager;
|
|
Inherits(MultiAccountManager2, a0);
|
|
return CreateClass(MultiAccountManager2, [{key: '_initialize', value: value_121211}, {key: '_terminate',
|
|
value: value_121213}]);
|
|
function MultiAccountManager({onSwitchStart, onSwitchSuccess, onSwitchError, onTokenSet, onLogout}) { // fn#121194, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:606, offset: 0x02540a51, size: 250 bytes, params: 2, frame: 25
|
|
var environment;
|
|
let value = environment.__proto__;
|
|
env1_4(this, MultiAccountManager);
|
|
const value3 = env1_7(MultiAccountManager);
|
|
value = env1_6(this, _isNativeReflectConstruct_121188() ? global.Reflect.construct(value3, [],
|
|
env1_7(this).constructor) : value3.apply(this, undefined));
|
|
value.actions = {LOGOUT: LOGOUT_121195, MULTI_ACCOUNT_SWITCH_START: MULTI_ACCOUNT_SWITCH_START};
|
|
value.handleMultiAccountSwitchStart = handleMultiAccountSwitchStart;
|
|
value.handleConnectionOpen = handleConnectionOpen_121198;
|
|
value.handleLogout = handleLogout_121210;
|
|
value.onSwitchStart = onSwitchStart;
|
|
value.onSwitchSuccess = onSwitchSuccess;
|
|
value.onSwitchError = onSwitchError;
|
|
value.onTokenSet = onTokenSet;
|
|
value.onLogout = onLogout;
|
|
return value;
|
|
function MultiAccountManagerLOGOUT(a0) { // fn#121195, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:931, owner: MultiAccountManager.LOGOUT, offset: 0x00e46773, size: 23 bytes, params: 2, frame: 11
|
|
return env0_0.handleLogout(a0);
|
|
}
|
|
|
|
function MULTI_ACCOUNT_SWITCH_START(a0) { // fn#121196, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:979, owner: MultiAccountManager.MULTI_ACCOUNT_SWITCH_START, offset: 0x02540b4b, size: 23 bytes, params: 2, frame: 11
|
|
return env0_0.handleMultiAccountSwitchStart(a0);
|
|
}
|
|
|
|
function handleMultiAccountSwitchStart(a0) { // fn#121197, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:1050, owner: MultiAccountManager.handleMultiAccountSwitchStart, offset: 0x02540b62, size: 66 bytes, params: 2, frame: 12
|
|
const targetUserId = a0.targetUserId;
|
|
let value = environment.__proto__.__proto__;
|
|
env2_17 = a0.location;
|
|
value = require(12491) /* metro dependency 12491: GatewaySocket */;
|
|
value.setAccountSwitchUserId(a0.targetUserId);
|
|
}
|
|
|
|
function MultiAccountManagerHandleConnectionOpen() { // fn#121198, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:1156, owner: MultiAccountManager.handleConnectionOpen, offset: 0x02540ba4, size: 379 bytes, params: 1, frame: 18
|
|
var environment;
|
|
var id;
|
|
var token;
|
|
var moduleValue2;
|
|
var setToken;
|
|
const value = environment.__proto__.__proto__;
|
|
const currentUser = UserStore.getCurrentUser();
|
|
if (currentUser != null) {
|
|
id = currentUser.id;
|
|
checkConnectionOpenMismatch(id);
|
|
if (env2_13 != null) {
|
|
if (env2_13 !== currentUser.id) {
|
|
trackAndLogSuccess(currentUser);
|
|
if (env0_0.onSwitchSuccess != null) {
|
|
env0_0.onSwitchSuccess(currentUser, env2_15);
|
|
}
|
|
} else {
|
|
trackAndLogFailure(currentUser);
|
|
if (env0_0.onSwitchError != null) {
|
|
env0_0.onSwitchError(currentUser);
|
|
}
|
|
}
|
|
}
|
|
id = currentUser.id;
|
|
token = (importAll(692) /* metro dependency 692: TokenManager */).getToken();
|
|
if (token != null && token !== '') {
|
|
id = currentUser.id;
|
|
checkTokenCollisionIntroducedAtWrite(id, token);
|
|
moduleValue2 = importAll(692) /* metro dependency 692: TokenManager */;
|
|
setToken = moduleValue2.setToken;
|
|
id = currentUser.id;
|
|
Reflect.apply(setToken, moduleValue2, [token, id]);
|
|
}
|
|
id = currentUser.id;
|
|
checkGeneralTokenCollision(id);
|
|
if (env0_0.onTokenSet != null) {
|
|
env0_0.onTokenSet(currentUser);
|
|
}
|
|
(require(12491) /* metro dependency 12491: GatewaySocket */).setAccountSwitchUserId(null);
|
|
}
|
|
function checkConnectionOpenMismatch(a0) { // fn#121199, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:1199, owner: MultiAccountManager.handleConnectionOpen.checkConnectionOpenMismatch, offset: 0x02540d1f, size: 315 bytes, params: 2, frame: 20
|
|
var r2;
|
|
var r3;
|
|
var token;
|
|
var token2;
|
|
var object;
|
|
var defaultImport;
|
|
if (isDiagnosticsEnabled()) {
|
|
token = (importAll(692) /* metro dependency 692: TokenManager */).getToken(a0);
|
|
token2 = (importAll(692) /* metro dependency 692: TokenManager */).getToken();
|
|
r2 = env3_16 != null && a0 !== env3_16;
|
|
r3 = token != null && token2 != null;
|
|
r3 = r3 && token !== token2;
|
|
if (r3) {
|
|
object = {from_user_id: env3_13, to_user_id: env3_16, actual_user_id: a0};
|
|
object.fast_connect_user_id = getFastConnectUserId();
|
|
object.linked_user_ids = MultiAccountStore.getUsers().map(function(a0) {
|
|
return a0.id;
|
|
});
|
|
object.has_ever_connected = env3_19;
|
|
object.user_token_exists = token != null;
|
|
object.main_token_exists = token2 != null;
|
|
object.is_token_mismatch = r3;
|
|
object.is_user_mismatch = r2;
|
|
object.switch_origin = env3_17;
|
|
env3_14.log('Token mismatch on account switch connection open', object);
|
|
defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
|
|
defaultImport.track(AnalyticEvents.MULTI_ACCOUNT_SWITCH_READY_MISMATCH, object);
|
|
} else if (r2) {
|
|
object = {from_user_id: env3_13, to_user_id: env3_16, actual_user_id: a0};
|
|
object.fast_connect_user_id = getFastConnectUserId();
|
|
object.linked_user_ids = MultiAccountStore.getUsers().map(_fun121200);
|
|
object.has_ever_connected = env3_19;
|
|
object.user_token_exists = token != null;
|
|
object.main_token_exists = token2 != null;
|
|
object.is_token_mismatch = r3;
|
|
object.is_user_mismatch = r2;
|
|
object.switch_origin = env3_17;
|
|
env3_14.log('Token mismatch on account switch connection open', object);
|
|
defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
|
|
defaultImport.track(AnalyticEvents.MULTI_ACCOUNT_SWITCH_READY_MISMATCH, object);
|
|
}
|
|
}
|
|
}
|
|
|
|
function trackAndLogSuccess({id}) { // fn#121201, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:1786, owner: MultiAccountManager.handleConnectionOpen.trackAndLogSuccess, offset: 0x02540e5a, size: 183 bytes, params: 2, frame: 15
|
|
const object = {};
|
|
object.from_user_id = env3_13;
|
|
object.to_user_id = env3_16;
|
|
object.actual_user_id = id;
|
|
object.fast_connect_user_id = getFastConnectUserId();
|
|
object.linked_user_ids = MultiAccountStore.getUsers().map(function(a0) {
|
|
return a0.id;
|
|
});
|
|
object.has_ever_connected = env3_19;
|
|
object.switch_origin = env3_17;
|
|
const defaultImport = AnalyticsUtils;
|
|
const track = defaultImport.track;
|
|
const MULTI_ACCOUNT_SWITCH_SUCCESS = AnalyticEvents.MULTI_ACCOUNT_SWITCH_SUCCESS;
|
|
Reflect.apply(track, defaultImport, [MULTI_ACCOUNT_SWITCH_SUCCESS, object]);
|
|
if (isDiagnosticsEnabled()) {
|
|
env3_14.log('Account switch success', object);
|
|
}
|
|
}
|
|
|
|
function trackAndLogFailure({id}) { // fn#121203, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:2164, owner: MultiAccountManager.handleConnectionOpen.trackAndLogFailure, offset: 0x02540f11, size: 183 bytes, params: 2, frame: 15
|
|
const object = {};
|
|
object.from_user_id = env3_13;
|
|
object.to_user_id = env3_16;
|
|
object.actual_user_id = id;
|
|
object.fast_connect_user_id = getFastConnectUserId();
|
|
object.linked_user_ids = MultiAccountStore.getUsers().map(function(a0) {
|
|
return a0.id;
|
|
});
|
|
object.has_ever_connected = env3_19;
|
|
object.switch_origin = env3_17;
|
|
const defaultImport = AnalyticsUtils;
|
|
const track = defaultImport.track;
|
|
const MULTI_ACCOUNT_SWITCH_FAILURE = AnalyticEvents.MULTI_ACCOUNT_SWITCH_FAILURE;
|
|
Reflect.apply(track, defaultImport, [MULTI_ACCOUNT_SWITCH_FAILURE, object]);
|
|
if (isDiagnosticsEnabled()) {
|
|
env3_14.log('Account switch failure', object);
|
|
}
|
|
}
|
|
|
|
function checkTokenCollisionIntroducedAtWrite(a0, a1) { // fn#121205, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:2594, owner: MultiAccountManager.handleConnectionOpen.checkTokenCollisionIntroducedAtWrite, offset: 0x02540fc8, size: 276 bytes, params: 3, frame: 18
|
|
var set;
|
|
var items3;
|
|
var items2;
|
|
var users;
|
|
var object;
|
|
var defaultImport;
|
|
const env0_0 = a0;
|
|
const env0_1 = a1;
|
|
if (isDiagnosticsEnabled()) {
|
|
set = new global.Set();
|
|
items3 = [];
|
|
items2 = [];
|
|
users = MultiAccountStore.getUsers();
|
|
var env0_5 = false;
|
|
users.forEach(_fun121206);
|
|
if (items3.length !== 0) {
|
|
object = {from_user_id: env3_13, to_user_id: env3_16, actual_user_id: a0};
|
|
object.fast_connect_user_id = getFastConnectUserId();
|
|
object.linked_user_ids = items2;
|
|
object.colliding_user_ids = items3;
|
|
object.has_ever_connected = env3_19;
|
|
object.is_already_corrupted = env0_5;
|
|
object.switch_origin = env3_17;
|
|
env3_14.log('setToken about to introduce per-user token collision', object);
|
|
defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
|
|
defaultImport.track(AnalyticEvents.MULTI_ACCOUNT_SWITCH_TOKEN_COLLISION_WRITE, object);
|
|
}
|
|
}
|
|
function _fun121206({id}) { // fn#121206, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:2730, offset: 0x025410dc, size: 144 bytes, params: 2, frame: 14
|
|
let binding = ClassCallCheck;
|
|
binding.push(id);
|
|
const token = (TokenManagerModule).getToken(id);
|
|
if (id !== env0_0 && token === require) {
|
|
env0_3.push(id);
|
|
}
|
|
if (token != null) {
|
|
binding = env0_2;
|
|
if (!binding.has(token)) {
|
|
env0_2.add(token);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function checkGeneralTokenCollision(a0) { // fn#121207, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:3214, owner: MultiAccountManager.handleConnectionOpen.checkGeneralTokenCollision, offset: 0x0254116c, size: 115 bytes, params: 2, frame: 14
|
|
var environment;
|
|
var map;
|
|
const env0_0 = a0;
|
|
const value = environment.__proto__.__proto__.__proto__;
|
|
if (isDiagnosticsEnabled()) {
|
|
var env0_1 = [];
|
|
map = new global.Map();
|
|
MultiAccountStore.getUsers().forEach(_fun121208);
|
|
map.forEach(_fun121209);
|
|
}
|
|
function _fun121208({id}) { // fn#121208, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:3321, offset: 0x025411df, size: 124 bytes, params: 2, frame: 16
|
|
var r3;
|
|
let binding = env0_1;
|
|
binding.push(id);
|
|
const token = (TokenManagerModule).getToken(id);
|
|
if (token != null) {
|
|
if (token !== '') {
|
|
binding = env0_2;
|
|
r3 = binding.get(token) ?? [];
|
|
r3.push(id);
|
|
binding = env0_2;
|
|
binding.set(token, r3);
|
|
}
|
|
}
|
|
}
|
|
|
|
function _fun121209(a0) { // fn#121209, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:3461, offset: 0x0254125b, size: 167 bytes, params: 2, frame: 15
|
|
var object;
|
|
var value;
|
|
var defaultImport;
|
|
if (!(a0.length < 2)) {
|
|
object = {};
|
|
value = environment.__proto__.__proto__.__proto__.__proto__;
|
|
object.from_user_id = env4_13;
|
|
object.to_user_id = env4_16;
|
|
object.actual_user_id = env0_0;
|
|
object.fast_connect_user_id = getFastConnectUserId();
|
|
object.linked_user_ids = env0_1;
|
|
object.colliding_user_ids = a0;
|
|
object.has_ever_connected = env4_19;
|
|
object.switch_origin = env4_17;
|
|
env4_14.log('Per-user token collision detected', object);
|
|
defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
|
|
defaultImport.track(AnalyticEvents.MULTI_ACCOUNT_SWITCH_TOKEN_COLLISION, object);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function MultiAccountManagerHandleLogout(a0) { // fn#121210, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:3885, owner: MultiAccountManager.handleLogout, offset: 0x02541302, size: 231 bytes, params: 2, frame: 18
|
|
var binding;
|
|
var log;
|
|
var object;
|
|
if (env0_0.onLogout != null) {
|
|
env0_0.onLogout(a0);
|
|
}
|
|
if (a0.isSwitchingAccount) {
|
|
binding = env2_14;
|
|
log = binding.log;
|
|
object = {current_user_id: env2_12, expected_user_id: env2_16};
|
|
object.fast_connect_user_id = getFastConnectUserId();
|
|
object.switch_origin = env2_17;
|
|
Reflect.apply(log, binding, ['logout from account switch', object]);
|
|
if (env0_0.onSwitchStart != null) {
|
|
env0_0.onSwitchStart();
|
|
}
|
|
env2_15 = !!a0.goHomeAfterSwitching;
|
|
} else {
|
|
(importAll(692) /* metro dependency 692: TokenManager */).removeToken(env2_12);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function value_121211() { // fn#121211, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:4361, offset: 0x025413e9, size: 69 bytes, params: 1, frame: 15
|
|
var environment;
|
|
const value = environment.__proto__;
|
|
(Dispatcher).subscribe('CONNECTION_OPEN', _fun121212);
|
|
this.handleConnectionOpen();
|
|
function _fun121212() { // fn#121212, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:4410, offset: 0x00eed68e, size: 19 bytes, params: 1, frame: 9
|
|
return env0_0.handleConnectionOpen();
|
|
}
|
|
|
|
}
|
|
|
|
function value_121213() { // fn#121213, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:4498, offset: 0x0254142e, size: 59 bytes, params: 1, frame: 14
|
|
var environment;
|
|
const value = environment.__proto__;
|
|
(Dispatcher).unsubscribe('CONNECTION_OPEN', _fun121214);
|
|
function _fun121214() { // fn#121214, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:4549, offset: 0x00eed68e, size: 19 bytes, params: 1, frame: 9
|
|
return env0_0.handleConnectionOpen();
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function getMultiAccountManagerState() { // fn#121215, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:4722, offset: 0x02541469, size: 52 bytes, params: 1, frame: 3
|
|
return {previousUserId: env0_13, expectedUserId: env0_16, switchLocation: env0_17, isSwitchingAccount: env0_18,
|
|
hasEverConnected: env0_19};
|
|
}
|
|
|
|
}
|
|
|
|
function _fun121200(a0) { // fn#121200, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15980:1497, offset: 0x00e46f8c, size: 10 bytes, params: 2, frame: 1
|
|
return a0.id;
|
|
}
|
|
|
|
global.__d(_fun121187, 15772, [6, 7, 15, 17, 18, 1878, 11876, 661, 3, 25, 692, 683, 12491, 694, 4860,
|
|
2]) /* metro module 15772, dependencies: [6, 7, 15, 17, 18, 1878, 11876, 661, 3, 25, 692, 683, 12491, 694, 4860, 2] */;
|