Commit graph

182 commits

Author SHA1 Message Date
Bruno Windels 630e61a674 support enabling/disabling push notifs on a session 2021-03-23 18:20:23 +01:00
Bruno Windels 0b211e8e1c simplify this code now that it is only doing one thing 2021-03-09 12:27:51 +01:00
Bruno Windels e97ed9ae45 fix session test, just barely 2021-03-05 17:03:12 +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 fb446167f6 make new sync room keys available during decryption of same sync 2021-03-02 19:39:04 +01:00
Bruno Windels 57bb75e864 log login & loading a session 2021-02-23 19:22:25 +01:00
Bruno Windels ef1e867dee no need for keys in the iteration 2021-02-23 19:20:58 +01:00
Bruno Windels 94cc8b99b0 don't need to check this actually, sync response should be there 2021-02-22 11:21:56 +01:00
Bruno Windels f0d9d13f4e don't assume device lists are set in sync response 2021-02-22 11:20:51 +01:00
Bruno Windels 08622699f6 more logging for device messages 2021-02-18 19:56:47 +01:00
Bruno Windels c5c0a181ff move check for devicelists up in Session.writeSync, and more logging 2021-02-18 19:56:10 +01:00
Bruno Windels f321968ac3 add more sync logging 2021-02-18 12:44:19 +01:00
Bruno Windels d39c3812b2
Merge pull request #231 from vector-im/bwindels/logs
Structured logging
2021-02-17 10:19:46 +00:00
Bruno Windels bbab1e9ecc move base64/58 encoding into platform
fixes https://github.com/vector-im/hydrogen-web/issues/99
2021-02-12 16:01:54 +01:00
Bruno Windels e515548037 add some comments while debugging a problem 2021-02-11 21:08:06 +01:00
Bruno Windels e49639fda2 move textencoder/decoder into platform 2021-02-11 17:29:48 +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 03351d2e1f extract platform class to put all platform specific code in 2020-10-26 15:44:11 +01: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 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 7def542e21 fix test 2020-10-06 12:19:47 +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 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 4a0173e90f only run decryptPending if needed 2020-09-24 10:53:51 +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 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
Bruno Windels c9ee5a5db2 stay in catchup mode as long as there are device messages
this implements https://github.com/vector-im/element-web/issues/2782

it also implements 0 timeout for catchup, getting rid of the
catching up with your convo banner for 30s upon reconnection.
2020-09-21 17:57:01 +02:00
Bruno Windels 015c6b1c70 interpret unreported signed_curve25519 as 0 OTKs 2020-09-21 17:56:23 +02:00
Bruno Windels da780d0aa2 delay backup 10s if missing session event came from sync 2020-09-18 13:11:02 +02:00
Bruno Windels ed913ca24b add dispose to room encryption 2020-09-18 13:08:18 +02:00
Bruno Windels 7d6fcfafa8 pass olm, better naming, don't reuse var 2020-09-17 18:55:39 +02:00
Bruno Windels 494c5cbcf0 notify UI when we need session backup 2020-09-17 18:00:00 +02:00
Bruno Windels a205ae8841 fixes 2020-09-17 17:57:12 +02:00
Bruno Windels 9d622434fb integrate session backup with session class 2020-09-17 15:58:46 +02:00
Bruno Windels 7f97c540fb obsolete comment, this is already the case 2020-09-17 14:20:42 +02:00
Bruno Windels abfde76e24 store account data in storage
needs a resync, need to think how to handle this
2020-09-17 10:39:51 +02:00
Bruno Windels 00eade1c16 add crypto driver with primitives needed for 4S & session backup 2020-09-17 10:19:09 +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 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 e0d9d703b7 offload olm account creation in worker 2020-09-11 10:43:17 +02:00
Bruno Windels af36c71a59 load worker in main and pass paths so it works both on compiled and non-compiled 2020-09-10 18:41:23 +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 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 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 baad4bd37f hookup megolm decryption in session 2020-09-04 15:31:27 +02:00
Bruno Windels 502ba5deea first draft of decryption in Room and RoomEncryption 2020-09-04 12:09:19 +02:00
Bruno Windels 8ac80314c2 cleanup 2020-09-03 17:51:20 +02:00
Bruno Windels c5efa582b1 check algorithm 2020-09-03 17:51:00 +02:00
Bruno Windels c5c9505ce2 hookup megolm encryption in session 2020-09-03 17:50:28 +02:00
Bruno Windels 5cafef96f5 add RoomEncryption to room 2020-09-03 15:36:17 +02:00
Bruno Windels 792f0cf9a0 log our identity keys after load 2020-09-03 15:32:33 +02:00
Bruno Windels 1d4a5cd6d4 instantiate olm encryption in session 2020-09-03 15:32:08 +02:00
Bruno Windels e22131bf57 don't store or return our own device 2020-09-03 15:28:20 +02:00
Bruno Windels 4f4808b94c lock on senderKey while enc/decrypting olm sessions 2020-09-03 12:12:33 +02:00
Bruno Windels 279b55e8e6 fix test 2020-09-03 11:31:00 +02:00
Bruno Windels 1dbabf6240 cleanup ctor 2020-09-02 14:59:17 +02:00
Bruno Windels 14cba7ec6e need to pass in olm 2020-09-02 14:52:19 +02:00
Bruno Windels 7d517eb700 wire up the olm decryption,megolm room key handler and to_device handler 2020-09-02 14:30:18 +02:00
Bruno Windels 81a1573e3b make a shared olm util for the whole session 2020-09-01 17:57:59 +02:00
Bruno Windels aeb2f5402a process own membership changes before device lists 2020-08-31 16:08:47 +02:00
Bruno Windels afb9ae4391 hook up device tracker with sync 2020-08-31 14:13:21 +02:00
Bruno Windels a1ba5d7dba between syncs, generate more otks if needed, and upload them 2020-08-28 13:58:17 +02:00
Bruno Windels 681dfdf62b sync otk count to e2ee account 2020-08-28 13:56:44 +02:00
Bruno Windels 4c290f0394 upload identity and one-time keys 2020-08-27 19:13:24 +02:00
Bruno Windels f98b3dd5fa create/load olm account before first sync 2020-08-27 19:13:09 +02:00
Bruno Windels 3b24ea34f3 Merge branch 'master' into bwindels/e2ee 2020-08-27 14:40:57 +02:00
Bruno Windels 09a018ade1 store sync token and filter id under the same key in session
as they are updated together
2020-08-27 14:36:50 +02:00
Bruno Windels 14b27f81fe store session values as individual values in store
so we don't have to write the whole object every time something changes
we'll use this to store the olm account
2020-08-27 14:28:40 +02:00
Bruno Windels fe0257bca1 load olm and pass it to session 2020-08-27 13:24:55 +02:00
Bruno Windels e4758d0651 we need to read from members now during load, for the heroes
and were actually not reading from room state
2020-08-21 18:14:07 +02:00
Bruno Windels 00a85697ab add license header in all source files 2020-08-05 18:38:55 +02:00
Bruno Windels a097929dbd rename lowercase filenames of classes to camelcase like class 2020-04-20 21:41:10 +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 80f7caadbe rename SessionsStore to SessionInfoStorage 2020-04-19 19:13:38 +02:00
Renamed from src/matrix/session.js (Browse further)