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

96 lines
3.2 KiB
TypeScript

// Metro module 10414 (f10415).
import { RowType } from "./renderer/RowGeneratorConstants";
export default class VisibleMessagesWindowHandler {
data = null;
callback = null;
setCallback = (a0) => {
this.callback = a0;
if (this.data != null) {
this.callback(this.data);
}
};
clearCallback = () => {
this.callback = null;
this.data = null;
};
handleScrollPosition = ({ rows, firstVisibleMessageRowIndex, lastVisibleMessageRowIndex }) => {
let r54, r87;
if (this.callback != null) {
const r1 = firstVisibleMessageRowIndex != null;
let topVisibleMessage = null;
if (r1) {
const r2 = firstVisibleMessageRowIndex >= 0;
let r20 = firstVisibleMessageRowIndex;
topVisibleMessage = null;
if (r2) {
do {
const r14 = rows[r20];
const r21 = r14 != null;
const r10 = r20;
topVisibleMessage = r21 ? "rowType" in r14 ? r14.rowType === RowType.MESSAGE ? r14.message.id : void 0 : r14.type === RowType.MESSAGE ? r14.message?.id : void 0 : void 0;
if (topVisibleMessage != null) {
break;
}
r20 = r10 - 1;
topVisibleMessage = null;
} while (r20 >= 0);
}
}
const r31 = lastVisibleMessageRowIndex != null;
let bottomVisibleMessage = null;
if (r31) {
const r34 = lastVisibleMessageRowIndex < rows.length;
let r37 = lastVisibleMessageRowIndex;
bottomVisibleMessage = null;
if (r34) {
do {
const r38 = rows[r37];
const r39 = r38 != null;
const r40 = r37;
bottomVisibleMessage = r39 ? "rowType" in r38 ? r38.rowType === RowType.MESSAGE ? r38.message.id : void 0 : r38.type === RowType.MESSAGE ? r38.message?.id : void 0 : void 0;
if (bottomVisibleMessage != null) {
break;
}
const r52 = r40 + 1;
r54 = r52 < rows.length;
r37 = r52;
bottomVisibleMessage = null;
} while (r54);
}
}
const r55 = firstVisibleMessageRowIndex != null;
let middleVisibleMessage = null;
if (r55) {
const r57 = lastVisibleMessageRowIndex != null;
middleVisibleMessage = null;
if (r57) {
let r65 = firstVisibleMessageRowIndex + Math.floor((lastVisibleMessageRowIndex - firstVisibleMessageRowIndex) / 2);
const r67 = r65 < rows.length;
middleVisibleMessage = null;
if (r67) {
do {
const r70 = rows[r65];
const r71 = r70 != null;
const r72 = r65;
middleVisibleMessage = r71 ? "rowType" in r70 ? r70.rowType === RowType.MESSAGE ? r70.message.id : void 0 : r70.type === RowType.MESSAGE ? r70.message?.id : void 0 : void 0;
if (middleVisibleMessage != null) {
break;
}
const r85 = r72 + 1;
r87 = r85 < rows.length;
r65 = r85;
middleVisibleMessage = null;
} while (r87);
}
}
}
this.data = {
topVisibleMessage,
middleVisibleMessage,
bottomVisibleMessage
};
this.callback(this.data);
}
};
};