Austin Ray
59c8652ce8
base: fix empty room name calculation
...
Step 3.iii of the naming algorithm[0] covers name calculation for empty
rooms; however, it isn't an else condition for steps 3.i and 3.ii. It's a
final conditional in the algorithm before returning the name. The
current implementation treats it as an else condition.
To fix this, use step 3.i and 3.ii to calculate a room name then check
if the user is alone. If alone, return "Empty room (was...)" containing
any former member names. If alone and there aren't any former members,
return "Empty room"
Fixes #133
[0] https://matrix.org/docs/spec/client_server/latest#calculating-the-display-name-for-a-room
2021-05-21 19:18:11 -04:00
Austin Ray
5670700f7f
base: fix room name's "and {} others" count
...
The current implementation uses number of invited and joined members for
"and {} others" message. This assigns rooms with 5 members the name "a,
b, c, and 5 others" suggesting 8 room members. The correct message is
"a, b, c, and 2 others". To get this, subtract number of heroes from
invited and joined member count.
Step 3.ii of the naming algorithm[0] confirms using a remaining users
count in the name.
[0] https://matrix.org/docs/spec/client_server/latest#calculating-the-display-name-for-a-room
2021-05-21 18:48:19 -04:00
Austin Ray
79025e3f40
base: split calculate_room_name()
...
Split `calculate_room_name()` into a high-level function using Matrix
data types and low-level function containing the core logic using plain
Rust data types. Since the low-level function uses simple data types,
unit testing becomes easier.
2021-05-21 17:25:59 -04:00
Austin Ray
c90e8ab483
base: use correct bound in naming algorithm
...
Step 3.ii of the name calculation algorithm[0] specifies the conditional
as `heroes < invited + joined - 1 AND invited + joined > 1`. However,
current implementation uses `invited + joined - 1 > 1` in the
conditional, which can trigger the conditional if the user is alone.
Correct this by using two variables representing `invited + joined` and
`invited_joined - 1` and updating the conditional. `invited + joined` is
kept as a variable since step 3.iii uses it for its conditional.
[0] https://matrix.org/docs/spec/client_server/latest#calculating-the-display-name-for-a-room
2021-05-21 14:51:59 -04:00
Kévin Commaille
64b5298881
base: Add support for read receipts
2021-05-20 17:14:57 +02:00
Damir Jelić
c122549e0d
base: Correctly get the user ids of all room members
2021-05-18 08:29:10 +02:00
Jonas Platte
cd77441d1b
Upgrade ruma to 0.1.0 (crates.io release)
2021-05-17 02:57:36 +02:00
Jonas Platte
ffea84b64a
Use Instant instead of SystemTime to measure elapsed time
2021-05-15 17:23:31 +02:00
Jonas Platte
15540e84e3
Upgrade ruma
2021-05-15 17:22:32 +02:00
Devin Ragotzy
5f09d091cb
Add cargo fmt to ci using nightly
2021-05-12 15:38:59 -04:00
Devin Ragotzy
2ef0c2959c
Add use_small_heuristics option and run fmt
2021-05-12 15:37:29 -04:00
Devin Ragotzy
c85f4d4f0c
Add rustfmt config file and run over workspace
2021-05-12 15:36:52 -04:00
Damir Jelić
77c2a4ed4f
matrix-sdk: Bump ruma
2021-05-12 19:19:42 +02:00
Kévin Commaille
a2ab6a9f23
base: Get the tags for a room
2021-05-07 19:11:27 +02:00
Damir Jelić
43b7072609
matrix-sdk: Fix some newly introduced clippy warnings
2021-05-06 20:42:27 +02:00
poljar
22b333a0d9
Use as_str() to get the string event type.
...
Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com>
2021-04-29 15:33:45 +02:00
Damir Jelić
b3cf2c5899
base: Fix a clippy warning if the encryption feature is turned off
2021-04-29 10:46:47 +02:00
Damir Jelić
4fc21a8860
base: Store the raw versions of events in the state store
...
This patch changes the way we store and load the majority of events that
are in the state store. This is done so custom fields in the event
aren't lost since a deserialize/serialize cycle removes all the unknown
fields from the event.
2021-04-29 10:35:54 +02:00
Damir Jelić
cff90b1480
matrix-sdk: Add encryption info to our sync events.
2021-04-29 10:35:54 +02:00
Damir Jelić
5ed0c7a7b3
Merge branch 'notifications'
2021-04-28 10:30:06 +02:00
Kévin Commaille
0e2017e537
matrix-sdk: Fix clippy warning
2021-04-27 14:37:43 +02:00
Kévin Commaille
1cc4f953b3
matrix-sdk: Small fixes
2021-04-27 13:47:07 +02:00
Kévin Commaille
f8bc9f3dc9
matrix-sdk: handle overflow in active_members_count
2021-04-27 13:47:06 +02:00
Kévin Commaille
24e96df7ea
matrix-sdk: Propagate store error in get_push_rules
2021-04-27 13:47:06 +02:00
Kévin Commaille
c569436ba4
matrix-sdk: Add StateChanges::add_notification
2021-04-27 13:47:06 +02:00
Kévin Commaille
f6c4fdde7d
matrix-sdk: Implement EncodeKey for EventType
2021-04-27 13:47:06 +02:00
Kévin Commaille
3f2c5d22b6
matrix-sdk: Get notifications locally on sync
2021-04-27 13:46:56 +02:00
Johannes Becker
5c882f89e8
chore: bump ruma
2021-04-26 08:05:58 +02:00
Johannes Becker
910a45b3d5
chore: cleanup clippy warnings
2021-04-23 10:38:49 +02:00
Damir Jelić
324a0aafca
Merge branch 'key-share-improvements'
2021-04-21 13:47:02 +02:00
Jonas Platte
796354ce5d
Ensure exhaustiveness for sync_events::Response destructuring
...
So the SDKs own SyncResponse type doesn't get out-of-sync.
2021-04-19 13:42:16 +02:00
Damir Jelić
8c007510cd
crypto: Only load the outgoing key requests when we want to send them out
2021-04-15 19:40:24 +02:00
Damir Jelić
a97b01f3ce
Merge branch 'matrix-sdk/fix-no-encryption-build'
2021-04-12 19:09:32 +02:00
Johannes Becker
be72c53d3e
matrix-sdk: fix building without encryption feature
2021-04-12 17:45:58 +02:00
Damir Jelić
cb58c499b3
crypto: Store that our outbound session was invalidated
2021-04-12 13:47:38 +02:00
Damir Jelić
fdb1e3482e
Merge branch 'bump-ruma'
2021-04-06 12:44:33 +02:00
Kévin Commaille
7c34ac4e82
Bump ruma to 2f1b9f097930bf7908ca539f2ab7bb0ccf5d8b25
...
Use MxcUri instead of String for media URLs.
Fix wrong MXC URIs in tests.
Remove method parse_mxc no longer useful.
Apply new non-exhaustive types: CrossSigningKey, OneTimeKey and SignedKey.
Apply endpoint name change: send_state_event_for_key to send_state_event
2021-04-05 19:49:55 +02:00
Jonas Platte
79eb07f717
Allow Result aliases to be used with two type parameters
2021-04-01 19:35:09 +02:00
Damir Jelić
74274e6dcb
base: Allow the test target to be compiled on WASM
2021-03-30 13:05:45 +02:00
Damir Jelić
02b44ca9ba
matrix-sdk: Fix or silence a bunch of new clippy warnings
2021-03-30 13:05:13 +02:00
Julian Sparber
382ec01bc3
move matrix_sdk_base::EventHandler to matrix_sdk
2021-03-17 15:29:26 +01:00
Julian Sparber
a4bac499e9
matrix-sdk-base: Add method to get all members from the store
2021-03-13 13:15:50 +01:00
Damir Jelić
e5585b57e8
Merge branch 'room_merge'
2021-03-08 13:39:46 +01:00
Julian Sparber
bc2c924c88
matrix-sdk-base: remove InvitedRoom, JoinedRoom, LeftRoom and RoomState
...
They are all replaced by `Room`
2021-03-05 12:19:50 +01:00
Julian Sparber
9332c55c8d
matrix-sdk-base: merge StrippedRoom and Room
2021-03-05 11:31:01 +01:00
Damir Jelić
c5241af675
crypto: Expose the crypto store error pulicly
2021-03-04 17:46:18 +01:00
Julian Sparber
31f4a58f38
matrix-sdk-base: Export RoomType
2021-03-03 11:34:59 +01:00
Julian Sparber
780348f546
matrix-sdk-base: Remove the unused enum RoomStateType
2021-03-03 11:18:23 +01:00
Damir Jelić
7729e2b11f
matrix-sdk: Add some custom debug implementations
...
This should avoid polluting the logs with sled trees and a lot of
redundant info in a device if a device or store ends up in the
structured logs.
2021-03-02 16:22:38 +01:00
Denis Kasak
df8c489304
Fix typo: visiblity -> visibility
2021-03-02 12:20:09 +01:00
Damir Jelić
e6f6665fa0
Merge branch 'master' into history-visiblity-session-share
2021-03-01 20:47:31 +01:00
Damir Jelić
5c0f0140e9
matrix-sdk: Fix some doc examples
2021-03-01 19:41:14 +01:00
Cédric Barreteau
b6f2c43330
Rename EventEmitter
to EventHandler
2021-02-13 11:01:31 +01:00
Cédric Barreteau
e3e48148f0
Rename add_event_emitter
to set_event_emitter
...
Closes #145 .
2021-02-13 10:43:42 +01:00
Damir Jelić
2811c490a0
matrix-sdk: Fix some new clippy warnings
2021-02-12 12:59:53 +01:00
Damir Jelić
e857172170
base: Fix a couple of typos
2021-02-10 21:32:33 +01:00
Damir Jelić
b7fda1deb7
base: Fix a typo in the room members
2021-02-10 20:57:26 +01:00
Damir Jelić
c34f69f8a3
crypto: Don't receive the whole sync response, only what we need.
...
This makes it clearer what the crypto layer is doing, this also makes it
clearer for people that will use the crypto layer over FFI that they
don't need to go through a serialize/deserialize cycle for the whole
sync response.
2021-02-10 15:42:55 +01:00
Damir Jelić
19b78be93f
base: Fix a typo
2021-02-10 09:15:25 +01:00
Devin Ragotzy
fcd1c87765
matrix_sdk: export CustomEvent and StateChanges add docs to StateChanges
2021-02-04 15:54:20 -05:00
Damir Jelić
9e83eaf2f5
crypto: Store the history visiblity with the outbound session
2021-02-03 16:01:58 +01:00
Damir Jelić
347f79d08c
base: Respect the history visiblity setting when sharing group sessions
2021-02-03 13:56:31 +01:00
Damir Jelić
b66c666997
base: Expose and document the stripped room info
2021-01-28 14:59:57 +01:00
Damir Jelić
92f0523e37
base: More docs
2021-01-28 14:51:34 +01:00
Damir Jelić
58691986a9
base: Initial set of docs
2021-01-28 14:10:26 +01:00
Damir Jelić
bf4f32eccf
crypto: Remove the sqlite store for now
2021-01-27 15:29:42 +01:00
Damir Jelić
bc3ba3fab0
crypto: Add tests for the sled cryptostore
2021-01-27 15:19:32 +01:00
Damir Jelić
cb26e653da
base: Add a TODO explaining how redacted state needs to be healed
2021-01-27 12:39:54 +01:00
Damir Jelić
442103a37e
base: Store the display names in the memory store as well
2021-01-27 11:59:30 +01:00
Damir Jelić
094ead9d7d
base: Allow users to inspect the ambiguity change a member event triggers
2021-01-27 11:46:44 +01:00
Damir Jelić
55430dd3d2
base: Us and_then() instead of map() + flatten()
2021-01-26 19:28:17 +01:00
Damir Jelić
b3cfa48b45
base: Allow inspecting dispaly name owners in the sate inspector
2021-01-26 14:44:37 +01:00
Damir Jelić
fc085a7391
base: Use encoded keys for the whole sled store
2021-01-26 14:04:37 +01:00
Damir Jelić
b4a916b797
base: Add a method to get all the user ids that use a certain display name
2021-01-26 13:22:06 +01:00
Damir Jelić
ac6dad3f35
matrix-sdk: Bump our deps
2021-01-25 15:47:51 +01:00
Damir Jelić
eb8138ca6a
base: Restore stripped room infos as well
2021-01-23 17:29:43 +01:00
Damir Jelić
8028c23f56
base: Feature flag the sled state store
2021-01-22 18:10:17 +01:00
Damir Jelić
cb12bc1584
base: Use Instant instead of SystemTime for wasm compatibility
2021-01-22 18:07:34 +01:00
Damir Jelić
b83399ba14
base: Fix a typo take two
2021-01-22 16:07:24 +01:00
Damir Jelić
5daa22250f
base: Fix a typo
2021-01-22 15:45:14 +01:00
Damir Jelić
c034de470b
base: Allow using the same sled database for the state and cryptostore
2021-01-22 11:33:06 +01:00
Damir Jelić
cf07fc8e8e
Merge branch 'master' into new-state-store
2021-01-21 19:58:40 +01:00
Tilo Spannagel
7b8d2b5319
Add support for ruma feature flag markdown
...
Signed-off-by: Tilo Spannagel <development@tilosp.de>
2021-01-21 18:22:17 +01:00
Damir Jelić
7d45417a17
base: Add a memory-only store
2021-01-21 16:31:33 +01:00
Damir Jelić
66ecb4c1e6
base: Store room infos for left and invited rooms
2021-01-21 15:12:13 +01:00
Damir Jelić
ae0d810fb0
base: Avoid the Trait is not general enough issue again
2021-01-21 14:03:41 +01:00
Damir Jelić
303ac513e5
base: Remove some stale files from the old state store
2021-01-21 12:13:46 +01:00
Damir Jelić
de4df4e50a
base: Re-introduce a state store trait.
2021-01-21 12:08:16 +01:00
Damir Jelić
2bcc0afb91
base: Use a CSPRNG to get our randomness and handle randomness errors
...
Since we're going to encrypt a lot of small objects separately we're
gonna need a lot of random nonces, it doesn't help that our nonces are
24 bytes long either. So use a CSPRNG to random data faster, also don't
panic if there wasn't enough randomness.
2021-01-20 16:59:46 +01:00
Damir Jelić
0a6b0e5804
base: Properly handle crypto related errors in the sled store
2021-01-20 16:27:59 +01:00
Damir Jelić
4a06c9e82d
base: Initial support for an encrypted sled store.
2021-01-20 15:57:23 +01:00
Damir Jelić
28cc5acc87
base: Add a store key struct
2021-01-20 14:10:57 +01:00
Damir Jelić
2b5ff82414
base: Move the sled store into a subfolder
2021-01-20 10:25:54 +01:00
Damir Jelić
3472c99c27
base: Split out the store module into smaller submodules
2021-01-19 16:48:37 +01:00
Damir Jelić
17f3dbb0a0
crypto: Return a deserialized ToDevice struct when we receive a sync
2021-01-19 12:59:31 +01:00
Damir Jelić
6a30514d40
base: Move the deserialized responses types into the common crate
2021-01-19 12:30:58 +01:00
Damir Jelić
b8fcc003ea
base: Finish up the error handling for the new stores
2021-01-19 12:03:46 +01:00
Damir Jelić
d07063af2b
base: Add some error handling to the state store
2021-01-18 18:07:53 +01:00
Damir Jelić
1746690eda
crypto: Add a sled cryptostore
2021-01-18 13:38:00 +01:00
Amanda Graven
aadbc14dc6
Add accessor for room member avatar urls
2021-01-15 18:59:51 +01:00