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
Bruno Windels
44a2febce9
hook it up
2020-11-06 23:43:02 +01:00
Bruno Windels
137264edcb
implement subscribing to a single event
2020-10-30 15:19:51 +01:00
Bruno Windels
46fd769dda
(re)move old (compile-time) platform code
2020-10-26 10:34:35 +01:00
Bruno Windels
c8dd7b42e7
encountered this very unlikely race while testing, so prevent it
2020-10-13 13:10:35 +02:00
Bruno Windels
07eee8fac1
only create fragments when we will really write events to the timeline store
2020-10-01 17:01:33 +02:00
Bruno Windels
1117c77d05
note for future optimisation
2020-10-01 14:36:00 +02:00
Bruno Windels
f993048a2b
Merge branch 'master' into bwindels/idb-promises-txn
2020-09-29 11:33:58 +02:00
Bruno Windels
e5b1cbbcd3
prevent endless loop when restoring messages that were already sent
2020-09-29 11:32:49 +02:00
Bruno Windels
76381fbca1
open storage transactions synchronously
...
this (almost) makes it work in some browsers that otherwise
have throw a TransactionInactiveError on the first operation
you try to do on a store.
2020-09-28 16:06:41 +02:00
Bruno Windels
86df4993e1
prevent room summary from being updated every time it is in /sync resp
2020-09-24 16:45:28 +02:00
Bruno Windels
46abafdccc
ensure cloned is always set to false for this._data
...
by making all assignments of this._data go through applyChanges
2020-09-24 16:40:51 +02:00
Bruno Windels
ece4840653
don't mark rooms as unread after retrying decryption for now
...
this will not mark e2ee rooms as unread if their room key is delayed
though. We should really only do this for back-filled events but that
is hard to do right now, as we don't know the original source here.
2020-09-23 19:11:11 +02:00
Bruno Windels
eb4237f6f4
tell caller if an update was done from summery.writeAndApplyData
...
so room actually emits an update
2020-09-23 19:10:25 +02:00
Bruno Windels
17f84ab314
fix "this" still being used in readRawTimelineEntries ...
2020-09-23 19:09:44 +02:00
Bruno Windels
086bdafe9a
no need for async
2020-09-23 18:28:21 +02:00
Bruno Windels
7cad3b2bdb
some tabs in here
2020-09-23 18:22:51 +02:00
Bruno Windels
64f657e5a2
fix test
2020-09-23 18:20:29 +02:00
Bruno Windels
d53b5eefb3
fill in the blanks
2020-09-23 17:59:42 +02:00
Bruno Windels
9d41e122a0
draft of falling back to reading entries since last decrypted event key
...
this change notifyRoomKey(s) to only take one room key at a time
to simplify things
2020-09-23 17:34:25 +02:00
Bruno Windels
a8392dc684
also decrypt messages in the sync response that enabled encryption
...
like initial sync
2020-09-23 14:26:14 +02:00
Bruno Windels
241176d6fb
WIP
2020-09-22 18:22:37 +02:00
Bruno Windels
0a00d4c865
use hsApi wrapper that handles rate-limiting instead of send scheduler
2020-09-22 13:43:18 +02:00
Bruno Windels
d7c25e3106
move MediaRepository out of HomeServerApi
...
so HomeServerApi becomes easier to wrap, only having methods
that return a RequestResult.
2020-09-22 13:40:38 +02:00
Bruno Windels
ed913ca24b
add dispose to room encryption
2020-09-18 13:08:18 +02:00
Bruno Windels
06ccd74680
this should be read-write, oops
2020-09-17 17:59:35 +02:00
Bruno Windels
9d622434fb
integrate session backup with session class
2020-09-17 15:58:46 +02:00
Bruno Windels
75bff228ec
fix data not being passed on, caused crash on initial sync
2020-09-14 17:45:13 +02:00
Bruno Windels
49f330279b
also pass timeline entries to summary after initial decryption failed
2020-09-14 16:34:07 +02:00
Bruno Windels
f3f07a0672
centralize update emitting in room
2020-09-14 16:33:43 +02:00
Bruno Windels
bce46daa9c
this is shorter
2020-09-14 16:33:30 +02:00
Bruno Windels
8c4d68def9
show decryption errors in timeline
2020-09-14 15:47:00 +02:00
Bruno Windels
0c3ea90ab4
also update room list when encrypted events come in
2020-09-14 15:46:58 +02:00
Bruno Windels
fb69688d47
also update room list when encrypted events come in
2020-09-14 14:01:47 +02:00
Bruno Windels
e763771cc2
cleanup
2020-09-11 14:45:38 +02:00
Bruno Windels
96119b4e58
load all pending operations when starting the session, pass to room
2020-09-11 14:41:40 +02:00
Bruno Windels
ab1fe711ad
implement room key sharing with operations store
2020-09-11 14:41:12 +02:00
Bruno Windels
9f6822f362
remove needsRoomKey flag on member
2020-09-11 14:38:36 +02:00
Bruno Windels
0dece5b04f
make continuation logic work well with pending events
...
- don't use display name to compare but user id
(pending doesn't have display name yet)
- use current time as timestamp
2020-09-11 11:43:40 +02:00
Bruno Windels
78fecd003a
cleanup
2020-09-10 18:57:29 +02:00
Bruno Windels
de1cc0d739
abort decrypt requests when changing room
2020-09-10 17:43:01 +02:00
Bruno Windels
0bf1723d99
Worker WIP
2020-09-10 15:40:30 +01:00
Bruno Windels
fdbc5f3c1d
WIP worker work
2020-09-10 13:00:11 +02:00
Bruno Windels
17412bbb2f
more validation
2020-09-10 12:12:39 +02:00
Bruno Windels
94b0cfbd72
add prepareSync and afterPrepareSync steps to sync, run decryption in it
2020-09-10 12:11:43 +02:00
Bruno Windels
1c77c3b876
expose multi-step decryption from RoomEncryption, adjust room timeline
...
sync code hasn't been adjusted yet
2020-09-10 12:11:25 +02:00
Bruno Windels
a18d2c0e78
update comment
2020-09-09 09:51:48 +02:00
Bruno Windels
212efe823c
fix memberlist not containing all members
...
we were using the prev_batch of the last sync to pass to
/members, but this points at the timeline *before* the last
sync, so wouldn't contain all members. Use the sync token instead.
2020-09-09 09:50:03 +02:00
Bruno Windels
65660a1e3b
remove double jsdoc
2020-09-08 15:06:44 +02:00
Bruno Windels
650df6fea8
forgot await
2020-09-08 15:00:29 +02:00
Bruno Windels
5a8aac57ac
there might not be a member yet
2020-09-08 15:00:20 +02:00
Bruno Windels
5e65eb10ef
docs
2020-09-08 14:39:33 +02:00
Bruno Windels
1aa044667c
try sending out pending room keys after first sync
2020-09-08 14:39:07 +02:00
Bruno Windels
31d4b6f75d
send room keys to newly joined members in afterSyncCompleted stage
2020-09-08 14:38:27 +02:00
Bruno Windels
bbaf3a5605
write needsRoomKey flag when new members joins to tracked e2ee room
2020-09-08 14:22:11 +02:00
Bruno Windels
d184be2d22
rotate outbound megolm session when somebody leaves the room
2020-09-08 11:09:09 +02:00
Bruno Windels
4cf3b3569d
storage method takes EventKey actually
2020-09-08 10:51:28 +02:00
Bruno Windels
c32ac2c764
use decryption result to show message verification status in timeline
2020-09-08 10:50:39 +02:00
Bruno Windels
9137d5dcbb
make decryption algorithms return DecryptionResult
...
which contains curve25519 key and claimed ed25519 key as well as payload
2020-09-08 10:48:11 +02:00
Bruno Windels
a817a9aaf9
return decrypted type and content
2020-09-04 16:41:03 +02:00
Bruno Windels
8e5d5db32b
add event prop on entry
2020-09-04 16:40:15 +02:00
Bruno Windels
e06cb1eb5f
fix param order
2020-09-04 16:29:20 +02:00
Bruno Windels
1af118a443
don't assume we have a timeline
2020-09-04 16:27:39 +02:00
Bruno Windels
dc0576f2db
cleanup
2020-09-04 15:31:45 +02:00
Bruno Windels
5a731903da
implement decrypting when loading timeline
2020-09-04 15:30:06 +02:00
Bruno Windels
62bcb27784
implement decryption retrying and decrypting of gap/load entries
...
turns out we do have to always check for replay attacks because
failing to decrypt doesn't prevent an item from being stored,
so if you reload and then load you might be decrypting it
for the first time
2020-09-04 15:29:58 +02:00
Bruno Windels
fe9245dd04
first draft of retrying decryption when receiving room keys
2020-09-04 12:10:12 +02:00
Bruno Windels
502ba5deea
first draft of decryption in Room and RoomEncryption
2020-09-04 12:09:19 +02:00
Bruno Windels
c5efa582b1
check algorithm
2020-09-03 17:51:00 +02:00
Bruno Windels
b1226d9220
add infrastructure to encrypt while sending
2020-09-03 15:36:48 +02:00
Bruno Windels
5cafef96f5
add RoomEncryption to room
2020-09-03 15:36:17 +02:00
Bruno Windels
007333628a
add todo for /sync <-> /members race
2020-08-31 16:10:18 +02:00
Bruno Windels
15ae35bbbc
add future todo
2020-08-31 16:09:38 +02:00
Bruno Windels
703c89e276
make membership available on member
2020-08-31 16:07:29 +02:00
Bruno Windels
374dce638d
these are assumed to be getters
2020-08-31 16:07:18 +02:00
Bruno Windels
4fd3e2ab20
response is a method
2020-08-31 16:07:04 +02:00
Bruno Windels
2e67b2b6b8
handle prev_content location ambiguity
2020-08-31 14:21:18 +02:00
Bruno Windels
8b358379e8
first draft of device tracker
...
mainly missing race protection with /sync and actually running the code
2020-08-31 14:12:12 +02:00
Bruno Windels
8482bc95ec
pass memberchanges around instead of members
...
so we can easily tell how their membership changes, (e.g. join -> left)
which we'll need for device tracking.
Not adding this to RoomMember because RoomMember also needs to be
able to represent a member loaded from storage which doesn't contain
this error. A MemberChange exists only within a sync.
2020-08-31 09:50:57 +02:00
Bruno Windels
164384f312
forgot memberlist member
2020-08-31 08:54:27 +02:00
Bruno Windels
8da00f9a03
add isTrackingMembers flag to know if EncryptionUsers have been written
...
for this room
2020-08-31 08:53:47 +02:00
Bruno Windels
d813e6d932
store encryption event content rather than just flag in room summary
2020-08-31 08:53:10 +02:00
Bruno Windels
6a9cbf7f33
store and sort by m.lowpriority tag
2020-08-27 20:52:51 +02:00
Bruno Windels
25f3dfbb75
fix failing test
2020-08-27 14:22:59 +02:00
Bruno Windels
3e8e1bab67
remove logging
2020-08-27 10:38:22 +02:00
Bruno Windels
1fe496eeea
fix crash when state is not set (erroneously?) on gap response
...
this seems to happen when the only event in the room is
a m.room.create
2020-08-27 09:52:30 +02:00
Bruno Windels
34ec96c1b8
look for displayname/avatar in prev content as well
...
as synapse doesn't set them on content for leave memberships
this caused these props to be removed in storage
2020-08-27 09:51:44 +02:00
Bruno Windels
bd9cb5aae5
add RoomMember.name which falls back to userId
...
this will prevent the crash when left members
have their displayname removed (another issue)
2020-08-27 09:51:00 +02:00
Bruno Windels
5d21ae3fb7
fix error on conduit with state field that is missing when empty
2020-08-21 19:10:28 +02:00
Bruno Windels
a64d49a8a2
prevent an empty array being passed to Heroes
2020-08-21 19:03:21 +02:00
Bruno Windels
3d5b69f60a
remove obsolete comment
2020-08-21 18:14:57 +02:00
Bruno Windels
70e89a3dd6
expose name/avatar on member
2020-08-21 18:13:53 +02:00
Bruno Windels
2c14373b13
allow falling back to heroes name if we don't have one
2020-08-21 18:12:11 +02:00
Bruno Windels
acec7c8f33
remove alt_aliases, as we should not use it for the room name
2020-08-21 18:11:53 +02:00
Bruno Windels
d5d0154873
join and invited count were mixed up... oops
2020-08-21 18:11:26 +02:00
Bruno Windels
e5cdf061cb
create, update and remove heroes as they come from sync
2020-08-21 18:11:07 +02:00
Bruno Windels
ddfdbf9777
implement heroes logic to calculate the room name
2020-08-21 17:59:24 +02:00
Bruno Windels
831f4188f7
also expose highlight count
2020-08-21 15:50:32 +02:00
Bruno Windels
0d8ff34c55
don't fail to clear unread state when offline
...
also update UI before network request
2020-08-21 15:23:25 +02:00
Bruno Windels
2bfbb41ee7
send receipt to server when clearing unread state so notif count clears
2020-08-21 15:16:57 +02:00
Bruno Windels
1a61752ace
process state events separately from timeline events
2020-08-21 14:35:23 +02:00
Bruno Windels
d3ea8c747a
ignore own messages for unread state, and don't set unread while open
2020-08-21 14:26:51 +02:00
Bruno Windels
879c4ff951
default for all flags should be false
2020-08-21 14:11:53 +02:00
Bruno Windels
2742162c8e
only clear unread if needed
2020-08-21 14:11:42 +02:00
Bruno Windels
4969009b2b
default should be false, so comparison in the sorter is stable
2020-08-21 14:10:53 +02:00
Bruno Windels
4fb3010676
only set unread for incremental syncs
2020-08-21 13:45:38 +02:00
Bruno Windels
7458465ef6
expose props on Room
2020-08-21 11:56:45 +02:00
Bruno Windels
739d74bf9c
add method to clear unread state
2020-08-21 11:56:36 +02:00
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
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
6abdcd6b58
finish draft of member list loading method
2020-08-19 16:13:47 +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
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
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
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
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
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
7f221cda65
show images intimeline
2020-05-09 20:02:08 +02:00