Commit Graph

218 Commits (main)

Author SHA1 Message Date
Marco Romano 0158422dcd
Bump ruma
- Bumps ruma to include https://github.com/ruma/ruma/pull/1665
- Enables ruma `compat-arbitrary-length-ids` flag instead of using the now deprecated `lax-id-validation`
2023-09-28 14:01:18 +02:00
Jonas Platte 454304a20d Enable eyeball's tracing feature 2023-09-21 19:12:01 +02:00
Jonas Platte 1a15802201 Upgrade Ruma 2023-09-20 14:19:06 +02:00
Jonas Platte 52ce2eed23 Upgrade eyeball, eyeball-im-util
Pulls in an important bug fix for the Limit adapter.
2023-09-19 11:35:18 +02:00
Jonas Platte 0504eafc0a Upgrade most dependencies 2023-09-18 19:56:06 +02:00
Marco Romano 3bad812ff8
Use new poll event replacement types
* Bump ruma
* Use new ruma types for UnstablePollStartEventContent
* Use from/into for UnstablePollStartEventContent.
2023-09-18 11:03:41 +02:00
Ivan Enderlin db1125d427
chore(cargo): Back to regular `eyeball`. 2023-09-15 15:02:04 +02:00
Ivan Enderlin d12eda5839
feat(ui): `RoomList` provides entries that are limited.
For some room lists, the number of entries can be gigantic. For example,
some accounts have 800, 2500, or even 4000 rooms! It's not necessary for
the client/app to display all the 4000 rooms. First, it can create some
performance issues, second, nobody will scroll 4000 rooms to search for
a particular room :-). Such users are more likely to use a search bar or
something equivalent. The idea is that `RoomListService` will continue
to sync all the data, but only a _limited_ version of it will be shared
to the client/app.

This patch takes `RoomList::entries_with_dynamic_filter`, and improves
it to include this (dynamic) limit.

This patch renames `RoomList::entries_with_dynamic_filter`
to `::entries_with_dynamic_adapters`. It now returns a
`RoomListDynamicEntriesController`, which is a renaming of
`DynamicRoomListFilter`. Basically, the “dynamic filter” becomes a
“dynamic controller” because `RoomList::entries_with_dynamic_adapters`
manages more than a filter. It now uses
`eyeball_im_util::vector::DynamicLimit` to dynamically limit the size
of entries. And that's the major idea behind this patch.

`RoomListDynamicEntriesController::set` is renamed `::set_filter`, and 2
new methods are introduced: `add_one_page` and `reset_to_one_page`.

A _page_ is like a chunk of room entries we want to view or add. When
doing `next_page`, the limit increases to `old_limit + page_size`. The
`reset_pages` method resets the `limit` to `page_size` only.
2023-09-15 13:34:20 +02:00
Jonas Platte 1cbcee4fea Use as_variant crate for shorter code 2023-09-13 18:33:33 +02:00
Jonas Platte a4101e2f45 Upgrade Ruma 2023-09-12 17:19:56 +02:00
Jonas Platte d4904a01b0 Upgrade dependencies
Most notably eyeball-im-util 0.3.1, which includes an important bugfix.
2023-09-08 12:35:01 +02:00
Damir Jelić 72e3079aab Use the base64 encoding/decoding functions from vodozemac 2023-09-08 11:43:32 +02:00
Jonas Platte 71cc7318ca Upgrade eyeball-im, eyeball-im-util 2023-09-07 15:30:18 +02:00
Damir Jelić 53c4735944 Broadcast new and updated user identities 2023-09-06 19:00:37 +02:00
Benjamin Bouvier eebf271d6c chore: use a workspace dependency for assert-json-diff 2023-08-31 10:34:46 +02:00
Jonas Platte 5630851062 Upgrade Ruma 2023-08-30 15:22:00 +02:00
Ivan Enderlin 4e25a8c3c1
chore(cargo): Update `ruma`. 2023-08-24 12:17:40 +02:00
Marco Romano b2a1e3d268
Bump ruma 2023-08-24 07:37:10 +00:00
Marco Romano 3bc7b9136e
ui: Add support for polls in timeline 2023-08-23 12:57:52 +00:00
Kévin Commaille e01421a3dd
Upgrade Ruma
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2023-08-22 17:25:02 +02:00
Ivan Enderlin b78372d4bb
chore(cargo): Update UniFFI. 2023-08-21 11:07:32 +02:00
Benjamin Bouvier 88018c259f Revert upgrade to uniffi since it broke generation of swift bindings 2023-08-18 12:07:36 +02:00
Ivan Enderlin cc46417ec5
Merge branch 'main' into hywan/fix-android-uniffi-async-bis 2023-08-17 18:27:54 +02:00
Ivan Enderlin 4d7f951128
chore(cargo): Update UniFFI to `main` (specific commit). 2023-08-17 18:26:21 +02:00
Ivan Enderlin 0372467288
chore(uniffi): Update `uniffi` to another branch.
This patch switches UniFFI from
https://github.com/mozilla/uniffi-rs/pull/1684 to
https://github.com/mozilla/uniffi-rs/pull/1697.
2023-08-10 17:33:36 +02:00
Jonas Platte f8eefadb2d Upgrade tokio to 1.30 2023-08-10 12:04:40 +02:00
Damir Jelić 64ca96543e Initial support for dehydrated devices
Co-authored-by: Jonas Platte <jplatte@matrix.org>
2023-08-09 12:32:48 +02:00
Ivan Enderlin 87f7fc7367
chore: Update `Cargo.lock`. 2023-08-07 17:48:17 +02:00
Ivan Enderlin 741bb1c12d
chore: Update `Cargo.lock`. 2023-08-07 17:20:19 +02:00
Ivan Enderlin 1c01a146b1
chore: Update `Cargo.lock`. 2023-08-07 12:10:44 +02:00
Ivan Enderlin 2481e1f97e
chore: Update UniFFI fork. 2023-08-03 15:36:52 +02:00
Jonas Platte ea03b821fd ffi: Use UniFFI fork with future cancellation support
Upstream PR: https://github.com/mozilla/uniffi-rs/pull/1684
2023-08-02 16:16:24 +02:00
Jonas Platte 0f6dd644b5 Upgrade async-rx 2023-08-01 17:31:29 +02:00
Damir Jelić 4eba72774f Bump vodozemac 2023-07-31 10:08:53 +02:00
Marco Romano 5c71087b9c
Upgrade Ruma
This is to pave the way to the upcoming "polls" work.
2023-07-28 08:38:50 +00:00
Ivan Enderlin 0c16ff1ae7
chore(cargo): Update `ruma`. 2023-07-26 16:38:23 +02:00
Ivan Enderlin 62a203f41e
feat(sdk): Implement `SlidingSyncRoom::avatar_url`.
Based on https://github.com/ruma/ruma/pull/1607, this patch adds
support for `avatar` from a sliding sync response. This patch implements
`SlidingSyncRoom::avatar_url` to get the avatar URL of a sliding sync
room.
2023-07-26 16:06:11 +02:00
Ivan Enderlin efd1d1e9d2
chore(cargo): Use latest version of `async-rx`. 2023-07-26 14:25:50 +02:00
Ivan Enderlin 2302a7b377
feat(ui): Use `Subscriber<State>` to simply drain the batch subscriber for entries.
This patch brings a nice code simplification.

Instead of creating a new `Stream` with `tokio` based on
`Subscriber<State>`` to drain the batch subscriber for
`RoomList::entries` and `::filtered_entries`, we can _simply_ use
`Subscriber<State>` directly! It removes one dependency: `tokio-
stream`, and remove possible issues with the broadcast channel
`tokio::sync::broadcast`. The code is much simpler and straighforward.
2023-07-26 14:07:46 +02:00
Ivan Enderlin 1678d0754d
feat(ui): Batch the stream returned by `RoomList::entries` and `RoomList::entries_filtered`.
This patch uses a newly implemented `async-rx` crate, that provides
`StreamExt`. This trait provides new features on `Stream`, like
`StreamExt::batch_with` which allows to batch values generated by a
`Stream` into a `Vec<Stream::Item>`. The batch is drained based on
another `Stream`: every time a value is produced, it drains the batch
stream.

This feature is used in `RoomList::entries` and
`RoomList::entries_filtered` to batch `Stream<Item = VectorDiff<_>>`
into `Stream<Item = Vec<VectorDiff<_>>>`.

The “drainer” is a broadcast sender, which sends an (empty) value every
time the room list service state changes, so every time something
happens during a sync. Note that it even drains when the room list
service state jumps to `Error` or `Terminated`.
2023-07-24 16:53:26 +02:00
Jonas Platte 38a2885c10 Bump eyeball-im, enable its tracing feature 2023-07-18 16:40:47 +02:00
Jonas Platte b2f7ba33c8 Patch const_panic to not use packed reference 2023-07-14 10:46:52 +02:00
Jonas Platte 6d8764f4e7 Patch const_panic 2023-07-14 10:46:52 +02:00
Jonas Platte 9cf1adbfa6 Upgrade UniFFI 2023-07-14 10:46:52 +02:00
Jonas Platte 6f2fee8965 Upgrade UniFFI 2023-07-13 13:13:50 +02:00
Jonas Platte 5abc781e1f Remove matrix-sdk-crypto-js
It now lives in its own repository at
https://github.com/matrix-org/matrix-rust-sdk-crypto-web
2023-07-13 13:11:02 +02:00
Jonas Platte 6e10eb9efb Remove matrix-sdk-crypto-js
It now lives in its own repository at
https://github.com/matrix-org/matrix-rust-sdk-crypto-nodejs
2023-07-12 16:23:37 +02:00
Jonas Platte f6c339a5d2 Enable ruma's new `compat-upload-signatures` feature 2023-07-12 12:42:31 +02:00
Jonas Platte 63babcd35a Upgrade Ruma 2023-07-12 12:42:31 +02:00
Jonas Platte 01ceec43b1 ui: Use eyeball_im's new entry API 2023-07-11 15:41:34 +02:00