96 lines
3.2 KiB
TypeScript
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);
|
|
}
|
|
};
|
|
};
|