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

52 lines
1.9 KiB
TypeScript

// Metro module 7713 (f7714).
import ThemeStore from "../../../user_settings/ThemeStore";
import { LoadingType, RowType, SeparatorType } from "./RowGeneratorConstants";
import { DEFAULT_OPTIONS } from "./RenderMessageOptionsContext";
import Module12 from "../../../../_bundle/Module12";
import { generateBlockedGroupRowData } from "./rows/BlockedGroup";
import { generateMessageRowData } from "./MessageWithContent";
import { generateSeparatorRowData } from "./rows/Separator";
import { generateLoadingRowData } from "./rows/Loading";
import { assertNever } from "../../../../utils/GlobalUtils";
const options = {
constrainedWidth: 0,
animatingStickerMessageId: null,
forcedTheme: null,
shouldObscureSpoiler: true,
shouldDisableInteractiveComponents: true,
...DEFAULT_OPTIONS
};
class RowManager {
constructor() {
return {
__proto__: new.target.prototype,
options
};
}
setOptions(a0) {
this.options = Module12.merge({}, options, this.options, a0);
}
generate(a0) {
const rowType = a0.rowType;
let forcedTheme = this.options.forcedTheme;
if (forcedTheme == null) {
forcedTheme = ThemeStore.theme;
}
if (RowType.BLOCKED_GROUP !== rowType && RowType.IGNORED_GROUP !== rowType && RowType.SUSPENDED_USER_GROUP !== rowType) {
if (RowType.MESSAGE === rowType) {
return generateMessageRowData(a0, this.options, forcedTheme);
}
if (SeparatorType.DAY !== rowType && SeparatorType.UNREAD !== rowType && SeparatorType.SUMMARY !== rowType) {
if (LoadingType.LOAD_BEFORE !== rowType && LoadingType.LOAD_AFTER !== rowType) {
assertNever(rowType);
return void 0;
}
return generateLoadingRowData(a0, forcedTheme);
}
return generateSeparatorRowData(a0, forcedTheme);
}
return generateBlockedGroupRowData(a0, forcedTheme, this);
}
}
export default RowManager;