Commit Graph

14300 Commits

Author SHA1 Message Date
Benjamin Bouvier
6aea4c827a feat(ffi): allow setting the media retention policy from the FFI layer 2025-03-04 18:10:59 +01:00
Benjamin Bouvier
ac3250c58b refactor(event cache): use u64 instead of usize in MediaCachePolicy
This is more predictible and we're still far from 128-bits wide cpu,
right? RIGHT?
2025-03-04 18:10:59 +01:00
Benjamin Bouvier
6fe0880e11 feat(ffi): add a method to clear all the non-critical caches of a client 2025-03-04 18:10:59 +01:00
Stefan Ceriu
78282bf1e1 chore(sdk-base): fix typos following typos crate bump to 1.30.0 2025-03-04 11:28:36 +02:00
dependabot[bot]
43d25127c3 chore(deps): bump crate-ci/typos from 1.29.7 to 1.30.0
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.29.7 to 1.30.0.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crate-ci/typos/compare/v1.29.7...v1.30.0)

---
updated-dependencies:
- dependency-name: crate-ci/typos
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-04 11:28:36 +02:00
bitfriend
c33c61a256 feat(ci): Implement CI to detect long path in pushed commit 2025-03-03 16:57:36 +00:00
Benjamin Bouvier
def4be5a9f refactor(event cache): make use of Chunk::num_items when deciding whether to drop a previous empty event chunk 2025-03-03 16:04:15 +01:00
Benjamin Bouvier
9bc0d8b0d9 refactor(event cache): rename Chunk::len to Chunk::num_items 2025-03-03 16:04:15 +01:00
Benjamin Bouvier
0924b2e343 refactor(event cache): get rid of EmptyChunkRule::Keep which is only used in testing
This isn't useful to keep, since it's only used in testing. Worst case,
we can revert this commit in the future.
2025-03-03 16:04:15 +01:00
Benjamin Bouvier
8b6e75980b refactor(event cache): don't keep an empty events chunk before a gap
The linked chunk always starts with an empty events chunk. If we receive
a gap from sync, then we will immediately push a gap chunk; in this
case, it might be better to replace the events chunk with a gap chunk.
This is equivalent to removing the empty events chunk, after pushing
back the first one (we can't do it before, otherwise we might get rid of
the only chunk in the linked chunk, which breaks the invariant that a
linked chunk is never empty).
2025-03-03 16:04:15 +01:00
dependabot[bot]
5fd0cb0ddb chore(deps): bump bnjbvr/cargo-machete from 0.7.1 to 0.8.0
Bumps [bnjbvr/cargo-machete](https://github.com/bnjbvr/cargo-machete) from 0.7.1 to 0.8.0.
- [Release notes](https://github.com/bnjbvr/cargo-machete/releases)
- [Changelog](https://github.com/bnjbvr/cargo-machete/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bnjbvr/cargo-machete/compare/v0.7.1...v0.8.0)

---
updated-dependencies:
- dependency-name: bnjbvr/cargo-machete
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 15:38:57 +01:00
Benjamin Bouvier
b5edc86a52 refactor(event cache): rename clear to clear_pending 2025-03-03 14:56:33 +01:00
Benjamin Bouvier
d09655989d feat(event cache): don't include useless updates when clearing/resetting a linked chunk 2025-03-03 14:56:33 +01:00
Benjamin Bouvier
83415ac6ca refactor(event cache): clear all pending updates when resetting/shrinking a linked chunk 2025-03-03 14:56:33 +01:00
Kévin Commaille
cc7fb63c6d refactor(sdk): Remove clone_request method
http::Request implements Clone since http 1.0.0
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-03-03 14:32:34 +01:00
Benjamin Bouvier
f5195222a7 refactor(ffi): move the TimelineEventTypeFilter to timeline/configuration
Pure code motion, nothing else.
2025-03-03 12:40:54 +01:00
Benjamin Bouvier
cecf15a34a refactor(ffi): unify a bit more Room::timeline_with_configuration and RoomListItem::init_timeline
The two last missing pieces will be the UTD hook and loading events from
the persistent storage.
2025-03-03 12:40:54 +01:00
Damir Jelić
95b53d7e01 chore: Tweak the weekly-report command to include PR numbers 2025-02-28 15:51:38 +01:00
Andy Balaam
8cd70854ba refactor(crypto): Keep a long-lived DecryptionRetryTask in TimelineController 2025-02-28 12:35:04 +00:00
Andy Balaam
dbaa36ec3e refactor(timeline): Share should_retry logic between the two places we use it 2025-02-28 12:35:04 +00:00
Andy Balaam
8976233905 refactor(timeline): Move the code to find which events to redecrypt into the async task 2025-02-28 12:35:04 +00:00
Andy Balaam
82d47d800c refactor(timeline): Pass requests to retry decryption through a channel, instead of spawning a task directly 2025-02-28 12:35:04 +00:00
Andy Balaam
e84ad97edf refactor(timeline): Adjust tests that retry decryption to wait with timeouts 2025-02-28 12:35:04 +00:00
Andy Balaam
d447342cbd refactor(timeline): Split finding retry indices into its own function 2025-02-28 12:35:04 +00:00
Andy Balaam
c74ecff3f0 refactor(timeline): Move finding retry indices into DecryptionRetryTask 2025-02-28 12:35:04 +00:00
Andy Balaam
a0282ec71b refactor(timeline): Move the decryption retrying into a separate struct 2025-02-28 12:35:04 +00:00
Ivan Enderlin
a67f9d5bbf chore(sdk): Log all updates. 2025-02-28 13:07:45 +01:00
Benjamin Bouvier
f7297edd61 refactor(event cache): get rid of get_or_wait_for_token
Also the tests, they were not quite useful to port to the new mechanism
because they made little sense.
2025-02-28 13:00:35 +01:00
Benjamin Bouvier
87a6037924 refactor(event cache): consolidate logic around returning the previous gap token 2025-02-28 13:00:35 +01:00
Benjamin Bouvier
ee710e34dd test(event cache): turn test into failing regression test 2025-02-28 13:00:35 +01:00
Benjamin Bouvier
55143e1790 refactor(event cache): call /messages directly in the room pagination
And don'y rely on the `Paginator`. This simplifies the code a bit,
avoids a few methods on the `Paginator`, and makes it more
straightforward the pagination happens.
2025-02-28 12:24:59 +01:00
Damir Jelić
7a0bf9b9b9 chore(sdk): Don't repeat a log line about the list of users for a /keys/query
The crypto crate already logs this, so no need to repeat the whole list
of users in the main crate.
2025-02-27 16:33:13 +01:00
Damir Jelić
b422b93c78 chore(crypto): Lower a very noisy log line
This partially reverts: 66fcaeb2ba
2025-02-27 16:33:13 +01:00
Benjamin Bouvier
4742aa298a fix(event cache): wait for the initial previous-batch token, if there wasn't any 2025-02-27 10:28:02 +01:00
Benjamin Bouvier
f9f389d9ec chore(event cache): remove unused errors 2025-02-26 17:20:45 +01:00
Hanadi
7dba05f4c5 feat(sdk): Add Room::report_room
solves this https://github.com/matrix-org/matrix-rust-sdk/issues/4681

- add room report_room api from
https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3roomsroomidreport
- expose report_room on room ffi

---------

Signed-off-by: hanadi92 <hanadi.tamimi@gmail.com>
2025-02-26 16:55:57 +01:00
Kévin Commaille
f02a7d15ab test(sdk): Run integration tests for experimental-oidc feature too
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-02-26 16:08:00 +01:00
Kévin Commaille
54ab46dcb4 test(oidc): Use MatrixMockServer for cross-signing test
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-02-26 14:31:46 +01:00
Kévin Commaille
9b406cff87 test(oidc): Use mock server and client as much as possible
We keep the mock backend for endpoints that require an ID token for now,
as it would involve generating them on the fly.
And since support for ID tokens is going to be removed, it is not worth
it to implement that.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-02-26 14:31:46 +01:00
Kévin Commaille
5791ac9b76 test(oidc): Add an OauthMockServer and use it for qrcode login tests
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-02-26 14:31:46 +01:00
Kévin Commaille
6026b0c4b7 test(oidc): Use MatrixMockServer for qrcode login tests
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-02-26 14:31:46 +01:00
Kévin Commaille
52909b0eeb test(oidc): Simplify qrcode login tests
Since it only uses OAuth 2.0 now, we can remove the ID token and JWKS.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-02-26 14:31:46 +01:00
Benjamin Bouvier
1feb77bbef doc(event cache): tweak paginate_backwards_with_network doc comment 2025-02-26 14:09:08 +01:00
Benjamin Bouvier
2e1b051a4d refactor(event cache): split handling a successful network pagination into its own function 2025-02-26 14:09:08 +01:00
Benjamin Bouvier
15fd892b63 chore(event cache): remove the sync_ prefix from timeline_events_diff
And simplify pluralization, use more natural terms (new instead of
next), etc.
2025-02-26 14:09:08 +01:00
Benjamin Bouvier
4833403d65 refactor(event cache): simplify signature of RoomEventCacheState::with_events_mut 2025-02-26 14:09:08 +01:00
Benjamin Bouvier
061a2f739a refactor(event cache): handle pagination status in a single location 2025-02-26 14:09:08 +01:00
Benjamin Bouvier
86b5cb4dba refactor(event cache): split disk and network paginations into smaller functions 2025-02-26 14:09:08 +01:00
Benjamin Bouvier
74bc3dfb6e refactor(event cache): don't hold onto a live instance of the paginator in RoomEventCache
Instead of keeping state for the `Paginator` instance, we create one
when needs be, in the `run_backwards_impl` method, and initialize it
with a previous-batch token. This is simpler than keeping one alive, and
making sure that we reset it in the right places.
2025-02-26 14:09:08 +01:00
Benjamin Bouvier
7841ed8637 refactor(event cache): remove RoomPagination::hit_timeline_end()
The event cache doesn't use the paginator for forwards pagination, so it
doesn't make sense to expose this method. Moreover, the event cache
always listens to sync in real-time, so technically it's always hit the
timeline end.

As a proof of this, this method wasn't even tested.
2025-02-26 14:09:08 +01:00