Damir Jelić
b323802ab0
fix(ui): Enable retries for network failures of the /versions check in the SyncService
2025-01-31 09:58:55 +01:00
Damir Jelić
252786d2ef
refactor(ui): Make SyncService::stop infallible
...
The `SyncService::stop()` method could fail for the following reasons:
1. The supervisor was not properly started up, this is a programmer error.
2. The supervisor task wouldn't shut down and instead it returns a JoinError.
3. We couldn't notify the supervisor task that it should shutdown due the channel being closed.
All of those cases shouldn't ever happen and the supervisor task will be
stopped in all of them.
1. Since there is no supervisor to be stopped, we can safely just log an
error, our tests ensure that a `SyncService::start()` does create a
supervisor.
2. A JoinError can be returned if the task has been cancelled or if the
supervisor task has panicked. Since we never cancel the task, nor
have any panics in the supervisor task, we can assume that this won't
happen.
3. The supervisor task holds on to a reference to the receiving end of
the channel, as long as the task is alive the channel can not be
closed.
In conclusion, it doesn't seem to be useful to forward these error cases
to the user.
2025-01-31 09:58:55 +01:00
Damir Jelić
97cbe57d3f
docs: Document the offline mode for the SyncService
2025-01-31 09:58:55 +01:00
Damir Jelić
0d8ad159c3
test(ui): Write tests for the SyncService offline mode
2025-01-31 09:58:55 +01:00
Damir Jelić
9d732395ce
feat(ui): Introduce a "offline" mode for the SyncService
2025-01-31 09:58:55 +01:00
Damir Jelić
6a772d1c56
test: Add a method to mock the /versions endpoint to the MatrixMockServer
2025-01-31 09:58:55 +01:00
Damir Jelić
b71499ffe6
refactor(ui): Move the start/stop implementations under the inner SyncService
...
This will allow us to more easily implement a restart method.
2025-01-31 09:58:55 +01:00
Damir Jelić
4dadf8581a
refactor(ui): Move the creation of the child tasks in the SyncService around
...
This patch moves the creations of the child tasks of the SyncService
into the supervisor tasks itself. This should make it easier to let the
supervisor recreate tasks.
This will become useful once we introduce a offline mode where the
supervisor task becomes responsible to restart syncing once we notice
that the server is back online.
2025-01-31 09:58:55 +01:00
Benjamin Bouvier
4d4cd61363
chore: update copyright years for files newly introduced
2025-01-31 08:50:41 +01:00
Richard van der Hoff
6f42b0a67b
crypto: withhold outgoing messages to unsigned dehydrated devices
...
Per https://github.com/matrix-org/matrix-rust-sdk/issues/4313 , we should not
send outgoing messages to dehydrated devices that are not signed by the current
pinned/verified identity.
2025-01-29 17:37:36 +00:00
Richard van der Hoff
e3b348761e
test: test helpers in share_strategy tests
...
Split the existing `set_up_test_machine` into two parts, so we can set up
the test OlmMachine without importing data for other users
2025-01-29 17:37:36 +00:00
Ivan Enderlin
d755a8a3aa
chore(ui): Move EventMeta inside the metadata module.
...
This patch moves the `EventMeta` type from `state.rs` to `metadata.rs`.
2025-01-29 11:44:27 +01:00
Ivan Enderlin
66e3ddec47
chore(ui): Move TimelineMetadata into its own module.
...
This patch moves `TimelineMetadata`, its implementation and companion
types (like `RelativePosition`) into its own module. The idea is to
reduce the size of the `state.rs` module.
2025-01-29 11:44:27 +01:00
Ivan Enderlin
720d443452
chore(ui): Move TimelineStateTransaction into its own module.
...
This patch moves `TimelineStateTransaction` and its implementation into
its own module. The idea is to reduce the size of the `state.rs` module.
2025-01-29 11:44:27 +01:00
Ivan Enderlin
33d691a58e
Merge pull request #4571 from zecakeh/media-retention-policy
...
feat: Add MediaRetentionPolicy to the EventCacheStore, take 2
2025-01-28 17:27:02 +01:00
Kévin Commaille
c2f39c1086
Merge branch 'main' into media-retention-policy
2025-01-28 16:53:52 +01:00
Kévin Commaille
df9c355aed
Merge branch 'main' into media-retention-policy
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:46:55 +01:00
Kévin Commaille
0334ff3f64
chore(sdk): Add changelog entry for MediaRetentionPolicy
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:44:44 +01:00
Kévin Commaille
8262726369
chore(sqlite): Add changelog entry for EventCacheStore changes
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:44:44 +01:00
Kévin Commaille
a4a6bf540d
chore(base): Add changelog entry for MediaRetentionPolicy and associated changes
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:44:44 +01:00
Kévin Commaille
9b38f38aea
fix(base): Organize changelog the same way as other crates
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:44:44 +01:00
Kévin Commaille
2e05cc74bf
feat(sdk): Add methods to Media to interact with MediaRetentionPolicy
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:44:44 +01:00
Kévin Commaille
eb9b86971a
feat(base): Add methods for MediaRetentionPolicy to EventCacheStore
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:44:42 +01:00
Ivan Enderlin
31e7ec182c
chore(ui): Remove TimelineNewItemPosition.
...
This patch removes the `TimelineNewItemPosition` type a sit is no longer
used.
2025-01-28 15:43:06 +01:00
Ivan Enderlin
5e8f3b2bc8
chore(ui): Remove HandleManyEventsResult.
...
This patch removes the `HandleManyEventsResult` type as it is no longer
used.
2025-01-28 15:43:06 +01:00
Ivan Enderlin
c0b91c4b0e
chore(ui): Remove TimelineState(Transaction)::add_remote_events_at.
...
This patch removes `TimelineState::add_remote_events_at` and
`TimelineStateTransaction::add_remote_events_at` as they are no longer
used.
2025-01-28 15:43:06 +01:00
Ivan Enderlin
46d90afa9c
refactor(ui): Use handle_remote_events_with_diffs instead of add_remote_events.
...
This patch replaces a call to `add_remote_events` by
`handle_remote_events_with_diffs`.
The idea is to remove all calls to `add_remote_events`.
2025-01-28 15:43:06 +01:00
Ivan Enderlin
29e19b729b
chore(ui): Remove TimelineController::add_events_at.
...
This patch removes `TimelineController::add_events_at` since it's a
non-public method and it's unused.
2025-01-28 15:43:06 +01:00
Ivan Enderlin
20c1eff391
refactor(ui): The Timeline no longer use add_events_at.
...
This patch replaces all uses of `TimelineController::add_events_at` by
`TimelineController::handle_remote_events_with_diffs` in the `Timeline`
itself.
The idea is to remove `add_events_at`, as we currently have 2 ways to
add or to handle remote events in the `Timeline`. We want a single one,
because it's simpler!
2025-01-28 15:43:06 +01:00
Ivan Enderlin
3e40db3d7f
test(ui): Tests no longer use add_events_at.
...
This patch replaces all uses of `TimelineController::add_events_at` by
`TimelineController::handle_remote_events_with_diffs` in the tests.
The idea is to remove `add_events_at`, as we currently have 2 ways to
add or to handle remote events in the `Timeline`. We want a single one,
because it's simpler!
2025-01-28 15:43:06 +01:00
Kévin Commaille
8ca5983093
feat(sqlite): Implement EventCacheStoreMedia for SqliteEventCacheStore
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:38:18 +01:00
Kévin Commaille
144f568a5c
feat(base): Implement EventCacheStoreMedia for MemoryStore
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:37:30 +01:00
Kévin Commaille
34c7dd48ae
refactor(base): Use struct for media content in the MemoryStore
...
It is already a 3-tuple and we want to add more data so it will be clearer to use a stuct with named fields.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:36:16 +01:00
Kévin Commaille
6c7d8c16bb
feat(base): Add macro for integration tests of EventCacheStoreMedia
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:36:16 +01:00
Kévin Commaille
2c930df8aa
feat(base): Add MediaService
...
This is an API to handle the MediaRetentionPolicy with a lower level
EventCacheStoreMedia trait.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:36:06 +01:00
Kévin Commaille
834bed2b1a
feat(base): Add MediaRetentionPolicy
...
This will be used as a configuration to decide whether or not to keep
media in the cache, allowing to do periodic cleanups to avoid to have
the size of the media cache grow indefinitely.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2025-01-28 15:35:26 +01:00
Valere
8d530ef220
Merge pull request #4558 from matrix-org/valere/memory_store_consistent_with_other_stores
...
refactor(crypto): Make memory store behave more like other stores
2025-01-28 15:27:03 +01:00
Valere
542d68dcda
fix(test): Properly set up test crypto memory store by saving own device
2025-01-28 15:02:30 +01:00
Valere
50696a0d74
refact(mem_store) Add a global save change lock similar to other stores
2025-01-28 15:02:30 +01:00
Valere
182fc6fd8f
refact(mem_store): Ser/Deser inbound group sessions
2025-01-28 15:02:30 +01:00
Valere
fe85cddf88
refact(mem_store): Serialize/Deserialise olm sessions
2025-01-28 15:02:30 +01:00
Valere
9ff3761cac
refact(mem_store): Serialize account and cache static account data
2025-01-28 15:02:30 +01:00
Valere
a311dcbd3e
refact(mem_store): Replace unwrap with expect
2025-01-28 15:02:30 +01:00
Andy Balaam
447bd67fe1
feat(crypto): Ignore to-device messages from dehydrated devices
2025-01-28 12:57:30 +00:00
Andy Balaam
d8ba2b521c
refactor(crypto): extract a method from a test that I will re-use later
2025-01-28 12:57:30 +00:00
Damir Jelić
8de15429fb
chore: Fix a typo
2025-01-28 12:48:55 +01:00
Damir Jelić
3f398d8934
chore(ui): Move the SyncService stop logic out of the State::Running branch
2025-01-28 12:48:55 +01:00
Damir Jelić
f8ec957193
doc(ui): Reword the doc comment for the is_supervisor_task_running method
2025-01-28 12:48:55 +01:00
Damir Jelić
7cc121ab38
docs(ui): Clarify that the supervisor encapsulates the child tasks in its own task
2025-01-28 12:48:55 +01:00
Damir Jelić
8a4918309a
refactor(ui): Rename the abortion sender in the SyncService
...
Termination aligns better with the existing terminology.
2025-01-28 12:48:55 +01:00