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
c04a8140a3
offer to rejoin archived room from menu
2021-05-18 11:07:46 +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
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
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
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
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
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
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
89461bf69a
do all collection removal from sync rather than hand callbacks to invite
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
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
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
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
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
09ac503e22
add test for removing invite
2021-04-20 17:57:03 +02:00
Bruno Windels
d1dc4c9e9c
remove extra layer of log items
2021-04-20 17:56:53 +02:00
Bruno Windels
a072426e07
integrate invites into the sync lifecycle and expose them on session
2021-04-20 17:39:46 +02:00
Bruno Windels
de125441d1
add write/load test for Invite
2021-04-20 17:34:45 +02:00
Bruno Windels
81a35639ba
add Invite class
...
calculating the room name, avatar, etc ...
with empty accept and reject methods for now
2021-04-20 16:21:27 +02:00
Bruno Windels
bdc8451c4a
better logging
2021-04-08 18:39:52 +02:00
Bruno Windels
9e697c6cbe
don't add the pending event again if removed already, fixes #289
2021-04-08 18:36:26 +02:00
Bruno Windels
f976eeaf13
rename SortedArray.replace to update
2021-04-08 18:36:09 +02:00
Bruno Windels
863f659774
fall back to bare userid for local echo profile
2021-04-08 16:30:46 +02:00
Bruno Windels
813be758d7
we should prefer to not pick the event itself if it's a member event
...
but still fall back to that if it's a new join
2021-04-08 15:33:21 +02:00
Bruno Windels
f67ccc18f4
take most recent member rather than first in timeline for inline lookup
...
noticed this while inspecting the code, looks related to #269
2021-04-08 12:57:10 +02:00
Bruno Windels
6f37c232f7
Don't cache members that haven't been written yet - fixes #271
2021-04-08 12:56:24 +02:00
Bruno Windels
2b24de838a
actually log initial session backup enabling rather than using null log
2021-03-15 15:24:57 +01:00
Bruno Windels
325d237302
simpler optional log
2021-03-15 15:23:46 +01:00
Bruno Windels
8684d6b5e5
some fixes
2021-03-15 15:23:35 +01:00
Bruno Windels
fcc06b2754
WIP to add logging to decryption and fetching key backups
2021-03-15 14:39:42 +01:00
Bruno Windels
f2dc7728a5
notifyRoomKey was a better name
2021-03-15 14:36:38 +01:00
Bruno Windels
96f060c0a9
also retry decryption for backfilled entries
...
as their event ids won't be stored along the missing key (we only store
synced items so we don't fill up the missing event ids in the store
with undecryptable backfilled event ids)
2021-03-15 14:33:14 +01:00
Bruno Windels
4b62e0a2ce
extract retry event ids for key before overwriting key on key backup
2021-03-15 13:38:27 +01:00
Bruno Windels
cfb521ef10
fix ll events being duplicated in the timeline preventing name changes
2021-03-05 20:10:57 +01:00
Bruno Windels
b37a586094
add clarification why this doesn't need to also check member changes
2021-03-05 17:04:18 +01:00
Bruno Windels
f4a7782298
add MemberWriter, and only return MemberChange's if something changed
2021-03-05 17:03:45 +01:00
Bruno Windels
49fc971d67
cleanup
2021-03-05 17:02:57 +01:00
Bruno Windels
f98f690b49
no need to "serialize" here every time, it just adds noise
2021-03-05 17:02:26 +01:00
Bruno Windels
c1c8f11bf7
fix TypeError when syncing a new e2ee room with keys at the same time
2021-03-05 11:50:54 +01:00
Bruno Windels
e0d14207ac
make opening a txn async again
...
as we'll need to await a bogus request first thing after opening the txn
funny enough, we originally made it sync to accommodate the same bug
in safari, but that didn't prevent any microtask being awaited
before scheduling a request in the calling code closing the txn.
We'll await a bogus request within the transaction class now so it
doesn't depend on the calling code
2021-03-04 19:47:02 +01:00
Bruno Windels
aa23672694
forgot await, this broke updating the timeline when fetching key backup
2021-03-03 17:50:38 +01:00
Bruno Windels
b012b1dc99
Show correct profile for pending messages
2021-03-03 14:53:22 +01:00
Bruno Windels
6771303086
make a method to determine only the retry entries rather
2021-03-03 14:03:50 +01:00
Bruno Windels
404dbcd065
english
2021-03-03 14:03:50 +01:00
Bruno Windels
e7598b9c76
only request key backup for events that are UTD
2021-03-03 14:03:50 +01:00
Bruno Windels
30481a5a9e
add logging to key sharing and discarding in reaction to member changes
2021-03-03 14:03:50 +01:00
Bruno Windels
f3c49e51f2
add, don't replace timeline retry entries
...
also, filter out any that have been decrypted already
2021-03-03 14:03:50 +01:00
Bruno Windels
43547e0901
don't add retried entries to the timeline if they are not already there
2021-03-03 14:03:50 +01:00
Bruno Windels
7f1cdf6841
also decrypt all matching timeline entries when new key
2021-03-03 14:03:50 +01:00
Bruno Windels
3671574547
comment about session backup
2021-03-03 14:03:50 +01:00
Bruno Windels
3bfe52b1dc
filter encrypted events before deciding to decrypt or not
2021-03-03 14:03:50 +01:00
Bruno Windels
9702c4fd64
more logging in sync write
2021-03-03 14:03:50 +01:00
Bruno Windels
8d7cb2a39a
remove unused imports
2021-03-03 14:03:50 +01:00
Bruno Windels
e85844f482
don't redeclare retryEntries, or they won't get passed to writeSync
2021-03-03 14:03:50 +01:00
Bruno Windels
56db210763
attempt at fixing https://github.com/vector-im/hydrogen-web/issues/245
2021-03-03 14:03:50 +01:00
Bruno Windels
c6db23bcfb
WIP to store missing session event ids
2021-03-03 14:03:50 +01:00
Bruno Windels
3fa2d22015
remove isTimelineOpen flag and rather do the check to verify in Room
...
flags are ugly, let's avoid them where we can
2021-03-03 14:03:50 +01:00
Bruno Windels
265a9bd993
applyToEntries does not return anything
2021-03-02 19:39:04 +01:00
Bruno Windels
8d080163b3
reattempt decryption for timeline items
2021-03-02 19:39:04 +01:00
Bruno Windels
061e7abd50
don't break on empty room sync response
2021-03-02 19:39:04 +01:00
Bruno Windels
fb446167f6
make new sync room keys available during decryption of same sync
2021-03-02 19:39:04 +01:00
Bruno Windels
8208464653
only log and clear when actually needed
2021-03-02 19:37:11 +01:00
Bruno Windels
e1821b1753
prevent linking fragment to itself when filling a gap
...
this seems to happen when at the beginning of the timeline and
make the timeline reader go into an infinite loop
2021-03-02 19:31:00 +01:00
Bruno Windels
6f6346d5c3
detect when hitting beginning of timeline when loading timeline
2021-03-02 19:29:55 +01:00
Bruno Windels
1e209b8613
Prevent pending events being skipped when remote echo comes
...
This fixes #241
2021-02-24 14:14:04 +01:00
Bruno Windels
b63ad629a7
can remove console logging here now
2021-02-24 11:25:26 +01:00
Bruno Windels
48c361531d
log clearing unread state of a room
2021-02-24 11:22:19 +01:00
Bruno Windels
376e59820c
more info when logging gap fills
2021-02-24 11:22:07 +01:00
Bruno Windels
1093895133
log opening timeline
...
also load the timeline when opening it in the room, so logging
starts in the room (and we don't need to pass the logger to Timeline)
and also API-wise it makes more sense to
not return uninitialized objects
2021-02-24 11:21:04 +01:00
Bruno Windels
41ecf1db8e
missing semicolon
2021-02-24 10:38:19 +01:00
Bruno Windels
0cbf6008a2
log event id when sending and when receiving remote echo on sync
2021-02-23 19:58:01 +01:00
Bruno Windels
dd38fc13d7
log sending messages
2021-02-23 19:22:59 +01:00
Bruno Windels
57bb75e864
log login & loading a session
2021-02-23 19:22:25 +01:00
Bruno Windels
c6c96a611a
fix iteration bug when disposing pending events at shutdown
...
discovered by logging
2021-02-23 19:04:25 +01:00
Bruno Windels
f4a3b64da0
log in sync writer (at detail level) and log room ids at info level
2021-02-19 11:57:17 +01:00
Bruno Windels
e590b573fb
log remaining specific room entries as detailed
2021-02-18 12:44:19 +01:00
Bruno Windels
f321968ac3
add more sync logging
2021-02-18 12:44:19 +01:00
Bruno Windels
704708bd6c
add some logging to sync
2021-02-12 18:56:26 +01:00
Bruno Windels
764cddcdec
can be cached
2020-11-20 11:45:38 +01:00
Bruno Windels
8b8d06cf3e
show error for attachments still need upload but missing after refresh
2020-11-19 14:42:29 +01:00
Bruno Windels
0581066350
upload smallest attachments first
...
so you don't get a delay at the end of the upload
when starting a new request
2020-11-18 20:09:27 +01:00
Bruno Windels
a23075a326
make safe to call when no attachments present
2020-11-18 20:09:07 +01:00
Bruno Windels
fba5877b3b
dispose attachment blobs when pending event is removed/closing session
2020-11-18 20:08:42 +01:00
Bruno Windels
fd81111bfb
merge state machine from AttachmentUpload into PendingEvent
...
to have less state machines, and we are mostly interested in the
aggregate status of all attachments of an event
this will also drive updates through the pending events collection
that already exists rather than an extra observablevalue, so less
housekeeping to update the UI.
2020-11-18 13:04:23 +01:00
Bruno Windels
83cbe78cd6
report attachment upload progress
2020-11-16 10:45:46 +01:00
Bruno Windels
1dd46b875b
this is fine actually, as it will get encrypted.
...
just don't pass it to the upload
2020-11-13 19:22:06 +01:00
Bruno Windels
0292725076
better formatting
2020-11-13 19:10:18 +01:00
Bruno Windels
262cc8936e
don't leak mimetype for encrypted attachments
2020-11-13 19:10:04 +01:00
Bruno Windels
d2a4242e5b
support multiple attachments per event
2020-11-13 17:19:19 +01:00
Bruno Windels
8b16d8bc99
handle upload failures better
2020-11-11 13:06:03 +01:00
Bruno Windels
af4f3f902f
wait for attachment to be uploaded in send queue
...
also expose attachment from PendingEvent(Entry)
2020-11-11 11:51:39 +01:00
Bruno Windels
48cd4ac95d
track upload error
2020-11-11 11:51:11 +01:00
Bruno Windels
7088b2cdc8
support attachment upload and sending from room api
2020-11-11 10:47:55 +01:00
Bruno Windels
0c70a67ebb
pass platform to room
...
as we'll need it to access crypto and creating blobs
2020-11-11 10:47:19 +01:00
Bruno Windels
32b7b1f064
draft of AttachmentUpload class
2020-11-11 10:46:20 +01:00