- Bump the event broadcast capacity to the crate-standard 100.
- Keep a scheduled rotation alive across a standalone rehydrate(): the
post-drain cleanup now uses a private delete_device() helper while
stop() stays in the public delete().
- Source the module example pickle key from the caller; a freshly
generated key can never decrypt an existing device.
- Add the missing #[instrument] on is_key_stored().
- Spell out the sdk_dd import alias as dehydrated_devices.
- Give StartDehydratedDevicesSettings uniffi field defaults matching the
builder initial state.
- Scope the FFI zeroize doc to the Rust-side copy of the recovery key.
- Complete the truncated license header and spell out abbreviated event
flags in the live test.
Signed-off-by: Jason Volk <jason@zemos.net>
The live MSC3814 round trip now subscribes via `state_stream()` and drives
`start()` through its builder, following the renamed method and the removed
`StartDehydrationOpts` struct.
Signed-off-by: Jason Volk <jason@zemos.net>
Adds two integration tests under `matrix-sdk-integration-testing`
exercising the wire endpoints end to end: a direct
`create` → `rehydrate` round trip with a locally generated pickle key,
and a `start` lifecycle that resolves the pickle key out of Secret
Storage and asserts that two consecutive `start` calls upload
distinct device IDs.
Signed-off-by: Jason Volk <jason@zemos.net>
A user reported that when Alice invites Bob, Bob declines, Alice invites
Bob again, Bob accepts, then Bob wasn't able to use the Event Cache
correctly. I believe this bug has been fixed, so here is a test to
confirm that.
This patch fixes an issue where an in-thread encrypted event was
**always** part of the `TimelineFocusKind::Live` timeline regardless of
the `hide_threaded_events` value. The Event Cache is able to know
whether an encrypted event is part of a thread, so the Timeline can do
the same!
Consequently, an in-thread encrypted event no longer appears in the
main timeline if `hide_threaded_events` is `true`, to then be removed
once decrypted.
It fixes/removes one `TODO` in a test.
This test forgot to subscribe to the Event Cache, hence the result
was partially okay. It was working by luck before. With the previous
commits, it was not possible to work without the Event Cache being
listening to the sync.
This allows people to get a secrets bundle out of band or out of a database and import it
after logging in a new client.
Mainly targeted to support the Element Classic -> Element X migration.
Signed-off-by: Damir Jelić <poljar@termina.org.uk>
Co-authored-by: Benoit Marty <benoitm@matrix.org>
`test_room_notification_count` started to intermittently fail on main,
because the computation of unread counts has moved from the sliding sync
processing to the event cache. As a result, new irrelevant RoomInfo
updates (related to the unread counts) can happen, and they might happen
quickly enough that the server reponse for sending an event happens
after 2 seconds (remember, we need to factor in the time to do the e2ee
key exchange, and so on and so forth).
Bumping the time between two RoomInfo updates should be sufficient to
avoid the intermittent failure.
This commit additionally flips the order of a few assertions to
meet developer expectations, i.e. errors are reported as diffs
from expected.
Signed-off-by: Skye Elliot <actuallyori@gmail.com>
Many of our tests make use of `assert_let` for checking that some value
comes out of a stream, while they could use `assert_let_timeout`, which
provides better ergonomics when the expected value doesn't arrive
immediately, by failing quickly.
This converts a few instances, making those tests easier to debug in the
future, would they fail again.
Removed a few TODOs that were not applicable anymore, because they were
either very low value (in timeline test code) or already done (in event
cache, with respect to the cross-process locking).
Also removed my nick from some TODOs and comments, as code comments
aren't the best way to store assignees for issues.