Files
discord-decomp/records/MessageRecord.tsx
T
2026-11-01 12:12:55 +02:00

455 lines
13 KiB
TypeScript

// Metro module 3827 (f3828).
import Record from "../lib/Record";
import { MessageFlags, MessageStates, MessageTypes } from "../Constants";
import * as _Module1384 from "../_bundle/Module1384";
import { emojiEquals } from "../modules/reactions/ReactionUtils";
import isForwardMessage from "../modules/forwarding/isForwardMessage";
import { ReactionTypes } from "../modules/messages/MessageReactionsTypes";
import { ApplicationIntegrationType } from "../_bundle/Module8028";
class MinimalMessageRecord extends Record {
constructor(a0) {
super();
let type = a0.type;
if (type == null) {
type = MessageTypes.DEFAULT;
}
this.type = type;
let content = a0.content;
if (content == null) {
content = "";
}
this.content = content;
let attachments = a0.attachments;
if (attachments == null) {
attachments = [];
}
this.attachments = attachments;
let embeds = a0.embeds;
if (embeds == null) {
embeds = [];
}
this.embeds = embeds;
let timestamp = a0.timestamp;
if (timestamp == null) {
timestamp = new Date();
}
this.timestamp = timestamp;
let editedTimestamp = a0.editedTimestamp;
if (editedTimestamp == null) {
editedTimestamp = null;
}
this.editedTimestamp = editedTimestamp;
let flags = a0.flags;
if (flags == null) {
flags = 0;
}
this.flags = flags;
let components = a0.components;
if (components == null) {
components = [];
}
this.components = components;
let codedLinks = a0.codedLinks;
if (codedLinks == null) {
codedLinks = [];
}
this.codedLinks = codedLinks;
let stickers = a0.stickers;
if (stickers == null) {
stickers = [];
}
this.stickers = stickers;
let sticker_items = a0.sticker_items;
if (sticker_items == null) {
sticker_items = a0.stickerItems;
}
if (sticker_items == null) {
sticker_items = [];
}
this.stickerItems = sticker_items;
let soundboard_sounds = a0.soundboard_sounds;
if (soundboard_sounds == null) {
soundboard_sounds = a0.soundboardSounds;
}
this.soundboardSounds = soundboard_sounds;
}
hasFlag(a0) {
return _Module1384.hasFlag(this.flags, a0);
}
}
class MessageRecord extends MinimalMessageRecord {
constructor(a0) {
let mentionGames2;
super(a0);
this.id = a0.id;
this.channel_id = a0.channel_id;
this.author = a0.author;
this.customRenderedContent = a0.customRenderedContent;
this.mentions = a0.mentions || [];
this.mentionRoles = a0.mentionRoles || [];
this.mentionChannels = a0.mentionChannels || [];
if (a0.mentionGames instanceof Map) {
mentionGames2 = a0.mentionGames;
} else {
const r24 = Map;
let mentionGames = a0.mentionGames;
if (mentionGames == null) {
mentionGames = [];
}
mentionGames2 = new r24(mentionGames.map((mentionGame) => [mentionGame.id, mentionGame]));
}
this.mentionGames = mentionGames2;
this.mentioned = a0.mentioned || false;
this.pinned = a0.pinned || false;
this.mentionEveryone = a0.mentionEveryone || false;
this.tts = a0.tts || false;
this.giftCodes = a0.giftCodes || [];
this.state = a0.state || MessageStates.SENT;
let nonce = a0.nonce;
if (nonce == null) {
nonce = void 0;
}
this.nonce = nonce;
this.blocked = a0.blocked || false;
this.ignored = a0.ignored || false;
this.call = a0.call || null;
this.bot = a0.bot || false;
this.webhookId = a0.webhookId || null;
this.reactions = a0.reactions || [];
this.applicationId = a0.application_id || a0.applicationId || null;
this.application = a0.application || null;
this.activity = a0.activity || null;
this.activityInstance = a0.activity_instance || a0.activityInstance || null;
this.messageReference = a0.messageReference || null;
this.isSearchHit = a0.hit || a0.isSearchHit || false;
this.loggingName = a0.loggingName || null;
this.colorString = a0.colorString;
this.nick = a0.nick;
this.interaction = a0.interaction || null;
this.interactionData = a0.interactionData || null;
this.interactionMetadata = a0.interactionMetadata || null;
this.interactionError = a0.interactionError || null;
this.roleSubscriptionData = a0.roleSubscriptionData;
this.purchaseNotification = a0.purchaseNotification;
this.poll = a0.poll;
this.sharedClientTheme = a0.shared_client_theme || a0.sharedClientTheme;
this.referralTrialOfferId = a0.referralTrialOfferId || null;
this.premiumGroupInviteId = a0.premiumGroupInviteId || null;
let gift_info = a0.gift_info;
if (gift_info == null) {
gift_info = a0.giftInfo;
}
this.giftInfo = gift_info;
this.giftingPrompt = a0.giftingPrompt || null;
this.boostingPrompt = a0.boostingPrompt || null;
this.messageSnapshots = a0.messageSnapshots || [];
this.isUnsupported = a0.isUnsupported || false;
let changelog_id = a0.changelog_id;
if (changelog_id == null) {
changelog_id = a0.changelogId || null;
}
this.changelogId = changelog_id;
let media_mention = a0.media_mention;
if (media_mention == null) {
media_mention = a0.mediaMention;
}
if (media_mention == null) {
media_mention = null;
}
this.mediaMention = media_mention;
let additionalName = a0.lobby_member?.additional_name;
if (additionalName == null) {
additionalName = a0.additionalName;
}
if (additionalName == null) {
additionalName = null;
}
this.additionalName = additionalName;
}
isEdited() {
return this.editedTimestamp != null;
}
getChannelId() {
return this.channel_id;
}
getReaction(c13641_0) {
return this.reactions.find((reaction) => emojiEquals(reaction.emoji, c13641_0));
}
getContentMessage() {
return isForwardMessage(this) ? this.messageSnapshots[0].message : this;
}
userHasReactedWithEmoji(c13642_0, c13642_1) {
return this.reactions.some((reaction) => {
if (emojiEquals(reaction.emoji, c13642_0)) {
return c13642_1 && reaction.me || (c13642_1 ? !c13642_1 : reaction.me_burst);
}
});
}
addReaction(a0) {
let me_burst = arguments[1];
if (me_burst === void 0) {
me_burst = false;
}
let c13643_1 = me_burst;
let burst_colors = arguments[2];
if (burst_colors === void 0) {
burst_colors = [];
}
let c13643_2 = burst_colors;
let r4 = arguments[3];
if (r4 === void 0) {
r4 = ReactionTypes.NORMAL;
}
const NORMAL = r4;
let c13643_4 = -1;
const r18 = this.reactions.map((reaction, index) => {
const r16 = emojiEquals(reaction.emoji, a0);
let r17 = reaction;
if (r16) {
c13643_4 = index;
if (NORMAL === ReactionTypes.BURST) {
if (c13643_1 && reaction.me_burst) {
return reaction;
}
const burst_count = reaction.burst_count + 1;
r17 = {
...reaction,
me_burst: !!c13643_1 || reaction.me_burst,
burst_count,
count_details: {
...reaction.count_details,
burst: burst_count
},
burst_colors: reaction.burst_colors != null && reaction.burst_colors.length > 0 ? reaction.burst_colors : c13643_2
};
} else if (NORMAL === ReactionTypes.VOTE) {
let r41 = reaction.count_details?.vote;
if (r41 == null) {
r41 = 0;
}
r17 = {
...reaction,
count_details: {
...reaction.count_details,
vote: c13643_1 ? reaction.me_vote ? r41 : r41 + 1 : r41 + 1
},
me_vote: !!c13643_1 || reaction.me_vote
};
} else {
if (c13643_1 && reaction.me) {
return reaction;
}
const count = reaction.count + 1;
r17 = {
...reaction,
count,
count_details: {
...reaction.count_details,
normal: count
},
me: !!c13643_1 || reaction.me
};
}
}
return r17;
});
if (c13643_4 === -1) {
if (NORMAL === ReactionTypes.BURST) {
r18.push({
emoji: a0,
me: false,
me_burst,
count: 0,
count_details: {
burst: 1,
normal: 0
},
burst_count: 1,
burst_colors
});
} else if (NORMAL === ReactionTypes.VOTE) {
r18.push({
emoji: a0,
me: false,
me_burst: false,
me_vote: me_burst,
count: 0,
count_details: {
burst: 0,
normal: 0,
vote: 1
},
burst_count: 0,
burst_colors: []
});
} else {
r18.push({
emoji: a0,
me: me_burst,
me_burst: false,
count: 1,
count_details: {
burst: 0,
normal: 1
},
burst_count: 0,
burst_colors: []
});
}
}
return this.set("reactions", r18);
}
addReactionBatch(a0, c13644_0) {
return a0.reduce((acc, { users, emoji, reactionType }) => users.reduce((acc, user) => acc.addReaction(emoji, user === c13644_0, [], reactionType), acc), this);
}
removeReaction(c13645_0, r12 = false) {
let c13645_1 = r12;
let r13 = arguments[2];
if (r13 === void 0) {
r13 = ReactionTypes.NORMAL;
}
const NORMAL2 = r13;
let c13645_3 = -1;
const r21 = this.reactions.map((reaction, index) => {
let r32;
const r17 = emojiEquals(reaction.emoji, c13645_0);
let r18 = reaction;
if (r17) {
if (NORMAL2 === ReactionTypes.BURST) {
const burst_count = c13645_1 && !reaction.me_burst ? reaction.burst_count : reaction.burst_count - 1;
r32 = {
...reaction,
burst_count,
me_burst: c13645_1 ? !c13645_1 : reaction.me_burst,
count_details: {
...reaction.count_details,
burst: burst_count
}
};
} else if (NORMAL2 === ReactionTypes.VOTE) {
let r40 = reaction.count_details?.vote;
if (r40 == null) {
r40 = 0;
}
r32 = {
...reaction,
count_details: {
...reaction.count_details,
vote: c13645_1 ? reaction.me_vote ? r40 - 1 : r40 : r40 - 1
},
me_vote: c13645_1 ? !c13645_1 : reaction.me_vote
};
} else {
const count = c13645_1 && !reaction.me ? reaction.count : reaction.count - 1;
r32 = {
...reaction,
count,
me: c13645_1 ? !c13645_1 : reaction.me,
count_details: {
...reaction.count_details,
normal: count
}
};
}
c13645_3 = index;
r18 = r32;
}
return r18;
});
let r23 = r21[c13645_3];
if (r23 == null) {
r23 = {};
}
const { count, burst_count, count_details } = r23;
let r1 = c13645_3 !== -1 && count <= 0 && burst_count <= 0;
if (r1) {
let r28 = count_details?.normal;
if (r28 == null) {
r28 = 0;
}
r1 = r28 <= 0;
}
if (r1) {
let r31 = count_details?.burst;
if (r31 == null) {
r31 = 0;
}
r1 = r31 <= 0;
}
if (r1) {
let r34 = count_details?.vote;
if (r34 == null) {
r34 = 0;
}
r1 = r34 <= 0;
}
if (r1) {
r21.splice(c13645_3, 1);
}
return this.set("reactions", r21);
}
removeReactionsForEmoji(c13646_0) {
return this.set("reactions", this.reactions.filter((reaction) => !emojiEquals(reaction.emoji, c13646_0)));
}
isSystemDM() {
return this.author.isSystemUser();
}
isCommandType() {
return this.type === MessageTypes.CHAT_INPUT_COMMAND || this.type === MessageTypes.CONTEXT_MENU_COMMAND;
}
isPoll() {
return this.poll != null;
}
isInteractionPlaceholder() {
return this.interaction != null && this.author.isNonUserBot();
}
canDeleteOwnMessage(a0) {
if (this.author.id === a0) {
return true;
}
let r9 = this.interactionMetadata?.authorizing_integration_owners;
if (r9 == null) {
r9 = {};
}
const interactionMetadata = this.interactionMetadata;
return (interactionMetadata == null ? void 0 : interactionMetadata.user.id) === a0 && Object.keys(r9).length === 1 && ApplicationIntegrationType.USER_INSTALL in r9;
}
toJS() {
return {
...this,
mentionGames: [...this.mentionGames.values()],
webkhook_id: this.webhookId,
edited_timestamp: this.editedTimestamp,
mention_everyone: this.mentionEveryone
};
}
isFirstMessageInForumPost(a0) {
return this.id === this.channel_id && a0.isForumPost();
}
}
export default MessageRecord;
export { MinimalMessageRecord };
export class ModeratorReport {
constructor(a0) {
this.reporting_user_id = a0.reporting_user_id;
this.reported_user_id = a0.reported_user_id;
this.reporting_member = a0.reporting_member;
this.reported_member = a0.reported_member;
}
}
class MessageSnapshotRecord extends Record {
constructor(a0) {
super();
this.message = new MinimalMessageRecord(a0.message);
let moderator_report = a0.moderator_report;
if (moderator_report == null) {
moderator_report = null;
}
this.moderatorReport = moderator_report;
}
}
export { MessageSnapshotRecord };
export function isMessageComponentsV2(a0) {
return _Module1384.hasFlag(a0.flags, MessageFlags.IS_COMPONENTS_V2);
}