Commit graph

884 commits

Author SHA1 Message Date
Bruno Windels
afc3db2f33 unrelated todo note for later 2021-05-27 09:11:57 +02:00
Bruno Windels
2b5dcff836 consistent naming 2021-05-27 09:11:13 +02:00
Bruno Windels
da02b5fe2d transfer local echo state when replacing event entry
e.g. after decryption or remote echo of other relation comes in
2021-05-26 13:10:19 +02:00
Bruno Windels
ce7147e463 put redactions in their own view, and allow aborting while still queued 2021-05-26 13:07:56 +02:00
Bruno Windels
af45810582 add support for redactions (and relations) local echo 2021-05-21 16:59:29 +02:00
Bruno Windels
b55efb7f11 ensure updateEntries is always set in the result of GapWriter 2021-05-21 16:58:04 +02:00
Bruno Windels
c934049523 also resolve related event ids when removing remote echo during sync
as /sync races with /send, and remote echo may happen first.
It's important for local echo that the pending redaction/relation
will also get attached to the remote echo before /send returns,
otherwise the remote echo would be "unannotated" until /send returns
2021-05-21 10:52:46 +02:00
Bruno Windels
c3fb35848b emit update when receiving event id for related event ahead in the queue 2021-05-20 15:02:45 +02:00
Bruno Windels
619cf9bcbb this should be filter rather than find, we iterate it 2021-05-20 15:02:24 +02:00
Bruno Windels
f271517446 log redaction during sync 2021-05-20 15:02:14 +02:00
Bruno Windels
8a8c5569dc provide redact method on tile and room
also add some logging
2021-05-20 14:53:17 +02:00
Bruno Windels
9721432a8c remove pending events that failed because of permanent error
so they don't get stuck
2021-05-20 14:52:30 +02:00
Bruno Windels
4ce66fc8a1 allow concurrent removals when iterating pending events
so we can remove failed events in the next commit
2021-05-20 14:51:04 +02:00
Bruno Windels
618a32e6c0 revert last tried pending event status to waiting when offline
so we don't fail the check if we can immediately remove when redacting
2021-05-20 14:49:54 +02:00
Bruno Windels
df9e886f32 fix lint 2021-05-20 13:22:54 +02:00
Bruno Windels
b655c34bbb also show reason for redaction 2021-05-20 13:20:12 +02:00
Bruno Windels
780ad44032 render redacted messages 2021-05-20 13:15:35 +02:00
Bruno Windels
94b0bc82ef writing relations is async 2021-05-20 12:50:16 +02:00
Bruno Windels
814e92ad92 fix missing import 2021-05-20 12:50:16 +02:00
Bruno Windels
39bed4b0fc fix lint here 2021-05-20 12:50:16 +02:00
Bruno Windels
9b923d337d write redactions during sync 2021-05-20 12:50:16 +02:00
Bruno Windels
edaac9f436 draft redaction support, no local echo yet 2021-05-20 12:50:16 +02:00
Bruno Windels
3724fc6765 log join network call 2021-05-18 11:49:16 +02:00
Bruno Windels
c04a8140a3 offer to rejoin archived room from menu 2021-05-18 11:07:46 +02:00
Bruno Windels
9679058081 allow to join room by id or alias 2021-05-18 11:05:31 +02:00
Bruno Windels
8ff1f91d2c bring down lint error count, delete some old, inactive unit tests 2021-05-17 12:59:04 +02:00
Bruno Windels
f5f25c3019 fix DM room names appearing as "Empty room"
because we weren't properly awaiting the heroes to be loaded
2021-05-12 23:07:25 +02:00
Bruno Windels
b30b62416c add option to forget archived room 2021-05-12 15:38:54 +02:00
Bruno Windels
5d139dff43 Support deleting data in several stores for room id 2021-05-12 15:38:11 +02:00
Bruno Windels
e233caf7ac change order of type and scope in operation index key to scan per scope 2021-05-12 15:36:48 +02:00
Bruno Windels
f331d84292 add options menu in room header with leave room option 2021-05-12 13:59:08 +02:00
Bruno Windels
afd33f4b77 use constant for member event type 2021-05-12 12:19:05 +02:00
Bruno Windels
ca84f485ab fix tests 2021-05-11 17:04:36 +02:00
Bruno Windels
1738a0ea3c need to create archived room when leaving, otherwise it isn't stored 2021-05-11 16:58:16 +02:00
Bruno Windels
8b8214cd1b reference count archived rooms and keep track of active ones
so we don't create two instances for the same id, one for sync, and one
for displaying, and hence updates from sync being pushed on a different
instance than the one displaying, and not updating the view.
2021-05-11 16:09:58 +02:00
Bruno Windels
965700272b remove archivedRoom map, it's unused and just complicating for now 2021-05-11 16:09:01 +02:00
Bruno Windels
be7934057e lint 2021-05-11 13:08:13 +02:00
Bruno Windels
51d13fd8d2 update comments for Invite updates 2021-05-11 13:07:57 +02:00
Bruno Windels
6bb9140720 have individual getters for kickDetails 2021-05-11 13:07:31 +02:00
Bruno Windels
00d4dc9518 rename kickAuthor to kickedBy 2021-05-11 13:07:11 +02:00
Bruno Windels
24731687dc log room id in invite and archivedroom afterSync 2021-05-11 13:05:02 +02:00
Bruno Windels
e775ed12b4 sync arch. rooms with Room during init. sync to create summary, timeline
when receiving archived rooms during initial sync, sync them with Room
(e.g. as a joined room) first so the members, timeline get written
and the summary gets created which is then adopted by the ArchivedRoom.
2021-05-11 13:02:43 +02:00
Bruno Windels
2087059c0b fix archived room summary key path now the summary is nested 2021-05-11 13:01:19 +02:00
Bruno Windels
99d5467ad1 make archived room part of sync lifecycle (draft) 2021-05-10 18:42:30 +02:00
Bruno Windels
79d97737bc calculate leave details in archived room 2021-05-10 18:41:43 +02:00
Bruno Windels
1216378783 Extract BaseRoom from Room with summary and timeline, not sync or send
Which we can then reuse to create a dedicated ArchivedRoom class
which will:
 - have only relevant methods and properties (e.g. no sendEvent)
 - turns out that you can still receive a leave room in the sync
   (e.g. when banned after kick) so we'll make the sync for
   an archived room separate from room to not overcomplicate the sync
   there, much like we did for Invite already.
2021-05-07 16:13:49 +02:00
Bruno Windels
06868abdb2 with room status being a thing, we don't need the invite on the room 2021-05-07 14:42:29 +02:00
Bruno Windels
6bb8e2fa43 allow loading an archived room 2021-05-07 13:10:10 +02:00
Bruno Windels
1b83ae7d8a allow observing the room status 2021-05-07 13:09:38 +02:00
Bruno Windels
243d105aad support getting the room status for a room: invited, joined or archived 2021-05-07 13:08:39 +02:00
Bruno Windels
36f54420cf extract RetainedValue from MemberList 2021-05-07 13:06:00 +02:00
Bruno Windels
030b6837ef rename 2021-05-06 15:27:32 +02:00
Bruno Windels
7e450071b1 clear all room state when rejoining room 2021-05-06 15:27:10 +02:00
Bruno Windels
8c2ae863fd clean up rejoin storage logic somewhat 2021-05-06 15:26:48 +02:00
Bruno Windels
f16c08f13e remove room from all user identities when leaving
and delete identity as well as all device identities if no rooms left
2021-05-06 15:24:52 +02:00
Bruno Windels
a12f10dc3c make type explicit 2021-05-06 15:23:33 +02:00
Bruno Windels
00d8f81bdd clear all room state before rejoining room 2021-05-06 14:15:47 +02:00
Bruno Windels
15080edfa7 fix failing test now we don't remove invite from collection anymore here 2021-05-06 14:15:47 +02:00
Bruno Windels
45837f7377 don't set dmUserId when not a DM 2021-05-06 14:15:47 +02:00
Bruno Windels
7defd4a02b ensure the sync is limited when rejoining without overlap
otherwise gap would be lost. The server should do this already,
but we're just ensuring it is, to be more robust.
2021-05-06 14:15:47 +02:00
Bruno Windels
08ba4577f6 rejoin logic was throwing away the prev_batch token 2021-05-06 14:15:47 +02:00
Bruno Windels
9546b13821 attempt to load sync writer position when joining a room during sync
since fragments and events are not archived, just the summary,
attempt to load the room and sync writer during sync,
so we write the timeline correctly and don't cause ConstraintErrors
because unaware of fragments and events already there.
2021-05-06 14:15:47 +02:00
Bruno Windels
07535eedca when rejoining, room will be archived so consider any non-join a rejoin 2021-05-06 14:15:47 +02:00
Bruno Windels
1258aaee7c brevity 2021-05-06 14:15:47 +02:00
Bruno Windels
f6957278c3 write and remove archived summary when leaving/rejoining 2021-05-06 14:15:47 +02:00
Bruno Windels
644698aed7 remove room from room list when leaving 2021-05-06 14:15:47 +02:00
Bruno Windels
89461bf69a do all collection removal from sync rather than hand callbacks to invite 2021-05-06 14:15:47 +02:00
Bruno Windels
12da71f731 unneeded ? 2021-05-06 14:15:47 +02:00
Bruno Windels
bcfc4d1fd7 have better transaction errors 2021-05-06 14:15:47 +02:00
Bruno Windels
184480ad36 no need to capture req here 2021-05-06 14:15:47 +02:00
Bruno Windels
d4d7adc7fc add archivedRoomSummary store 2021-05-06 14:15:47 +02:00
Bruno Windels
c2716a061b pass in userId for kickDetails 2021-05-06 14:15:47 +02:00
Bruno Windels
2cfe7034e8 extract fn 2021-05-06 14:15:47 +02:00
Bruno Windels
b13bfee3d8 support setting kickDetails in room summary 2021-05-06 14:15:47 +02:00
Bruno Windels
85385295a6 don't serialize null values in room summary
they only take space in the storage otherwise as we add more fields
2021-05-06 14:15:47 +02:00
Bruno Windels
9e78f8382a dont assume there is a rooms section in the sync 2021-05-06 12:10:10 +02:00
Bruno Windels
b23ec5ef70 remove obsolete comment 2021-04-28 10:08:11 +02:00
Bruno Windels
e850874019 clarify order 2021-04-28 10:05:34 +02:00
Bruno Windels
fd454f1e20 don't expose joinRule prop, as it is protocol specific 2021-04-27 14:26:40 +02:00
Bruno Windels
aaf4e79a73 make media repo available on invite 2021-04-27 11:01:33 +02:00
Bruno Windels
bd748549f7 fix updates in Invite not firing on collection 2021-04-26 10:45:27 +02:00
Bruno Windels
47b2eb0bdb don't create a room when rejecting an invite 2021-04-26 10:41:21 +02:00
Bruno Windels
827075bc37 only apply the invite when joining 2021-04-23 18:05:46 +02:00
Bruno Windels
847738a76c set invite on left room so we can detect a vm refresh is needed 2021-04-23 18:05:14 +02:00
Bruno Windels
b9f145caa4 emit events for rooms before invites
so the room is already there when removing the invite
2021-04-23 18:04:10 +02:00
Bruno Windels
d289a44624 also sync leave now that we can handle it 2021-04-22 17:23:29 +02:00
Bruno Windels
2e9ddf9c2c prevent key collisions between rooms and invites before creating tile vm 2021-04-22 17:22:47 +02:00
Bruno Windels
ec0de15da6 handle overlap with existing timeline when rejoining room 2021-04-22 17:21:29 +02:00
Bruno Windels
ac312cbdc7 fix c/p error in invite store 2021-04-21 17:49:59 +02:00
Bruno Windels
16df40331b fix refactor mistake in sync 2021-04-21 17:26:10 +02:00
Bruno Windels
0cc95f5083 first draft of InviteViewModel 2021-04-21 15:45:51 +02:00
Bruno Windels
ad5d7fc9f0 add note collection emit should happen first in Invite 2021-04-21 15:32:37 +02:00
Bruno Windels
a5e6294593 test accepted/rejected fields in invite tests 2021-04-21 15:32:13 +02:00
Bruno Windels
465e0c191f add logging to accepting or rejecting an invite 2021-04-21 15:31:55 +02:00
Bruno Windels
5ce138539b network calls to accept and reject invite 2021-04-20 19:02:45 +02:00
Bruno Windels
bb1c64e1ac add left panel tile view model for invites
and track in-progress state in Invite so it is shared by left panel
and open invite
2021-04-20 19:01:40 +02:00
Bruno Windels
ee98eaa640 restore invites when loading the session 2021-04-20 18:09:48 +02:00
Bruno Windels
5876e5200b don't need this for now 2021-04-20 18:03:27 +02:00
Bruno Windels
4560e0e491 split sync lifecycle steps out in different methods to keep it smaller 2021-04-20 17:57:17 +02:00
Bruno Windels
09ac503e22 add test for removing invite 2021-04-20 17:57:03 +02:00