Commit Graph

35 Commits

Author SHA1 Message Date
Bruno Windels
9ff4f3839c Merge branch 'master' into bwindels/memberlist 2020-08-19 12:13:38 +02:00
Bruno Windels
37597e2acb mark fragment in storage when start of timeline is reached
so we don't keep looping to fetch more messages
when scrolled all the way up
2020-08-17 17:41:10 +02:00
Bruno Windels
56efd7eee0 don't load timeline past gaps 2020-08-17 15:22:25 +02:00
Bruno Windels
00a85697ab add license header in all source files 2020-08-05 18:38:55 +02:00
Bruno Windels
f5d3092031 WIP 2020-06-26 23:26:24 +02:00
Bruno Windels
c379caf4c0 remove obsolete ifdef comments 2020-04-20 21:31:27 +02:00
Bruno Windels
001dbefbcf stop using default exports
because it becomes hard to remember where you used them and where not
2020-04-20 21:26:39 +02:00
Bruno Windels
234c260339 dont modify fragments in comparer until txn succeeds 2020-03-30 20:46:52 +02:00
Bruno Windels
73ea09f668 Handle sync ordering vs back-fill ordering (see synapse #7164) resulting in dupe events
Also extra robustness while filling a gap

ignore duplicate events from synapse instead considering them an
overlapping event with the adjacent fragment
2020-03-30 20:37:36 +02:00
Bruno Windels
f02641c808 look for transaction_id in /messages response to delete pending events 2020-03-22 00:07:37 +01:00
Bruno Windels
c4a5de20c0 update previous fragment in comparer when appending a new line fragment 2020-03-21 10:45:09 +01:00
Bruno Windels
56c87b3966 better naming 2020-03-14 20:49:15 +01:00
Bruno Windels
224d56698a only set new live key when creating a fragment after the txn succeeds
when doing a limited sync, and a new fragment is created,
this._lastLiveKey is updated immediately. If the transaction
would then fail, the fragmentId in this._lastLiveKey was incremented
but the fragment wasn't written to the store, so if sync is resumed
and would subsequently succeed, fragmentIds would be assigned to events
that don't have a corresponding fragment in the timelineFragment store.

This would throw errors when trying to load the timeline,
breaking the whole app.

This changes SyncWriter to only update this._lastLiveKey in
the emit phase, when the transactions has been committed already.
2020-01-04 20:06:49 +01:00
Bruno Windels
bdc2c3d9ad cleanup: storage is not used in SyncWriter
as the transaction is now always passed as an argument, it never
creates one on its own.
2020-01-04 20:04:57 +01:00
Bruno Windels
201b70ee4f fix failing to sync new rooms 2019-10-12 22:18:36 +02:00
Bruno Windels
90a38078e0 unused import 2019-06-26 22:19:40 +02:00
Bruno Windels
0524f06722 remove logging 2019-06-03 00:31:21 +02:00
Bruno Windels
6bdf44d114 adjust comment 2019-06-03 00:30:37 +02:00
Bruno Windels
3dbf5e727d process in incoming order (reverse-chronological order if backward)
makes code simpler, don't need fix to undo reverse ordering of
nonOverlappingEvents. reverse looking is very likely premature
optimization as well.
2019-06-03 00:18:52 +02:00
Bruno Windels
0407829b26 fix filling gaps with overlapping events
although event order remains wrong, as events are reversed.
step before removing premature optimization, so it's in the git
commit log
2019-06-03 00:11:29 +02:00
Bruno Windels
7852f31f7e clear token on pagination when events start overlapping 2019-06-02 19:28:24 +02:00
Bruno Windels
bb5f139355 fix fragmentId:0 being evaluated as falsy 2019-06-02 19:27:23 +02:00
Bruno Windels
c63d94947f fix persisting a gappy sync 2019-06-02 18:28:38 +02:00
Bruno Windels
ef5d2cfa08 chunk is in reverse-chronological order for backward pagination 2019-06-02 18:15:40 +02:00
Bruno Windels
bdad0ad86b fix some gap fill errors 2019-06-02 15:46:24 +02:00
Bruno Windels
e339cb7321 more fixes, timeline is showing again 2019-06-02 14:59:30 +02:00
Bruno Windels
a1e527ccbc first round of fixes after running the app again in the browser! 2019-06-02 00:49:47 +02:00
Bruno Windels
35d90a8535 ctor takes a bool, not Direction. But use helper fn instead. 2019-06-01 18:20:29 +02:00
Bruno Windels
f8fbfbff9a implement reading n events from end of live fragment 2019-06-01 17:04:05 +02:00
Bruno Windels
447b0aa03c allow adding fragments to comparer, instead of reloading from db.
This is a suboptimal implementation now,
but is the API we want to end up with. Readers and Writers
in persistence add fragments to the comparer when they become
aware of, create, or link up fragments.
2019-06-01 16:42:57 +02:00
Bruno Windels
fa4efe0132 rename Gap/SyncPersistence to Writer, in line with TimelineReader 2019-06-01 15:40:21 +02:00
Bruno Windels
784588440c WIP for fragment support 2019-05-19 20:49:46 +02:00
Bruno Windels
3324fd3afd split up persistFragmentFill method into smaller ones 2019-05-12 20:44:20 +02:00
Bruno Windels
a6b17cf25a first draft of persistFragmentFill 2019-05-12 20:25:41 +02:00
Bruno Windels
89bc0e1696 split up RoomPersister to SyncPersister
also rename stores to timelineEvents and timelineFragments
2019-05-12 20:24:06 +02:00