Commit graph

1535 commits

Author SHA1 Message Date
Bruno Windels 4419b3366e store isUnread and lastMessageTimestamp 2020-08-21 11:55:47 +02:00
Bruno Windels 53720f56df some cleanup 2020-08-21 11:55:25 +02:00
Bruno Windels 00718c582a render avatar img in room list 2020-08-20 17:32:55 +02:00
Bruno Windels 7992607442 also store notif counts while at it 2020-08-20 17:07:02 +02:00
Bruno Windels da947fa0d0 store room avatar url in summary 2020-08-20 17:02:51 +02:00
Bruno Windels f5acee02be add comment why we do things in this order 2020-08-20 16:20:35 +02:00
Bruno Windels 5d0ee21267 move mxcUrl functions to media repo class 2020-08-20 15:40:43 +02:00
Bruno Windels fafdf669db use prev_content from later events before state 2020-08-20 15:23:56 +02:00
Bruno Windels 830c300102 fix typo that broke the txn 2020-08-20 15:23:29 +02:00
Bruno Windels 514d1d9579 first draft of adding profile info while filling gap 2020-08-20 14:39:03 +02:00
Bruno Windels 229502ca43 remove logging 2020-08-20 10:48:59 +02:00
Bruno Windels 4b275529f7 fixup: writing member info during sync 2020-08-20 10:47:14 +02:00
Bruno Windels d31a1b5fff render display name in timeline 2020-08-20 10:26:28 +02:00
Bruno Windels 41c00ce44a write display name and avatar on event during sync 2020-08-20 10:26:08 +02:00
Bruno Windels ba3a4ab8b2 process state events in the timeline together with other timeline events
so member info gets overwritten after all the previous events
have already been written
2020-08-20 09:39:19 +02:00
Bruno Windels fe7cc08287 add _selectWhile with proper "while" semantics
the existing _selectWhile method was more like _selectUntil,
which is what we want for _selectLimit but not for selectWhile(Reverse)

The changes we had made before also broke _selectLimit as it would
look at the results length before the value got added so you
always got 1 value more than requested, breaking sync.
2020-08-19 18:25:49 +02:00
Bruno Windels 79363ed1d7 use optional chaining 2020-08-19 18:25:38 +02:00
Bruno Windels a90cebcabb document access levels 2020-08-19 16:58:28 +02:00
Bruno Windels 113c9e13b3 fix typo 2020-08-19 16:58:19 +02:00
Bruno Windels faaabd1837 fix changed member scenario (no need to fetch from storage) and errors 2020-08-19 16:51:16 +02:00
Bruno Windels 4144b0b281 move memberlist load code out of Room 2020-08-19 16:44:09 +02:00
Bruno Windels f7314990e4 add copyright header 2020-08-19 16:30:05 +02:00
Bruno Windels 463b9b745e base impl of member list 2020-08-19 16:29:54 +02:00
Bruno Windels f84c9d51b4 store last pagination token 2020-08-19 16:29:08 +02:00
Bruno Windels d08297d1e0 move RoomMembers to own dir 2020-08-19 16:28:09 +02:00
Bruno Windels cc1f35a074 fix c/p error 2020-08-19 16:14:10 +02:00
Bruno Windels 6abdcd6b58 finish draft of member list loading method 2020-08-19 16:13:47 +02:00
Bruno Windels 9edd1bb0bb implement loading all members 2020-08-19 16:13:30 +02:00
Bruno Windels bfc5eb3ee5 return changed members from sync writer
we will use it to handle race between /sync and /members
and to update the member list if it loaded
2020-08-19 16:12:49 +02:00
Bruno Windels a5595570f9 members hs api call 2020-08-19 16:11:33 +02:00
Bruno Windels 2ad9b17ad7 no need to update members, as all the info is in the member event
as we won't store deviceTrackingStatus in the member
2020-08-19 16:10:07 +02:00
Bruno Windels 5ad7b74b2b keep string key since we have to support IE11 2020-08-19 16:08:42 +02:00
Bruno Windels 9ff4f3839c Merge branch 'master' into bwindels/memberlist 2020-08-19 12:13:38 +02:00
Bruno Windels 2526198251 replace usage of readPath with ?. 2020-08-19 11:36:43 +02:00
Bruno Windels cc4c9d7893 Improve IDB error reporting
Hope this can help with
https://github.com/vector-im/hydrogen-web/issues/50
2020-08-18 17:27:40 +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 0d3ab21044
Merge pull request #19 from vector-im/bwindels/small-bits
Various small bits
2020-08-17 12:15:28 +00:00
Bruno Windels 59588dc8b5 ignore rooms with empty timelines during initial sync 2020-08-17 14:13:23 +02:00
Bruno Windels 306309c4f8 wrap error and expose room id
this makes it easier to track down a (storage) error to a room
2020-08-17 10:48:00 +02:00
Bruno Windels 1699600ffc fix test 2020-08-05 19:06:54 +02:00
Bruno Windels 3154b047a6 Merge branch 'bwindels/ie11' of github.com:vector-im/hydrogen-web into bwindels/ie11 2020-08-05 19:02:42 +02:00
Bruno Windels d0ba894e2d apply new license headers in new code 2020-08-05 18:59:16 +02:00
Bruno Windels 5ddc02ebc8 XHR request support for legacy browsers 2020-08-05 18:56:06 +02:00
Bruno Windels e8e9740521 Move timeout to fetch, as XHR has native timeout support 2020-08-05 18:56:06 +02:00
Bruno Windels 00a85697ab add license header in all source files 2020-08-05 18:38:55 +02:00
Bruno Windels 69142909d9 XHR request support for legacy browsers 2020-08-05 15:37:37 +00:00
Bruno Windels b26bc69042 Move timeout to fetch, as XHR has native timeout support 2020-08-05 15:36:44 +00:00
Bruno Windels f5d3092031 WIP 2020-06-26 23:26:24 +02:00
Bruno Windels 9712b397ce add TODO comment 2020-05-26 10:31:23 +02:00
Bruno Windels 7f221cda65 show images intimeline 2020-05-09 20:02:08 +02:00
Bruno Windels f56b96b0ff add some ideas for relations 2020-05-07 19:14:53 +02:00
Bruno Windels f9c0b4b53e add logging in case #45 would happen again 2020-05-07 19:14:30 +02:00
Bruno Windels 6b453c1ec4 we need to start when online actually, so invert 2020-05-07 18:46:45 +02:00
Bruno Windels 24cb9e3f5c only increment sent counter after successful send
otherwise the message doesn't get sent after coming back online
2020-05-07 18:46:16 +02:00
Bruno Windels 52e2d3203e also make filter request interruptable 2020-05-07 00:04:41 +02:00
Bruno Windels cc19063c79 set timeout on /sync request
as long running requests run higher risk of getting wedged
2020-05-06 23:50:12 +02:00
Bruno Windels 2010704f14 fix only reconnecting the first time 2020-05-06 20:58:48 +02:00
Bruno Windels f8f13f54be fix timeouts not working
and also not being handled in the Reconnector
2020-05-06 19:38:33 +02:00
Bruno Windels 3adc609e07 implement session status bar, with feedback on connection status 2020-05-05 23:16:51 +02:00
Bruno Windels 0eefc88fe3 waitForRetry doesn't reject when aborted 2020-05-05 23:13:41 +02:00
Bruno Windels 8e9c76c26b options is the 5th arg 2020-05-05 23:13:05 +02:00
Bruno Windels 4de29779c7 also abort timeout timer when response is rejected 2020-05-05 23:12:46 +02:00
Bruno Windels f90b435362 No need for Offline state if we're always in Waiting really 2020-05-04 23:42:34 +02:00
Bruno Windels 28bed56b5a prevent closing more than once 2020-05-04 22:21:56 +02:00
Bruno Windels 1fa14a99e9 correctly wait for catchup sync 2020-05-04 19:38:23 +02:00
Bruno Windels a19e541e1e less http specific 2020-04-22 20:49:21 +02:00
Bruno Windels 3359c6950f typo (this made the loadStatus undefined :/) 2020-04-22 20:49:03 +02:00
Bruno Windels 08b1c02af7 remove start value, can be hardcoded for now
also fix params in wrong order this way
2020-04-22 20:48:49 +02:00
Bruno Windels f826258c75 null doesn't set queryParams to {} here, so revert explicitly 2020-04-22 20:47:53 +02:00
Bruno Windels 174fd3ea4a don't assume options 2020-04-22 20:47:46 +02:00
Bruno Windels 3f840d9d33 simple unit test for hsApi 2020-04-22 20:47:31 +02:00
Bruno Windels 277c8af628 Headers is a DOM specific class, use Map instead in HomeServerApi 2020-04-22 20:46:47 +02:00
Bruno Windels f4983b5ba6 port SessionPickerViewModel to SessionContainer 2020-04-20 22:49:14 +02:00
Bruno Windels bb7fca0592 support deleting the session from the container 2020-04-20 22:29:25 +02:00
Bruno Windels a097929dbd rename lowercase filenames of classes to camelcase like class 2020-04-20 21:41:10 +02:00
Bruno Windels 31f3886eba move EventEmitter to utils 2020-04-20 21:35:53 +02:00
Bruno Windels c379caf4c0 remove obsolete ifdef comments 2020-04-20 21:31:27 +02:00
Bruno Windels 0f29fdb24e some notes 2020-04-20 21:27:07 +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 164d9d594f finish implemenation of SessionContainer 2020-04-20 19:48:21 +02:00
Bruno Windels 87b23d062c fix imports after reshuffleling 2020-04-20 19:47:45 +02:00
Bruno Windels 72b0eefccb replace isSyncing and emit with an Observable SyncStatus 2020-04-19 19:52:26 +02:00
Bruno Windels 80f7caadbe rename SessionsStore to SessionInfoStorage 2020-04-19 19:13:38 +02:00
Bruno Windels 8c56ac3e4f rename NetworkError to ConnectionError 2020-04-19 19:05:12 +02:00
Bruno Windels 8c5411cb7d moar WIP 2020-04-19 19:02:10 +02:00
Bruno Windels 1f15ca6498 more WIP 2020-04-18 19:16:16 +02:00
Bruno Windels 378b75c98a more WIP and breakage 2020-04-09 23:19:49 +02:00
Bruno Windels ef267ca331 WIP2 2020-04-05 15:11:15 +02:00
Bruno Windels c980f682c6 create DOMClock, abstraction of clock functionalities for DOM 2020-04-04 17:34:46 +02:00
Bruno Windels bc69e49cfb WIP2 2020-03-31 10:13:25 +02:00
Bruno Windels b6a5a02a33 WIP 2020-03-30 23:56:03 +02:00
Bruno Windels e4563135bf look at prev_content when handling member events 2020-03-30 21:59:44 +02:00
Bruno Windels c830f50325 catch errors while persisting a new message 2020-03-30 21:33:04 +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 8354c58c07 also look for remote echos based on event_id 2020-03-23 23:00:33 +01: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 6d68ec1bac move fillGap to room 2020-03-21 23:40:40 +01:00
Bruno Windels 44760a9f82 Revert "add logging related to fragments"
This reverts commit 2f355cabef.
2020-03-21 10:47:35 +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 2f355cabef add logging related to fragments
both when rebuilding and when sorting will be used
2020-03-20 20:23:07 +01:00
Bruno Windels 7e8cc7ae00 need to return the response here, not the request wrapper
we were reading back a remote id of undefined because of this,
so when for some reason we never receive the message down from sync,
the pending message keeps sending on every load. The server ignores
the send though, because the transaction id is already used, and it returns
the remote id of the event that was already sent the previous time, but
as we were not storing this remote id, we'd just try again and again.

not receiving it through sync could have happened when we were sending a bunch of events
and then receiving (this is how we encountered this bug, while trying to repro another) the
response, but not yet the sync for the message that got wedged. Then we typed stuff on another client
so we would get a limited response for that room, and boom, we would not get the remote echo of the
event that was already sent (but because of this bug we didn't store the remote id) but no echo received yet (when we remove the pending event),
so it gets wedged!
2020-03-17 00:11:50 +01:00
Bruno Windels b69efc3425 fix errors when replaying 2020-03-17 00:07:54 +01:00
Bruno Windels 06e43d9ee3 fix all tests 2020-03-14 21:38:37 +01:00
Bruno Windels 56c87b3966 better naming 2020-03-14 20:49:15 +01:00
Bruno Windels ac4a7f971b only apply sync changes in room summary once txn is committed
- also remove m.room.aliases support as they were wrongly implemented
   and now obsolete
 - don't count invited and joined members according to m.room.member
   events anymore as it was also wrongly implemented
   (only when prev!==new membership, but on initial sync we only get
   last member event, which might have been a nick change
2020-03-14 20:46:49 +01:00
Bruno Windels fc741272ba only apply sync changes in session once txn is committed 2020-03-14 20:45:36 +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 1d9a5c490a add record/replay network layer 2019-12-23 14:28:42 +01:00
Bruno Windels aa86748cdd pull fetch code out of homeserverapi 2019-12-23 14:28:27 +01:00
Bruno Windels 35c090dcb4 add proper import/export functionality 2019-12-14 18:29:35 +01:00
Bruno Windels 8a55778c32 make sure aliases and heroes aren't empty when picking name 2019-11-22 09:29:18 +01:00
Bruno Windels 325077bcb0 try more domexception fixes 2019-11-21 18:28:18 +01:00
Bruno Windels 5ecf0a6717 fix error path on transaction abort error 2019-11-21 18:23:48 +01:00
Bruno Windels ad7a150aaa use aliases and heroes to fall back room name to 2019-10-13 07:48:33 +02:00
Bruno Windels b16f21867c preserve value for storage errors on add and put 2019-10-12 22:19:16 +02:00
Bruno Windels 201b70ee4f fix failing to sync new rooms 2019-10-12 22:18:36 +02:00
Bruno Windels ac53b9099b only log error in sync loop 2019-10-12 22:18:19 +02:00
Bruno Windels 2fa5fa7890 add delete button in session picker 2019-10-12 21:16:48 +02:00
Bruno Windels d367037332 very basic support for lazy loading 2019-10-12 20:24:09 +02:00
Bruno Windels 8616d79aad make fetch errors more informative by including method and url 2019-09-15 14:31:50 +02:00
Bruno Windels 2b2b4232e9 moar send logging 2019-09-15 12:25:14 +02:00
Bruno Windels 6f527fd2e0 use openCursor where openKeyCursor is not supported 2019-09-15 12:24:46 +02:00
Bruno Windels bbf6943455 use .get fallback where .getKey is not supported (Edge 15) 2019-09-15 12:24:27 +02:00
Bruno Windels 8e590fe53b rename and use StorageError to deal with idb DOMerror 2019-09-15 12:23:54 +02:00
Bruno Windels 5a90b4673b fix CORS requests failing 2019-09-15 12:23:08 +02:00
Bruno Windels 09b9eff7c1 fix remaining errors to make login work 2019-09-08 10:19:16 +02:00
Bruno Windels 49a577991b login and session picker view models, sessions store 2019-07-31 00:06:53 +02:00
Bruno Windels 45cd85ead1 fixup: check for event entry with eventType, event isn't exposed anymore 2019-07-29 19:58:35 +02:00
Bruno Windels 8665bcb897 concat synced events in timeline with pending events for local echo 2019-07-29 19:53:58 +02:00
Bruno Windels 88a7d64091 fixup: delay not awaited, but not needed for now 2019-07-29 19:53:30 +02:00
Bruno Windels 9b94c4bb61 don't expose raw event object from entry, pending event doesn't have it
it only has content and *some* of the meta fields,
but we want to threat pendingevententry and evententry as one
and the same in the rest of the application, so don't give access
to entire event object.
2019-07-29 10:27:12 +02:00
Bruno Windels 56cee450d1 return syncing user id from PendingEventEntry.sender
add User class where we later can track display name, avatar, ...
2019-07-29 10:24:34 +02:00
Bruno Windels b26f7df689 pending events are not certain to be sorted here 2019-07-29 09:54:34 +02:00
Bruno Windels 3ed72df620 put everything together to make it roughly work
no local echo yet, and send errors are being swallowed
2019-07-27 10:51:51 +02:00
Bruno Windels 851100b88a send unsent messages after first sync 2019-07-26 22:40:39 +02:00
Bruno Windels 707988f806 better handle remote echos and hookup in session and room 2019-07-26 22:33:33 +02:00
Bruno Windels ccb722d766 more WIP 2019-07-26 22:03:57 +02:00
Bruno Windels f3d1128f28 WIP 2019-07-01 10:00:29 +02:00
Bruno Windels c5b2d0c8b2 WIP 2019-06-28 00:52:54 +02:00
Bruno Windels cd9f25ea80 convert tabs to spaces where needed 2019-06-26 22:31:36 +02:00
Bruno Windels 90a38078e0 unused import 2019-06-26 22:19:40 +02:00
Bruno Windels b882e0ef8a respect argument count of idb calls
lumia doesn't like undefined arguments if they
are being left out, so call the idb calls with
the exact amount of arguments
2019-06-26 22:02:00 +02:00
Bruno Windels bbb5e35bcb wrap everything that can throw a idb DOMException in StorageError
as lumia gives very cryptic errors without a stacktrace.
2019-06-26 22:00:50 +02:00
Bruno Windels 0fd52be710 encode idb array keys as sortable strings
that's why numeric parts of the keys have to be encoded
as a fixed length, "big-endian" ordered strings, so
string sorting will also sort the numeric keys correctly.

this also assumes room ids don't contain the "|" character,
we should probably escape the separator at some point.
2019-06-26 21:55:33 +02:00
Bruno Windels 106146660c define storage keys to be 32bit for idb / web platform
as a preparation to serialize the eventIndex and fragmentId
as a 8 character string, part of a concatenated string PK,
as lumia doesn't support array keys.
2019-06-26 21:52:41 +02:00
Bruno Windels ca4361248f fallback for platforms missing AbortController 2019-06-26 19:49:49 +02:00
Bruno Windels 9cd5257959 load more events when scrolled to top 2019-06-16 17:29:33 +02:00
Bruno Windels b47898e025 show full stack on sync error 2019-06-16 15:49:00 +02:00
Bruno Windels 1917a528c7 replace ad hoc buttons and label with SyncStatusBar 2019-06-16 10:54:16 +02:00
Bruno Windels a4bc2dd2b0 support isOwn on messages 2019-06-16 10:53:23 +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 45528580ed fix comparator/comparer mismatch 2019-06-03 00:30:16 +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 c9aaa18151 return only eventId from findFirstOrLastOccurringEventId 2019-06-03 00:11:12 +02:00
Bruno Windels 7852f31f7e clear token on pagination when events start overlapping 2019-06-02 19:28:24 +02:00
Bruno Windels 0b637f656a timeline store requests should always be scoped to 1 fragmentId
as fragmentIds should not be sorted, they are a linked list
and that is what determines their order.
2019-06-02 19:27:40 +02:00
Bruno Windels bb5f139355 fix fragmentId:0 being evaluated as falsy 2019-06-02 19:27:23 +02:00
Bruno Windels 4b5b90e199 fix another direction mismatch 2019-06-02 19:26:45 +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 a59014475b also swap logic of setter 2019-06-02 18:15:08 +02:00
Bruno Windels bdad0ad86b fix some gap fill errors 2019-06-02 15:46:24 +02:00
Bruno Windels d022608a1a it's entry.entryIndex, not eventIndex, but use helper method instead. 2019-06-02 15:24:27 +02:00
Bruno Windels 1ed3babfec fragment boundary is a gap if backwards(started) & previousToken 2019-06-02 15:01:14 +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 3de86cdf33 obsolete comment 2019-06-01 18:32:32 +02:00
Bruno Windels 039bbe038c adjust tiles(collection) to entry changes 2019-06-01 18:29:02 +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 2a128ed32c use SortedArray in Timeline, adjust loadAtTop to use TimelineReader 2019-06-01 17:39:23 +02:00
Bruno Windels f8fbfbff9a implement reading n events from end of live fragment 2019-06-01 17:04:05 +02:00
Bruno Windels 3137f025c7 remove draft commented code 2019-06-01 16:44:58 +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 10457611f9 whitespace 2019-05-12 20:26:46 +02:00
Bruno Windels e3328f0fef add fragments store name 2019-05-12 20:26:32 +02:00
Bruno Windels da5e8794ab lint 2019-05-12 20:26:20 +02:00
Bruno Windels 75100c1c60 adjust Timeline to changes, gap persister 2019-05-12 20:26:03 +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
Bruno Windels bf835ac01d create Entry classes and return fragment boundaries as entries as well
they can then be used for gap tiles.
2019-05-11 18:19:53 +02:00
Bruno Windels 2b510b24d9 adjust persister to fragments (untested) 2019-05-11 15:41:46 +02:00
Bruno Windels 152397a292 first impl of idb fragment store 2019-05-11 15:41:09 +02:00
Bruno Windels 41f2224454 get live fragment in persister 2019-05-11 13:21:58 +02:00
Bruno Windels 783f39c378 add fragmentId to methods that need it in timeline store 2019-05-11 13:21:21 +02:00
Bruno Windels 53cdabb459 store method to find events to connect with when filling gaps
as fragments can be unaware of their chronological relationship,
we need to check whether the events received from /messages or /context
already exists, so we can later hook up the fragments.
2019-05-11 13:10:31 +02:00
Bruno Windels d6ae313bbd make compare rely less on fragment index
also indenting
2019-05-11 09:51:27 +02:00
Bruno Windels 99c8816bf9 better naming
FragmentIndex -> FragmentIdIndex (index of fragment ids,
   not an index number in a fragment collection)
EventKey -> EventIndex (implies being ordered)
FragmentKey -> FragmentId
  (implies not being ordered, hence FragmentIdIndex)
2019-05-01 15:36:32 +02:00
Bruno Windels d90411a6dd adjust SortKey to have fragmentKey instead of gapKey
with FragmentIndex to compare fragment keys
2019-05-01 14:47:39 +02:00
Bruno Windels 06d2d2e198 draft of idb store for fragments 2019-04-18 20:19:43 +02:00
Bruno Windels 749bdadf74 disable failing tests for now and include fragment index so it's tests are found 2019-04-18 20:19:09 +02:00
Bruno Windels 6ba37e90a3 work on memory store 2019-04-04 09:27:31 +02:00
Bruno Windels 3f2f656db7 work on gap filling + tests (doesn't work yet) 2019-03-29 23:01:27 +01:00
Bruno Windels aaff9eea6c update store api with requirements for gap filling 2019-03-29 23:01:22 +01:00
Bruno Windels 7d91b2dde3 first go at a timeline memory store
first to use in unit tests for persister
later also to use in production when idb is not available
2019-03-29 23:00:22 +01:00
Bruno Windels b1e382d7c9 thinko with direction 2019-03-21 21:36:02 +01:00
Bruno Windels 8f7e5a799c work on filling gaps + test (draft only) 2019-03-21 21:35:33 +01:00
Bruno Windels 8e8e22fe16 work on filling gaps 2019-03-09 00:41:06 +01:00
Bruno Windels 95bef00054 some comments 2019-03-08 20:03:47 +01:00
Bruno Windels ec925d7c49 draft of how to implement filling a timeline gap 2019-03-08 20:03:18 +01:00
Bruno Windels 1757a27475 consistent naming 2019-03-08 20:01:28 +01:00
Bruno Windels 994f1c57d3 store all logout data outside of the session storage
so we could store it in gnome keyring, macOs keychain, ... on non-webclients,
also better separation
2019-03-08 20:00:37 +01:00
Bruno Windels 049e70e312 throw NetworkError from HomeServerApi 2019-03-08 12:26:59 +01:00
Bruno Windels f8bd11f07b doesn't need to be async for now 2019-02-27 23:23:09 +01:00
Bruno Windels 8462a0ac6b this behaves weird? need to figure out later 2019-02-27 23:22:47 +01:00
Bruno Windels 6b4ed65a57 show timeline when clicking room in roomlist 2019-02-27 22:50:08 +01:00
Bruno Windels 5cafb92fee emit after txn has been committed
to keep txn open for as short as possible,
and avoid any errors caused as part of emit aborting txn
2019-02-27 22:49:52 +01:00
Bruno Windels c8d5b4483a public room.id property, needed for session.rooms updater 2019-02-26 23:27:06 +01:00
Bruno Windels 841f280d3c rooms on the screen!! 2019-02-26 22:45:58 +01:00
Bruno Windels 90a7989eda rooms is a proper collection now, so no need for getter on session 2019-02-26 22:09:48 +01:00
Bruno Windels 853316933c adjust import path 2019-02-26 20:49:45 +01:00
Bruno Windels db53db7007 adjust to new ObservableMap api 2019-02-24 19:25:06 +01:00
Bruno Windels 4d28448920 add compare method to SortKey and add tests 2019-02-24 19:24:43 +01:00
Bruno Windels 5bff41c1ee wip on collections and listview 2019-02-20 23:48:16 +01:00
Bruno Windels 952f1abddf wip 2019-02-17 23:58:01 +01:00
Bruno Windels d87444824d only store sync token when it changes 2019-02-16 02:59:10 +01:00
Bruno Windels 07fed669f6 debug room lastsortkey not loading in chrome (but does in FF!) 2019-02-16 02:57:19 +01:00
Bruno Windels be8544aa48 also persist state events in timeline 2019-02-16 02:57:19 +01:00
Bruno Windels f7789d343a more fields for summary 2019-02-16 02:57:19 +01:00
Bruno Windels ad9999fd50 idb compares binary keys per byte, so make SortKey big endian 2019-02-16 02:57:19 +01:00
Bruno Windels 03ef98e668 make sure queries don't run into other rooms 2019-02-16 02:57:19 +01:00
Bruno Windels c60840bae9 fix selectAll 2019-02-16 02:57:19 +01:00
Bruno Windels ffd3d740c5 state events are under state key 2019-02-16 02:57:19 +01:00
Bruno Windels c70376e82d make starting a transaction async so we can do more synchronization later on 2019-02-16 02:57:19 +01:00
Bruno Windels 48a47cb639 expose native error for now
as server not reachable seems to be reported as a TypeError
with message "fetch failed" or something in chrome,
let's see if we can find something in common between browsers
to wrap it into something more sensible
2019-02-16 02:57:19 +01:00
Bruno Windels a544c25d58 more 2019-02-10 22:02:42 +01:00
Bruno Windels 35648d31b9 dont emit error when aborting request when stopping sync 2019-02-10 21:40:11 +01:00
Bruno Windels bff0161a05 move sync & persistence engine over to own matrix folder 2019-02-10 21:33:18 +01:00