// Metro module 5858 (f5859). import AuthenticationStore from "../../stores/AuthenticationStore"; import ChannelStore from "../../stores/ChannelStore"; import RelationshipStore from "../../stores/RelationshipStore"; import SelectedChannelStore from "../../stores/SelectedChannelStore"; import UserStore from "../../stores/UserStore"; import ConversationVisibilityStore from "./ConversationVisibilityStore"; import { CONVERSATION_COLORS, CONVERSATION_FEEDBACK_RATINGS_CACHE_MAX, MAX_CONVERSATIONS_PER_CHANNEL, MAX_CHANNELS_WITH_CONVERSATIONS } from "./ConversationConstants"; import LRUCache from "../../_bundle/LRUCache"; import SnowflakeUtils from "../../utils/SnowflakeUtils"; import { createMessageRecord, updateMessageRecord } from "../messages/MessageRecordUtils"; import { mapConversation } from "./ConversationsUtils"; import { isNotNullish } from "../../utils/GlobalUtils"; import { shouldApplyReaction } from "../reactions/ReactionUtils"; import Module589 from "../../_bundle/Module589"; import Dispatcher from "../../Dispatcher"; function $mk77240($env) { return (a0) => a0.id === $env[0]; } function $mk77241($env) { return (a0) => a0.id !== $env[0]; } let c3665_12, c3665_13, c3665_15, buildModerationLabel, processHydratedMessages, removeHydratedMessage, evictChannel; const removePendingListFetch = function removePendingListFetch(channelId, requestKey) { const r9 = c3665_13.get(channelId); const r1 = r9 == null || !r9.has(requestKey); let r11 = !r1; if (!r1) { r9.delete(requestKey); const size = r9.size; r11 = true; if (size === 0) { c3665_13.delete(channelId); r11 = true; } } return r11; }; buildModerationLabel = function buildModerationLabel(a0) { const r2 = a0[0]; const r8 = a0.map((item) => { let category = item.category; if (category == null) { category = item.reason; } return category; }).filter((item) => item != null); let r7 = r2?.severity; if (r7 == null) { r7 = null; } let r15 = r2?.confidence; if (r15 == null) { r15 = null; } const r36 = [r7 != null ? `${r7} severity` : null, r15 != null ? `${r15} confidence` : null].filter(Boolean).join(", "); const r50 = [r8.length > 0 ? r8.join(", ") : null, r36.length > 0 ? r36 : null].filter(Boolean).join(" ยท "); return r50.length > 0 ? r50 : "Moderation Failed"; }; processHydratedMessages = function processHydratedMessages(channelId, a1, messages, fullyHydrated, r7 = []) { L19: { const r4 = c3665_12.peek(channelId); if (r4 != null) { const r35 = r4.conversationMetadataById.get(a1); if (r35 != null) { if (!fullyHydrated && r35.fullyHydrated) { break L19; } const hydratedMessages = []; for (const item of messages) { const messageRecord = createMessageRecord(item); const message2 = messageRecord; hydratedMessages.push(messageRecord); const r52 = r4.messageMetadataByMessageId.get(messageRecord.id); if (r52 != null) { r52.conversationId = a1; r52.message = message2; } else { const messageMetadataByMessageId = r4.messageMetadataByMessageId; const message = message2; messageMetadataByMessageId.set(message.id, { conversationId: a1, moderationLabel: null, message }); } } r35.hydratedMessages = hydratedMessages; r35.fullyHydrated = fullyHydrated; for (const item2 of r7) { if (r4.messageMetadataByMessageId.get(item2.id) == null) { const messageMetadataByMessageId2 = r4.messageMetadataByMessageId; messageMetadataByMessageId2.set(item2.id, { conversationId: null, moderationLabel: null, message: createMessageRecord(item2) }); } } } } } }; const handleReaction = function handleReaction(a0) { const { type, channelId, messageId, userId, emoji, reactionType } = a0; const r20 = c3665_12.peek(channelId); if (r20 == null) { return false; } const r23 = r20.messageMetadataByMessageId.get(messageId); if (r23?.message == null) { return false; } if (shouldApplyReaction(a0)) { const r34 = AuthenticationStore.getId() === userId; const message = type === "MESSAGE_REACTION_ADD" ? r23.message.addReaction(emoji, r34, a0.colors, reactionType) : r23.message.removeReaction(emoji, r34, reactionType); let env15212; const r41 = env15212 = {}; env15212[0] = messageId; r23.message = message; const r44 = r23.conversationId != null ? r20.conversationMetadataById.get(r23.conversationId) : null; if (r44?.hydratedMessages != null) { const r53 = r44.hydratedMessages.findIndex($mk77240(r41)); if (r53 !== -1) { const hydratedMessages = r44.hydratedMessages.slice(); hydratedMessages[r53] = message; r44.hydratedMessages = hydratedMessages; } } return true; } return false; }; removeHydratedMessage = function removeHydratedMessage(channelId, item) { let env15213; const r3 = env15213 = {}; env15213[0] = item; const r10 = c3665_12.peek(channelId); if (r10 == null) { return false; } const r13 = r10.messageMetadataByMessageId.get(item); if (r13 != null) { const r15 = r13.conversationId != null ? r10.conversationMetadataById.get(r13.conversationId) : null; if (r15?.hydratedMessages != null) { r15.hydratedMessages = r15.hydratedMessages.filter($mk77241(r3)); } } return r10.messageMetadataByMessageId.delete(item); }; evictChannel = function evictChannel(item) { let r5 = c3665_12.has(item); c3665_12.del(item); const r9 = c3665_13.delete(item); if (!r5) { r5 = r9; } return r5; }; c3665_12 = new LRUCache({ max: MAX_CHANNELS_WITH_CONVERSATIONS, dispose: function cleanupChannelSideState(a0) { return c3665_13.delete(a0); } }); c3665_13 = new Map(); c3665_15 = new Map(); class ConversationsStore extends Module589.Store { static displayName = "ConversationsStore"; initialize() { this.waitFor(AuthenticationStore, ChannelStore, ConversationVisibilityStore, RelationshipStore, SelectedChannelStore, UserStore); } hasChannelData(a0) { return c3665_12.has(a0); } getChannelConversations(a0) { const r5 = c3665_12.peek(a0); return r5 != null ? r5.conversations : null; } getConversationForMessage(a0, a1) { const r8 = c3665_12.peek(a0); let r9 = r8 == null ? void 0 : r8.messageMetadataByMessageId.get(a1)?.conversationId; if (r9 == null) { r9 = null; } return r9; } getMessageMetadata(a0, a1) { const r7 = c3665_12.peek(a0); let r8 = r7 == null ? void 0 : r7.messageMetadataByMessageId.get(a1); if (r8 == null) { r8 = null; } return r8; } getMessage(a0, a1) { let r7 = this.getMessageMetadata(a0, a1)?.message; if (r7 == null) { r7 = null; } return r7; } getConversationMetadata(a0, a1) { const r7 = c3665_12.peek(a0); let r8 = r7 == null ? void 0 : r7.conversationMetadataById.get(a1); if (r8 == null) { r8 = null; } return r8; } getEdgeMarker(a0, a1) { const r6 = c3665_12.peek(a0); return r6 != null ? a1 === "before" ? r6.reachedOldest : r6.reachedNewest : null; } isPendingFetch(a0) { return c3665_13.has(a0); } isListFetchPending(a0, a1) { const r5 = c3665_13.get(a0); let r7 = r5 == null ? void 0 : r5.has(a1); if (r7 == null) { r7 = false; } return r7; } getSelectedConversationId(a0) { let r7 = c3665_12.peek(a0)?.selectedConversationId; if (r7 == null) { r7 = null; } return r7; } getSelectedConversation(a0) { const r9 = c3665_12.peek(a0); const selectedConversationId = r9?.selectedConversationId; const r10 = selectedConversationId == null; let r11 = null; if (!r10) { let r13 = r9 == null ? void 0 : r9.conversationMetadataById.get(selectedConversationId)?.conversation; if (r13 == null) { r13 = null; } r11 = r13; } return r11; } getConversationColor(a0, a1) { const r7 = c3665_12.peek(a0); const r1 = r7 == null; let r8 = null; if (!r1) { let r13 = r7.conversationMetadataById.get(a1)?.color; if (r13 == null) { r13 = null; } r8 = r13; } return r8; } getHydratedMessages(a0, a1) { const r8 = c3665_12.peek(a0); let r9 = r8 == null ? void 0 : r8.conversationMetadataById.get(a1)?.hydratedMessages; if (r9 == null) { r9 = null; } return r9; } getHydratedMessageById(a0, a1) { const r8 = c3665_12.peek(a0); let r9 = r8 == null ? void 0 : r8.messageMetadataByMessageId.get(a1)?.message; if (r9 == null) { r9 = null; } return r9; } isConversationFetchPending(a0, a1) { const r6 = c3665_15.get(a0); return r6 != null && r6.size !== 0 && (a1 !== true || r6.has("full")); } getConversationFeedbackRating(a0, a1) { const r7 = c3665_12.peek(a0); let r8 = r7 == null ? void 0 : r7.recentFeedbackRatingsByConversationId.get(a1); if (r8 == null) { r8 = null; } return r8; } } const conversationsStore = new ConversationsStore(Dispatcher, { CONVERSATION_FETCH_START: function handleConversationFetchStart(a0) { const conversationId = a0.conversationId; const r3 = a0.full ? "full" : "preview"; const r2 = c3665_15.get(conversationId); if (r2 != null) { r2.add(r3); } else { c3665_15.set(conversationId, new Set([r3])); } }, CONVERSATION_FETCH_SUCCESS: function handleConversationFetchSuccess({ channelId, conversationId, messages, messageReferences, fullyHydrated }) { const r11 = fullyHydrated ? "full" : "preview"; const r19 = c3665_15.get(conversationId); if (r19 != null) { r19.delete(r11); if (r19.size === 0) { c3665_15.delete(conversationId); } } processHydratedMessages(channelId, conversationId, messages, fullyHydrated, messageReferences); }, CONVERSATION_FETCH_FAILURE: function handleConversationFetchFailure(a0) { const conversationId = a0.conversationId; const r6 = a0.full ? "full" : "preview"; const r10 = c3665_15.get(conversationId); if (r10 != null) { r10.delete(r6); if (r10.size === 0) { c3665_15.delete(conversationId); } } }, CONVERSATIONS_FETCH_START: function handleFetchStart(a0) { const { channelId, requestKey } = a0; if (a0.isJump) { c3665_13.delete(channelId); } let r14 = c3665_13.get(channelId); if (r14 == null) { const set = new Set(); c3665_13.set(channelId, set); r14 = set; } r14.add(requestKey); }, CONVERSATIONS_FETCH_SUCCESS: function handleFetchSuccess({ channelId, rawConversations, direction, anchor, isJump, requestKey, fullyHydrated }) { let r13, r81; if (!removePendingListFetch(channelId, requestKey)) { return false; } const r14 = rawConversations.map(mapConversation).filter(isNotNullish); const r51 = c3665_12.peek(channelId); const r53 = r51 == null; if (isJump) { const r18 = r53 ? void 0 : r51.selectedConversationId; const r16 = r18 != null ? r51 == null ? void 0 : r51.conversationMetadataById.get(r18)?.conversation : null; r13 = r16 != null ? [r16] : []; } else { r13 = r53 ? void 0 : r51.conversations; if (r13 == null) { r13 = []; } } let r61 = null; if (!isJump) { let r63 = r51?.reachedOldest; if (r63 == null) { r63 = null; } r61 = r63; } let r64 = null; if (!isJump) { let r66 = r51?.reachedNewest; if (r66 == null) { r66 = null; } r64 = r66; } let c15214_0 = new Set(r13.map((item) => item.id)); const r76 = r14.some((item) => !c15214_0.has(item.id)) || anchor == null; let r77 = r64; let r78 = r61; if (!r76) { if (direction === "before") { r61 = Date.now(); r81 = r64; } else { r81 = direction === "after" ? Date.now() : r64; } r77 = r81; r78 = r61; } const r86 = direction === "before"; if (r86 && anchor == null) { r77 = Date.now(); } const r91 = (function mergeConversations(a0, a1) { const map = new Map(); for (const item of a0) { map.set(item.id, item); } for (const item2 of a1) { map.set(item2.id, item2); } const r45 = Array.from(map.values()); r45.sort((a, b) => SnowflakeUtils.compare(a.startMessageId, b.startMessageId)); return r45; })(r13, r14); const length = r91.length; let reachedNewest = r77; let reachedOldest = r78; let r96 = r91; if (length > MAX_CONVERSATIONS_PER_CHANNEL) { if (direction === "after") { r96 = r91.slice(r91.length - MAX_CONVERSATIONS_PER_CHANNEL); reachedNewest = r77; reachedOldest = null; } else if (r86) { r96 = r91.slice(0, MAX_CONVERSATIONS_PER_CHANNEL); reachedNewest = null; reachedOldest = r78; } else { const r22 = (function clampAnchorWindowStart(a0, a1) { if (a1 == null) { return 0; } let r8 = a0.findIndex((item) => SnowflakeUtils.compare(item.startMessageId, a1) >= 0); if (r8 === -1) { r8 = a0.length; } return Math.max(0, Math.min(r8 - Math.floor(MAX_CONVERSATIONS_PER_CHANNEL / 2), a0.length - MAX_CONVERSATIONS_PER_CHANNEL)); })(r91, anchor); const r99 = r22 > 0 ? null : r78; const r102 = r22 + MAX_CONVERSATIONS_PER_CHANNEL < r91.length ? null : r77; r96 = r91.slice(r22, r22 + MAX_CONVERSATIONS_PER_CHANNEL); reachedNewest = r102; reachedOldest = r99; } } const r110 = (function buildChannelData(a0, a1, a2) { let guildId = a2?.guildId; if (guildId == null) { guildId = a1[0]?.guildId; } if (guildId == null) { guildId = ChannelStore.getChannel(a0)?.guild_id; } if (guildId == null) { guildId = null; } const map = new Map(); const map2 = new Map(); let r63 = a2?.colorIndex; if (r63 == null) { r63 = 0; } let colorIndex = r63; for (const item of a1) { const r71 = a2 == null ? void 0 : a2.conversationMetadataById.get(item.id); let r76 = r71?.color; if (r76 == null) { const r79 = +colorIndex; colorIndex = r79 + 1; r76 = CONVERSATION_COLORS[r79 % CONVERSATION_COLORS.length]; } const color = r76; let r85 = r71?.hydratedMessages; if (r85 == null) { r85 = null; } const hydratedMessages = r85; const fullyHydrated = r85 != null && !!r71?.fullyHydrated; const conversation = item; map.set(conversation.id, { conversation, color, hydratedMessages, fullyHydrated }); let r97 = null; if (conversation.moderation != null) { r97 = new Map(); for (const flaggedMessageDetail of item.moderation.flaggedMessageDetails) { const r112 = flaggedMessageDetail; const r116 = r97.get(flaggedMessageDetail.messageId); if (r116 != null) { r116.push(r112); } else { const r118 = r97; r118.set(r112.messageId, [r112]); } } } for (const messageId of item.messageIds) { const r138 = a2 == null ? void 0 : a2.messageMetadataByMessageId.get(messageId); let r143 = null; if (r138?.moderationLabel == null && item.moderation != null && item.moderation.flaggedMessageIds.includes(messageId) && r97 != null) { let r159 = r97.get(messageId); if (r159 == null) { r159 = []; } r143 = buildModerationLabel(r159); } let moderationLabel = r138?.moderationLabel; if (moderationLabel == null) { moderationLabel = r143; } let message2 = r138?.message; if (message2 == null) { message2 = null; } map2.set(messageId, { conversationId: item.id, moderationLabel, message: message2 }); const r172 = r138 == null; let r173 = void 0; if (!r172) { const message = r138.message; r173 = message == null ? void 0 : message.messageReference?.message_id; } const r178 = r173; if (r173 != null) { const r180 = a2 == null ? void 0 : a2.messageMetadataByMessageId.get(r178); if (!(r180?.message == null || map2.has(r178))) { map2.set(r178, r180); } } } } let recentFeedbackRatingsByConversationId = a2?.recentFeedbackRatingsByConversationId; if (recentFeedbackRatingsByConversationId == null) { recentFeedbackRatingsByConversationId = new LRUCache({ max: CONVERSATION_FEEDBACK_RATINGS_CACHE_MAX }); } let r208 = a2?.selectedConversationId; if (r208 == null) { r208 = null; } let c25634_0 = r208; const selectedConversationId = r208 != null ? a1.some((item) => item.id === c25634_0) ? r208 : null : null; let reachedOldest = a2?.reachedOldest; if (reachedOldest == null) { reachedOldest = null; } let reachedNewest = a2?.reachedNewest; if (reachedNewest == null) { reachedNewest = null; } return { guildId, conversations: a1, conversationMetadataById: map, messageMetadataByMessageId: map2, recentFeedbackRatingsByConversationId, reachedOldest, reachedNewest, selectedConversationId, colorIndex }; })(channelId, r96, r51); r110.reachedOldest = reachedOldest; r110.reachedNewest = reachedNewest; if (r51 != null) { Object.assign(r51, r110); } else { c3665_12.set(channelId, r110); } for (const item of rawConversations) { if (item.messages != null) { processHydratedMessages(channelId, item.id, item.messages, fullyHydrated); } } return true; }, CONVERSATIONS_FETCH_FAILURE: function handleFetchFailure({ channelId, requestKey }) { const r10 = c3665_13.get(channelId); const r1 = r10 == null || !r10.has(requestKey); let r12 = !r1; if (!r1) { r10.delete(requestKey); const size = r10.size; r12 = true; if (size === 0) { c3665_13.delete(channelId); r12 = true; } } return r12; }, CHANNEL_SELECT: function handleChannelSelect({ channelId }) { if (channelId != null && c3665_12.has(channelId)) { c3665_12.get(channelId); } return false; }, CHANNEL_DELETE: function handleChannelDelete(a0) { const id = a0.channel.id; let r7 = c3665_12.has(id); c3665_12.del(id); const r11 = c3665_13.delete(id); if (!r7) { r7 = r11; } return r7; }, GUILD_DELETE: function handleGuildDelete({ guild }) { if ("unavailable" in guild && guild.unavailable === true) { return false; } let r27 = false; for (const item of c3665_12.keys()) { if (c3665_12.peek(item)?.guildId === guild.id && evictChannel(item)) { r27 = true; } } return r27; }, LOAD_MESSAGES_SUCCESS: function handleLoadMessagesSuccess(a0) { const channelId = a0.channelId; if (a0.jump != null && SelectedChannelStore.getChannelId() === channelId) { const r11 = c3665_12.peek(channelId); let r0 = r11 != null; if (r0) { r11.reachedOldest = null; r11.reachedNewest = null; r0 = true; } return r0; } return false; }, SET_SELECTED_CONVERSATION: function handleSetSelectedConversation({ channelId, conversationId }) { if (channelId == null) { return false; } const r8 = c3665_12.peek(channelId); let r9 = r8 != null; if (r9) { r8.selectedConversationId = conversationId; r9 = true; } return r9; }, CLEAR_CONVERSATION_SELECTION: function handleClearConversationSelection({ channelId, conversationId }) { const r10 = c3665_12.peek(channelId); if (r10 == null) { return false; } const selectedConversationId = r10.selectedConversationId; let r0 = selectedConversationId != null && (conversationId == null || selectedConversationId === conversationId); if (r0) { r10.selectedConversationId = null; r0 = true; } return r0; }, SET_CONVERSATION_FEEDBACK_RATING: function handleSetConversationFeedbackRating({ channelId, conversationId, rating }) { const r9 = c3665_12.peek(channelId); let r10 = r9 != null; if (r10) { r9.recentFeedbackRatingsByConversationId.set(conversationId, rating); r10 = true; } return r10; }, MESSAGE_UPDATE: function handleMessageUpdate({ message }) { const { channel_id, id } = message; if (channel_id != null && id != null) { const r13 = c3665_12.peek(channel_id); if (r13 == null) { return false; } const r16 = r13.messageMetadataByMessageId.get(id); let r18 = r16?.message != null; if (r18) { let env15215; const message2 = updateMessageRecord(r16.message, message); const r25 = env15215 = {}; env15215[0] = id; r16.message = message2; const r27 = r16.conversationId != null ? r13.conversationMetadataById.get(r16.conversationId) : null; const r33 = r27?.hydratedMessages != null; r18 = true; if (r33) { const r37 = r27.hydratedMessages.findIndex($mk77240(r25)); r18 = true; if (r37 !== -1) { const hydratedMessages = r27.hydratedMessages.slice(); hydratedMessages[r37] = message2; r27.hydratedMessages = hydratedMessages; r18 = true; } } } return r18; } return false; }, MESSAGE_REACTION_ADD: handleReaction, MESSAGE_REACTION_REMOVE: handleReaction, MESSAGE_REACTION_ADD_MANY: function handleReactionBatch({ channelId, messageId, reactions }) { const r8 = c3665_12.peek(channelId); if (r8 == null) { return false; } const r15 = r8.messageMetadataByMessageId.get(messageId); if (r15?.message == null) { return false; } let env15216; const message = r15.message.addReactionBatch(reactions, AuthenticationStore.getId()); const r21 = env15216 = {}; env15216[0] = messageId; r15.message = message; const r24 = r15.conversationId != null ? r8.conversationMetadataById.get(r15.conversationId) : null; if (r24?.hydratedMessages != null) { const r33 = r24.hydratedMessages.findIndex($mk77240(r21)); if (r33 !== -1) { const hydratedMessages = r24.hydratedMessages.slice(); hydratedMessages[r33] = message; r24.hydratedMessages = hydratedMessages; } } return true; }, MESSAGE_REACTION_REMOVE_ALL: function handleRemoveAllReactions({ channelId, messageId }) { const r8 = c3665_12.peek(channelId); if (r8 == null) { return false; } const r7 = r8.messageMetadataByMessageId.get(messageId); if (r7?.message == null) { return false; } let env15217; const message = r7.message.set("reactions", []); const r19 = env15217 = {}; env15217[0] = messageId; r7.message = message; const r22 = r7.conversationId != null ? r8.conversationMetadataById.get(r7.conversationId) : null; if (r22?.hydratedMessages != null) { const r31 = r22.hydratedMessages.findIndex($mk77240(r19)); if (r31 !== -1) { const hydratedMessages = r22.hydratedMessages.slice(); hydratedMessages[r31] = message; r22.hydratedMessages = hydratedMessages; } } return true; }, MESSAGE_REACTION_REMOVE_EMOJI: function handleRemoveEmojiReactions({ channelId, messageId, emoji }) { const r8 = c3665_12.peek(channelId); if (r8 == null) { return false; } const r7 = r8.messageMetadataByMessageId.get(messageId); if (r7?.message == null) { return false; } let env15218; const message = r7.message.removeReactionsForEmoji(emoji); const r18 = env15218 = {}; env15218[0] = messageId; r7.message = message; const r21 = r7.conversationId != null ? r8.conversationMetadataById.get(r7.conversationId) : null; if (r21?.hydratedMessages != null) { const r30 = r21.hydratedMessages.findIndex($mk77240(r18)); if (r30 !== -1) { const hydratedMessages = r21.hydratedMessages.slice(); hydratedMessages[r30] = message; r21.hydratedMessages = hydratedMessages; } } return true; }, MESSAGE_DELETE: function handleMessageDelete({ channelId, id }) { let env15219; const r4 = env15219 = {}; env15219[0] = id; const r12 = c3665_12.peek(channelId); const r1 = r12 == null; let r13 = false; if (!r1) { const r15 = r12.messageMetadataByMessageId.get(id); if (r15 != null) { const r18 = r15.conversationId != null ? r12.conversationMetadataById.get(r15.conversationId) : null; if (r18?.hydratedMessages != null) { r18.hydratedMessages = r18.hydratedMessages.filter($mk77241(r4)); } } r13 = r12.messageMetadataByMessageId.delete(id); } return r13; }, MESSAGE_DELETE_BULK: function handleMessageDeleteBulk({ channelId, ids }) { let r0 = false; for (const item of ids) { if (removeHydratedMessage(channelId, item)) { r0 = true; } } return r0; }, LOGOUT: function handleLogout() { c3665_12.reset(); c3665_13.clear(); c3665_15.clear(); } }); export default conversationsStore;