Commit graph

1922 commits

Author SHA1 Message Date
Johannes Becker
2becb88c35 appservice: Add client_with_config singleton 2021-05-26 18:12:50 +02:00
Kévin Commaille
6367cdddbf
sdk: Add tests for media content 2021-05-25 22:15:27 +02:00
Kévin Commaille
5e05b37d02
base: Add tests for media content storage 2021-05-25 22:10:04 +02:00
Kévin Commaille
df883d3328
Add MediaEventContent trait and implement it for corresponding room events
Add helper methods in Client
2021-05-25 21:52:27 +02:00
Kévin Commaille
b805670c8a
sdk: Add methods for media content 2021-05-25 21:43:01 +02:00
Kévin Commaille
0c8e870bff
crypto: Implement From<EncryptedFile> for EncryptionInfo 2021-05-25 21:33:38 +02:00
Kévin Commaille
c318a6e847
base: Add media store 2021-05-25 21:16:28 +02:00
Damir Jelić
bdd51a323a Merge branch 'read-receipts' 2021-05-25 19:25:48 +02:00
Kévin Commaille
f619bbb884
base: Change receipt store tests' user ID 2021-05-25 14:20:13 +02:00
Damir Jelić
37c23f1761 matrix-qrcode: Add accessors for our keys/secrets. 2021-05-25 13:31:12 +02:00
Kévin Commaille
49c72e74f7
base: Add store tests for receipts 2021-05-25 11:57:03 +02:00
Johannes Becker
7609c7445c matrix-sdk: Allow to get Client's RequestConfig 2021-05-25 10:38:43 +02:00
Kévin Commaille
a889bb3aca
base: Simplify decode_key_value 2021-05-25 10:26:56 +02:00
Johannes Becker
20454e1666 appservice: Put registration into Arc 2021-05-25 10:05:51 +02:00
Johannes Becker
aaa17535ac matrix_sdk: Fix typo 2021-05-25 10:05:51 +02:00
Johannes Becker
bd5e112a46 appservice: Remove outdated serde_yaml dependency 2021-05-25 10:05:51 +02:00
Johannes Becker
cc591cce1c appservice: Improve docs 2021-05-25 10:05:51 +02:00
Damir Jelić
e058191b99 base: Correctly update the room info for invited rooms 2021-05-25 09:31:32 +02:00
Damir Jelić
300189bb37 crypto: Use the verification cache in verification requests 2021-05-24 16:41:27 +02:00
Damir Jelić
d928f39f68 crypto: Add a VerificationCache struct 2021-05-24 16:41:27 +02:00
Damir Jelić
98c259dc1e crypto: Refactor the VerificationReqest struct a bit 2021-05-24 16:41:27 +02:00
Damir Jelić
c174c4fda2 matrix-qrcode: Rename the crate. 2021-05-24 16:38:21 +02:00
Damir Jelić
7a5daf6ac7 Merge branch 'famous' 2021-05-24 12:47:14 +02:00
timorl
ded5830deb Make client use .well-known redirects
Was supposed to fix #219, but apparently that was about something else.
2021-05-24 11:00:42 +02:00
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ć
8018b43443 qrcode: Document the qrcode crate. 2021-05-20 15:02:14 +02:00
Damir Jelić
f49f5f1636 qrcode: Add some more tests 2021-05-20 14:04:40 +02:00
Damir Jelić
b073323089 qrcode: Add another TryFrom implementation 2021-05-20 14:04:07 +02:00
Damir Jelić
305766955b matrix-sdk: Add a crate to generate and parse QR codes
This patch adds types and methods to parse QR codes defined in the
[spec]. It supports parsing the QR format from an image or from a byte
string, converting back to an image and bytestring is possible as well.

[spec]: https://spec.matrix.org/unstable/client-server-api/#qr-code-format
2021-05-19 16:10:48 +02:00
Damir Jelić
110b8eb8dd Merge branch 'master' into sas-longer-flow 2021-05-18 09:07:50 +02:00
Damir Jelić
fe17dce813 Merge branch 'ProjectMoon/master' 2021-05-18 08:53:31 +02:00
Damir Jelić
c122549e0d base: Correctly get the user ids of all room members 2021-05-18 08:29:10 +02:00
projectmoon
bb69901d94 Return joined members in a room from the correct Sled tree. 2021-05-17 22:28:30 +00:00
Jonas Platte
cd77441d1b
Upgrade ruma to 0.1.0 (crates.io release) 2021-05-17 02:57:36 +02:00
Jonas Platte
5059d8b2c6
Remove unused import 2021-05-17 02:21:18 +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
Johannes Becker
0bdcc0fbf9 appservice: Refactor API 2021-05-13 17:42:06 +02:00
Damir Jelić
3f57a2a9f2 Merge branch 'master' into sas-longer-flow 2021-05-13 11:26:40 +02:00
Damir Jelić
09a7858702 crypto: Initial support for the longer to-device verification flow 2021-05-13 11:15:56 +02:00
Damir Jelić
ec55258be9 crypto: Handle decrypted to-device events as well
Usually only room keys and forwarded room keys are sent as encrypted
to-device events, those are specially handled to avoid accepting room
keys coming in unencrypted.

Some clients might send out other events encrypted which might lower
metadata leakage and the spec doesn't disallow it.

This patch handles decrypted events the same way as non-encrypted ones,
we're still special casing the decryption handling to avoid decryption
loops/bombs (i.e. events that are encrypted multiple times).
2021-05-13 11:08:13 +02:00
Devin Ragotzy
6b600d7e6d Replace async_trait rustfmt removed 2021-05-12 20:34:14 -04: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ć
4f7902d6f0 crypto: Add a method to check it the SAS flow supports emoji 2021-05-12 20:09:02 +02:00