Files
discord-decomp/modules/messages/native/createChannelStream.tsx
T
2026-11-01 12:12:55 +02:00

285 lines
11 KiB
TypeScript

// Metro module 11145 (f11146).
import PushFeedbackStore from "../../push_feedback/PushFeedbackStore";
import EditMessageStore from "../../../stores/EditMessageStore";
import UploadStore from "../../../stores/UploadStore";
import { Changeset, LoadingType, RowType, SeparatorType } from "./renderer/RowGeneratorConstants";
import { MessageFlags } from "../../../Constants";
import SnowflakeUtils from "../../../utils/SnowflakeUtils";
import isNewMessageGroup from "../isNewMessageGroup";
import { tryCreateInjectedMessage } from "../tryInjectMessage";
import { intl, t } from "../../../intl/index.native";
import { isSameDay, dateFormat } from "../../../utils/DateUtils";
import { canReplyToMessage } from "../../replies/canReplyToMessage";
import canEditMessage from "../canEditMessage";
import { isNonModInLockedThread } from "../../threads/ThreadHooks";
export default function createChannelStream({ channel, messages, uploads, oldestUnreadMessageId, replyingMessageId, currentUserId, canAddNewReactions, selectedSummary, chatManager, roleStyle, forceRender, updateMessageIds, isResourceChannel, unloadableContentEntryMessageIds }) {
let c18560_13, c18560_14, c18560_16, insertMessage2, determineChangeType2;
c18560_16 = void 0;
const unreadFilter2 = function unreadFilter(a0) {
const isForumPost = channel.isForumPost();
const r2 = a0.id === oldestUnreadMessageId;
return isForumPost ? r2 ? a0.id !== SnowflakeUtils.castChannelIdAsMessageId(channel.id) : r2 : r2;
};
insertMessage2 = function insertMessage(a0) {
L11: {
const r5 = c18560_16[0];
if (r5 != null) {
const isForumPost = channel.isForumPost();
const r3 = a0.id === oldestUnreadMessageId;
if (!(isForumPost ? r3 ? a0.id !== SnowflakeUtils.castChannelIdAsMessageId(channel.id) : r3 : r3)) {
if (isNewMessageGroup(channel, r5[r5.length - 1], a0)) {
c18560_16.unshift([a0]);
break L11;
}
r5.unshift(a0);
} else {
c18560_16.unshift([a0]);
}
} else {
c18560_16.unshift([a0]);
}
}
};
determineChangeType2 = function determineChangeType(a0, r0 = false) {
return chatManager.determineChangeType({
message: a0,
updateMessageIds,
forceRender
}, r0);
};
const r39 = [];
c18560_13 = r39;
const r10 = {};
c18560_14 = r10;
for (const item of uploads.slice().reverse()) {
const messageForFile = UploadStore.getMessageForFile(item.id);
if (messageForFile?.nonce != null) {
r10[messageForFile.nonce] = item;
}
}
const r59 = [];
c18560_16 = r59;
messages.forEach((message) => {
const r14 = tryCreateInjectedMessage(message, channel);
if (r14 != null && r14.position === "before") {
insertMessage2(r14.message);
if (oldestUnreadMessageId === message.id) {
oldestUnreadMessageId = r14.message.id;
}
}
insertMessage2(message);
if (r14 != null && r14.position === "after") {
insertMessage2(r14.message);
}
});
r59.forEach((a0, index) => {
let r260, r296;
let c26953_0 = a0;
const message = a0[a0.length - 1];
let c26953_1 = message;
const r2 = c18560_16.length - 1;
if (index === 0 && messages.hasMoreAfter) {
c18560_13.push({
rowType: LoadingType.LOAD_AFTER,
changeType: forceRender ? Changeset.UPDATE : Changeset.NOOP,
roleStyle,
isLoading: messages.loadingMore,
text: intl.string(t.XBlaiC)
});
}
const r72 = index === r2;
let r74 = messages.hasMoreBefore && r72;
let r76 = unreadFilter2(message);
const r78 = r72 ? null : c18560_16[index + 1][0].timestamp;
const r90 = r72 ? channel.isDM() && !messages.hasMoreBefore && r72 || channel.isThread() && !channel.isForumPost() && !messages.hasMoreBefore && r72 ? true : false : isSameDay(message.timestamp, r78) ? channel.isDM() && !messages.hasMoreBefore && r72 || channel.isThread() && !channel.isForumPost() && !messages.hasMoreBefore && r72 ? true : false : true;
const processHiddenMessageRow = function processHiddenMessageRow(a0) {
for (const item of c26953_0) {
const message = item;
if (determineChangeType2(item) !== Changeset.NOOP && a0.changeType === Changeset.NOOP) {
a0.changeType = Changeset.UPDATE;
}
a0.content.unshift({
rowType: RowType.MESSAGE,
changeType: Changeset.NOOP,
roleStyle,
message,
isSystemDM: channel.isSystemDM() && message.isSystemDM(),
isFirst: message === c26953_1,
canAddNewReactions
});
}
a0.revealed = c26953_1.id === messages.revealedMessageId;
a0.context = c26953_1.id;
return a0;
};
const r106 = {
roleStyle,
message,
isFirst: true,
content: [],
text: "",
revealed: false
};
let r111 = c18560_13[c18560_13.length - 1];
if (message.hasFlag(MessageFlags.HIDDEN_SUSPENDED_USER)) {
if (!(r111 != null && r111.rowType === RowType.SUSPENDED_USER_GROUP)) {
const r336 = {
...r106,
rowType: RowType.SUSPENDED_USER_GROUP,
changeType: determineChangeType2(message),
canUncollapse: false
};
c18560_13.push(r336);
r111 = r336;
}
processHiddenMessageRow(r111);
r111.text = intl.formatToPlainString(t.rHRovo, {
count: r111.content.length
});
} else if (message.blocked) {
L88: {
if (r111 != null) {
const rowType2 = r111.rowType;
const BLOCKED_GROUP = RowType.BLOCKED_GROUP;
r296 = r111;
if (rowType2 === BLOCKED_GROUP) {
break L88;
}
}
let changeType3 = determineChangeType2(message);
if (changeType3 === Changeset.NOOP && chatManager.getBlocked(message)) {
changeType3 = Changeset.INSERT;
}
const r305 = {
...r106,
rowType: RowType.BLOCKED_GROUP,
changeType: changeType3
};
c18560_13.push(r305);
r296 = r305;
}
processHiddenMessageRow(r296);
r296.text = intl.formatToPlainString(t["+FcYM/"], {
count: r296.content.length
});
} else if (message.ignored) {
L80: {
if (r111 != null) {
const rowType = r111.rowType;
const IGNORED_GROUP = RowType.IGNORED_GROUP;
r260 = r111;
if (rowType === IGNORED_GROUP) {
break L80;
}
}
let changeType2 = determineChangeType2(message);
if (changeType2 === Changeset.NOOP && chatManager.getIgnored(message)) {
changeType2 = Changeset.INSERT;
}
const r269 = {
...r106,
rowType: RowType.IGNORED_GROUP,
changeType: changeType2
};
c18560_13.push(r269);
r260 = r269;
}
processHiddenMessageRow(r260);
r260.text = intl.formatToPlainString(t["VFWjc+"], {
count: r260.content.length
});
} else {
for (const item of a0) {
const message2 = item;
const r125 = item !== message;
const isEditing = EditMessageStore.isEditing(channel.id, item.id) || replyingMessageId === message2.id;
const pushFeedback = PushFeedbackStore.getPushFeedback(message2.channel_id, message2.id);
const canReplyToMessage2 = canReplyToMessage(channel, message2);
const r159 = canEditMessage(message2, currentUserId) && !isNonModInLockedThread(channel);
const changeType = c18560_14.hasOwnProperty(message2.id) ? chatManager.determineChangeTypeForUploadProgress(c18560_14[message2.id]) : determineChangeType2(message2, true);
if (selectedSummary != null && selectedSummary.endId === message2.id && selectedSummary.count > 1) {
c18560_13.push({
rowType: SeparatorType.SUMMARY,
changeType: determineChangeType2(message2),
roleStyle,
summary: selectedSummary,
isBeforeContent: false
});
}
const isSystemDM = channel.isSystemDM() && message2.isSystemDM();
c18560_13.push({
roleStyle,
message: message2,
isSystemDM,
isFirst: message2 === message,
isEditing,
separatorBefore: (r125 ? !r125 : !isResourceChannel) && (r90 || r76 || r74),
canAddNewReactions,
alwaysShowAddReaction: channel.isForumPost() && message2.id === SnowflakeUtils.castChannelIdAsMessageId(channel.id),
renderContentOnly: isResourceChannel,
pushFeedbackType: pushFeedback?.pushType,
canReply: isResourceChannel ? !isResourceChannel : canReplyToMessage2,
canEdit: isResourceChannel ? !isResourceChannel : r159,
rowType: RowType.MESSAGE,
changeType,
showContentInventoryEntryFallbackEmbed: unloadableContentEntryMessageIds == null ? void 0 : unloadableContentEntryMessageIds.has(message2.id)
});
if (selectedSummary != null && selectedSummary.startId === message2.id && selectedSummary.count > 1) {
c18560_13.push({
rowType: SeparatorType.SUMMARY,
changeType: determineChangeType2(message2),
roleStyle,
summary: selectedSummary,
isBeforeContent: true
});
}
}
}
if (r90 && !isResourceChannel) {
let changeType4 = determineChangeType2(message);
if (changeType4 === Changeset.UPDATE) {
changeType4 = Changeset.NOOP;
}
c18560_13.push({
rowType: SeparatorType.DAY,
changeType: changeType4,
roleStyle,
text: dateFormat(message.timestamp, "LL")
});
}
if (r76) {
r76 = !isResourceChannel;
}
if (r76) {
c18560_13.push({
rowType: SeparatorType.UNREAD,
changeType: determineChangeType2(message),
roleStyle,
text: intl.string(t.q7hm3m).toUpperCase()
});
}
if (r74) {
r74 = !isResourceChannel;
}
if (r74) {
c18560_13.push({
rowType: LoadingType.LOAD_BEFORE,
changeType: forceRender ? Changeset.UPDATE : Changeset.NOOP,
roleStyle,
isLoading: messages.loadingMore,
text: intl.string(t.XBlaiC)
});
}
});
if (r59.length === 0 && !messages.loadingMore && (messages.hasMoreAfter || messages.hasMoreBefore)) {
r39.push({
rowType: messages.hasMoreBefore ? LoadingType.LOAD_BEFORE : LoadingType.LOAD_AFTER,
changeType: forceRender ? Changeset.UPDATE : Changeset.NOOP,
roleStyle,
isLoading: messages.loadingMore,
text: intl.string(t.XBlaiC)
});
}
return r39;
};