decord/beta/source/modules/inbox/RecentMentionsStore.tsx
2026-10-07 22:43:51 +00:00

575 lines
18 KiB
TypeScript

// Module ID: 7122
// Function ID: 7123
// Name: RecentMentionsStore
// Dependencies: [4520, 502, 2051, 5110, 4905, 4519, 4699, 5071, 1377, 1085, 510, 5112, 5100, 5309, 12, 4919, 6773, 7123, 504, 584, 2]
// Module 7122 (RecentMentionsStore)
import _modDef12 from "module_12" /* 12 */;
import get_initializedDefault from "get initialized" /* 504 */;
import Storage2 from "Storage" /* 510 */;
import DispatcherDefault from "Dispatcher" /* 584 */;
import TimeUtils from "TimeUtils" /* 4919 */;
import AgeGateUtils from "AgeGateUtils" /* 5100 */;
import MessageRecordUtils from "MessageRecordUtils" /* 5112 */;
import isMessageMentioned from "isMessageMentioned" /* 5309 */;
import isSystemMessageDefault from "isSystemMessage" /* 6773 */;
import shouldRemoveSelfMentionDefault from "shouldRemoveSelfMention" /* 7123 */;
import MessageRecord from "MessageRecord" /* 4520 */;
import AuthenticationStore from "AuthenticationStore" /* 502 */;
import ChannelStore from "ChannelStore" /* 2051 */;
import MessageStore from "MessageStore" /* 5110 */;
import ReadStateStore from "ReadStateStore" /* 4905 */;
import RelationshipStore from "RelationshipStore" /* 4519 */;
import SelectedGuildStore from "SelectedGuildStore" /* 4699 */;
import UserGuildSettingsStore from "UserGuildSettingsStore" /* 5071 */;
import UserStore from "UserStore" /* 1377 */;
import Constants from "Constants" /* 1085 */;
import size_mod from "module_2" /* 2 */;
const isMessageMentionedDefault = isMessageMentioned;
let closure_14;
let closure_15;
let closure_16;
let map1;
const f94277 = (getChannelId) => {
if (null == closure_1_19[getChannelId.getChannelId(getChannelId)]) {
closure_1_19[getChannelId.getChannelId()] = 0;
}
const channelId = getChannelId.getChannelId();
closure_1_19[channelId] = closure_1_19[channelId] + 1;
};
const f94278 = (getChannelId) => {
if (null != closure_1_19[getChannelId.getChannelId(getChannelId)]) {
const _Math = Math;
const channelId = getChannelId.getChannelId();
closure_1_19[channelId] = Math.max(0, closure_1_19[getChannelId.getChannelId(getChannelId)] - 1);
}
};
function findOrCreateMessageRecord(channel_id) {
if (channel_id instanceof MessageRecord) {
return channel_id;
} else {
let message = MessageStore.getMessage(channel_id.channel_id, channel_id.id);
if (null == message) {
const obj = MessageRecordUtils;
message = obj.createMessageRecord(channel_id);
}
return message;
}
}
function hasMentionNotificationEnabled(channel_id) {
const basicChannel = ChannelStore.getBasicChannel(channel_id.channel_id);
if (null != basicChannel) {
const GUILD_TEXTUAL = constants4.GUILD_TEXTUAL;
if (GUILD_TEXTUAL.has(basicChannel.type)) {
if (UserGuildSettingsStore.isGuildOrCategoryOrChannelMuted(basicChannel.guild_id, basicChannel.id)) {
return false;
} else {
const obj2 = AgeGateUtils;
if (obj2.shouldShowAgeGateForChannelId(basicChannel.id)) {
return false;
} else {
const result = obj.resolvedMessageNotifications(basicChannel);
if (constants3.ALL_MESSAGES === result) {
return true;
} else if (constants3.ONLY_MENTIONS === result) {
const result1 = obj.isSuppressEveryoneEnabled(basicChannel.guild_id);
const result2 = obj.isSuppressRolesEnabled(basicChannel.guild_id);
const currentUser = UserStore.getCurrentUser();
let tmp10 = null != currentUser;
if (tmp10) {
const obj3 = { message: channel_id, userId: currentUser.id, suppressEveryone: result1, suppressRoles: result2 };
tmp10 = isMessageMentionedDefault(obj3);
}
return tmp10;
} else {
const NO_MESSAGES = tmp5.NO_MESSAGES;
return false;
}
}
}
}
}
return false;
}
function parseMessage(message, channelId) {
let tmp17;
let tmp19;
let channel_id = channelId;
if (channelId === undefined) {
channel_id = null;
}
if (isSystemMessageDefault(message)) {
const SELF_MENTIONABLE_SYSTEM = constants2.SELF_MENTIONABLE_SYSTEM;
if (!SELF_MENTIONABLE_SYSTEM.has(message.type)) {
return null;
}
}
if (null == channel_id) {
channel_id = message.channel_id;
}
const channel = ChannelStore.getChannel(channel_id);
if (null != channel) {
if (channel.type !== map1.DM) {
if (closure_23.guildFilter === RecentMentionsFilters.THIS_SERVER) {
const guildId = channel.getGuildId();
if (guildId !== SelectedGuildStore.getGuildId()) {
return null;
}
}
const id = AuthenticationStore.getId();
if (!RelationshipStore.isBlockedOrIgnoredForMessage(message)) {
if (!shouldRemoveSelfMentionDefault(message, id)) {
let tmp12 = message;
if (!(message instanceof MessageRecord)) {
message = MessageStore.getMessage(message.channel_id, message.id);
if (null == message) {
const obj2 = MessageRecordUtils;
message = obj2.createMessageRecord(message);
}
tmp12 = message;
}
const obj = { message: tmp12, userId: id, suppressEveryone: tmp17, suppressRoles: tmp19 };
let tmp20 = null;
tmp17 = !closure_23.everyoneFilter;
tmp19 = !closure_23.roleFilter;
if (isMessageMentionedDefault(obj)) {
let tmp2ResultResult = c26 && ReadStateStore.ackMessageId(channel.id) !== tmp12.id;
if (tmp2ResultResult) {
const obj3 = { message: tmp12, userId: id, suppressEveryone: UserGuildSettingsStore.isSuppressEveryoneEnabled(channel.getGuildId()), suppressRoles: UserGuildSettingsStore.isSuppressRolesEnabled(channel.getGuildId()) };
const tmp2Result = isMessageMentionedDefault;
tmp2ResultResult = tmp2Result(obj3);
}
tmp20 = tmp12;
if (tmp2ResultResult) {
c26 = false;
tmp20 = tmp12;
}
}
return tmp20;
}
}
return null;
}
}
return null;
}
function deleteMessage(arg0) {
let addedMessages;
let arr2;
let deletedMessages;
let closure_0 = arg0;
if (null == closure_20[arg0]) {
return false;
} else {
delete closure_20[tmp];
const obj = { deletedMessages: arr2.filter(substr, (id) => id.id === id) };
({ addedMessages, deletedMessages } = obj);
arr2 = _modDef12;
const tmp5 = importDefault;
if (null != addedMessages) {
const item = addedMessages.forEach(f94277);
}
if (null != deletedMessages) {
const item1 = deletedMessages.forEach(f94278);
}
const tmp5Result = tmp5(12);
substr = tmp5Result.filter(substr, (id) => id.id !== id);
}
}
function handleMessageDelete(id) {
let addedMessages;
let arr;
let deletedMessages;
id = id.id;
if (null != closure_20[id]) {
delete closure_20[id];
const obj = { deletedMessages: arr.filter(substr, (id) => id.id === id) };
({ addedMessages, deletedMessages } = obj);
arr = _modDef12;
const tmp = importDefault;
if (null != addedMessages) {
const item = addedMessages.forEach(f94277);
}
if (null != deletedMessages) {
const item1 = deletedMessages.forEach(f94278);
}
const tmpResult = tmp(12);
substr = tmpResult.filter(substr, (id) => id.id !== id);
}
return false;
}
function handleSetRecentMentionsFilters(arg0) {
let items;
const obj = {};
const merged = Object.assign(closure_23);
const defaults = _modDef12.defaults;
const obj2 = _modDef12;
closure_23 = defaults(obj2.pick(arg0, ["guildFilter", "roleFilter", "everyoneFilter"]), closure_23);
const Storage = items(510).Storage;
const result = Storage.set(recentMentionFilterSettings, closure_23);
let tmp5 = obj.guildFilter !== closure_23.guildFilter && closure_23.guildFilter === tmp4;
if (!tmp5) {
let tmp8 = obj.everyoneFilter !== closure_23.everyoneFilter;
if (tmp8) {
tmp8 = closure_23.everyoneFilter === false;
}
tmp5 = tmp8;
}
if (!tmp5) {
tmp5 = obj.roleFilter !== closure_23.roleFilter && closure_23.roleFilter === false;
const tmp11 = obj.roleFilter !== closure_23.roleFilter && closure_23.roleFilter === false;
}
closure_20 = {};
items = [];
if (tmp5) {
const item = items.forEach((item) => {
const tmp = parseMessage(item);
if (null != tmp) {
items.push(tmp);
closure_20[tmp.id] = true;
}
});
}
closure_19 = {};
const item1 = items.forEach((getChannelId) => {
if (null == closure_19[getChannelId.getChannelId(getChannelId)]) {
closure_19[getChannelId.getChannelId()] = 0;
}
const channelId = getChannelId.getChannelId();
closure_19[channelId] = closure_19[channelId] + 1;
});
if (0 === items.length) {
c24 = false;
}
}
function handleRelationshipUpdate() {
let addedMessages;
let arr;
let deletedMessages;
const obj = { deletedMessages: arr.filter(substr, (message) => RelationshipStore.isBlockedOrIgnoredForMessage(message)) };
({ addedMessages, deletedMessages } = obj);
arr = _modDef12;
if (null != addedMessages) {
const item = addedMessages.forEach(f94277);
}
if (null != deletedMessages) {
const item1 = deletedMessages.forEach(f94278);
}
substr = substr.filter((item) => !RelationshipStore.isBlockedOrIgnoredForMessage(item));
}
function handleDeleteChannel(channel) {
let addedMessages;
let deletedMessages;
channel = channel.channel;
const items = [];
const arr2 = items(12);
closure_18 = arr2.filter(closure_18, (channel_id) => {
let flag = channel_id.channel_id !== channel.id;
if (!flag) {
delete closure_20[channel_id.id];
items.push(channel_id);
flag = false;
}
return flag;
});
({ addedMessages, deletedMessages } = { deletedMessages: items });
if (null != addedMessages) {
const item = addedMessages.forEach(f94277);
}
if (null != deletedMessages) {
const item1 = deletedMessages.forEach(f94278);
}
}
const RecentMentionsFilters = Constants.RecentMentionsFilters;
({ ChannelTypes: map1, MessageTypesSets: closure_14, UserNotificationSettings: closure_15, ChannelTypesSets: closure_16 } = Constants);
const recentMentionFilterSettings = "recentMentionFilterSettings";
let substr = [];
let closure_19 = {};
let closure_20 = {};
let c21 = false;
let hasMoreAfter = true;
let Storage = Storage2.Storage;
let obj = { guildFilter: RecentMentionsFilters.ALL_SERVERS, everyoneFilter: true, roleFilter: true };
let closure_23 = Storage.get("recentMentionFilterSettings", obj);
let c24 = false;
let closure_25 = 0;
let c26 = false;
const Store = get_initializedDefault.Store;
class RecentMentionsStore extends Store {
initialize() {
this.waitFor(AuthenticationStore, ChannelStore, MessageStore, ReadStateStore, RelationshipStore, SelectedGuildStore, UserGuildSettingsStore, UserStore);
}
getMentions() {
let tmp3;
const tmp = c24;
if (tmp) {
tmp3 = substr;
} else {
tmp3 = null;
}
return tmp3;
}
getSettingsFilteredMentions() {
let found;
const tmp = c24;
if (tmp) {
found = substr.filter(hasMentionNotificationEnabled);
} else {
found = null;
}
return found;
}
hasMention(arg0) {
return closure_20[arg0];
}
getMentionCountForChannel(arg0) {
let num = closure_19[arg0];
if (num == null) {
num = 0;
}
return num;
}
}
const prototype = RecentMentionsStore.prototype;
Object.defineProperty(prototype, "hasLoadedEver", {
get: function hasLoadedEver() {
return c24;
},
set: undefined
});
Object.defineProperty(prototype, "lastLoaded", {
get: function lastLoaded() {
return closure_25;
},
set: undefined
});
Object.defineProperty(prototype, "loading", {
get: function loading() {
return c21;
},
set: undefined
});
Object.defineProperty(prototype, "hasMore", {
get: function hasMore() {
return hasMoreAfter;
},
set: undefined
});
Object.defineProperty(prototype, "guildFilter", {
get: function guildFilter() {
return closure_23.guildFilter;
},
set: undefined
});
Object.defineProperty(prototype, "everyoneFilter", {
get: function everyoneFilter() {
return closure_23.everyoneFilter;
},
set: undefined
});
Object.defineProperty(prototype, "roleFilter", {
get: function roleFilter() {
return closure_23.roleFilter;
},
set: undefined
});
Object.defineProperty(prototype, "mentionsAreStale", {
get: function mentionsAreStale() {
return c26;
},
set: undefined
});
Object.defineProperty(prototype, "mentionCountByChannel", {
get: function mentionCountByChannel() {
return closure_19;
},
set: undefined
});
RecentMentionsStore.displayName = "RecentMentionsStore";
let obj2 = {
LOAD_RECENT_MENTIONS: function handleLoadMentions(guildId) {
c21 = true;
const tmp = null == guildId.guildId && closure_23.guildFilter === RecentMentionsFilters.THIS_SERVER;
if (tmp) {
const obj = { guildFilter: RecentMentionsFilters.ALL_SERVERS };
handleSetRecentMentionsFilters(obj);
}
},
LOAD_RECENT_MENTIONS_SUCCESS: function handleLoadMentionsSuccess(arg0) {
let addedMessages;
let deletedMessages;
let isAfter;
let messages;
({ hasMoreAfter, messages, isAfter } = arg0);
const arr = _modDef12;
const mapped = arr.map(messages, findOrCreateMessageRecord);
({ addedMessages, deletedMessages } = { addedMessages: mapped });
if (null != addedMessages) {
const item = addedMessages.forEach(f94277);
}
if (null != deletedMessages) {
const item1 = deletedMessages.forEach(f94278);
}
if (isAfter) {
substr = substr.concat(mapped);
} else {
substr = mapped;
closure_20 = {};
}
const tmpResult = _modDef12;
const item2 = tmpResult.forEach(mapped, (id) => {
closure_1_20[id.id] = true;
});
c21 = false;
const obj = TimeUtils;
closure_25 = obj.now();
c24 = true;
},
LOAD_RECENT_MENTIONS_FAILURE: function handleLoadMentionsFailure() {
c21 = false;
},
SET_RECENT_MENTIONS_FILTER: handleSetRecentMentionsFilters,
CLEAR_MENTIONS: function handleClearMentions() {
substr = [];
closure_20 = {};
c24 = false;
c26 = false;
closure_19 = {};
},
TRUNCATE_MENTIONS: function handleTruncateMentions(size) {
let addedMessages;
let deletedMessages;
let length;
size = size.size;
({ addedMessages, deletedMessages } = { deletedMessages: substr.slice(size) });
({ deletedMessages: substr.slice(size) });
if (null != addedMessages) {
const item = addedMessages.forEach(f94277);
}
if (null != deletedMessages) {
const item1 = deletedMessages.forEach(f94278);
}
let sum = size;
if (size < substr.length) {
do {
delete closure_20[substr[tmp3].id];
sum = sum + 1;
length = substr.length;
} while (sum < length);
}
const length2 = substr.length;
substr = substr.slice(0, size);
if (length2 > substr.length) {
hasMoreAfter = true;
}
},
CHANNEL_SELECT: function handleChannelSelect() {
if (closure_23.guildFilter !== RecentMentionsFilters.THIS_SERVER) {
return false;
} else {
c24 = false;
}
},
CONNECTION_OPEN: function handleConnectionOpen() {
substr = [];
closure_20 = {};
c24 = false;
c26 = false;
closure_19 = {};
},
GUILD_DELETE: function handleGuildDelete(guild) {
let addedMessages;
let deletedMessages;
guild = guild.guild;
const items = [];
const arr2 = items(12);
closure_18 = arr2.filter(closure_18, (channel_id) => {
const channel = ChannelStore.getChannel(channel_id.channel_id);
let flag = null != channel && channel.getGuildId() !== guild.id;
if (!flag) {
delete closure_20[channel_id.id];
items.push(channel_id);
flag = false;
}
return flag;
});
({ addedMessages, deletedMessages } = { deletedMessages: items });
if (null != addedMessages) {
const item = addedMessages.forEach(f94277);
}
if (null != deletedMessages) {
const item1 = deletedMessages.forEach(f94278);
}
},
MESSAGE_CREATE: function handleIncomingMessage(message) {
let addedMessages;
let deletedMessages;
let items;
message = message.message;
let channelId = message.channelId;
const currentUser = UserStore.getCurrentUser();
if (null != currentUser) {
const obj3 = { rawMessage: message, userId: currentUser.id, suppressRoles: false, suppressEveryone: false };
const obj2 = isMessageMentioned;
if (obj2.isRawMessageMentioned(obj3)) {
const tmp3 = parseMessage(message, channelId);
if (null == tmp3) {
return false;
} else {
substr = substr.slice();
substr.unshift(tmp3);
closure_20[tmp3.id] = true;
const obj = { addedMessages: items };
items = [tmp3];
({ addedMessages, deletedMessages } = obj);
if (null != addedMessages) {
const item = addedMessages.forEach(f94277);
}
if (null != deletedMessages) {
const item1 = deletedMessages.forEach(f94278);
}
}
}
}
return false;
},
MESSAGE_UPDATE: function handleMessageUpdate(message) {
const id = message.message.id;
if (null != id) {
if (null != closure_20[id]) {
const obj = _modDef12;
const findIndexResult = obj.findIndex(substr, (id) => id.id === id);
substr = substr.slice();
if (null != substr[findIndexResult]) {
const obj2 = MessageRecordUtils;
substr[findIndexResult] = obj2.updateMessageRecord(substr[findIndexResult], message.message);
}
}
}
return false;
},
MESSAGE_DELETE: handleMessageDelete,
RECENT_MENTION_DELETE: handleMessageDelete,
MESSAGE_DELETE_BULK: function handleMessageDeleteBulk(ids) {
ids = ids.ids;
const arr = _modDef12;
const item = arr.forEach(ids, deleteMessage);
},
CHANNEL_DELETE: handleDeleteChannel,
THREAD_DELETE: handleDeleteChannel,
RELATIONSHIP_ADD: handleRelationshipUpdate,
RELATIONSHIP_REMOVE: handleRelationshipUpdate,
RELATIONSHIP_UPDATE: handleRelationshipUpdate,
SET_RECENT_MENTIONS_STALE: function handleSetRecentMentionsStale() {
c26 = true;
}
};
const recentMentionsStore = new RecentMentionsStore(DispatcherDefault, obj2);
let size = size_mod;
let result = size.fileFinishedImporting("modules/inbox/RecentMentionsStore.tsx");
export default recentMentionsStore;
export { hasMentionNotificationEnabled };
export { parseMessage };