Commit Graph

76 Commits (79e661d1d98ca20c4cde5edcf45dceead0a2a150)

Author SHA1 Message Date
Devin Ragotzy 79e661d1d9 sdk-base: Remove MessageWrapper and do not order messages in queue 2020-07-31 09:16:41 -04: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 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
Denis Kasak 048a2000e7 Merge 2020-07-13 17:10:13 +02:00
Jonas Platte eea00301ff
Remove immediately-deref'ed double references 2020-07-11 21:20:02 +02:00
Jonas Platte ffc5204109
Fix two pattern matching related warnings 2020-07-11 20:57:01 +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 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
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 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
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
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
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 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
Denis Kasak 331cb02266 Split joined/invited users and handle removing users. 2020-06-10 18:12:27 +02:00
Devin R 81baca2f92 base_client: emit typing events and test using EventEmitter 2020-06-06 17:00:29 -04:00
Damir Jelić 9f34b371be Merge branch 'unify-ee-methods' 2020-06-02 10:30:20 +02:00
Devin R db38bf1276 event_emitter: use enum to represent custom events and raw json 2020-06-01 17:02:12 -04:00
Devin R 8f017e7b27 event-emitter: rename on_account_data_* -> on_non_room_* 2020-06-01 07:13:57 -04:00
Devin R 9cb86596d8 add support for custom events and unrecognized by ruma events, test new code 2020-05-29 17:36:58 -04:00
Damir Jelić 6c3863f096 base: Don't unwrap when creating the olm machine. 2020-05-25 14:58:06 +02:00
Damir Jelić 3b5c9d3c75 Merge branch 'prev-content' 2020-05-25 14:31:19 +02:00
Damir Jelić ba66ee214f matrix-sdk: Move most of the configuration to the base client. 2020-05-25 14:21:04 +02:00
Devin R ac4698f0d6 base_client: only swap prev_content if outer is None 2020-05-22 21:29:51 -04:00
Devin R 86a01a0ca6 Merge branch 'master' into prev-content 2020-05-22 17:20:06 -04:00
Devin R 2f6bebdd1a base_client: replace event if prev_content deserialized from unsigned 2020-05-22 17:12:58 -04:00
Damir Jelić ea5f7f1d19 matrix-sdk: Don't require the the session at client creation time.
The client objects in the sdk accepted an optional session argument at
creation time. If provided this would restore the client into a logged
in state.

Since we need to restore the client state and encryption state at some
point it makes sense to do it when the client transitions into a logged
in state. At the same time we would like to avoid the client creation to
be async.

This introduces a restore_login() method which can be called instead of
the login() method to restore a session.
2020-05-22 15:23:58 +02:00