Damir Jelić
9fe23227af
base: Fix the encryption settings Into implementation.
2020-08-21 12:44:14 +02:00
Damir Jelić
ce93869915
crypto: Return an Option instead of an empty result for the key uploads.
2020-08-21 09:50:01 +02:00
Damir Jelić
56309ae12c
matrix-sdk: Bump the versions of our deps.
2020-08-19 14:52:11 +02:00
Damir Jelić
90ea0229f2
crypto: Rename TrustState to LocalTrust since.
...
We might still trust the device event if our local trust isn't set, so
rename the enum to better reflect that meaning.
2020-08-19 11:20:08 +02:00
Damir Jelić
84c0311d80
crypto: Rename the UserDevicesWrap struct.
2020-08-17 17:12:39 +02:00
Damir Jelić
91db502cfe
crypto: Rename DeviceWrap to Device.
2020-08-17 16:36:50 +02:00
Damir Jelić
43aea6e482
crypto: Rename Device to ReadOnlyDevice.
2020-08-17 16:17:28 +02:00
Damir Jelić
fd8377bce2
crypto: Add device wrappers so that the verification can be started with a device.
2020-08-17 15:36:45 +02:00
Jonas Platte
5040be042f
Update ruma
2020-08-15 15:17:27 +02:00
Damir Jelić
09f009ebd7
matrix-sdk: Bump our deps.
2020-08-14 17:11:54 +02:00
Damir Jelić
344631b4ee
crypto: Respect the encryption settings of a room when creating sessions.
2020-08-13 14:41:59 +02:00
Damir Jelić
d4de877e09
base: Fix the docs for our feature flags.
2020-08-13 12:17:30 +02:00
Damir Jelić
9b8e11aab9
crypto: Fix the docs for our features.
2020-08-13 11:06:26 +02:00
Damir Jelić
4e99278eac
matrix-sdk: Expose the device methods in the Client.
2020-08-13 10:49:38 +02:00
Damir Jelić
cdb8b5c1e9
matrix-sdk: Fix a couple of typoes.
2020-08-13 10:28:40 +02:00
Damir Jelić
5883396106
base: Hide the user devices method behind the encryption feature.
2020-08-12 17:49:08 +02:00
Damir Jelić
c6b0a19171
base: Fix a stale docstring.
2020-08-12 17:17:56 +02:00
Damir Jelić
7ee0430054
base: Add methods to fetch user devices.
2020-08-12 17:17:22 +02:00
Damir Jelić
0dc232b268
base: Fix a clippy warning.
2020-08-12 15:39:38 +02:00
Damir Jelić
407f9a3da8
matrix-sdk: Make sure to not send out multiple group share requests at once.
2020-08-12 15:12:51 +02:00
Damir Jelić
7cb25361b2
matrix-sdk: Expose an API to start SAS verifications.
2020-08-12 11:39:47 +02:00
Damir Jelić
c4ed5b6cda
matrix-sdk: Upgrade our deps.
2020-08-11 16:54:58 +02:00
Damir Jelić
7637e79f2c
matrix-sdk: Fix the tarpaulin skip directives.
2020-08-11 15:49:04 +02:00
Damir Jelić
528483ef0e
crypto: Remove the last mutable self borrows in the Olm machine methods.
2020-08-11 12:22:14 +02:00
Damir Jelić
6f4d2022fd
Merge branch 'master' into sas-timeout
2020-08-10 15:00:08 +02:00
Damir Jelić
ef5201cf35
Merge branch 'up-ruma' into master
2020-08-10 14:58:47 +02:00
Damir Jelić
7bcdc2a3b6
Merge branch 'master' into sas-timeout
2020-08-10 14:57:32 +02:00
Matthew Hodgson
9c4229dc57
typoes
2020-08-10 13:15:58 +01:00
Damir Jelić
d5cd608045
base: Remove some unnecessary mutable borrows of the olm machine.
2020-08-10 14:11:55 +02:00
Jonas Platte
d83fc971ce
Update ruma
2020-08-10 13:58:39 +02:00
Jonas Platte
d016ce1848
Use identifier macros in tests
2020-08-06 13:03:32 +02:00
Devin Ragotzy
ffdb9c4a79
Fix failing wasm test and clippy warnings for wasm
2020-08-04 17:39:25 -04:00
Devin Ragotzy
cb8d5ce8fb
Rename CustomOrRawEvent -> CustomEvent and use raw json when failed
...
When deserialization fails we fallback to providing the user with a
serde_json::RawValue, basically the json string. Ruma should handle all
events that conform to a matrix event shape correctly by either
converting them to their type or returning a custom event.
2020-08-04 17:27:57 -04:00
Devin Ragotzy
c10120602a
Add test actually testing a correct message edit event
2020-08-04 17:22:54 -04:00
Devin Ragotzy
47690bd268
Bump ruma and fix failing unrecognized_event test
...
The test was broken because the JSON being fed into it was bad.
2020-08-04 17:22:54 -04:00
Damir Jelić
2bf8c99dfe
Merge branch 'master' into sas-verification
2020-08-04 11:23:24 +02:00
Devin Ragotzy
33e1601004
matrix_sdk: Fix import error
2020-08-03 20:13:58 -04:00
Damir Jelić
1787d2ebe6
crypto: Hook up marking the device as verified.
2020-08-03 12:38:43 +02:00
Devin Ragotzy
0ac2b84c02
Unify import style across workspace
2020-08-02 08:05:43 -04:00
Devin Ragotzy
ed1f12ce37
Run cargo fmt with merge-imports true
2020-08-02 07:46:02 -04:00
Damir Jelić
3f83941d57
Merge branch 'master' into sas-verification
2020-07-31 16:27:52 +02:00
Devin Ragotzy
79e661d1d9
sdk-base: Remove MessageWrapper and do not order messages in queue
2020-07-31 09:16:41 -04:00
Damir Jelić
dce06d31aa
Merge branch 'master' into sas-verification
2020-07-31 15:14:05 +02:00
Damir Jelić
3472614649
Merge branch 'remove-possibly-redacted-type-alias' into master
2020-07-31 15:13:23 +02:00
Denis Kasak
2ce0765206
Remove confusing type alias for AnyPossiblyRedactedSyncMessageEvent.
...
There's already a SyncMessageEvent in Ruma which is something else.
Let's prefer the full, unambiguous type.
2020-07-31 14:36:58 +02:00
Denis Kasak
e00e94c6c3
Fix input order.
2020-07-31 11:46:52 +02:00
Denis Kasak
359c5280d7
Expose `sender` in `PossiblyRedactedExt`.
...
Also add a few missing apostrophes.
2020-07-30 14:40:27 +02:00
Damir Jelić
a07767d417
base: Hide the SAS getting method behind the encryption feature.
2020-07-30 11:50:42 +02:00
Damir Jelić
117ebeaf4b
crypto: Return requests when you want to accept a verification.
2020-07-29 12:47:36 +02:00
Damir Jelić
9facd86d81
base: Expose the verification methods in the base client.
2020-07-28 16:44:06 +02:00
Damir Jelić
7e95d85f17
crypto: Move the cryptostore behind a lock.
2020-07-28 15:03:44 +02:00
Jonas Platte
6a96368048
Upgrade ruma
2020-07-26 16:58:27 +02:00
Jonas Platte
d4fe2fe0a2
Remove redundant braces
2020-07-25 02:32:50 +02:00
Jonas Platte
14db34beee
Use Option::and_then over manual match
2020-07-25 02:32:18 +02:00
Jonas Platte
bf54b17a2f
Upgrade ruma
2020-07-22 22:31:42 +02:00
Devin R
e4f94cbfec
Remove FullOrRedacted use ruma::AnyPossiblyRedacted event enum
2020-07-18 08:52:51 -04:00
Devin R
71f2a042c2
Rename Stub -> Sync for all ruma events
2020-07-18 08:37:43 -04:00
Devin R
2e8fc3e232
matrix-sdk-base: Integrate redacted events into message queue
...
Redact message events according to spec and ruma types. Remove content
using events redact() method and insert the redacting event into the
event being redacted.
2020-07-17 13:41:55 -04:00
Damir Jelić
d273786d83
matrix-sdk: Bump our dependencies.
2020-07-17 10:01:22 +02:00
Damir Jelić
c1ffed4fc9
base: Sanitize the room id for the path of the state store.
...
This closes : #71 .
2020-07-16 14:08:56 +02:00
Damir Jelić
a2a87b9fff
matrix-sdk: Fix a bunch of clippy warnings.
2020-07-15 15:53:17 +02:00
Damir Jelić
fa0a22b090
Merge branch 'dkasak-master'
...
High-level summary of changes:
- Rewrite the disambiguation algorithm to simplify it.
- Fixes to state tracking, e.g. use `state_key` instead of `user_id` when
determining which member an event is acting on.
- Changes to `RoomMember`:
* Make `RoomMember` "dumber" and don't let it mutate itself. This came about
primarily because `update_profile` cannot live on `RoomMember` because it
needs some information from `Room`. The other few mutating methods then
looked odd so it seemed best to move them to `Room` so that the room takes
care of updating its members.
* Each `RoomMember` now contains all information to calculate its set of
names:
+ `.name()` (short/ergonomic but potentially ambiguous),
+ `.unique_name()` (unique but may be contain MXID when not necessary),
+ `.disambiguated_name()` (shortest possible while being unique).
- Add some logging using the `tracing` crate.
- Improvements to `EventBuilder`:
* Add a docstring.
* Make it clear itself when building a sync response so the same builder can
be reused for later sync responses.
- A few tests.
2020-07-15 12:52:25 +02:00
Denis Kasak
bce7fe0217
Equivalence class -> equivalence set.
2020-07-15 11:58:52 +02:00
Denis Kasak
1fd21ee206
Fix docstrings regarding return value related to disambiguation.
2020-07-15 11:54:30 +02:00
Denis Kasak
8a4a4140b3
Remove stale comment.
2020-07-15 11:22:47 +02:00
Denis Kasak
62943f055d
Rewrap docstrings and comments to 80 chars.
2020-07-15 11:21:01 +02:00
Denis Kasak
ea149ebd8e
Update docstring for disambiguation_updates.
2020-07-15 11:16:13 +02:00
Denis Kasak
9e48b7172b
cargo fmt
2020-07-14 12:38:55 +02:00
Damir Jelić
a38efc0f29
room: Fix a clippy warning, use unwrap_or_else for the member counts.
2020-07-14 10:56:06 +02:00
Denis Kasak
048a2000e7
Merge
2020-07-13 17:10:13 +02:00
Damir Jelić
740a5af068
Merge branch 'dan/bugfix/implable-StateStore'
2020-07-13 10:19:37 +02:00
Dan Enman
8c3855221c
mark state::AllRooms and state::ClientState as public
2020-07-11 19:14:55 -03:00
Jonas Platte
eea00301ff
Remove immediately-deref'ed double references
2020-07-11 21:20:02 +02:00
Jonas Platte
85522ac35a
Slightly simplify RoomName::calculate_name
2020-07-11 21:14:32 +02:00
Jonas Platte
9b5f95672b
Use js_int macros to improve readability
2020-07-11 21:06:21 +02:00
Jonas Platte
ffc5204109
Fix two pattern matching related warnings
2020-07-11 20:57:01 +02:00
Jonas Platte
a607d70371
Upgrade mockito in matrix-sdk-base
2020-07-11 20:55:19 +02:00
Jonas Platte
3ee06be87b
Rewrite MessageQueue deserialization to reduce allocations
2020-07-10 21:41:46 +02:00
Jonas Platte
3a07a17e9d
Remove unnecessary calls to clone()
2020-07-10 21:24:01 +02:00
Denis Kasak
05a41d3b4d
Move and rename member_display_name to RoomMember::disambiguated_name.
...
This makes more sense as all the required information is now available
on `RoomMember`. We also don't have to handle the case of the missing
member since now you have to actually get a `RoomMember` before you can
ask for their name.
2020-07-10 15:47:11 +02:00
Denis Kasak
4134ba969a
DRY the membership logging a bit.
2020-07-10 15:11:03 +02:00
Denis Kasak
a8f24da3ba
cargo fmt
2020-07-10 15:11:03 +02:00
Denis Kasak
390a1aa12c
Clarify member_display_name docstring.
2020-07-10 15:11:03 +02:00
Denis Kasak
b16724841d
Correct state tracking of room members.
...
- use `state_key` instead of `user_id` to determine which member is
affected by the event
- assign state directly from the event in `add_member` instead of using
`membership_change`
- expand/fix docstrings
- add some logging
2020-07-10 15:11:03 +02:00
Denis Kasak
ec81a5e539
Implement Room::member_is_tracked.
2020-07-10 15:11:03 +02:00
Denis Kasak
949305da72
Clarify comment.
2020-07-10 15:11:03 +02:00
Denis Kasak
559306a33c
Rewrite disambiguation algorithm to handle profile changes.
...
The new algorithm is simpler. Instead of tracking a list of
disambiguated display names in `Room`, we instead track the display name
ambiguity status in `RoomMember`. This allows a client to generate the
correct name for a member using solely the information available in
`RoomMember`.
The disambiguation algorithm itself now only calculates the set of members
whose ambiguity status had changed instead of producing disambiguated
display names for everyone affected. This is called on each room entry
(join or invite), room entry and profile change, and the updates are
propagated to the affected `RoomMember`s.
2020-07-10 15:11:01 +02:00
Denis Kasak
24d2aa8078
Style (cargo fmt, reordering import).
2020-07-10 15:07:21 +02:00
Denis Kasak
e70929317a
Revert "add_member provably always returns true."
...
This reverts commit 7943baee49
.
2020-07-10 15:07:17 +02:00
Devin R
62eeb3707f
Fix wasm test failure gate unknown import
2020-07-10 08:59:02 -04:00
Devin R
3fa06eeb99
matrix-sdk-base: Add test for MessageQueue/JsonStore interaction
...
Ruma can't currently handle an event with the wrong event content type.
When replacing the MessageEventStub's content it automatically
serializes as "m.room.redaction".
2020-07-10 08:59:02 -04:00
Devin R
c0e6279837
matrix-sdk: Update request_builder to use new constructors
...
The create_room::Request and get_message_events::Request now have
constructors that we use in our builder structs.
2020-07-10 08:59:02 -04:00
Devin R
e7c70854ab
sdk_base: message events in message queue have content redacted
...
The MessageQueue holds MessageEventStub<AnyMessageEventContent> so when
a redaction event is encountered the redacted event's content can be
replaced. The Unsigned field redacted_because is also populated with the
redaction event itself with the addition of a room_id Stub -> full
event.
2020-07-10 08:59:02 -04:00
Devin R
dcc3d6e755
sdk_base: Remove room_id as argument from all Room methods
...
Remove room_id paramater from some client methods. Make CreationContent
two methods of RoomBuilder. Add docs for MessageWrapper.
2020-07-10 08:59:02 -04:00
Devin R
2338d3e8fd
matrix-sdk-base: clean up recv/iter joined post rebase
...
The types for account data in a sync response have changed, no longer
Option. Re word comment in hoist prev_content test.
2020-07-10 08:59:02 -04:00
Devin R
b83b9dc59d
matrix-sdk-base: Use new accessor methods for models/message.rs
...
ruma now has field access methods for all of the Any*Event enums use
them for MessageWrapper's AnyMessageEventStub contents.
2020-07-10 08:59:02 -04:00
Devin R
68822861d5
Rebase upstream/master into ruma-mono branch
2020-07-10 08:59:02 -04:00
Devin R
b1e7bc77a4
Use ruma/ruma master, address review issues
2020-07-10 08:59:02 -04:00
Devin R
eb5949dbc2
Move matrix-sdk to ruma monorepo
2020-07-10 08:59:00 -04:00
Denis Kasak
7943baee49
add_member provably always returns true.
2020-07-10 11:08:40 +02:00
Denis Kasak
7abdeed449
fix: Don't issue a disambiguation in case of a unique display name.
2020-07-10 11:08:40 +02:00
Denis Kasak
eeebb43e32
Move mutating methods from RoomMember to Room.
...
The `update_profile` method cannot live in `RoomMember` since that
operation needs information which only exists in `Room` (for instance,
it needs other members in order to perform display name disambiguation).
Leaving other mutating methods on `RoomMember` (like `update_power` and
`update_presence`) then seemed illogical so they were all moved into
`Room`.
In addition, a small refactoring was done to remove
`did_update_presence` and `update_presence` since their existence
doesn't make much sense anymore and it saves us from repeating work.
Their function is now done in `receive_presence_event`.
Also, several docstrings were corrected and reworded.
2020-07-10 11:08:38 +02:00
Denis Kasak
5f49dab1fa
Correct docstring.
2020-07-10 11:05:51 +02:00
Denis Kasak
6cacf83661
Add (failing) test for displayname disambiguation on profile updates.
2020-07-10 11:05:51 +02:00
Denis Kasak
599c1ba98f
Add test to ensure member is only treated as joined or invited, not both.
2020-07-10 11:05:51 +02:00
Denis Kasak
c2ec69cf44
Style fixes (comment grammar and correctness, whitespace).
2020-07-10 11:05:51 +02:00
Denis Kasak
32bdcede0c
Small refactoring to simplify member_disambiguations.
2020-07-10 11:05:51 +02:00
Denis Kasak
9af48920f6
Add some TODOs and FIXMEs.
2020-07-10 11:05:51 +02:00
Damir Jelić
283cf0d782
matrix-sdk: Bump all our deps.
2020-07-07 15:52:08 +02:00
Damir Jelić
98d36d0ef0
base: Only update the tracked users when we're done with the state and timeline.
2020-07-07 15:48:28 +02:00
Damir Jelić
11aa306de2
base: Swap around the store creation.
...
The state store creates directory structure but the crypto store does
not.
This can lead to confusing errors where we require a directory to be
created by the library user but it gets created by the library.
2020-07-06 10:54:01 +02:00
Denis Kasak
ff5f638b60
Remove member from invited_members when he joins.
2020-07-03 15:35:54 +02:00
Denis Kasak
2a0c6c6474
Add test and example event to ensure display name changes work correctly.
2020-07-03 15:35:54 +02:00
Denis Kasak
c57f076375
Remove unused import.
2020-07-03 15:35:54 +02:00
Denis Kasak
4561b94f33
Remove outdated TODO.
2020-07-03 15:35:54 +02:00
Denis Kasak
9bd8699e18
Get rid of match on membership change in RoomMember::update_profile.
...
The calling method already did this when it determined that
update_profile should be called so we don't need to repeat it.
2020-07-03 15:35:54 +02:00
Denis Kasak
5ef9a7b924
tests: Rename get_room_id to test_room_id.
...
To make it more obvious it's a special room ID value used in tests.
2020-07-03 15:35:54 +02:00
Damir Jelić
bd56c52b37
base: Don't double borrow the response in one iter rooms method.
2020-07-03 12:30:57 +02:00
Denis Kasak
1f25c4cf4b
Fix and test hoisting of `prev_content` for timeline events.
...
The previous test only tested using the `EventEmitter`, which missed the
fact that the client was receiving unhoisted events. The test now also
tests the client state to detect this.
2020-07-03 11:54:08 +02:00
Denis Kasak
3f1a40a7d1
Add a bunch of FIXMEs to have receive_* methods do the emitting.
2020-07-03 10:31:47 +02:00
Damir Jelić
b092ed0a82
base: Put the decrypted event replacing in the correct place.
2020-07-02 23:16:56 +02:00
Damir Jelić
676d547161
matrix-sdk: Disable the tarpaulin skip lines since it fails to run with them.
2020-06-24 11:25:31 +02:00
Damir Jelić
6a670163d3
Merge branch 'feature/display-name'
2020-06-24 10:42:58 +02:00
Damir Jelić
b8c4d1d5fa
matrix-sdk: Remove the last test_data folder and fix the remaining tests.
2020-06-24 10:07:03 +02:00
Devin R
8e8ac8c5ac
matrix_sdk_base: Use test_json values for tests in base
2020-06-21 14:22:28 -04:00
Devin R
4a7b3a103c
matrix_sdk_test: Use static JSON values instead of reading files
2020-06-21 14:13:26 -04:00
Denis Kasak
c0c02baffc
Run cargo fmt and apply clippy lints.
2020-06-20 13:05:16 +02:00
Denis Kasak
1174ccfc89
Merge branch 'master' into feature/display-name
2020-06-20 12:54:46 +02:00
Denis Kasak
733689870e
Fix compilation error and remaining test.
...
Ref. for compilation error:
https://github.com/rust-lang/rust/issues/64552
2020-06-20 12:51:02 +02:00
Marcel
d4087a1aae
Fix cargo fmt issues that the local version didn't auto fix
2020-06-17 19:16:04 +02:00
Marcel
8b77b4171a
Do wasm sepcific changes:
...
- Only use send+sync when not using wasm
- Use wasm capabale async_trait wrapper macro
- Make room and room_member specific structs always clonable
2020-06-17 18:57:39 +02:00
Denis Kasak
5bd3c49afc
Correctly handle disambiguation for exiting members, refactor and test.
2020-06-15 17:29:38 +02:00
Denis Kasak
765487dd9f
Fix comment style.
2020-06-15 17:29:38 +02:00
Denis Kasak
03e53e991b
Hoist prev_content to top-level in both timeline and state events.
...
Also refactor and document why this hoisting is needed.
This change makes the user_presence test fail because the hoisting
exposes an error encoded into the test's expected result.
Previously, the test expected 2 members in the room at the end. This is
incorrect since one of the members in the test data leaves the room.
However, since the prev_content of state events was previously not
hoisted to the top level, the `membership_change` method would not
notice it and thus not realize the member had left the room. The test
was corrected to expect only a single member in the room.
Another test change was made due to a limitation of EventBuilder: due to
the fact that it makes the test data go through a de/ser cycle, it
cannot easily hoist prev_content to the top level. Because of this, the
tests were change to put prev_content into the top level from the
outset.
2020-06-15 17:21:26 +02:00
Damir Jelić
311e41ee0d
matrix-sdk: Fix the author field in the cargo files.
2020-06-15 09:47:13 +02:00
Denis Kasak
97b1bb6004
Must not take our user into account when calculating room name.
2020-06-10 22:53:31 +02:00
Denis Kasak
331cb02266
Split joined/invited users and handle removing users.
2020-06-10 18:12:27 +02:00
Denis Kasak
7751605e37
Nix RoomMember::update_member and tracking membership.
...
After discussing with poljar, we concluded we don't actually need to
tracking membership state, since we won't be tracking users that
left (banned, kicked, disinvited).
The only thing we need to keep track of is the difference between joined
and invited users which will be dealt with in a separate commit.
2020-06-10 16:36:51 +02:00
Denis Kasak
a0eaa9c364
Implement RoomMember::unique_name.
...
This gives us a name that is as ergonomic as possible while guaranteeing
it is unique.
2020-06-10 14:44:41 +02:00
Denis Kasak
241d456a81
Add RoomMember::name.
...
Returns the most ergonomic name for the member (either the display name
(if set) or the MXID).
2020-06-10 14:39:12 +02:00
Denis Kasak
3e5b6bb460
Style fixes.
2020-06-10 12:04:58 +02:00
Denis Kasak
5868c72662
Small refactor so we don't duplicate user_id creation.
2020-06-10 12:01:01 +02:00
Denis Kasak
4c184a30a2
Add doc comment to RoomName::calculate_name.
2020-06-10 00:28:56 +02:00
Denis Kasak
e4977d1d2a
Refactor member_display_name.
...
Make it more readable, add comments.
2020-06-09 23:02:01 +02:00
Denis Kasak
ac069152b9
Retrieve user id from RoomMember instead of reconstructing.
2020-06-09 22:19:51 +02:00
Denis Kasak
82827542b7
fixup: explicit type annotations
2020-06-09 19:31:01 +02:00
Denis Kasak
20a8e8e49b
Fix comment styling.
2020-06-09 19:24:00 +02:00
Denis Kasak
098cc1f9f8
Add explicit type annotation.
2020-06-09 19:08:14 +02:00
Denis Kasak
a3c46c6144
Run cargo fmt.
2020-06-09 16:41:26 +02:00
Denis Kasak
b93eb0e318
Make Room::member_display_name return MXID as fallback.
...
If there is no display name set. This means the method can now always
return something so there is no need to wrap in an `Option`.
2020-06-09 16:16:21 +02:00