mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2025-01-22 18:21:39 +01:00
don't look at tiles before the inserted tile, there is no need
also clarify with comments how the current algorithm works
This commit is contained in:
parent
d889c7deeb
commit
4abf18a5f1
@ -152,9 +152,11 @@ export class TilesCollection extends BaseObservableList {
|
|||||||
|
|
||||||
_evaluateDateHeaderAtIdx(tileIdx) {
|
_evaluateDateHeaderAtIdx(tileIdx) {
|
||||||
//console.log("_evaluateDateHeaderAtIdx", tileIdx);
|
//console.log("_evaluateDateHeaderAtIdx", tileIdx);
|
||||||
// consider the two adjacent tiles where the previous sibling changed:
|
// consider two tiles after the inserted tile, because
|
||||||
// the new tile and the next tile
|
// the first of the two tiles may be a DateTile in which case,
|
||||||
for (let i = -2; i < 3; i += 1) {
|
// we remove it after looking at the needsDateSeparator prop of the
|
||||||
|
// next next tile
|
||||||
|
for (let i = 0; i < 2; i += 1) {
|
||||||
const idx = tileIdx + i;
|
const idx = tileIdx + i;
|
||||||
if (idx < 0) {
|
if (idx < 0) {
|
||||||
continue;
|
continue;
|
||||||
@ -173,10 +175,12 @@ export class TilesCollection extends BaseObservableList {
|
|||||||
this.emitUpdate(idx - 1, prevTile, "date");
|
this.emitUpdate(idx - 1, prevTile, "date");
|
||||||
} else {
|
} else {
|
||||||
//console.log(" add", idx, tile.shape, tile.eventId);
|
//console.log(" add", idx, tile.shape, tile.eventId);
|
||||||
|
// adding a tile shift all the indices we need to consider
|
||||||
|
// especially given we consider removals for the tile that
|
||||||
|
// comes after a datetile
|
||||||
tileIdx += 1;
|
tileIdx += 1;
|
||||||
this._addTileAt(idx, tile.createDateSeparator());
|
this._addTileAt(idx, tile.createDateSeparator());
|
||||||
}
|
}
|
||||||
// TODO must be looking at the wrong index to find the old date separator??
|
|
||||||
} else if (hasDateSeparator) {
|
} else if (hasDateSeparator) {
|
||||||
// this is never triggered because needsDateSeparator is not cleared
|
// this is never triggered because needsDateSeparator is not cleared
|
||||||
// when loading more items because we don't do anything once the
|
// when loading more items because we don't do anything once the
|
||||||
|
@ -119,6 +119,9 @@ export class DateTile extends ViewModel implements ITile<BaseEventEntry> {
|
|||||||
|
|
||||||
// let item know it has a new sibling
|
// let item know it has a new sibling
|
||||||
updatePreviousSibling(prev: ITile<BaseEntry> | undefined): void {
|
updatePreviousSibling(prev: ITile<BaseEntry> | undefined): void {
|
||||||
|
// forward the sibling update to our next tile, so it is informed
|
||||||
|
// about it's previous sibling beyond the date header (which is it's direct previous sibling)
|
||||||
|
// so it can recalculate whether it still needs a date header
|
||||||
this._firstTileInDay.updatePreviousSibling(prev);
|
this._firstTileInDay.updatePreviousSibling(prev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user