decord/source/stores/PresenceStore.tsx
github-actions da5b5e5efe chore: update source for alpha 346.6
Skipped 1 file(s) >100MB (GitHub limit): source/__polyfill/04xxx/module_4821.js (118.4 MB)
2026-09-12 13:45:10 +00:00

749 lines
23 KiB
TypeScript

// Module ID: 4676
// Function ID: 4677
// Name: PresenceStore
// Dependencies: [502, 1371, 1074, 4677, 12, 1332, 11, 504, 573, 2]
// Module 4676 (PresenceStore)
import SnowflakeUtilsDefault from "SnowflakeUtils" /* 11 */;
import _modDef12 from "module_12" /* 12 */;
import initializeDefault from "initialize" /* 504 */;
import DispatcherDefault from "Dispatcher" /* 573 */;
import _modDef1332 from "module_1332" /* 1332 */;
import hasRichActivityDefault from "hasRichActivity" /* 4677 */;
import AuthenticationStore from "AuthenticationStore" /* 502 */;
import UserStore from "UserStore" /* 1371 */;
function sortActivity(type, type2) {
type = type2.type;
let num = 4;
let num2 = 4;
if (constants2.CUSTOM_STATUS !== type) {
num2 = 3;
if (tmp.COMPETING !== type) {
num2 = 2;
if (tmp.STREAMING !== type) {
num2 = 0;
if (tmp.PLAYING === type) {
num2 = 1;
}
}
}
}
type2 = type.type;
if (constants2.CUSTOM_STATUS !== type2) {
num = 3;
if (tmp.COMPETING !== type2) {
num = 2;
if (tmp.STREAMING !== type2) {
num = 0;
if (tmp.PLAYING === type2) {
num = 1;
}
}
}
}
let diff = num2 - num;
if (!diff) {
let num3 = 0;
if (hasRichActivityDefault(type2)) {
num3 = 1;
}
let num4 = 0;
if (tmp3(4677)(type)) {
num4 = 1;
}
diff = num3 - num4;
tmp3 = importDefault;
}
if (!diff) {
let num5 = type2.created_at;
if (num5 == null) {
num5 = 0;
}
let num6 = type.created_at;
if (num6 == null) {
num6 = 0;
}
diff = num5 - num6;
}
return diff;
}
function filterPlayingActivities(arg0) {
if (0 === arg0.length) {
return arg0;
} else {
const items = [];
const items1 = [];
const iter = arg0[Symbol.iterator]();
const nextResult = iter.next();
while (iter !== undefined) {
let tmp4 = nextResult;
if (nextResult.type === constants2.PLAYING) {
let arr = items1.push(tmp4);
} else {
let arr2 = items.push(tmp4);
}
continue;
}
if (items1.length <= 1) {
return arg0;
} else {
const items2 = [];
HermesBuiltin.arraySpread(items1, 0);
const items3 = [];
items3[HermesBuiltin.arraySpread(items, 0)] = items2.sort(sortActivity)[0];
return items3.sort(sortActivity);
}
}
}
function flattenPresence(id) {
delete tmp[tmp2];
delete tmp[tmp2];
delete tmp[tmp2];
delete tmp[tmp2];
delete tmp[tmp2];
if (null != presencesForGuilds[id]) {
const _Object3 = Object;
const values = Object.values(presencesForGuilds[id]);
const reduced = values.reduce((processedAtTimestamp, processedAtTimestamp2) => {
processedAtTimestamp = processedAtTimestamp2.processedAtTimestamp;
processedAtTimestamp2 = processedAtTimestamp.processedAtTimestamp;
if (processedAtTimestamp > processedAtTimestamp2) {
let tmp = processedAtTimestamp2;
} else {
tmp = processedAtTimestamp;
if (processedAtTimestamp === processedAtTimestamp2) {
tmp = processedAtTimestamp;
}
}
return tmp;
}, values[0]);
if (reduced.status === constants.OFFLINE) {
if (obj.every(presencesForGuilds[id], (status) => {
let tmp = status.status === constants.OFFLINE;
if (tmp) {
let tmp3 = null == status.hiddenActivities;
if (!tmp3) {
tmp3 = 0 === status.hiddenActivities.length;
}
tmp = tmp3;
}
return tmp;
})) {
delete tmp3[tmp2];
} else if (values.some((hiddenActivities) => {
let tmp = null != hiddenActivities.hiddenActivities;
if (tmp) {
tmp = hiddenActivities.hiddenActivities.length > 0;
}
return tmp;
})) {
const _Object = Object;
const values3 = Object.values(values);
const flatMapResult = values3.flatMap((hiddenActivities) => {
hiddenActivities = hiddenActivities.hiddenActivities;
if (hiddenActivities == null) {
hiddenActivities = [];
}
return hiddenActivities;
});
let tmp8 = flatMapResult;
if (0 !== flatMapResult.length) {
const items = [];
HermesBuiltin.arraySpread(flatMapResult, 0);
const reversed = items.reverse();
const _Map = Map;
const map = new Map(reversed.map((party) => {
party = party.party;
let id;
if (party != null) {
id = party.id;
}
const items = ["" + party.application_id + ":" + id, party];
return items;
}));
const items1 = [];
HermesBuiltin.arraySpread(map.values(), 0);
tmp8 = items1;
}
closure_14[id] = tmp8;
}
obj = _modDef12;
}
({ status: closure_11[id], activities } = reduced);
closure_12[id] = activities;
closure_13[id] = filterPlayingActivities(activities);
const _Object2 = Object;
const values4 = Object.values(values);
const flatMapResult1 = values4.flatMap((hiddenActivities) => {
hiddenActivities = hiddenActivities.hiddenActivities;
if (hiddenActivities == null) {
hiddenActivities = [];
}
return hiddenActivities;
});
let tmp23 = flatMapResult1;
if (0 !== flatMapResult1.length) {
const items2 = [];
HermesBuiltin.arraySpread(flatMapResult1, 0);
const reversed1 = items2.reverse();
const _Map2 = Map;
map1 = new Map(reversed1.map((party) => {
party = party.party;
let id;
if (party != null) {
id = party.id;
}
const items = ["" + party.application_id + ":" + id, party];
return items;
}));
const items3 = [];
HermesBuiltin.arraySpread(map1.values(), 0);
tmp23 = items3;
}
closure_14[id] = tmp23;
if (null != reduced.clientStatus) {
closure_15[id] = reduced.clientStatus;
}
}
}
function flattenPresenceInConnectionOpen(arg0) {
if (null != presencesForGuilds[arg0]) {
const _Object = Object;
const maxByResult = _modDef12.maxBy(Object.values(tmp), (processedAtTimestamp) => processedAtTimestamp.processedAtTimestamp);
let tmp3 = maxByResult.status !== constants.OFFLINE;
if (!tmp3) {
let tmp2 = null != maxByResult.hiddenActivities;
if (tmp2) {
tmp2 = maxByResult.hiddenActivities.length > 0;
}
tmp3 = tmp2;
}
if (tmp3) {
({ status: closure_11[arg0], activities } = maxByResult);
closure_12[arg0] = activities;
closure_13[arg0] = filterPlayingActivities(activities);
hiddenActivities = maxByResult.hiddenActivities;
if (hiddenActivities == null) {
hiddenActivities = [];
}
closure_14[arg0] = hiddenActivities;
if (null != maxByResult.clientStatus) {
closure_15[arg0] = maxByResult.clientStatus;
}
}
}
}
function updatePresence(arg0) {
({ guildId, userId, status, clientStatus, activities, hiddenActivities, processedAtTimestamp } = arg0);
if (userId === AuthenticationStore.getId()) {
return false;
} else {
let tmp5 = status === constants.OFFLINE;
if (tmp5) {
let tmp4 = null == hiddenActivities;
if (!tmp4) {
tmp4 = 0 === hiddenActivities.length;
}
tmp5 = tmp4;
}
let tmp7 = presencesForGuilds[userId];
if (null == tmp7) {
if (tmp5) {
return false;
} else {
const obj = {};
presencesForGuilds[userId] = obj;
tmp7 = obj;
}
}
if (tmp5) {
const obj2 = { status, clientStatus, activities: hiddenActivities, hiddenActivities, processedAtTimestamp };
tmp7[guildId] = obj2;
} else {
let sorted = activities;
if (activities.length > 1) {
const items = [];
HermesBuiltin.arraySpread(activities, 0);
sorted = items.sort(sortActivity);
}
if (hiddenActivities == null) {
hiddenActivities = [];
}
let tmp15 = hiddenActivities;
if (0 !== hiddenActivities.length) {
const items1 = [];
HermesBuiltin.arraySpread(hiddenActivities, 0);
const reversed = items1.reverse();
const _Map = Map;
const map = new Map(reversed.map((party) => {
party = party.party;
let id;
if (party != null) {
id = party.id;
}
const items = ["" + party.application_id + ":" + id, party];
return items;
}));
const items2 = [];
HermesBuiltin.arraySpread(map.values(), 0);
tmp15 = items2;
}
let activities2 = sorted;
if (null != tmp7[guildId]) {
activities2 = sorted;
if (_modDef1332(tmp25.activities, sorted)) {
activities2 = tmp25.activities;
}
}
const obj3 = { status, clientStatus, activities: activities2, hiddenActivities: tmp15, processedAtTimestamp };
tmp7[guildId] = obj3;
}
delete tmp2[tmp];
flattenPresence(userId);
return true;
}
}
function updatePresenceInConnectionOpen(arg0) {
({ guildId, userId, status, clientStatus, activities, hiddenActivities, processedAtTimestamp } = arg0);
if (userId !== AuthenticationStore.getId()) {
let tmp3 = status === constants.OFFLINE;
if (tmp3) {
let tmp2 = null == hiddenActivities;
if (!tmp2) {
tmp2 = 0 === hiddenActivities.length;
}
tmp3 = tmp2;
}
let tmp5 = presencesForGuilds[userId];
if (null == tmp5) {
if (!tmp3) {
const obj = {};
presencesForGuilds[userId] = obj;
tmp5 = obj;
}
}
if (tmp3) {
const obj2 = { status, clientStatus, activities: hiddenActivities, hiddenActivities, processedAtTimestamp };
tmp5[guildId] = obj2;
} else {
let sorted = activities;
if (activities.length > 1) {
let items = [];
HermesBuiltin.arraySpread(activities, 0);
sorted = items.sort(sortActivity);
}
if (hiddenActivities == null) {
hiddenActivities = [];
}
let tmp13 = hiddenActivities;
if (0 !== hiddenActivities.length) {
const items1 = [];
HermesBuiltin.arraySpread(hiddenActivities, 0);
const reversed = items1.reverse();
const _Map = Map;
const map = new Map(reversed.map((party) => {
party = party.party;
let id;
if (party != null) {
id = party.id;
}
const items = ["" + party.application_id + ":" + id, party];
return items;
}));
const items2 = [];
HermesBuiltin.arraySpread(map.values(), 0);
tmp13 = items2;
}
const obj3 = { status, clientStatus, activities: sorted, hiddenActivities: tmp13, processedAtTimestamp };
tmp5[guildId] = obj3;
}
}
}
function clearPresence(id, id) {
if (id === AuthenticationStore.getId()) {
return false;
} else {
if (null != presencesForGuilds[id]) {
if (null != tmp5[id]) {
delete tmp3[tmp2];
const _Object = Object;
if (0 === Object.keys(tmp5).length) {
delete tmp2[tmp];
}
flattenPresence(id);
}
}
return false;
}
}
function clearPresences(id) {
const keys = SnowflakeUtilsDefault.keys(closure_10);
while (tmp2 !== undefined) {
let tmp5 = clearPresence(id, tmp3);
continue;
}
}
const Constants = fn(1074);
({ StatusTypes: closure_4, ActivityTypes: hasOwnProperty, ClientTypes: metroRequire, ME: closure_7, UserFlags: closure_8 } = Constants);
let closure_9 = Object.freeze([]);
const presencesForGuilds = {};
const statuses = {};
let activities = {};
const filteredActivities = {};
let hiddenActivities = {};
const clientStatuses = {};
const activityMetadata = {};
const Store = initializeDefault.Store;
class PresenceStore extends Store {
}
const prototype = PresenceStore.prototype;
prototype["initialize"] = function initialize() {
this.waitFor(AuthenticationStore, UserStore);
};
prototype["setCurrentUserOnConnectionOpen"] = function setCurrentUserOnConnectionOpen(IDLE, valueResult) {
closure_11[AuthenticationStore.getId()] = IDLE;
const id = AuthenticationStore.getId();
const items = [...valueResult];
const sorted = items.sort(sortActivity);
closure_12[id] = sorted;
closure_13[id] = filterPlayingActivities(sorted);
};
prototype["getStatus"] = function getStatus(arg0) {
let tmp = arg1;
if (arg1 === undefined) {
tmp = null;
}
let UNKNOWN = arg2;
if (arg2 === undefined) {
UNKNOWN = constants.OFFLINE;
}
const user = UserStore.getUser(arg0);
let hasFlagResult = null != user;
if (hasFlagResult) {
hasFlagResult = user.hasFlag(constants4.BOT_HTTP_INTERACTIONS);
}
if (hasFlagResult) {
UNKNOWN = constants.UNKNOWN;
}
if (null == tmp) {
let tmp11 = statuses[arg0];
if (tmp11 == null) {
tmp11 = UNKNOWN;
}
return tmp11;
} else {
let tmp8 = null;
if (null != presencesForGuilds[arg0]) {
tmp8 = tmp7[tmp];
}
let status;
if (tmp8 != null) {
status = tmp8.status;
}
if (status == null) {
status = UNKNOWN;
}
return status;
}
};
prototype["getActivities"] = function getActivities(arg0) {
let tmp = arg1;
if (arg1 === undefined) {
tmp = null;
}
if (null == tmp) {
let tmp8 = filteredActivities[arg0];
if (tmp8 == null) {
tmp8 = closure_9;
}
return tmp8;
} else {
let tmp4 = null;
if (null != presencesForGuilds[arg0]) {
tmp4 = tmp3[tmp];
}
if (null != tmp4) {
if (null != tmp4.activities) {
let tmp6 = filterPlayingActivities(tmp4.activities);
}
return tmp6;
}
tmp6 = closure_9;
}
};
prototype["getUnfilteredActivities"] = function getUnfilteredActivities(arg0) {
let tmp = arg1;
if (arg1 === undefined) {
tmp = null;
}
if (null == tmp) {
let tmp6 = activities[arg0];
if (tmp6 == null) {
tmp6 = closure_9;
}
return tmp6;
} else {
let tmp4 = null;
if (null != presencesForGuilds[arg0]) {
tmp4 = tmp3[tmp];
}
if (null != tmp4) {
if (null != tmp4.activities) {
activities = tmp4.activities;
}
return activities;
}
activities = closure_9;
}
};
prototype["getHiddenActivities"] = function getHiddenActivities(arg0) {
let tmp = arg1;
if (arg1 === undefined) {
tmp = null;
}
if (null == tmp) {
let tmp7 = hiddenActivities[arg0];
if (tmp7 == null) {
tmp7 = closure_9;
}
hiddenActivities = tmp7;
} else {
let tmp4 = null;
if (null != presencesForGuilds[arg0]) {
tmp4 = tmp3[tmp];
}
hiddenActivities = undefined;
if (tmp4 != null) {
hiddenActivities = tmp4.hiddenActivities;
}
if (hiddenActivities == null) {
hiddenActivities = closure_9;
}
}
return hiddenActivities;
};
prototype["getPrimaryActivity"] = function getPrimaryActivity(arg0) {
let tmp = arg1;
if (arg1 === undefined) {
tmp = null;
}
activities = this.getActivities(arg0, tmp);
return activities.filter((type) => type.type !== constants.HANG_STATUS)[0];
};
prototype["getAllApplicationActivities"] = function getAllApplicationActivities(arg0) {
const items = [];
const keys = SnowflakeUtilsDefault.keys(filteredActivities);
for (const item10015 of keys) {
let tmp4 = filteredActivities[item10015];
for (const item10023 of tmp4) {
if (item10023.application_id === arg0) {
let obj2 = { userId: null, activity: null };
obj2.userId = tmp2;
obj2.activity = tmp7;
let arr = items.push(obj2);
}
continue;
}
continue;
}
return items;
};
prototype["getApplicationActivity"] = function getApplicationActivity(arg0, arg1) {
closure_0 = arg1;
let tmp = arg2;
if (arg2 === undefined) {
tmp = null;
}
return this.findActivity(arg0, (application_id) => application_id.application_id === closure_0, tmp, true);
};
prototype["findActivity"] = function findActivity(arg0, _messages) {
let tmp = arg2;
if (arg2 === undefined) {
tmp = null;
}
let flag = arg3;
if (arg3 === undefined) {
flag = false;
}
if (flag == null) {
flag = false;
}
const self = this;
activities = this.getActivities(arg0, tmp);
let combined = activities;
if (flag) {
combined = activities.concat(self.getHiddenActivities(arg0, tmp));
}
return combined.find(_messages);
};
prototype["getActivityMetadata"] = function getActivityMetadata(arg0) {
return activityMetadata[arg0];
};
prototype["getUserIds"] = function getUserIds() {
return SnowflakeUtilsDefault.keys(closure_12);
};
prototype["isMobileOnline"] = function isMobileOnline(id) {
let tmp2 = null != tmp;
if (tmp2) {
tmp2 = tmp[constants3.MOBILE] === constants.ONLINE;
}
if (tmp2) {
tmp2 = tmp[constants3.DESKTOP] !== constants.ONLINE;
}
if (tmp2) {
tmp2 = tmp[constants3.VR] !== constants.ONLINE;
}
return tmp2;
};
prototype["isVROnline"] = function isVROnline(id) {
let tmp2 = null != tmp;
if (tmp2) {
tmp2 = tmp[constants3.VR] === constants.ONLINE;
}
return tmp2;
};
prototype["getClientStatus"] = function getClientStatus(arg0) {
return clientStatuses[arg0];
};
prototype["getState"] = function getState() {
return { presencesForGuilds, statuses, activities, filteredActivities, hiddenActivities, activityMetadata, clientStatuses };
};
PresenceStore.displayName = "PresenceStore";
const presenceStore = new PresenceStore(DispatcherDefault, {
CONNECTION_OPEN: function handleConnectionOpen() {
return true;
},
CONNECTION_OPEN_SUPPLEMENTAL: function handleConnectionOpenSupplemental(arg0) {
({ guilds, presences } = arg0);
const id = AuthenticationStore.getId();
closure_10 = {};
closure_16 = {};
obj = { [id]: obj[id] };
obj2 = { [id]: obj2[id] };
obj3 = { [id]: obj3[id] };
obj4 = { [id]: obj4[id] };
closure_15 = { [id]: {} };
const set = new Set();
let item = guilds.forEach((presences) => {
presences = presences.presences;
const item = presences.forEach((status) => {
const user = status.user;
updatePresenceInConnectionOpen({ guildId: presences.id, userId: user.id, status: status.status, clientStatus: status.clientStatus, activities: status.activities, hiddenActivities: status.hiddenActivities, processedAtTimestamp: status.processedAtTimestamp });
set.add(user.id);
});
});
const item1 = presences.forEach((user) => {
user = user.user;
if (null != user) {
obj = { guildId, userId: user.id, status: tmp, clientStatus: tmp2, activities: tmp3, hiddenActivities: tmp4, processedAtTimestamp: tmp5 };
updatePresenceInConnectionOpen(obj);
set.add(user.id);
}
});
set.delete(id);
const item2 = set.forEach(flattenPresenceInConnectionOpen);
},
OVERLAY_INITIALIZE: function handleOverlayInitialize(presences) {
({ presencesForGuilds: closure_10, statuses: closure_11, activities: closure_12, hiddenActivities: closure_14, activityMetadata: closure_16 } = presences.presences);
},
GUILD_CREATE: function handleGuildCreate(guild) {
guild = guild.guild;
const presences = guild.presences;
const item = presences.forEach((user) => {
updatePresence({ guildId: guild.id, userId: user.user.id, status: user.status, clientStatus: user.clientStatus, activities: user.activities, hiddenActivities: user.hiddenActivities, processedAtTimestamp: user.processedAtTimestamp });
});
},
GUILD_DELETE: function handleGuildDelete(guild) {
clearPresences(guild.guild.id);
},
GUILD_MEMBER_REMOVE: function handleGuildMemberRemove(user) {
const id = user.user.id;
let flag = false;
if (id !== AuthenticationStore.getId()) {
flag = false;
if (null != presencesForGuilds[id]) {
flag = false;
if (null != tmp5[user.guildId]) {
delete tmp3[tmp2];
const _Object = Object;
if (0 === Object.keys(tmp5).length) {
delete tmp2[tmp];
}
flattenPresence(id);
}
}
}
return flag;
},
PRESENCE_UPDATES: function handlePresenceUpdates(updates) {
updates = updates.updates;
const mapped = updates.map((guildId) => {
guildId = guildId.guildId;
({ user, status, clientStatus, activities, hiddenActivities, processedAtTimestamp } = guildId);
if (guildId == null) {
guildId = closure_1_7;
}
return updatePresence({ guildId, userId: user.id, status, clientStatus, activities, hiddenActivities, processedAtTimestamp });
});
return mapped.some((item) => item);
},
PRESENCES_REPLACE: function handlePresenceReplace(presences) {
presences = presences.presences;
clearPresences(guildId);
const item = presences.forEach((user) => {
user = user.user;
if (null != user) {
const obj = { guildId, userId: user.id, status: tmp, clientStatus: tmp2, activities: tmp3, hiddenActivities: tmp4, processedAtTimestamp: tmp5 };
updatePresence(obj);
}
});
},
ACTIVITY_METADATA_UPDATE: function handleActivityMetadataUpdate(userId) {
closure_16[userId.userId] = userId.metadata;
return false;
},
THREAD_MEMBER_LIST_UPDATE: function handleThreadMemberListUpdate(arg0) {
({ guildId: importDefault, members } = arg0);
const item = members.forEach((presence) => {
if (null != presence.presence) {
const obj = { guildId, userId: presence.user_id, status: presence.presence.status, clientStatus: presence.presence.clientStatus, activities: presence.presence.activities, hiddenActivities: presence.presence.hiddenActivities, processedAtTimestamp: presence.presence.processedAtTimestamp };
updatePresence(obj);
}
});
},
THREAD_MEMBERS_UPDATE: function handleThreadMembersUpdate(arg0) {
({ guildId: importDefault, addedMembers } = arg0);
if (addedMembers != null) {
const item = addedMembers.forEach((presence) => {
if (null != presence.presence) {
const obj = { guildId, userId: presence.userId, status: presence.presence.status, clientStatus: presence.presence.clientStatus, activities: presence.presence.activities, hiddenActivities: presence.presence.hiddenActivities, processedAtTimestamp: presence.presence.processedAtTimestamp };
updatePresence(obj);
}
});
}
},
SELF_PRESENCE_STORE_UPDATE: function handleCurrentUserPresenceUpdate(status) {
const id = AuthenticationStore.getId();
if (statuses[id] === status.status) {
if (activities[id] === status.activities) {
if (hiddenActivities[id] === status.hiddenActivities) {
return false;
}
}
}
statuses[id] = status.status;
const items = [...status.activities];
const sorted = items.sort(sortActivity);
activities[id] = sorted;
closure_13[id] = filterPlayingActivities(sorted);
const items1 = [...status.hiddenActivities];
hiddenActivities[id] = items1.sort(sortActivity);
delete tmp[tmp2];
}
});
const size = fn(2);
const result = size.fileFinishedImporting("stores/PresenceStore.tsx");
export default presenceStore;
export { sortActivity };