52 lines
1.9 KiB
TypeScript
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;
|