Commit Graph

1954 Commits

Author SHA1 Message Date
Krille cdf6814f0a
chore: Make more clear that Client.uploadContent() does not end to end encrypt the file 2024-10-08 14:56:53 +02:00
Nicolas Werner 6a28ab05d0
fix: Deduplicate key OTK uploads
We do the key upload asynchronously without awaiting it. This means we
may do multiple syncs before the key upload finishes. So we may generate
more keys than we should.

To fix that prevent multiple key uploads from running at once. This may
lead to outdated key uploads in some cases if we miss an OTK being used
in sync. However, the next sync will still tell us about that so in the
worst case this might delay key uploads by 30s (with the default sync
timeout), which for normal usage should be completely acceptable.
2024-10-07 20:55:14 +02:00
Nicolas Werner 583be5ece7
fix: by default don't uplaod new keys in our tests
This reduces CPU load of the uploadKeys callback by a lot, since we
don't upload new keys on every empty sync in the tests.
2024-10-07 20:38:08 +02:00
Nicolas Werner b74dbdea4a
fix: Don't wait for 5 milliseconds on every sync in our tests
This was added in 77be6102f6 without much
documentation. I am pretty sure the intent was never to slow down every
test by 5 seconds, so let's get rid of it and do more careful delays
where it is useful (like specific sync requests for example).

Makes the tests run 5 times faster (the whole suite!) on my device.
2024-10-07 20:38:08 +02:00
Krille b913b40fd8
chore: Lower loglevel for call event with unexpected sender 2024-10-07 10:31:29 +02:00
td 140db616d9
feat: BREAKING CHANGE v1.11 matrix-spec endpoints 2024-09-19 14:16:49 +02:00
Nicolas Werner 15dce00c0f
fix: don't convert archived rooms to joined rooms by accident
When decrypting the last event for archived rooms when a room key is
received, we used to send a synthetic SyncUpdate. This however put the
archived room into the join section, which converted the room to a
joined room. We need to respect what section the room was in when
sending synthetic SyncUpdates.

fixes https://github.com/famedly/matrix-dart-sdk/issues/1916
2024-09-18 11:11:35 +02:00
Nicolas Werner fec258ef12
fix: wait for pending transactions before db close
This was triggered by some archive decryption test I was writing and
possibly also is triggered in production a few times. Waiting for
running transactions to complete before closing sounds sensible.
2024-09-18 10:43:03 +02:00
Nicolas Werner b839273ce0
fix: also lazy load members for archive
This should speed up loading the archived rooms. One of the reasons it
was so slow, is because we were loading all room members!

Additionally this may work around a bug in Synapse, where rooms stuck in
their partial state may block sync indefinitely.

Relates to https://github.com/famedly/product-management/issues/2250
2024-09-16 16:36:25 +02:00
td 65c0f8119c
fix: actually make sure clientBox has a account 2024-08-28 17:00:14 +02:00
td 4c4a062a27
fix: race condition between getState and requestUser updates 2024-08-27 10:04:56 +02:00
td d9681d552e
fix: dedup /versions calls 2024-08-23 16:30:56 +02:00
The one with the braid 6e48c308ad
feat: cache .well-known data
- BREAKING: create `DatabaseApi.storeWellKnown` method
- BREAKING: create `DatabaseApi.getWellKnown` method
- add new getter `Client.wellKnown` containing cached `DiscoveryInformation`
- override `Client.homeserver` to invalidate `Client.wellKnown` in case the domain changed
- override `Client.getWellknown` to cache the resolved `DiscoveryInformation`
- add tests for well-known cache

Fixes: #1865

Signed-off-by: The one with the braid <info@braid.business>
2024-08-23 10:01:34 +02:00
Krille 2dce08bab1
refactor: Also use authenticated media if unstable features claim support 2024-08-21 15:06:50 +02:00
The one with the braid 23704f68b8
fix: SQLCipher dylib location on macOS builds
Signed-off-by: The one with the braid <info@braid.business>
2024-08-21 10:29:14 +02:00
td f79096dfbb
feat: support for authenticated media 2024-08-16 14:35:50 +05:30
Krille a0bfd0c73d
fix: App freezes because of recursive loop with getLocalizedDisplayname() call 2024-08-09 10:17:23 +02:00
Nicolas Werner 3d92428b7e
fix: leave->invite in the same sync would hide the invite
Synapse includes the room in both sections if you have both an
invite->leave and a leave->invite transition in one sync response.
Transitions in the other order are only included once (in the leave
section) it seems, so this should work correctly in all cases.

Fixes https://github.com/famedly/product-management/issues/2283
2024-07-31 19:25:58 +02:00
Krille a771f1e3bf
fix: Call logout on soft logout fail
If we fail to handle the
soft logout, we should call
the logout endpoint to
delete the device from
the server instead of just
clear the client.
2024-07-31 12:53:29 +02:00
td 4eb18f670f
fix: update last event properly on cancel send
also stores status in db
2024-07-31 14:36:25 +05:30
td 22694a81d8
fix: also delete db on logout
we already cleared it out, but to change the db enc pw on the app we need to delete it completely first
2024-07-26 22:19:02 +05:30
Krille b962e8288b
feat: Add support for isFederate option for rooms 2024-07-26 13:45:13 +02:00
td 4c60e04c05
fix: add main thread receipts to event.receipts getter 2024-07-23 20:30:07 +05:30
Krille e7802bd20b
fix: Synapse CI job failing because invite state not completely synced 2024-07-23 10:30:40 +02:00
Krille cabf357cf7
refactor: Cache profiles in database and refactor API 2024-07-23 08:51:10 +02:00
td 73e89966c7
fix: bump database version to v9
clears database to handle any old state seen in history getting applied bug bc336709af
2024-07-18 15:12:42 +05:30
Krille 2e51b450bf
refactor: Better avatar and names for invites
Group chats with no user
avatar should return null for
the room.avatar getter and not
a random hero avatar. This could
otherwise lead to confusion as
it looks like this is a DM which
is not the case.

For the name we should also
not just display the name of
the invitor like in a DM even for
group chats, but some more
additional information. I found
a String for
invites quite useful here as
this would name rooms without
a m.room.name like this:
"Invited by $senderName"
which should be short enough.
The alternative
"You have been invited by $senderName" could be too
long IMO.
2024-07-16 13:12:00 +02:00
Krille 0f5526e1b8
feat: Automatically cancel typing indicators after 30 seconds 2024-07-03 14:36:40 +02:00
Krille 9d9865a1a1
fix: Do not update lastEvent with state events 2024-07-03 14:27:39 +02:00
Krille 4fd616bcbf
fix: Correctly store lastEvent in database after decryption 2024-07-02 08:44:46 +02:00
td 869a7f41a9
fix: lastEvent after edit and redact 2024-07-01 21:31:13 +05:30
Krille 6976c426a9
refactor: Remove Matrix Connection Exception
This makes no sense anymore.
In the past we tried to use this
Exception type to have a
unified exception for all
network errors. However, this
is only in use for the custom
request method and for every
other api call it is not. So to
have the same error messages
every time, we should just remove
it.
2024-06-25 15:48:12 +02:00
Krille 29cd5a299a
fix: Type error when uploading room keys 2024-06-25 08:33:35 +02:00
Krille f0ab627031
fix: Return empty uri instead of original uri if uri is not mxc 2024-06-24 13:27:53 +02:00
td 53c75a8dbf
chore: allow clients to set their own voip key delays 2024-06-22 07:34:16 +05:30
Nicolas Werner f13d4e1f45
fix: Request user causing state update loops for apps
This completely redoes the requestUser function.

It now doesn't stop requesting a user forever just because of a network
error. But redundant calls are still deduplicated, however their
parameters are taken into account now.

It also now only calls onUpdate and onRoomState when there is actually
new state. This way apps can just listen to updates to rerender instead
of having to implement the deduplication themselves.

It also now doesn't treat member events without membership as "join"
anymore. And lookup errors don't cause an empty user to get inserted
into the room state.

In general this should still request the profile from the server, if the
displayname is unset in a leave event, but it should also allow the app
to actually settle in the tests.
2024-06-14 12:33:25 +02:00
td 373518557f
chore: make ignored call mem logging verbose 2024-06-11 19:00:44 +05:30
td a540bc6ef7
fix: dont override passed powerlevels with groupcall powerlevels 2024-06-11 19:00:39 +05:30
td 7f41b2d4c8
fix: ignore call events from own user even if todevice 2024-06-11 18:43:18 +05:30
td 325fb19f55
chore: do not create participant object on every key 2024-06-11 18:18:32 +05:30
td 7241bb8dc5
revert: "feat: retry call encryption key request logic"
This reverts commit 9896ebb814.
2024-06-11 18:11:44 +05:30
HuangRed e65d7f94ca
fix: Do not return invalid state events from database 2024-06-11 13:01:28 +02:00
td ef102c4b72
Merge branch 'main' into td/bumpRTCKeyDelays 2024-06-10 18:38:49 +05:30
Nicolas Werner bc336709af
fix: state updates being also applied when fetching history
This could sometimes lead to the room name or the names of members in
the room being incorrect.
2024-06-10 14:51:37 +02:00
td 188eb0f387
chore: bump make and use key delays to have more buffer 2024-06-07 14:55:10 +05:30
td 9896ebb814
feat: retry call encryption key request logic 2024-06-06 01:19:51 +05:30
td 2e1e3a48c7
feat: expose matrixRTCEventStream
currently only supports participant join/leave updates
2024-05-30 18:21:13 +05:30
td 10687d88a1
fix: do not fire missedCall on answeredElseWhere 2024-05-30 15:38:10 +05:30
Krille 4d9b0f6574
fix: Do not return invalid state events from database 2024-05-29 12:07:40 +02:00
Krille 14b8ceb2eb
refactor: requestUser logic 2024-05-29 10:08:46 +02:00