Skye Elliot
cd9f433358
Merge pull request #5945 from matrix-org/kaylendog/history-sharing/encryption-info
...
feat: Add `forwarder: ForwarderInfo` to `EncryptionInfo`.
Introduces `ForwarderInfo` which which exposes information about the forwarder of the keys with which an event was encrypted if they were shared as part of an [MSC4268](https://github.com/matrix-org/matrix-spec-proposals/pull/4268 ) room key bundle.
2025-12-19 17:29:22 +00:00
Skye Elliot
42a5910d8f
feat(crypto): Introduce ForwarderData for session forwader info. ( #5980 )
...
<!-- description of the changes in this PR -->
- Introduces a new enum `ForwarderData` as a wrapper for valid variants
of `SenderData` for which we can accept key bundles under MSC4268.
- Converts `forwarder_data` in `InboundGroupSession` and
`PickledInboundGroupSession` to use `Option<ForwarderData>` over
`Option<SenderData>`.
- [x] Public API changes documented in changelogs (optional)
---------
Signed-off-by: Skye Elliot <actuallyori@gmail.com >
2025-12-19 14:51:15 +00:00
Ivan Enderlin
c3c367c54c
doc(base): Update CHANGELOG.md.
2025-12-19 14:03:11 +01:00
Ivan Enderlin
bf3cb6ba84
chore(sdk): Make Clippy happy :-).
2025-12-19 14:03:11 +01:00
Ivan Enderlin
5c5dcaa027
test(sdk): Add tests for new_remote and erasable values.
2025-12-19 14:03:11 +01:00
Ivan Enderlin
ca64af1390
feat(sdk): When a m.room.redaction targets the current [LatestEventValue], it must be erased.
...
This patch implements a new feature: when a `m.room.redaction` targets
the current [`LatestEventValue`], this one must be erased by the new
computed `LatestEventValue`.
2025-12-19 14:03:11 +01:00
Ivan Enderlin
ebe00841fd
refactor(sdk): Replace bool by ControlFlow.
...
This patch replaces the `bool`s returned by `filter_*` functions by
`ControlFlow`s.
2025-12-19 14:03:11 +01:00
Ivan Enderlin
85f321f30a
refactor(sdk): LatestEventValueBuilder receives the current value's event ID.
...
This patch spreads the current value's event ID in
`LatestEventValueBuilder`.
This patch also changes `LatestEventValueBuilder::new_remote` to return
an `Option`, similarly to `new_local`. The `must_overwrite_existing`
variable is set to `true` to keep the existing behaviour, but it's going
to change in the next patch.
This patch is purely a refactoring with no feature change. Most of the
changes are in test to keep track of the _previous value_ so that the
current value's event ID can be calculated instead of hardcoded.
2025-12-19 14:03:11 +01:00
Ivan Enderlin
e2ea84f3e3
chore(sdk): Rename a variable.
...
This patch renames a variable. Since `rfind_map_event_id_memory_by`
returns the previous event instead of the previous event ID, this
variable must have been renamed.
2025-12-19 14:03:11 +01:00
Ivan Enderlin
d5898a64ab
feat(base): Add LatestEventValue::event_id.
...
This patch adds the `event_id` method on `LatestEventValue`, along with
the tests.
2025-12-19 14:03:11 +01:00
Ivan Enderlin
42b79d7d8a
feat(base): LatestEventValue::LocalHasBeenSent gains an event_id field.
...
This patch adds the `event_id: OwnedEventId` field to
`LatestEventValue::LocalHasBeenSent`.
2025-12-19 14:03:11 +01:00
Ivan Enderlin
9363745fb0
chore(sdk): Remove timer! logs.
...
This patch removes `timer!` logs, those are no longer useful.
2025-12-19 14:03:11 +01:00
Skye Elliot
b3f6df939b
Merge pull request #5943 from matrix-org/kaylendog/history_sharing/store_history_sender_details
...
feat(crypto): Add `forwarder_data` to `InboundGroupSession` and pickle.
2025-12-17 17:16:57 +00:00
Skye Elliot
0e568a4ee6
refactor: Use impl Iterator<Item = InboundGroupSession> as param.
2025-12-17 16:50:59 +00:00
Skye Elliot
f94ce7e91c
docs: Improve doc comments, linkify MSC4268.
2025-12-17 16:43:54 +00:00
Stefan Ceriu
6042bc93f6
chore(spaces): move the SpaceServices setup logic to its constructor and make it async
2025-12-17 14:42:14 +02:00
Stefan Ceriu
80be172fdf
chore(ui): Move the 5955's changelog to the right position
2025-12-17 14:42:14 +02:00
Stefan Ceriu
4cc863a9fb
chore(spaces): add changelogs
2025-12-17 14:42:14 +02:00
Stefan Ceriu
51e07d9fba
chore(spaces): Rename subscribe_to_joined_spaces to subscribe_to_top_level_joined_spaces
2025-12-17 14:42:14 +02:00
Stefan Ceriu
143d96e300
chore(spaces): rename the SpaceService's SpaceState's joined_rooms to top_level_joined_spaces
2025-12-17 14:42:14 +02:00
Stefan Ceriu
a2fd2536c4
chore(spaces): Rename joined_spaces to top_level_joined_spaces
2025-12-17 14:42:14 +02:00
Stefan Ceriu
f5d751b3eb
chore(spaces): Rename update_joined_spaces_if_needed to update_space_state_if_needed
2025-12-17 14:42:14 +02:00
Stefan Ceriu
096dfd61cb
chore(spaces): rename joined_spaces_for to build_space_state
2025-12-17 14:42:14 +02:00
Stefan Ceriu
89f66ecd10
chore(spaces): Extract the SpaceService's subscription for rooms outside the subscribe_to_joined_spaces and make it explicit.
...
This will avoid having to awkwardly call `space_service.joined_spaces` without it even being needed.
2025-12-17 14:42:14 +02:00
Skye Elliot
85f07b10ad
chore: Remove unused TryFrom<&HistoricRoomKey> implementation.
2025-12-17 12:33:21 +00:00
Skye Elliot
809643a159
tests(crypto): Doctests, update snapshots to include forwarder_data.
2025-12-17 12:33:21 +00:00
Richard van der Hoff
f753d478fa
feat: Add forwarder_data to InboundGroupSession and pickle.
...
- Introduces `forwarder_data` to IGS and its pickled form, and a
helper method to import them from `HistoricRoomKey`s.
Issue: https://github.com/matrix-org/matrix-rust-sdk/issues/5109
Signed-off-by: Skye Elliot <actuallyori@gmail.com >
2025-12-17 12:33:16 +00:00
Damir Jelić
282a2bc8ef
refactor(timeline): Don't request redecryptions in the timeline
2025-12-17 13:19:38 +01:00
Damir Jelić
c6fb3c25f3
feat(r2d2): Let R2D2 attempt to update encryption info for in-memory events
2025-12-17 13:19:38 +01:00
Damir Jelić
5429106ab3
feat(r2d2): Let R2D2 attempt to redecrypt events that are in the memory of the event cache
2025-12-17 13:19:38 +01:00
Damir Jelić
5c387f2b81
refactor(r2d2): Convert the filter closure for decrypted events into function
2025-12-17 13:19:38 +01:00
Damir Jelić
6c68ca2a64
refactor(r2d2): Split out the encryption info update method into reusable components
2025-12-17 13:19:38 +01:00
Michael Goldenberg
4ee6906f47
doc(sdk): update changelog
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
46b9c11139
doc(indexeddb): update changelog
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
8e1510821b
style(indexeddb): cargo fmt
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
288f28620c
refactor(indexeddb): add deprecation note on open_stores_with_name()
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
aa5497e385
feat(client): initialize all stores in indexeddb store config
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
6bf121b58e
refactor(indexeddb): ensure event-cache-store feature flag compiles in isolation
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
01b130a401
refactor(indexeddb): ensure media-store feature flag compiles in isolation
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
256fb0406d
refactor(indexeddb): use finer-grain feature flags to include/exclude serializers
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
c57478ee18
feat(indexeddb): add media-store to default features
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
e74bf33178
feat(indexeddb): expose struct and fns for opening all stores
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
2bec882c83
feat(indexeddb): add fn to media store builder for prefixing db name
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
Michael Goldenberg
2cfcc957ca
feat(indexeddb): add fn to event cache store builder for prefixing db name
...
Signed-off-by: Michael Goldenberg <m@mgoldenberg.net >
2025-12-17 12:56:09 +01:00
razvp
ea43e3f5a8
feat(sdk): Bulk process thread subscription updates from sync and companion enpoint
2025-12-17 11:03:50 +01:00
razvp
67b1de613c
feat(state-stores): Add StateStore::upsert_thread_subscriptions() method for bulk upsert
2025-12-17 11:03:50 +01:00
Jorge Martín
1af22a70b7
fix(sdk_common): TimelineEvent::from_bundled_latest_event can remove session_id
...
What's more, this is saved into the event cache and sometimes it overrides another instance of the same event that actually contains the right info. This results in unresolvables UTDs.
This change tries to fetch the session id from the existing event content. It's fixed these kind of UTDs when tested in a real client.
2025-12-16 16:21:51 +01:00
Damir Jelić
028d610397
fix: Only replace UTDs in pinned timeline with decrypted events that have the same event ID
2025-12-16 15:46:34 +01:00
Damir Jelić
16c6b57c9a
fix(timeline): Allow focused timelines to replace UTDs with decrypted events
2025-12-16 15:46:34 +01:00
Ivan Enderlin
e57185a009
fix(sdk): new_local returns an Option.
...
We can't use `LatestEventValue::None` as an optional value anymore,
since it erases the previous `LatestEventValue`. This patch updates
`LatestEventValueBuilder::new_local` to return an `Option` to handle all
the cases where a local value cannot be computed.
2025-12-16 15:42:37 +01:00