Commit graph

620 commits

Author SHA1 Message Date
Bruno Windels c6ff4c2517 finish room encryption part 2020-11-06 18:56:32 +01:00
Bruno Windels d0d1f68a9c WIP 2020-11-06 16:56:12 +01:00
Bruno Windels 5d12aef6db support pre-sharing room keys in room encryption 2020-11-06 10:32:37 +01:00
Bruno Windels e0c8be3a9a try to call out when #187 happens 2020-11-05 22:41:33 +01:00
Bruno Windels 16542284f3 fix #48 2020-11-05 21:24:14 +01:00
Bruno Windels b8370d53b6 always throw here so we never get to Ready status when stopped 2020-11-05 21:22:29 +01:00
Bruno Windels 134f018849 always have an error when stopping sync 2020-11-05 21:21:27 +01:00
Bruno Windels a3ec01385b
Merge pull request #178 from vector-im/bwindels/lightbox
Lightbox for picture messages
2020-11-02 11:23:10 +00:00
Bruno Windels 597a57eae3 too much whitespace 2020-10-30 19:59:21 +01:00
Bruno Windels 137264edcb implement subscribing to a single event 2020-10-30 15:19:51 +01:00
Bruno Windels 7d81306a49 return BufferHandles from the media repository
BufferHandles are platform specific handles to a buffer. On web,
they have a .blob and .url property.
2020-10-30 15:18:27 +01:00
Bruno Windels 3008367307 detect AbortError properly, name is a string 2020-10-30 09:54:38 +01:00
Bruno Windels a3aa25449b make it work with xhr 2020-10-26 17:37:32 +01:00
Bruno Windels 3ed5ea8b0b Merge branch 'master' into bwindels/decrypt-images 2020-10-26 17:08:29 +01:00
Bruno Windels 1a518cdd28 more refactor fixes 2020-10-26 16:31:30 +01:00
Bruno Windels 03351d2e1f extract platform class to put all platform specific code in 2020-10-26 15:44:11 +01:00
Bruno Windels 46fd769dda (re)move old (compile-time) platform code 2020-10-26 10:34:35 +01:00
Bruno Windels 4fd71279cf don't disable cache for media repository downloads 2020-10-26 09:58:39 +01:00
Bruno Windels 6a468a0883 decrypt attachment code 2020-10-23 17:45:15 +02:00
Bruno Windels 3a6268f0c1 basic PoC of image decryption working
needs looooaaads of cleanup still
2020-10-23 17:25:11 +02:00
Bruno Windels f214c53fa9 add @internal and other comments to Session 2020-10-23 12:59:40 +02:00
Bruno Windels df8eed14aa expose whether we already have a 4s key,to show the 4s setup in settings
it's a tri-state of null/false/true with null meaning we need to
go online first to know as only then we try to setup session backup
2020-10-23 12:57:47 +02:00
Bruno Windels df72e829bf setup session backup as part of start method, so we know we're online
also don't upload OTKs in case of existing account until
catchup sync has happened
2020-10-23 12:22:52 +02:00
Bruno Windels a7a922680d request persisted storage when logging in/restoring a session 2020-10-20 17:02:34 +02:00
Bruno Windels 6f82d81f39 better session backup ui 2020-10-19 18:29:13 +02:00
Bruno Windels 974f77a71d WIP 2020-10-16 18:06:20 +02:00
Bruno Windels 0d622164df close session db in other tabs when opening 2020-10-16 12:50:37 +02:00
Bruno Windels 8122d76e73 Merge branch 'master' into bwindels/url-routing 2020-10-14 12:45:49 +02:00
Bruno Windels b00db1af3e only keep 20 outbound olm sessions in memory at once to prevent OOM 2020-10-14 12:44:27 +02:00
Bruno Windels 07701117cd reduce megolm sync cache size to 1 session
as this is kept around for every e2ee room, and we only have
limited olm memory
2020-10-14 12:43:35 +02:00
Bruno Windels b29b776e9f fix olm session cache being leaked when closing session 2020-10-14 11:25:49 +02:00
Bruno Windels c8dd7b42e7 encountered this very unlikely race while testing, so prevent it 2020-10-13 13:10:35 +02:00
Bruno Windels 927e8134d3 use url navigation in root view model
also track all view models as it is
important everything is properly disposed now
2020-10-09 17:03:38 +02:00
Bruno Windels 00bd4364f0 early draft of loading session via url scheme 2020-10-08 18:23:37 +02:00
Bruno Windels a7db44eabf
Merge pull request #138 from vector-im/bwindels/filter-room-list
Room list filtering
2020-10-06 11:08:39 +00:00
Bruno Windels b1cb797919 fix refactor error in xhr, breaking it 2020-10-06 13:02:35 +02:00
Bruno Windels 7def542e21 fix test 2020-10-06 12:19:47 +02:00
Bruno Windels 5ae1be9a9c ignore invalid json on error pages 2020-10-05 17:18:05 +02:00
Bruno Windels c8e4dbc1b3 this should be a map 2020-10-05 17:06:29 +02:00
Bruno Windels e93b091566 dont use no-cache in fetch, as it doesn't play well with CORS on Safari 2020-10-02 14:02:59 +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 bebdaad7d4 log when we can't abort 2020-10-01 16:23:15 +02:00
Bruno Windels c1df371a14 add some documentation for our idb investigations 2020-10-01 16:14:58 +02:00
Bruno Windels 9a4d47820d change this back as well 2020-10-01 14:46:30 +02:00
Bruno Windels cb7da2ba4a dont need this anymore 2020-10-01 14:45:09 +02:00
Bruno Windels f402e8c6c4 typo/thinko in docs 2020-10-01 14:39:23 +02:00
Bruno Windels 300529b7c5 write sync token first
in case we get a TransactionInactiveError,
we have at least written the sync token
and won't repeat the same sync request
2020-10-01 14:38:54 +02:00
Bruno Windels 1117c77d05 note for future optimisation 2020-10-01 14:36:00 +02:00
Bruno Windels d5a6a4d350 todo comment 2020-10-01 14:35:46 +02:00
Bruno Windels 3c7125bb88 add (optional) logging for idb requests 2020-10-01 14:35:33 +02:00
Bruno Windels 93a7f9959e Safari doesn't like the prepare txn still open when opening the sync txn
Waiting for it to close magically solves the TransactionInactiveError
we were seeing on some incremental sync request when
reading from roomMembers.

Still unsure what this is about, and if we should wait for all read txns
to close or not.
2020-10-01 14:31:38 +02:00
Bruno Windels ddb14f48bf we actually don't need to track write requests
as errors will bubble up to the txn
2020-10-01 14:31:08 +02:00
Bruno Windels d5a52c32d6 these don't return a promise anymore 2020-09-29 11:51:14 +02:00
Bruno Windels 37690cffe3 track storage write requests internally, as we never await their promise 2020-09-29 11:50:37 +02:00
Bruno Windels 482b5f4d22 allow passing message to IDBRequestError 2020-09-29 11:50:10 +02:00
Bruno Windels 43d430fc98 remove unused storage modification functions 2020-09-29 11:47:49 +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 7627a2bda2 add comment 2020-09-29 10:53:02 +02:00
Bruno Windels 163ca12854 ignore abort error 2020-09-29 10:52:52 +02:00
Bruno Windels 919357b474 more broken imports after refactor 2020-09-29 09:57:48 +02:00
Bruno Windels c529df179b also import this 2020-09-29 09:56:46 +02:00
Bruno Windels c1ecaffbae fix refactor typo 2020-09-29 09:54:51 +02:00
Bruno Windels 07fcf7e75b also do this in try catch 2020-09-29 09:43:25 +02:00
Bruno Windels b1f9cfd972 cleanup storage errors a bit 2020-09-29 09:17:03 +02:00
Bruno Windels ee4c132fb4 add todo 2020-09-28 16:06:41 +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 d759e1429f set error before changing state to stopped 2020-09-28 16:06:19 +02:00
Bruno Windels 3440823981
Merge pull request #117 from vector-im/bwindels/idb-promises
Prevent transaction from closing on IE11/Win7
2020-09-28 13:37:34 +00:00
Bruno Windels dd30f51ffe add copyright 2020-09-28 15:28:51 +02:00
Bruno Windels 8366b44d8c dont assume global is window 2020-09-28 14:52:12 +02:00
Bruno Windels 98a6d82820 detect when sync promise hack is needed 2020-09-28 14:51:41 +02:00
Bruno Windels 706ec97296 change method name 2020-09-28 13:25:44 +02:00
Bruno Windels 64290d5ae6 flush promises manually in idb event handler 2020-09-25 16:53:19 +02:00
Bruno Windels 27a8ef4604 add comment how timeouts interact with the reconnector 2020-09-25 10:45:41 +02:00
Bruno Windels e175e9ac8b cleanup 2020-09-25 10:45:34 +02:00
Bruno Windels 134b04c782 make flushing room key shares reentrant
as it can be called from Room.start while still running.
2020-09-25 10:45:00 +02:00
Bruno Windels bcca23bac9 retry sync on timeout, even for incremental sync 2020-09-25 10:44:36 +02:00
Bruno Windels 7f0d36cf79 remove double negation 2020-09-25 10:44:19 +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 4a0173e90f only run decryptPending if needed 2020-09-24 10:53:51 +02:00
Bruno Windels 4d616ce281 add todo for future optimisation 2020-09-24 10:35:09 +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 6e77ebb160 undo obsolete changes 2020-09-23 18:06:16 +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 137f55b44d manage request scheduler in session container
so we can start it before sync does its first request,
which otherwise gets aborted because the scheduler hasn't started yet
2020-09-22 16:39:41 +02:00
Bruno Windels 150f06b9bf also move to Stopped for aborts 2020-09-22 16:39:04 +02:00
Bruno Windels 85b451ffa1 can't rename named params like this 2020-09-22 15:49:43 +02:00
Bruno Windels 5660e0f4f0 rename send scheduler to request scheduler 2020-09-22 15:49:35 +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