Fix timeline jumping issues related to bubble layout (#7529)
This commit is contained in:
parent
8ced6e6117
commit
4b5ca1d7a9
4 changed files with 57 additions and 34 deletions
|
@ -89,7 +89,7 @@ interface IProps {
|
|||
* The promise should resolve to true if there is more data to be
|
||||
* retrieved in this direction (in which case onFillRequest may be
|
||||
* called again immediately), or false if there is no more data in this
|
||||
* directon (at this time) - which will stop the pagination cycle until
|
||||
* direction (at this time) - which will stop the pagination cycle until
|
||||
* the user scrolls again.
|
||||
*/
|
||||
onFillRequest?(backwards: boolean): Promise<boolean>;
|
||||
|
@ -683,7 +683,7 @@ export default class ScrollPanel extends React.Component<IProps> {
|
|||
return;
|
||||
}
|
||||
const scrollToken = node.dataset.scrollTokens.split(',')[0];
|
||||
debuglog("saving anchored scroll state to message", node && node.innerText, scrollToken);
|
||||
debuglog("saving anchored scroll state to message", node.innerText, scrollToken);
|
||||
const bottomOffset = this.topFromBottom(node);
|
||||
this.scrollState = {
|
||||
stuckAtBottom: false,
|
||||
|
@ -791,17 +791,16 @@ export default class ScrollPanel extends React.Component<IProps> {
|
|||
const scrollState = this.scrollState;
|
||||
const trackedNode = scrollState.trackedNode;
|
||||
|
||||
if (!trackedNode || !trackedNode.parentElement) {
|
||||
let node;
|
||||
if (!trackedNode?.parentElement) {
|
||||
let node: HTMLElement;
|
||||
const messages = this.itemlist.current.children;
|
||||
const scrollToken = scrollState.trackedScrollToken;
|
||||
|
||||
for (let i = messages.length-1; i >= 0; --i) {
|
||||
for (let i = messages.length - 1; i >= 0; --i) {
|
||||
const m = messages[i] as HTMLElement;
|
||||
// 'data-scroll-tokens' is a DOMString of comma-separated scroll tokens
|
||||
// There might only be one scroll token
|
||||
if (m.dataset.scrollTokens &&
|
||||
m.dataset.scrollTokens.split(',').indexOf(scrollToken) !== -1) {
|
||||
if (m.dataset.scrollTokens?.split(',').includes(scrollToken)) {
|
||||
node = m;
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue