Commit Graph

217 Commits

Author SHA1 Message Date
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
Jonas Platte
6f295e2571 Upgrade UniFFI 2023-07-06 18:26:40 +02:00