Files
discord-decomp/modules/multi_account/MultiAccountStore.tsx
T
2026-11-01 12:12:55 +02:00

194 lines
5.3 KiB
TypeScript

// Metro module 11508 (f11509).
import { MAX_ACCOUNTS } from "./Constants";
import isStaffFromRawUser from "../user/isStaffFromRawUser";
import { removeToken } from "../../_bundle/setSecondaryToken";
import { moveItemFromTo } from "../../utils/DragAndDropUtils";
import Module589 from "../../_bundle/Module589";
import Dispatcher from "../../Dispatcher";
function $mk87423($env) {
return (a0) => a0.id !== $env[0];
}
function $mk87424($env) {
return (a0) => a0.id === $env[0];
}
let id, canUseMultiAccountMobile;
let c7843_7 = {
INVALID: 0,
0: "INVALID",
VALIDATING: 1,
1: "VALIDATING",
VALID: 2,
2: "VALID"
};
const users = [];
class MultiAccountStore extends Module589.PersistedStore {
static displayName = "MultiAccountStore";
static persistKey = "MultiAccountStore";
static migrations = [(a0) => {
let r1;
if (a0 != null) {
let users2 = a0.users;
if (users2 == null) {
users2 = [];
}
r1 = {
users: users2,
canUseMultiAccountMobile: false
};
} else {
r1 = {
users: [],
canUseMultiAccountMobile: false
};
}
return r1;
}];
initialize(a0) {
if (a0 != null) {
let users2 = a0.users;
if (users2 == null) {
users2 = [];
}
users = users2;
canUseMultiAccountMobile = a0.canUseMultiAccountMobile;
}
}
getCanUseMultiAccountMobile() {
return canUseMultiAccountMobile;
}
getState() {
return {
users,
canUseMultiAccountMobile
};
}
getUsers() {
return users;
}
getValidUsers() {
return users.filter((user) => user.tokenStatus !== c7843_7.INVALID);
}
getHasLoggedInAccounts() {
return users.length > 0;
}
getIsValidatingUsers() {
return users.some((user) => user.tokenStatus === c7843_7.VALIDATING);
}
get canUseMultiAccountNotifications() {
return this.getCanUseMultiAccountMobile();
}
}
const multiAccountStore = new MultiAccountStore(Dispatcher, {
CONNECTION_OPEN: function handleConnectionOpen({ user }) {
id = user.id;
const r6 = canUseMultiAccountMobile;
if (r6 ? !r6 : isStaffFromRawUser(user)) {
canUseMultiAccountMobile = true;
}
const r17 = users.slice();
const r20 = r17.findIndex((item) => item.id === user.id);
if (r20 > -1) {
users[r20].avatar = user.avatar;
users[r20].username = user.username;
users[r20].discriminator = user.discriminator;
users[r20].tokenStatus = c7843_7.VALID;
users = r17;
} else {
r17.push({
id: user.id,
avatar: user.avatar,
username: user.username,
discriminator: user.discriminator,
tokenStatus: c7843_7.VALID,
pushSyncToken: null
});
users = r17;
}
if (r17.length > MAX_ACCOUNTS) {
users.splice(MAX_ACCOUNTS).forEach(({ id: id2 }) => {
let env27091;
const r6 = env27091 = {};
env27091[0] = id2;
users = users.filter($mk87423(r6));
removeToken(id2);
});
}
},
LOGOUT: function handleLogout(a0) {
if (!a0.isSwitchingAccount) {
users = users.filter((user) => user.id !== id);
}
id = null;
},
MULTI_ACCOUNT_VALIDATE_TOKEN_REQUEST: ({ userId: userId2 }) => {
let env18908;
const VALIDATING = c7843_7.VALIDATING;
const r7 = env18908 = {};
env18908[0] = userId2;
const r9 = users.slice();
const r12 = r9.find($mk87424(r7));
if (r12 != null) {
r12.tokenStatus = VALIDATING;
users = r9;
}
},
MULTI_ACCOUNT_VALIDATE_TOKEN_SUCCESS: ({ userId: userId2 }) => {
let env18909;
const VALID = c7843_7.VALID;
const r7 = env18909 = {};
env18909[0] = userId2;
const r9 = users.slice();
const r12 = r9.find($mk87424(r7));
if (r12 != null) {
r12.tokenStatus = VALID;
users = r9;
}
},
MULTI_ACCOUNT_VALIDATE_TOKEN_FAILURE: ({ userId: userId2 }) => {
let env18910;
const INVALID = c7843_7.INVALID;
const r7 = env18910 = {};
env18910[0] = userId2;
const r9 = users.slice();
const r12 = r9.find($mk87424(r7));
if (r12 != null) {
r12.tokenStatus = INVALID;
users = r9;
}
},
MULTI_ACCOUNT_REMOVE_ACCOUNT: ({ userId: userId2 }) => {
let env18911;
const r6 = env18911 = {};
env18911[0] = userId2;
users = users.filter($mk87423(r6));
removeToken(userId2);
},
MULTI_ACCOUNT_MOVE_ACCOUNT: function handleMoveAccount(a0) {
users = moveItemFromTo(users, a0.from, a0.to);
},
CURRENT_USER_UPDATE: function handleCurrentUserUpdate({ user: user2 }) {
const r7 = users.slice();
const r10 = r7.find((item) => item.id === user2.id);
if (r10 != null) {
r10.avatar = user2.avatar;
r10.username = user2.username;
r10.discriminator = user2.discriminator;
users = r7;
}
},
MULTI_ACCOUNT_UPDATE_PUSH_SYNC_TOKEN: function handleUpdatePushSyncToken({ userId, pushSyncToken }) {
users = users.map((user) => user.id === userId ? {
...user,
pushSyncToken
} : user);
},
MULTI_ACCOUNT_INVALIDATE_PUSH_SYNC_TOKENS: function handleInvalidatePushSyncTokens({ invalidPushSyncTokens }) {
users = users.map((user) => user.pushSyncToken != null ? invalidPushSyncTokens.includes(user.pushSyncToken) ? {
...user,
pushSyncToken: null
} : user : user);
}
});
export default multiAccountStore;
export { c7843_7 as MultiAccountTokenStatus };