Mauro
a0cebfcba2
ffi: Fix is_noisy calculation
2023-05-04 09:13:33 +02:00
Kévin Commaille
581b4e02a1
sdk: Add timeline tests for aggregated edits, removing reply fallbacks and sanitizing HTML
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-05-03 13:18:36 +02:00
Kévin Commaille
d6401e51c2
sdk: Move edit timeline unit tests to a separate module
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-05-03 13:18:36 +02:00
Kévin Commaille
4fa2c13d44
sdk: Sanitize timeline HTML input and remove reply fallbacks
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-05-03 13:18:36 +02:00
Kévin Commaille
e8375a3770
sdk: Add constructor from m.room.message event for Message
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-05-03 13:18:36 +02:00
Stefan Ceriu
45cb5f0c2c
Use a indermediary directory for attachment names that might cause conflicts
2023-05-03 13:00:56 +02:00
Stefan Ceriu
2d464cf2f7
fix(ffi): Generate correct temporary file names for media attachments
2023-05-03 13:00:56 +02:00
Alfonso Grillo
9f3e4e809c
ffi: Expose power levels related APIs
2023-05-03 10:43:47 +00:00
Jonas Platte
e6cdf4d753
Work around new rustfmt bug
2023-05-03 11:42:50 +02:00
Jonas Platte
dddec7e7ee
Revert "Add "opaque interface declarations""
...
This reverts commit 396e0a3567 .
2023-05-03 11:42:50 +02:00
Jonas Platte
37be24ee19
sqlite: Fix compiler warnings
2023-05-03 11:42:50 +02:00
Jonas Platte
e1db33e6fa
Upgrade UniFFI
2023-05-03 11:42:50 +02:00
Mauro
2f413af0a8
ffi: Correct timestamp value and remove is_read flag
...
The timestamp value of the Notification was not reliable since it was the
timestamp in which it was generated internally, not the timestamp of when the
event was sent, now we instead expose the `origin_server_ts` of the
TimelineEvent.
`is_read` is also very unreliable, so it's just removed for now.
2023-05-02 15:00:05 +00:00
Benjamin Bouvier
be41dcf300
Remove unused dependencies
2023-05-02 15:06:46 +02:00
Stefan Ceriu
17fd4dd5ca
ffi: Support sending image attachments through the timeline
2023-05-02 14:54:01 +02:00
Jonas Platte
557d27a1a3
sdk: Add more convenient power level action checks to RoomMember
2023-05-02 12:59:28 +02:00
Damir Jelić
9e21678ce3
Merge pull request #1846 from matrix-org/release-matrix-sdk-crypto-js-v0.1.0-alpha.8
...
matrix-sdk-crypto-js v0.1.0-alpha.8
2023-05-02 12:52:06 +02:00
Damir Jelić
b0ca52b203
Merge pull request #1839 from matrix-org/florianduros/tech/js-bindings-missing-dependencies-lockfile
...
JS Bindings: add typescript missing devDependencies and lockfile
2023-05-02 11:58:24 +02:00
Florian Duros
61312e53d8
Merge branch 'main' into release-matrix-sdk-crypto-js-v0.1.0-alpha.8
Release `crypto-js` / Publish 🕸 [m]-crypto-js (push) Failing after 42s
2023-05-02 11:43:07 +02:00
Richard van der Hoff
8f332fddc2
crypto-js: Make importCrossSigningKeys take strings ( #1843 )
...
Currently this takes a `CrossSigningKeyExport`, but that's not a class you can
construct from the JS side. Instead, let's just pass in the individual keys.
2023-05-02 09:42:16 +00:00
Florian Duros
4df887823b
Update bindings/matrix-sdk-crypto-js/README.md
...
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com >
2023-05-02 11:35:50 +02:00
Florian Duros
b9920ab477
bindings: Fix Wasm conversion into base64
2023-05-02 11:35:44 +02:00
Mauro
87b938b8fe
ffi: Add timestamp field to NotificationItem
2023-05-02 11:16:43 +02:00
Mauro
034aa04076
ffi: Add is_read field to NotificationItem
2023-04-28 18:04:42 +02:00
Simon Farre
396e0a3567
Add "opaque interface declarations"
...
Using the #[derive(uniffi::Object)] on certain types make them not show up
in the .aar file when building for Android. Could not determine why that is,
but removing the derive macro, and adding the empty interface declarations
inside the UDL, makes them show up.
We can still use #[uniffi::export] and #[uniffi::constructor].
Signed-off-by: Simon Farre <simon.farre.cx@gmail.com >
2023-04-28 17:58:41 +02:00
Jonas Platte
7ef6accab8
base: Clean up sliding sync processing a bit
2023-04-28 13:36:37 +02:00
Jonas Platte
d7421b3f85
base: Clean up ephemeral event handling
...
Log deserialization failing, and visit all events (though there should
never be two receipt events for one room in a single sync response).
2023-04-28 13:36:37 +02:00
Jonas Platte
daf611b290
base: Add spans to some medium to large BaseClient methods
2023-04-28 13:36:37 +02:00
Kévin Commaille
640e74c76a
chore: Update Ruma
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-28 13:12:38 +02:00
Florian Duros
8ba80fc13a
matrix-sdk-crypto-js v0.1.0-alpha.8
2023-04-28 11:38:56 +02:00
Damir Jelić
e6f2f65ffa
Merge pull request #1838 from matrix-org/florianduros/feat/optional-unused-fallback-keys-js-bindings
...
JS Bindings: make `unused_fallback_keys` as optional in `machine.rs/receive_sync_changes`
2023-04-28 11:33:24 +02:00
Jonas Platte
cca8ac7aea
ci: Only save caches from main branch
...
Caches saved from a PR can't be loaded from other unrelated PRs, wasting
space and possibly getting older previously-saved caches evicted first.
2023-04-28 11:17:19 +02:00
Jonas Platte
4ee4198e83
ci: Remove build caching for infrequently used release workflows
2023-04-28 11:17:19 +02:00
Jonas Platte
b4faef7867
bindings: Use proc-macros for types no longer referenced in UDL
2023-04-28 11:07:47 +02:00
Jonas Platte
34d2a20b15
ffi: Use proc-macros for constructors
2023-04-28 11:07:47 +02:00
Jonas Platte
6b8ec09365
crypto-ffi: Use proc-macros for constructors
2023-04-28 11:07:47 +02:00
Jonas Platte
8aad6156bc
Upgrade UniFFI
2023-04-28 11:07:47 +02:00
Jonas Platte
bafcf23a29
sdk: Use new_content of edits instead of content
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-27 19:08:28 +02:00
Florian Duros
75870dd607
Run clippy
2023-04-27 17:57:30 +02:00
Florian Duros
2de2a14ee6
Run rustfmt
2023-04-27 17:42:19 +02:00
Mauro
d919642dd6
ffi: Exposing register_notification_handler in bindings
2023-04-27 17:35:46 +02:00
Florian Duros
31b81cbf6a
Run prettier
2023-04-27 17:30:55 +02:00
Florian Duros
cea29dbea1
Update README.md
2023-04-27 17:07:00 +02:00
Florian Duros
c74ecc449e
Add yarn.lock file
2023-04-27 17:04:54 +02:00
Florian Duros
643bd328d7
Add typescript as devDependencies
2023-04-27 17:04:43 +02:00
Florian Duros
2b3d5e09e2
Update changelog
2023-04-27 17:02:53 +02:00
Florian Duros
404d5003f3
unused_fallback_keys is optional in machine.rs
2023-04-27 17:00:28 +02:00
Kévin Commaille
d54b4a1d5a
sdk: Use new_content of edits instead of content
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-27 16:02:40 +02:00
Ivan Enderlin
cbfa134087
feat(sdk): Remove hacks for Sliding Sync ranges
...
feat(sdk): Remove hacks for Sliding Sync ranges
2023-04-27 14:35:05 +02:00
Ivan Enderlin
3a8b6696f7
test: Install SS proxy v0.99.2.
2023-04-27 14:07:39 +02:00
Ivan Enderlin
a719f35a3e
test: Use the latest Sliding Sync proxy version.
2023-04-27 10:21:04 +02:00
Ivan Enderlin
13088dff72
test: Use the latest Sliding Sync proxy version.
2023-04-27 10:02:50 +02:00
Ivan Enderlin
deeefdfe90
Revert "fix(sdk): Try to find a workaround for a bug in the SS Proxy."
...
This reverts commit f269202ece .
2023-04-27 09:03:12 +02:00
Kévin Commaille
6ca6a9a84a
Implement SQLite state store
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 17:51:11 +02:00
Kévin Commaille
4bf15a4694
base: Implement Clone for StateChanges
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 17:51:11 +02:00
Kévin Commaille
78655bd9e2
base: Allow to get RoomMemberships as a list of MembershipStates
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 17:51:11 +02:00
Kévin Commaille
91da155b55
sqlite: Change signatures of SqliteObjectExt methods
...
Allows to pass owned strings as well as static strings
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 17:51:11 +02:00
Jonas Platte
40272c5989
refactor: Move sqlite crypto store migrations in new subdirectory
2023-04-26 17:51:11 +02:00
Ivan Enderlin
3b9c98d1b1
Revert "fix(sdk): Try to find workarounds about the bug in SlidingSync Proxy."
...
This reverts commit bd6075f6b4 .
2023-04-26 17:31:47 +02:00
Kévin Commaille
1a20733225
indexeddb: Avoid unnecessary clones when deserializing events
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 16:17:38 +02:00
Kévin Commaille
bc240951d6
crypto: Enable decoding padded base64
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 15:56:03 +02:00
Ivan Enderlin
a7659f1fcb
Build Node bindings against Ubuntu 20.04
...
Build Node bindings against Ubuntu 20.04
2023-04-26 15:12:39 +02:00
Andrew Ferrazzutti
8e0559963e
Restore "Install musl-gcc for linux-musl nodejs releases"
...
This reverts commit cfc6ec2c0d .
2023-04-26 20:25:57 +09:00
Andrew Ferrazzutti
4bbea71d51
Add comment to explain why to use Ubuntu LTS-1
2023-04-26 18:45:18 +09:00
Andrew Ferrazzutti
80de0f0bbe
Build Node bindings against Ubuntu 20.04
...
Fixes #1808
2023-04-26 18:45:16 +09:00
Kévin Commaille
51a2d101b6
base: Remove RoomMemberships::UNKNOWN/KNOWN
...
The unknown filter can be difficult to match with MembershipState,
depending on the store implementation.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 10:12:22 +02:00
Kévin Commaille
f7e8b22646
memory-store: indexeddb: Store memberships as MembershipState
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 10:12:22 +02:00
Kévin Commaille
252f4cb9a2
sled: Store memberships as strings
...
Storing as bitset is not future-proof.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 10:12:22 +02:00
Kévin Commaille
a511500e6e
indexeddb: Store memberships as strings
...
Storing as bitset is not future-proof.
Just fix the latest migration. We assume no-one used it yet.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 10:12:22 +02:00
Kévin Commaille
3081dabb66
base: Add method to match RoomMemberships with MembershipState
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-26 10:12:22 +02:00
Ivan Enderlin
770d50e2ce
Merge pull request #1822 from AndrewFerr/af/update-nodejs-version
...
Update supported Node.js versions
2023-04-26 08:37:20 +02:00
Kévin Commaille
ae79fd0af5
sdk: Deprecate Common::(active/joined)_members(_no_sync)
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Kévin Commaille
b8f06ec4a1
sdk-base: Deprecate Room::(active/joined)_members
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Kévin Commaille
fe6424f48c
sdk: Implement Common::(active/joined)_members_no_sync with members_no_sync
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Kévin Commaille
2010c180a8
base-sdk: Implement Room::(active/joined)_members with members
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Kévin Commaille
e98fbfce9a
sdk: Allow to filter Common::members(_no_sync) by membership state
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Kévin Commaille
f68b45aa49
base-sdk:Allow to filter Room::members by membership state
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Kévin Commaille
81a543e15b
sdk-base: Deprecate get_invited_user_ids and get_joined_user_ids
...
get_user_ids can be used instead
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Kévin Commaille
4ffa20abde
sdk-base: Allow to filter get_user_ids results by any membership state
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Kévin Commaille
58a1ad1b93
base: Use single map for all user IDs in memory store
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-25 18:03:53 +02:00
Andrew Ferrazzutti
564549e8af
Update Node bindings' "engines"
...
Signed-off-by: Andrew Ferrazzutti <andrewf@element.io >
2023-04-25 23:59:22 +09:00
Andrew Ferrazzutti
46f69f7efd
Update supported Node.js versions
...
Signed-off-by: Andrew Ferrazzutti <andrewf@element.io >
2023-04-25 23:51:53 +09:00
Jonas Platte
c897f0ccaf
ffi: Print location for tracing events
2023-04-25 12:19:55 +02:00
Jonas Platte
bd3a37791b
Distinguish events from live sync and sync cache in debug string
2023-04-25 11:50:06 +02:00
Simon Farre
b105359b27
Expose fetch_event_details to FFI
...
Signed-off-by: Simon Farre <simon.farre.cx@gmail.com >
2023-04-24 20:50:06 +00:00
Ivan Enderlin
c5c8ac8a7c
feat(sdk): Add support for bump_event_types in SlidingSync
...
feat(sdk): Add support for `bump_event_types` in `SlidingSync`
2023-04-24 20:23:27 +02:00
Ivan Enderlin
2a912f7422
Merge pull request #1817 from matrix-org/revert-1779-af/nodejs-musl-gcc
...
Revert "Install musl-gcc for linux-musl nodejs releases"
2023-04-24 19:59:23 +02:00
Ivan Enderlin
cfc6ec2c0d
Revert "Install musl-gcc for linux-musl nodejs releases"
2023-04-24 19:59:01 +02:00
Ivan Enderlin
7e243c5a5b
Merge branch 'main' into fix-issue-1728
2023-04-24 19:46:56 +02:00
Kévin Commaille
910c35b699
sled: Return all user IDs in get_user_ids
...
It would only return joined and invited user IDs,
since those are the only ones that were stored.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-24 18:54:29 +02:00
Kévin Commaille
3f1a596c8c
indexeddb: Return all user IDs in get_user_ids
...
It would only return joined and invited user IDs,
since those are the only ones that were stored.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-24 18:54:29 +02:00
Kévin Commaille
493db9dd3f
sdk-test: Add room member ban sync event
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-24 18:54:29 +02:00
Jonas Platte
e5f4bbdc47
Upgrade dependencies
2023-04-24 13:59:01 +02:00
Jonas Platte
e15e21a3d7
ffi: Use UniFFI proc-macros for SessionVerificationController type
2023-04-24 12:42:27 +02:00
Jonas Platte
3954cab2ab
ffi: Use UniFFI proc-macros for Room type
2023-04-24 12:42:27 +02:00
Jonas Platte
e1a727a27f
ffi: Use UniFFI proc-macros for some misellaneousc symbols
2023-04-24 12:42:27 +02:00
Jonas Platte
75e7289ede
ffi: Use UniFFI proc-macros for last parts of the Client type
2023-04-24 12:42:27 +02:00
Jonas Platte
00b3057e06
ffi: Use UniFFI proc-macros for ClientBuilder::build
2023-04-24 12:42:27 +02:00
Jonas Platte
5f802c1348
ffi: Use UniFFI proc-macros as much as possible for sliding sync
2023-04-24 12:42:27 +02:00
Jonas Platte
7ab14d9428
Enable Ruma's compat-user-id feature
2023-04-24 12:42:03 +02:00
Jonas Platte
d527dd37b1
Upgrade Ruma
2023-04-24 12:42:03 +02:00
Jonas Platte
24a903ccb0
Fix Cargo.lock
2023-04-24 11:17:05 +02:00
Ivan Enderlin
8aad30ea4f
Merge pull request #1779 from matrix-org/af/nodejs-musl-gcc
...
Install musl-gcc for linux-musl nodejs releases
2023-04-24 10:51:00 +02:00
Jonas Platte
c6f491861e
crypto-ffi: Use proc-macros for types no longer referenced in UDL
2023-04-24 10:31:12 +02:00
Jonas Platte
055f0ff988
crypto-ffi: Use proc-macros for Verification type and methods
2023-04-24 10:31:12 +02:00
Jonas Platte
058d27e0a3
crypto-ffi: Use proc-macros for Sas methods
2023-04-24 10:31:12 +02:00
Jonas Platte
cb216044e1
crypto-ffi: Use proc-macros for OlmMachine methods
2023-04-24 10:31:12 +02:00
Jonas Platte
693ced4f4d
crypto-ffi: Remove unused function
2023-04-24 10:31:12 +02:00
Jonas Platte
27cf710009
crypto-ffi: Use proc-macros for VerificationRequest methods
2023-04-24 10:31:12 +02:00
Jonas Platte
5202e3e1b9
crypto-ffi: Use proc-macros for QrCode methods
2023-04-24 10:31:12 +02:00
Jonas Platte
d90d7b519b
crypto-ffi: Use proc-macros for types not referenced in UDL
2023-04-24 10:31:12 +02:00
Jonas Platte
d15447a2c1
crypto-ffi: Use proc-macro for exporting free functions
2023-04-24 10:31:12 +02:00
Ivan Enderlin
be7b79b4e5
feat(ffi): Add binding for SlidingSyncBuilder::bump_event_types.
...
This patch adds a new binding on `SlidingSyncBuilder` to
`matrix_sdk::SlidingSyncBuilder::bump_event_types`.
2023-04-24 10:05:00 +02:00
Ivan Enderlin
7b2b3fa78f
feat(sdk): Add support for bump_event_types in SlidingSync.
...
The `SlidingSyncBuilder` now has a new method: `bump_event_types`, to
configure the `bump_event_types` HTTP request parameter. This value
is passed to `SlidingSync`, which is used to build the `SlidingSync`
request.
2023-04-24 10:05:00 +02:00
Ivan Enderlin
1c2e7d8c0d
chore: Update Cargo.lock.
2023-04-24 09:56:55 +02:00
Valere
f8e4e3d7d5
fix(bindings): Withheld code mapping
2023-04-22 21:10:56 +02:00
Jonas Platte
9ffcb8bc8a
ffi: Move error type into its own module
2023-04-20 18:24:47 +02:00
Jonas Platte
4f316a130f
Remove uniffi_types modules
2023-04-20 18:24:47 +02:00
Jonas Platte
7e58e72671
Upgrade UniFFI
2023-04-20 18:24:47 +02:00
Florian Duros
fd739a3676
matrix-sdk-crypto-js v0.1.0-alpha.7
2023-04-20 18:24:36 +02:00
Jonas Platte
167d81e36a
ci: Simplify test-all-crates job
2023-04-20 14:52:34 +02:00
Richard van der Hoff
0a0da040d2
account.rs: add some comments ( #1799 )
2023-04-20 13:01:44 +01:00
Jonas Platte
f2d2a20987
ffi: Change make_span to be a constructor, write docs
2023-04-20 11:43:45 +02:00
Jonas Platte
29068265db
ffi: Add filtering of tracing events and spans
2023-04-20 11:43:45 +02:00
Jonas Platte
50f29e5a11
ffi: Add Span::is_none
2023-04-20 11:43:45 +02:00
Jonas Platte
54bd26d683
ffi: Add Span::current
2023-04-20 11:43:45 +02:00
Jonas Platte
b532d35d21
Remove root_span from Client
2023-04-20 11:43:45 +02:00
Jonas Platte
bb05ac7dac
ffi: Add basic tracing bindings
2023-04-20 11:43:45 +02:00
Richard van der Hoff
0da8e56a68
crypto-js: wait for device updates in getUserDevices ( #1790 )
...
Wait for up to a second for any in-flight device list updates to complete.
2023-04-20 08:58:26 +01:00
Richard van der Hoff
a88f53ee85
crypto-js: Expose more data on Device ( #1786 )
...
Implement Device.algorithms and Device.isSignedByOwner for the js bindings.
2023-04-20 08:57:54 +01:00
Jonas Platte
530fceb40d
Fix some rustdoc warnings
2023-04-20 09:02:28 +02:00
Jonas Platte
7d5908beef
sdk: Add more data to RemoteEventTimelineItem Debug string
2023-04-20 09:02:09 +02:00
Anderas
5d94a5d2f4
Update iOS Crypto SDK docs
...
… and add local podspec.
2023-04-19 18:09:21 +02:00
Jonas Platte
0e08d0f9ef
sdk: Make EventTimelineItem's fields pub(super)
...
… and avoid an unnecessary clone.
2023-04-19 14:17:16 +02:00
Jonas Platte
3f6c9956ab
sdk: Move timestamp to EventTimelineItem
...
… from Local/RemoteEventTimelineItem.
2023-04-19 14:17:16 +02:00
Jonas Platte
c97d8afa58
sdk: Remove extra visibility boundary on {Local,Remote}EventTimelineItem
2023-04-19 14:17:16 +02:00
Jonas Platte
abd508676e
sdk: Remove {Local,Remote}EventTimelineItem from public API
2023-04-19 14:17:16 +02:00
Jonas Platte
7376198dfa
sdk: Move sender, sender_profile, content to EventTimelineItem
...
… from Local/RemoteEventTimelineItem.
2023-04-19 14:17:16 +02:00
Jonas Platte
2960aafe3d
sdk: Make EventTimelineItem an opaque struct instead of an enum
2023-04-19 14:17:16 +02:00
Jonas Platte
4daf31f5b1
Fix clippy lint
2023-04-19 14:17:16 +02:00
Jonas Platte
bf4349ffb3
base-sdk: Don't separate member events from other state events
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-19 14:04:53 +02:00
Kévin Commaille
b87a4e8c20
base-sdk: Don't separate member events from other state events
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-19 13:16:55 +02:00
Alfonso Grillo
3b1ed1403d
sdk: Add DM invitation to m.direct account data upon accepting it
2023-04-18 18:05:48 +02:00
Alfonso Grillo
fe10bcc814
base: Use member event is_direct field for is_direct() on invited rooms
2023-04-18 18:05:48 +02:00
Jonas Platte
be67c91a6b
Use regular backticks in matrix-sdk-ffi/README.md
2023-04-18 15:20:51 +02:00
Jonas Platte
89c06568dd
Remove unneeded explicit lifetime
2023-04-18 15:20:51 +02:00
Alfonso Grillo
dffa1b16c3
sdk: Skip user's own ID when marking a room as DM
2023-04-18 13:41:34 +02:00
Jonas Platte
5bc20669c2
sdk: Implement MSC3925 for the timeline
...
https://github.com/matrix-org/matrix-spec-proposals/blob/main/proposals/3925-replace-aggregation-with-full-event.md
Implemented in Synapse 1.79.0:
https://github.com/matrix-org/synapse/releases/tag/v1.79.0
2023-04-18 13:14:33 +02:00
Jonas Platte
86930581a5
Upgrade Ruma
2023-04-18 13:14:33 +02:00
Jonas Platte
40c1252f48
sdk: Simplify handling of bundled relations in timeline
2023-04-18 13:14:33 +02:00
Alfonso Grillo
cfdc9b2a82
Expose accept_invitation to UniFFI
2023-04-18 12:45:30 +02:00
Jorge Martin Espinosa
c5919e3e63
Add workaround for building Android bindings with supported NDK versions (r23+)
2023-04-17 16:06:46 +00:00
Andrew Ferrazzutti
4fbdd70a53
Use local reference to workflow file
2023-04-14 20:20:59 +09:00
Andrew Ferrazzutti
a78b260857
Install musl-gcc for linux-musl nodejs releases
2023-04-14 17:43:42 +09:00
Damir Jelić
cd865d21c3
Drop outbound group sessions in the SQLite store
...
The format of the outbound group session struct has changed. We nowadays correctly rotate the group session if we can't restore it, but it's still good to avoid logging the error in this case.
2023-04-13 14:48:14 +00:00
Damir Jelić
8137c39f3a
Don't log the raw Ruma sliding sync response
2023-04-13 16:14:47 +02:00
Jonas Platte
f21946ef06
sdk: Avoid raw JSON in debug strings
2023-04-13 16:00:50 +02:00
Damir Jelić
730b66e26c
Add withheld code support
2023-04-13 11:46:19 +02:00
Damir Jelić
316b29c95f
Merge branch 'main' into valere/msc_2399
2023-04-13 10:59:05 +02:00
Jonas Platte
1e737208e5
sdk: Handle ephemeral events after timeline events
2023-04-12 16:15:35 +02:00
Jonas Platte
36b9064e51
sdk: Reduce indentation in read receipt handling code
...
… by factoring out a function.
2023-04-12 15:24:52 +02:00
Jonas Platte
086106a96d
sdk: Simplify return type of fetch_in_reply_to_details
2023-04-12 13:16:36 +02:00
Simon Farre
b9fba69dc7
ffi: Fix kotlin build failure
...
Workaround for https://github.com/mozilla/uniffi-rs/issues/1434
2023-04-12 10:11:07 +00:00
Simon Farre
8bad59bbe1
ffi: Add avatar_url getter for SlidingSyncRoom
...
Signed-off-by: Simon Farre <simon.farre.cx@gmail.com >
2023-04-11 15:47:40 +00:00
Damir Jelić
972d5cefdb
If we can't load an outbound group session from the store, rotate it
...
An error is currently thrown if loading an outbound group session fails.
This error may only affect loading outbound group sessions, while other
store operations continue to work fine. As a result, the user is unable
to send messages, but can still use the application without any problems.
Since outbound group sessions are rotated frequently, we can simply
rotate the session if loading fails. However, if the error is related to
a more serious storage issue, persisting the newly rotated outbound group
session will also fail. If the error is specific to outbound group
sessions, the user will be able to continue using the application without
interruption.
2023-04-11 10:08:06 +02:00
Damir Jelić
c73aeef2ed
Fix the serialization of outbound group sessions in the SQLite store
...
The SQLite crypto store uses rmp_serde to serialize all the data we're
going to store. This works nicely for most things, one exception to this
is the OutboundGroupSession type.
The OutboundGroupSession type stores to-device requests to ensure that
the session doesn't get used before it is shared with the whole group
and to ensure that the to-device requests get restored if the
session gets restored after an application restart.
The to-device requests type critically contain `Raw<AnyToDeviceEvent>`,
the `Raw` type here being the serde_json::Raw type. rmp_serde seems to
serialize this just fine, but later deserialization fails.
We're avoiding the issue by using serde_json to serialize the
OutboundGroupSession.
2023-04-11 10:08:06 +02:00
Damir Jelić
0f8da0b723
Test that to-device requests in the group session can get deserialized
2023-04-11 10:08:06 +02:00
Kévin Commaille
a1cfb4bcf1
sdk: Re-export CrossSigningStatus
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-04-08 21:47:10 +02:00
Ivan Enderlin
f6fb082dc9
chore(sdk): Remove unused methods in sliding_sync
...
chore(sdk): Remove unused methods in `sliding_sync`
2023-04-06 18:02:08 +02:00
Ivan Enderlin
df9f48dc38
chore(sdk): Replace to_string by to_owned.
2023-04-06 18:01:45 +02:00
Ivan Enderlin
0b4c94961d
test(sdk): Fix a test.
2023-04-06 17:42:28 +02:00
Ivan Enderlin
41d44f0d49
chore(sdk): Remove unused methods.
...
Those methods are public, but never used by our current users.
Moreover, there is some big overlaps. For example, `storage_key`,
`cold_cache` and `no_cache` do the same thing: They update the
`storage_key` field. Or `add_fullsync_list` is just a helper that is
never used except in the tests etc.
2023-04-06 16:29:38 +02:00
Jonas Platte
29255781cc
Fix comments in Cargo.toml
2023-04-06 15:49:09 +02:00
Ivan Enderlin
1756aabe35
fix(sdk): SlidingSyncList.room_list emits updates for non-moving rooms
...
fix(sdk): `SlidingSyncList.room_list` emits updates for non-moving rooms
2023-04-06 15:08:47 +02:00
Ivan Enderlin
4ee4906536
chore(sdk): Make Clippy happy.
2023-04-06 11:36:37 +02:00
Ivan Enderlin
fbe162a1bc
test(sdk): Fix an integration test in Sliding Sync.
...
The test does the following:
1. Create 2 (identical) lists,
2. Do a sync.
3. Assert that the 1st and 2nd lists are receiving an update,
4. Add a 3rd (identical) list,
5. Do a new sync,
6. Assert that 3rd list is receiving an update.
This last step is wrong. All lists should receive an update as they
are identical.
2023-04-06 11:29:10 +02:00
Damir Jelić
cebeca85d0
fixup! Minor fixes to the withheld handling
2023-04-06 11:23:27 +02:00
Damir Jelić
8c23b6e7b2
Minor fixes to the withheld handling
2023-04-06 11:18:14 +02:00
Ivan Enderlin
eb0e97b902
test(sdk): Test that SlidingSyncList.room_list receives “diff”.
...
This patch updates a test to ensure that `room_list` receives “diff”
for rooms that are modified by a sync operations, but also by another
updates (like a new event).
2023-04-06 11:14:09 +02:00
Ivan Enderlin
828e36e3af
test(sdk): Test apply_sync_operations removes rooms that have been updated.
2023-04-06 11:14:09 +02:00
Ivan Enderlin
d68a22c378
fix(sdk): SlidingSyncList.room_list emits updates for non-moving room.
...
The `SlidingSyncList.room_list` field is used to store the list of rooms
for a particular Sliding Sync list. It's used by the user to receive
“diff”s when a room sees its position modified. For example when a new
room receives a message, it “climbs back up” the entire room list to
be at the top place. Another example is when a new room is created,
some rooms will move around to give the new room a space. All those
moves will create “diff”.
However, the user also expects to receive a “diff” when a room has
received some updates, even if it's position doesn't change. For
example, when a room is already at the top of the list but receives a
new message: It has received an update, but its position stays the same.
This specific latter feature was implemented before, but it has been
removed by accident in https://github.com/matrix-org/matrix-rust-sdk/
pull/1699 (more specifically in https://github.com/matrix-org/matrix-
rust-sdk/pull/1699/commits/861a05be69a566d9a4ad125dc6ecb418d2b3210f).
At that time, it was not clear why the code was filtering for specific
filled room entires, to set the filled room entries, at the same
position. Zero comment, zero test. I didn't consider this as a feature
but as a bug.
So this patch re-introduces this feature. Hopefully in a more optimal
way. If a room has already triggered a first “diff” because of a
position change, it won't trigger a second “diff” because it has
received an update (which was the case before).
The `SlidingSyncList::handle_response` method has also been renamed
`update`, as it does update, whenever it comes from.
The code has been commented and documented to explain this feature.
Existing tests have been updated, especially for `apply_sync_operations`
which now ensure the `rooms_that_have_received_an_update` collections is
updated accordingly. Another test has been updated specifically to test
the “diff”s received by `room_list`.
2023-04-06 11:09:55 +02:00
Ivan Enderlin
a71970d3de
chore(sdk): Rephrase a panic message.
2023-04-06 10:50:20 +02:00
Ivan Enderlin
c07b060080
feat(sdk): Create vectors with correct capacity to avoid reallocations.
...
`updated_rooms` and `updated_lists` can be created with an initial
capacity. Doing so will avoid reallocations if the vector is too small.
2023-04-06 10:49:15 +02:00
Jonas Platte
b033508e9b
Fix clippy lints
2023-04-06 09:57:37 +02:00
Damir Jelić
ba95a7bfd8
Use BTreeMap instead of HashMap
...
We use BTreeMap everywhere else, so let's be consistent with that
choice.
2023-04-05 14:38:25 +02:00
Damir Jelić
64d76308c6
Use as_ref() instead of stars and ampersands
2023-04-05 14:29:49 +02:00
Damir Jelić
52fef9f373
Don't use a Result return type in the withheld handling method
2023-04-05 14:27:00 +02:00
Damir Jelić
c3437ac4cf
Apply suggestions from code review
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-04-05 14:22:19 +02:00
Damir Jelić
6fd129dcfa
Remove some commented out code and fix some formatting
2023-04-05 13:22:41 +02:00
Damir Jelić
1f8c67bbb2
Use the atomic bool seralizer for the no_olm flag
2023-04-05 13:15:51 +02:00
Damir Jelić
82a4b53cf9
fixup! Apply suggestions from code review
2023-04-05 13:15:38 +02:00
Damir Jelić
673db38a72
Apply suggestions from code review
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-04-05 13:14:07 +02:00
Damir Jelić
50d477b91c
More clippy fixes
2023-04-05 11:54:29 +02:00
Damir Jelić
1c2964f3f3
Update crates/matrix-sdk-crypto/src/types/events/room_key_withheld.rs
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-04-05 11:52:25 +02:00
Damir Jelić
92202e20e7
Fix some clippy warnings
2023-04-05 11:45:50 +02:00
Damir Jelić
c032609f4d
Fix the js tests now that we bumped our DB version
2023-04-05 11:34:28 +02:00
Olivier Wilkinson (reivilibre)
9c54de1817
Downgrade memory store 'Saved changes in <time>' to debug
...
It doesn't seem very interesting since a memory store will be fast anyway. In practice, this fills the console quickly.
2023-04-05 11:31:37 +02:00
Damir Jelić
d606bd3e9f
Document the new withheld content enums
2023-04-05 11:18:50 +02:00
Ivan Enderlin
7c578dccb9
fix(sdk): SlidingSync uses the same storage keys for storing *and* restoring
...
fix(sdk): `SlidingSync` uses the same storage keys for storing *and* restoring
2023-04-05 11:11:47 +02:00
Ivan Enderlin
5563213106
chore(test): Make Clippy happy.
2023-04-05 10:56:08 +02:00
Jonas Platte
91dc87808d
ffi: Add InReplyToDetails
2023-04-05 10:50:08 +02:00
Jonas Platte
1217067f74
ffi: Rename ProfileTimelineDetails to ProfileDetails
2023-04-05 10:50:08 +02:00
Jonas Platte
5b512f020e
sdk: Rename details field to event in InReplyToDetails
2023-04-05 10:50:08 +02:00
Ivan Enderlin
042d6bab72
test(sdk): Test SlidingSync is store and restored correctly.
2023-04-05 10:06:59 +02:00
Jonas Platte
ef3ffda2d3
ffi: Replace EventTimelineItem::{raw, fmt_debug} by debug_info
2023-04-05 09:56:00 +02:00
Jonas Platte
3ac6b10daa
sdk: Add RemoteEventTimelineItem::latest_edit_json
...
… and rename raw to original_json to disambiguate.
2023-04-05 09:56:00 +02:00
Ivan Enderlin
be631849e8
fix(sdk): Move SlidingSync::cache_to_storage to cache.
...
This patch also re-uses the `format_storage_key_*` functions to use the
same key as the `restore_sliding_sync_state` function. It fixes a bug
where the keys were mismatching.
2023-04-05 09:17:54 +02:00
Ivan Enderlin
fc8b9d7de4
feat(sdk): Extract SlidingSync cache functions into their own module.
2023-04-05 09:05:03 +02:00
Jonas Platte
2c38c6c371
sdk: Log in_reply_to field in timeline::Message Debug impl
2023-04-04 18:09:08 +02:00
Damir Jelić
81e2725b6f
Remove DirectWithheldCode
2023-04-04 13:30:29 +02:00
Simon Farre
fc56ae3dcf
Expose invite_user_by_id over the FFI
...
This PR is self explanatory.
Exposes said function to the FFI. Defined in the .adl file,
and defined to throw `ClientError`
Signed-off-by: Simon Farre <simon.farre.cx@gmail.com >
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2023-04-04 09:04:54 +00:00
Chris Smith
e8c56f8163
feat: expose inviter to ffi
...
This allows us to know who has invited us to rooms
2023-04-04 10:29:04 +02:00
Ivan Enderlin
690c3b1977
Merge pull request #1699 from Hywan/feat-sdk-sliding-sync-list-revamp-sync-mode
...
feat(sdk) Revamp Sliding Sync List state lifetime
2023-04-03 15:04:21 +02:00
Ivan Enderlin
ac800180a7
Merge branch 'main' into feat-sdk-sliding-sync-list-revamp-sync-mode
2023-04-03 14:36:26 +02:00
Damir Jelić
b7a78c865c
Ensure correct Olm session selection for encrypted messages
...
In some cases, restoring client state from backups may cause Olm sessions
to become corrupted, resulting in a backward ratchet. As a consequence,
the receiving side is unable to decrypt messages. To address this issue,
the failed side initiates a new Olm session and sends a dummy encrypted
message.
However, this dummy message also creates a new Olm session on the
sender's side. To ensure that both sides use the same new session, we
must sort sessions by their creation timestamp before encrypting new
messages.
Although the session list was sorted correctly previously, we selected
the wrong side of the list, resulting in an outdated session being
selected instead of the newest one. This patch resolves the issue by
selecting the newest Olm session and adds a test to the session getter
logic to prevent reintroduction of this bug.
2023-04-03 13:03:09 +02:00
Ivan Enderlin
aeda2d363c
Merge pull request #1736 from Hywan/feat-sliding-sync-storage
2023-04-03 12:54:49 +02:00
Ivan Enderlin
69af5b3c6f
feat(sdk): When a SlidingSync cache is obsolete, let's remove it.
...
Prior to this patch, when `SlidingSync` was built with a storage key,
the storage was read to find a previous `SlidingSync` version that
was in a cache. To put a `SlidingSync` instance in the cache, it
was serialized to JSON. When one reads from the cache, the value is
deserialized. A problem happens when the internal representation of
`SlidingSync` and other types (e.g. `SlidingSyncList`) have changed (due
to an SDK update for example): Loading a previous state from the cache
results in an error.
After discussion with the teams, clients don't want to deal with
obsolete cache values. In such a scenario, (i) they cannot interact
with the cache to remove the obsolete entry, and (ii) their only
possibility is to log out and log in the user again. What an unfriendly
user experience!
This patch modifies this behaviour. When loading a `SlidingSync` type or
a `SlidingSyncList` type from the cache, 3 cases are now handled:
1. The cache entry exists and has been successfully deserialized: in
this case, we do our business.
2. The cache entry exists, but it wasn't possible to deserialize it: the
cache entry is declared as obsolete, and the entire `SlidingSync`
cache is cleaned up, so all entries for `SlidingSync` and
`SlidingSyncList` are removed from the storage,
3. The cache entry doesn't exist: we do nothing particular.
Note that if one cache is obsolete, all cache entries are removed.
2023-04-03 12:10:50 +02:00
Ivan Enderlin
56a7854b53
Merge branch 'main' into feat-sdk-sliding-sync-list-revamp-sync-mode
2023-04-03 10:10:31 +02:00
Ivan Enderlin
60d4ac14b7
Merge pull request #1725 from Hywan/feat-remove-jack-in
...
feat(labs): Remove `jack-in`
2023-04-01 13:27:20 +02:00
Richard van der Hoff
78b9758377
Merge pull request #1721 from matrix-org/rav/crypto-js-releases
...
Fixes and documentation for crypto-js releases
2023-03-31 11:22:50 +01:00
Richard van der Hoff
a5fd71a251
prettify markdown
2023-03-31 11:08:26 +01:00
Alfonso Grillo
7958a20fc1
Add short_retry on get_profile
2023-03-30 22:00:09 +02:00
Jonas Platte
6878f52885
Upgrade UniFFI
2023-03-30 21:53:02 +02:00
Ivan Enderlin
ea5b4c98c1
feat(labs): Remove jack-in.
...
This was a fun ride, but nobody uses it, and we don't need it anymore.
Thanks for all the fishes.
2023-03-30 18:03:38 +02:00
Ivan Enderlin
60432abe0d
feat(ffi): Add SlidingSync::reset_lists.
2023-03-30 18:01:17 +02:00
Ivan Enderlin
2d537e5211
feat(sdk): Add SlidingSync::reset_lists.
...
The `SlidingSync::stream` method no longer resets the lists everytime
it is called. If one wants to reset the lists, they need to call
`SlidingSync::reset_lists`.
2023-03-30 18:01:16 +02:00
Jonas Platte
7dd086fcdc
Make sqlite bundling optional
2023-03-30 17:59:51 +02:00
Ivan Enderlin
bd6075f6b4
fix(sdk): Try to find workarounds about the bug in SlidingSync Proxy.
...
It still about https://github.com/matrix-org/sliding-sync/issues/52 . We
try to rebuilt a valid `range`. Hopefully, the bug will be fixed soon,
and we will be able to clean that temporary code.
2023-03-30 17:52:33 +02:00
Kévin Commaille
48b67759ed
sdk: Make PaginationOption's custom variant's strategy return a ControlFlow
...
It is semantically more correct than an Option.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-30 14:39:08 +00:00
Richard van der Hoff
f60c678af8
Apply suggestions from code review
...
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2023-03-30 15:38:42 +01:00
innocent fish
a35d96c15e
Update swift.rs
2023-03-30 16:08:06 +02:00
Alfonso Grillo
ade7fabb6b
Add Client::get_profile
2023-03-30 15:44:27 +02:00
Ivan Enderlin
dd4cb9c793
test(sdk): Fix SlidingSync doctests.
2023-03-30 15:10:17 +02:00
Ivan Enderlin
2ace220366
chore(sdk): Rename rooms_list to room_list.
2023-03-30 15:06:19 +02:00
Richard van der Hoff
4f3f9c7af8
Fixes and documentation for crypto-js releases
...
The tags are supposed *not* to contain `v`, for consistency with the other
crates.
2023-03-30 13:57:15 +01:00
Richard van der Hoff
43d4e7b46a
Merge pull request #1719 from matrix-org/release-matrix-sdk-crypto-js-0.1.0-alpha.6
...
matrix-sdk-crypto-js v0.1.0-alpha.6
2023-03-30 13:53:39 +01:00
Ivan Enderlin
4be02d0e99
test(sdk): Wait longer on the server to reply.
2023-03-30 14:43:33 +02:00
Ivan Enderlin
e34708862d
test(sdk): Remove a useless SS test.
2023-03-30 14:31:52 +02:00
Ivan Enderlin
f269202ece
fix(sdk): Try to find a workaround for a bug in the SS Proxy.
...
See https://github.com/matrix-org/sliding-sync/issues/52 for the
explanation. And this patch has comments explaining how I try to work
around this.
2023-03-30 14:23:59 +02:00
Kévin Commaille
408f966a50
sdk: Rename flag to update fully-read marker
...
Its meaning has changed since it is used in more cases.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-30 14:23:57 +02:00
Kévin Commaille
553ffe97a8
sdk: Never insert read marker in last position in timeline
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-30 14:23:57 +02:00
Ivan Enderlin
23f16f065b
fix(sdk): Make out-of-bounds DELETE a no-op.
2023-03-30 13:37:31 +02:00
Richard van der Hoff
f246296ff9
matrix-sdk-crypto-js v0.1.0-alpha.6
Release `crypto-js` / Publish 🕸 [m]-crypto-js (push) Failing after 34s
2023-03-30 12:26:29 +01:00
Mauro
ca6faffc72
bindings: Reset the timeline when the user's ignore list is updated
2023-03-30 11:22:06 +00:00
Ivan Enderlin
4c42205633
chore(labs): Update to the latest SS version.
2023-03-30 12:57:24 +02:00
Richard van der Hoff
f9881065c1
Add an API to notify apps when a megolm key is received
...
This is useful for applications which want to have another go at decryption
when some room keys arrive.
2023-03-30 12:29:39 +02:00
Ivan Enderlin
1af1504ef3
feat(ffi): Update to the latest Sliding Sync version.
2023-03-30 11:42:22 +02:00
Damir Jelić
7fd1c93e1a
Document the fact that we require protoc to build the bindings
2023-03-30 11:06:15 +02:00
Doug
a33d2ad28f
bindings: Add ignore_user
2023-03-30 08:59:19 +00:00
Ivan Enderlin
bd8a97cfd7
feat(sdk): Update the SyncOp::Delete operation.
...
It seems that the `DELETE` operation actually deletes an entry. So
let's update the code to reflect that :-).
2023-03-30 10:35:27 +02:00
Ivan Enderlin
ce94fcc2e2
feat(sdk): Update the SyncOp::Insert operation.
...
It seems that the `INSERT` operation actually inserts a new entry. So
let's update the code to reflect that :-).
2023-03-30 10:00:21 +02:00
Ivan Enderlin
a442ca1893
Merge branch 'main' into feat-sdk-sliding-sync-list-revamp-sync-mode
2023-03-29 17:29:15 +02:00
Ivan Enderlin
db7746062f
doc(sdk): Write more doc.
2023-03-29 17:23:37 +02:00
Ivan Enderlin
bc9d5016dc
chore(sdk): Move maximum_number_of_rooms's update a little bit above.
2023-03-29 17:15:07 +02:00
Ivan Enderlin
581c02307e
fix(sdk): Rewrite SyncOp::Invalidate entirely.
...
`SyncOp::Invalidate` means _invalidating_ a particular range. When a
room is `Filled`, it becomes `Invalidated`, when it is `Invalidated` it
stays `Invalidated`, and when it is `Empty` it stays `Empty`.
Before this patch, `Empty` was becoming `Invalidated`, which apparently
is a bug.
This patch also fixes out-of-bound accesses, and adds many tests.
Finally, this patch renames `update_state` to `update_room_lists`.
2023-03-29 17:11:01 +02:00
Ivan Enderlin
a4f8c35efc
fix(sdk): Rewrite SyncOp::Insert entirely.
...
`SyncOp::Insert` means _inserting_ a new room ID. The `rooms_list`
contains all possible rooms (based on `maximum_number_of_rooms`, a value
returned by the server). Here, inserting = setting
`RoomListEntry::Filled` at a particular index of `rooms_list`, that's
it.
The previous code was doing very complex stuff, like removing things
around the `index` if something etc. It was using the requested ranges
(the range passed to the request) etc.
Applying `SyncOp` should be simple and is focused on updating
`rooms_list` only: the requested ranges have nothing to do here.
This patch also prevents against out-of-bounds acccesses, which wasn't
the case before.
2023-03-29 16:30:06 +02:00
Ivan Enderlin
2878148b0e
fix(sdk): Prevent ouf of bounds accesses for SyncOp::Delete.
...
This patch prevents out of bounds acceses for `SyncOp::Delete`, and adds
more tests.
This patch also removes a cast from `UInt` to `u32` to `usize`. It's now
from `UInt` to `usize` directly.
2023-03-29 16:10:44 +02:00
Ivan Enderlin
d6cfd871c4
feat(sdk): Protect against invalid responses from the server.
2023-03-29 15:55:02 +02:00
Ivan Enderlin
18597f8f63
fix(sdk): Fix out-of-bounds and re-implement SlidingOp::Sync handler.
...
First off, this patch renames `ops` to `sync_operations` and `room_ops`
to `apply_sync_operations`.
Second, the `SlidingOp::Sync` was creating an out-of-bounds access
depending of the range present in the server's response. For example, if
the `rooms_list` contains 5 elements (because the
`maximum_number_of_rooms` is set to 5), and the server replies with:
```json
{
"op": "SYNC",
"ranges": [3, 17],
"room_ids": […]
}
```
the previous code was setting a new `RoomListEntry` at indices `3..=17`,
whilst the `rooms_list` contains only indices from `0..=4`. That's
annoying.
The previous code was also counting the number of `room_ids` for
nothing, just to execute the iterator that was applying the actual
changes in a `map`. Well, everything was fishy.
This patch updates the code to protect against an unexpected server's
reply by raising an `Err`. This patch also adds tests.
2023-03-29 15:30:10 +02:00
Jonas Platte
6b5f0b8ec3
Reset visible timeline when a gappy sync arrives
2023-03-29 14:00:33 +02:00
Damir Jelić
172867fd4d
Simplify the withheld code receiving
2023-03-29 13:44:28 +02:00
Jonas Platte
50cc356c7b
Use Observable for sliding_sync_reset_broadcast_tx
2023-03-29 13:23:24 +02:00
Jonas Platte
2ac192f307
Use str::to_owned instead of str::to_string
...
Expresses intent more clearly.
2023-03-29 13:23:24 +02:00
Damir Jelić
03aba95e1e
Switch the FFI bindings to use the SQLite cryptostore
2023-03-29 11:44:33 +02:00
Ivan Enderlin
616e57eb1c
test(sdk): Update integration test suite for SS.
2023-03-29 11:05:02 +02:00
Ivan Enderlin
5c695bbf8f
feat(ffi): Update add_range calling.
2023-03-29 10:55:14 +02:00
Ivan Enderlin
861a05be69
feat(sdk): Remove updated_rooms from SlidingSyncListInner::update_state.
...
The `updated_rooms` argument was passed to `find_rooms_in_list` to
update the `room_list`: the update is setting the filtered room list
entry to `RoomListEntry::Filled`.
_But_, `find_rooms_in_list` was already filtering rooms which are
`Filled`. So it does… nothing: it filters rooms which are `Filled` to
update them to `Filled`.
So we can remove `find_rooms_in_list` because it becomes useless. And we
can remove `updated_rooms` too.
The `rooms_list` is updated by `rooms_ops` itself. Let's keep
modifications in one unique place.
2023-03-29 10:51:33 +02:00
Damir Jelić
cf17a05ecc
Restructure the withheld code types
2023-03-29 10:45:26 +02:00
Ivan Enderlin
385dd9113b
feat(sdk): Simplify SlidingSyncListInner::update_state.
...
The `update_state` method of `SlidingSyncListInner` has basically
2 cases:
1. For an initial response,
2. For other responses.
The code between the 2 cases were almost identical. Or, they could be
identical. The few exceptions are:
* In the first case, the `rooms_list` updates were taking the
form of a `VectorDiff::Append`, while the second case, it was a
`VectorDiff::PushBack`.
* In the first case, the `is_cold` flag was set to `false`.
It's fine for the clients to receive only a `VectorDiff::Append` event
only. So let's make it uniform.
And it appears that the `is_cold` field is now private, and never read
anywhere else. So… it's… basically useless. We can remove it! It was
previously used here to know which flow to use, but since we can make
both flows identical, its role becomes insignificant.
2023-03-29 09:52:58 +02:00
Ivan Enderlin
3f4f9c1fbd
chore(sdk): Remove a useless reference.
2023-03-29 09:52:05 +02:00
Ivan Enderlin
bf163ef5ad
feat(sdk): Replace checked_sub + unwrap_or_default by saturating_sub.
2023-03-29 09:23:47 +02:00
Ivan Enderlin
83cf820508
chore(sdk): More code in blocks to remove mutable variables with larger scopes.
2023-03-29 09:23:10 +02:00
Jonas Platte
d680b331d0
Make tokio a workspace dependency
2023-03-28 21:08:57 +02:00
Jonas Platte
cd33d8ca38
Always use RwLock and Mutex from tokio
...
… instead of async-lock, which we previously used on wasm.
2023-03-28 21:08:57 +02:00
Jonas Platte
9bfd88cec4
sdk: Always use tokio OnceCell
...
Tokio's sync module works on wasm as well.
2023-03-28 21:08:57 +02:00
Damir Jelić
d5fba19655
Don't allow the no_olm withheld code sent flag to be reset
2023-03-28 14:31:55 +02:00
Ivan Enderlin
ab29e1b319
!debug
2023-03-27 14:32:11 +02:00
Ivan Enderlin
a2dbeda758
feat(sdk): SlidingSyncList cannot be removed from SlidingSync.
...
`create_range` and `SlidingSyncList::next_request` return a `Result`
instead of an `Option`. It was a legacy from the old `impl Iterator` of
`SlidingSyncListRequestGenerator`. But actually, when `create_range`
fails, it must return a `Err` value, not a `None` value.
And since it's a regular error, `sync_once` can propagate the
error. Thus, it is no longer necessary to “update” the list of
`SlidingSyncList`. It's not necessary to remove some items in this list
when the `next_request` method can no return a value: it always returns
a value, except when a error happens.
2023-03-27 14:25:40 +02:00
Damir Jelić
0d3fd31893
Clean up the withheld code types
2023-03-27 09:21:48 +02:00
dependabot[bot]
8b5de47acb
chore(deps): bump openssl from 0.10.45 to 0.10.48 ( #1706 )
...
Bumps [openssl](https://github.com/sfackler/rust-openssl ) from 0.10.45 to 0.10.48.
- [Release notes](https://github.com/sfackler/rust-openssl/releases )
- [Commits](https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.45...openssl-v0.10.48 )
---
updated-dependencies:
- dependency-name: openssl
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-25 21:12:52 +01:00
Kévin Commaille
5a7ea607c6
sdk: Use new filter constructor to enable room members lazy-loading
...
* sdk: Use new filter constructor to enable room members lazy-loading
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-25 21:12:09 +01:00
Flescio
09fc258f9a
ffi: Make name parameter optional in CreateRoomParameters
2023-03-23 16:56:52 +00:00
Ivan Enderlin
fdba90587a
feat(sdk): Reset the SlidingSyncList when starting a stream.
2023-03-23 17:44:25 +01:00
Ivan Enderlin
63ed675158
doc(sdk): Extract the giant SS doc inside a README.md file.
...
Why? Because it takes forever to scroll to the code when opening
`sliding_sync/mod.rs` :-p.
2023-03-23 17:38:20 +01:00
Ivan Enderlin
767e9b3cf2
feat(sdk) Reset SlidingSyncList when a range is modified.
2023-03-23 16:32:53 +01:00
Ivan Enderlin
8d4ceac21f
test(sdk): Continue to fix, test and clean up SlidingSyncList
...
test(sdk): Continue to fix, test and clean up `SlidingSyncList`
2023-03-23 13:18:09 +01:00
Ivan Enderlin
d1616d5654
chore(sdk): Remove a useless comma.
2023-03-23 13:17:54 +01:00
Ivan Enderlin
492e08598c
feat(sdk): Revamp SlidingSyncList::*range*.
...
First off, `set_ranges`, `set_range`, `add_range` and `reset_ranges`
take a `&[(U, U)]` instead of a `Vec<(U, U)>` when a vector was needed,
or takes a `(U, U)` instead of 2 arguments when it was needed.
Second, all those methods now return a `Result<(), Error>`. The
`Error::CannotModifyRanges` is raised if the chosen `SlidingSyncMode`
doesn't allow to modify ranges. Basically, `Selective` does allow a
user to modufy the ranges, but there is no real ranges with `Growing` or
`Paging`. Let's make it an explicit error.
Finally, `SlidingSyncListInner` has 2 methods: `set_ranges` and
`add_range`, but without any “ranges check”; `SlidingSyncList` does call
the inner methods, but does the checks.
2023-03-23 12:34:48 +01:00
Ivan Enderlin
6716939b6d
chore(sdk): Re-order fields in SlidingSyncListInner.
2023-03-23 11:56:08 +01:00
Ivan Enderlin
73959e023b
feat(sdk): Remove for FullSync suffix to sync modes.
2023-03-23 11:53:39 +01:00
Ivan Enderlin
ec02d462ea
feat(sdk): The SlidingSyncList.full_sync_* fields are no longer useful.
...
They are unused. Let's remove them.
2023-03-23 11:50:38 +01:00
Ivan Enderlin
0eee472829
feat(sdk): Remove send_updates_for_items.
...
This field is always set to `true` by all the clients. So let's consider
that something we always want, and let's remove code complexity.
2023-03-23 11:46:56 +01:00
Ivan Enderlin
296328e8e0
feat(sdk): Don't rename SlidingSyncState's variants when serialization.
...
We are going to introduce a BC break. So let's take the opportunity to
get rid off of this renamings too.
2023-03-23 11:37:53 +01:00
Ivan Enderlin
831090c92c
feat(sdk): Export RoomListEntry into its own module.
2023-03-23 11:24:30 +01:00
Ivan Enderlin
fa361aea16
chore(sdk): Make Clippy happy.
2023-03-23 11:18:09 +01:00
Ivan Enderlin
91e9942fcd
feat(sdk): Export FrozenSlidingSyncList into its own module.
2023-03-23 11:15:24 +01:00
Kévin Commaille
5eeea83c19
sdk: Get push actions of retried decrypted events in the timeline
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-23 10:59:55 +01:00
Kévin Commaille
98386cf527
sdk: Get push actions of decrypted events
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-23 10:59:55 +01:00
Kévin Commaille
a3667a21c9
sdk: Simplify e2ee branching of Common::event
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-23 10:59:55 +01:00
Kévin Commaille
fae10ae7f3
sdk: Add private method to get the current push rules
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-23 10:59:55 +01:00
Ivan Enderlin
1db8084c4f
chore(sdk): Make Clippy happy.
2023-03-23 10:38:37 +01:00
Ivan Enderlin
b544639187
chore(sdk): Re-ordering methods inside SlidingSyncList.
2023-03-23 10:07:19 +01:00
Ivan Enderlin
5e1fda9834
test(sdk): Update the assert_ranges macro to be able to define the first list state.
2023-03-23 10:05:34 +01:00
Ivan Enderlin
5bae1a2a4e
chore(sdk): rooms_ops takes a &[(UInt, UInt)] for the ranges.
2023-03-22 16:59:45 +01:00
Ivan Enderlin
defe48bf3c
test(sdk): Test SlidingSyncList::get_room_id.
2023-03-22 16:45:53 +01:00
Ivan Enderlin
caf55308a5
feat(sdk): Remove SlidingSyncList::rooms_updated_broadcast_stream.
...
This method is never used by the clients, so it's basically public dead
code. It doesn't fulfill a particular requirement nor a need, so let's
remove it.
Fixes https://github.com/matrix-org/matrix-rust-sdk/issues/1694 .
2023-03-22 16:40:06 +01:00
Ivan Enderlin
f2aebcb983
test(sdk): (Re)write a test for SlidingSyncListInnner::find_rooms_in_list.
2023-03-22 16:40:06 +01:00
Ivan Enderlin
2840242331
chore(sdk): Use &[…] instead of &Vec<…>.
...
One less pointer indirection.
2023-03-22 16:40:06 +01:00
Ivan Enderlin
69a779a7eb
feat(sdk): Improve SlidingSyncListInner::find_rooms_in_list.
...
The `SlidingSyncListInner::find_rooms_in_list` method can be greatly
improved by using the `Iterator` API.
It was already using `Iterator::skip`, great! Let's continue by using
`Iterator::take` instead of using a stop index.
And let's use `Iterator::enumerate` to avoid using a mutable index.
2023-03-22 16:40:06 +01:00
Ivan Enderlin
b7da197846
doc(sdk): Add missing documentation.
2023-03-22 16:40:06 +01:00
Ivan Enderlin
0b9b01727e
feat(sdk): Remove find_rooms?_in_list from the public API.
...
`SlidingSyncList::find_room_in_list` and
`SlidingSyncList::find_rooms_in_list` aren't useful (and never used) by
the public consumer of this API. Let's remove it. They are only used for
internal purposes.
2023-03-22 16:40:06 +01:00
Ivan Enderlin
0d58695e39
feat(sdk): SlidingSyncListInner::update_request_generator_state returns a Result.
...
Before, the `update_request_generator_state` method was emitting an
`error!` log, but not an error. But that's clearly an error!
This patch updates the method to return a `Result<(), Error>`, and adds
a new variant to `Error`.
2023-03-22 16:40:06 +01:00
Ivan Enderlin
f5ba7ddc4a
fix(sdk): Prevent bugs, remove expensive clones, and simplify SlidingSyncList
...
fix(sdk): Prevent bugs, remove expensive clones, and simplify `SlidingSyncList`
2023-03-22 16:39:30 +01:00
Ivan Enderlin
7052e9ff64
doc(sdk): Fix typos.
2023-03-22 16:38:45 +01:00
Ivan Enderlin
8796bfe874
doc(sdk): Fix typos.
2023-03-22 16:16:33 +01:00
Ivan Enderlin
9e7c6c3632
feat(sdk): Remove deduplication logic from Sliding Sync
...
feat(sdk): Remove deduplication logic from Sliding Sync
2023-03-22 14:44:45 +01:00
Ivan Enderlin
6617e94a9d
Merge pull request #1632 from Hywan/doc-sdk-sliding-sync
...
doc(sdk): Rephrase the Quick refreshing Section
2023-03-22 14:19:46 +01:00
Ivan Enderlin
7e8c8b1a14
chore(sdk): Make Clippy happy.
2023-03-22 13:31:48 +01:00
Ivan Enderlin
9078a30e28
chore(sdk): Move code around, and remove pub on fields of a private struct.
2023-03-22 13:17:52 +01:00
Ivan Enderlin
485ca402f4
test: Use available setter.
2023-03-22 13:17:52 +01:00
Ivan Enderlin
d41293879a
test(sdk): Move tests from list/request_generator.rs to list/mod.rs.
2023-03-22 13:17:52 +01:00
Ivan Enderlin
d5babfbb88
test(sdk): Test SlidingSyncList::(set_)timeline_limit.
2023-03-22 13:17:52 +01:00
Ivan Enderlin
b842b2f96d
feat(sdk): Add getters and setters on SlidingSyncList.
2023-03-22 13:17:52 +01:00
Ivan Enderlin
32e83a942d
fix(sdk): Prevent bugs, remove expensive clones, and simplify SlidingSyncList.
...
There are problems with `SlidingSyncListRequestGenerator`:
* It's part of the module API,
* It contains a clone of `SlidingSyncList`.
To create a `SlidingSyncListRequestGenerator`, one has to
call `SlidingSyncList::request_generator`. It was done in
`SlidingSync::stream`. The problem is that it clones `SlidingSyncList`.
So theoritically it is possible to create multiple request generators
for the _same_ list, and use them to send many requests and to update
the _same_ list with multiple responses. This is utterly error-prone and
can lead to really complex bugs to discover.
Moreover, it's a lot of clones. Cloning a
`SlidingSyncListRequestGenerator` isn't cheap as it means cloning a
`SlidingSyncList`. Moreover, cloning a `SlidingSyncList` isn't cheap as
it means cloning the entire struct.
Having `SlidingSyncListRequestGenerator` inside the module API also
makes the code of `SlidingSync` more complex (why having to deal with
lists and request generators at the same time? we must be very careful
to maintain both side by side? what if a list is removed but not its
request generator? and so on).
So. This patch simplifies all that.
First off, it extracts all the fields of `SlidingSyncList` into a
`SlidingSyncListInner` struct. Then, `SlidingSyncList` has only one
field: `Arc<SlidingSyncListInner>`. Boom, it's now cheap to clone it.
Second, `SlidingSyncListRequestGenerator` is only a
struct with constructors, but there is no extra methods.
`SlidingSyncListRequestGenerator` _no longer_ contains a
`SlidingSyncList`, and doesn't no need a list at all to work. It's just
values.
Third, `SlidingSyncList` holds a `SlidingSyncListRequestGenerator`, and
only one.
Fourth, `SlidingSyncList` (and `SlidingSyncListInner`) now has methods
to handle the internal request generator. The initial `impl Iterator for
SlidingSyncListRequestGenerator` becomes a simple
`SlidingSyncList::next_request` method.
Fifth, previously, the `SlidingSyncList::handle_response`
was never called directly by `SlidingSync`. It was called by
`SlidingSyncListRequestGenerator`! How confusing! `SlidingSync` called
`SlidingSyncListRequestGenerator::handle_response` which was calling
`SlidingSyncList::handle_response`. Now, the flow is more natural:
`SlidingSync` calls `SlidingSyncList::handle_response` and that's it.
Sixth, the `SlidingSyncList::handle_response` is now composed of 2
parts: updating the list itself, and updating the request generator. It
was kind of the case before, but onto two different types.
It was unclear which types were updating `SlidingSyncList`.
For example, `SlidingSyncList::state` was updated by…
`SlidingSyncListRequestGenerator`. Now `SlidingSyncList` is responsible
to update itself, and no one else.
Finally, `SlidingSync` no longer have to deal with
`SlidingSyncListRequestGenerator`. All it has is a set of
`SlidingSyncList`, and that's it!
The tests are still passing, hurray.
2023-03-22 13:17:50 +01:00
Ivan Enderlin
d81e6a18f9
chore(sdk): Format a comment.
2023-03-22 13:15:50 +01:00
Ivan Enderlin
e514415642
test(sdk): Write test suites for SlidingSyncList and siblings
...
test(sdk): Write test suites for `SlidingSyncList` and siblings
2023-03-22 12:29:27 +01:00
Ivan Enderlin
d9096cc64c
chore(sdk): Make Clippy happy.
2023-03-22 12:14:04 +01:00
Ivan Enderlin
f085289d05
chore(sdk): Make Clippy happy.
2023-03-22 11:37:51 +01:00
Damir Jelić
ef81168434
Fix some doc links in the send_attachment docs
2023-03-22 11:36:02 +01:00
Ivan Enderlin
1f04353668
test(sdk): Use vector! from imbl, not im.
2023-03-22 11:20:07 +01:00
Alfonso Grillo
f70b6f5ecf
Expose 'search users' to UniFFI ( #1689 )
2023-03-22 11:15:03 +01:00
Ivan Enderlin
ee7dc2a7ab
chore(sdk): Address PR feedback.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
1256052134
chore(sdk): Clean up.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
28eebe2043
doc(sdk): Explain what SlidingSyncList::handle_response does and does not.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
bb54ff7991
chore(sdk): Move and document the SlidingSyncList::request_generator method.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
aa75d02ae3
feat(sdk): SlidingSyncList::handle_response must be pub(self).
...
This method must be only visible to the current module, not from the
upper/super module.
Note: `pub(self)` is equivalent to no `pub` at all.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
eefef9a81b
test(sdk): Move test to appropriate files.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
15646ec1d6
test(sdk): Fix how TimelineEvent is constructed.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
10380596cd
chore(sdk): Format a comment.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
c4df1cb9aa
chore(sdk): Rename an argument.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
c509b6c76a
test(sdk): Add tests for SlidingSyncList.set_range, add_range and reset_ranges.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
9c2e2238ed
test(sdk): Add a test for SlidingSyncList::ranges.
2023-03-22 11:06:21 +01:00
Ivan Enderlin
2edb5d845e
feat(sdk): SlidingSyncList.ranges & co. takes a Into<UInt>.
...
In `SlidingSyncListBuilder`, the `ranges`, `set_range`, and `add_range`
methods do not take a `u32` but a `U: Into<UInt>`. That's great!
However, in `SlidingSyncList`, the same methods take a `u32`. It makes
the API inconsistent.
This patch fixes that.
2023-03-22 11:06:18 +01:00
Ivan Enderlin
147e5f8f03
fix(sdk): Rename SlidingSyncList.set_ranges to ranges.
...
This patch renames `SlidingSyncList.set_ranges` to `ranges` so that
it matches the same terminology of the `SlidingSyncListBuilder` with
`ranges`, `set_range`, `add_range` and `reset_ranges`.
Consistency is important here.
2023-03-22 10:59:23 +01:00
Ivan Enderlin
8e9cabcbf9
test(sdk): Add test for SlidingSyncList::new_builder.
2023-03-22 10:59:23 +01:00
Ivan Enderlin
42af266806
fix(sdk): Fix SlidingSyncList::new_builder.
...
The `SlidingSyncList::new_builder` method creates a new builder from a
`SlidingSyncList`. This method was missing some configurations, like
`full_sync_maximum_numbre_of_rooms_to_fetch`, `send_updates_for_items`,
`filters`, `ranges` and `timeline_limit`.
This patchs adds those missing configurations.
2023-03-22 10:59:23 +01:00
Ivan Enderlin
7a1fb0b368
fix(sdk): Remove useless fields on SlidingSyncListBuilder.
...
The `SlidingSyncListBuilder` struct has a `state` and a `rooms_list`
fields. Those fields are never updated and no setters or getters exist
to use them. There are just set with defaults, and passed to the final
`SlidingSyncList` type within the `build` method.
If a field is present in a builder type, it means they can be modified,
but it's not the case. So this patch removes them.
2023-03-22 10:59:17 +01:00
Ivan Enderlin
3f72b10831
test(sdk): Write a test case for FrozenSlidingSyncList when serialized.
2023-03-22 10:58:40 +01:00
Ivan Enderlin
6bd95057b6
test(sdk): Write a test case for RoomListEntry when serialized.
2023-03-22 10:58:40 +01:00
Ivan Enderlin
859317a0f6
test(sdk): Write test suites for SlidingSyncState and SlidingSyncMode.
2023-03-22 10:58:40 +01:00
Ivan Enderlin
ace3ff3754
test(sdk): Write test suites for RoomListEntry.
2023-03-22 10:58:40 +01:00
Ivan Enderlin
60b627c2ca
feat(sdk): Rename RoomListEntry.freeze to .freeze_by_ref.
2023-03-22 10:58:40 +01:00
Ivan Enderlin
41615840dc
feat(sdk): Remove deduplication logic from Sliding Sync.
...
Event deduplication is supposed to be handled by the `Timeline`. Sliding
Sync is not responsible to de-duplicate the events, in our model. Having
two different de-duplication logics (one in Sliding Sync, and one in the
Timeline) could create weird situations, and hard to debug issues.
We give it a try by removing the deduplication from Sliding Sync.
2023-03-22 10:53:23 +01:00
Ivan Enderlin
d07b389f4b
chore(sdk): Rename some variables.
2023-03-22 10:52:56 +01:00
Damir Jelić
b2a35fc9cf
Merge branch 'main' into valere/msc_2399
2023-03-21 16:41:55 +01:00
Damir Jelić
900a4f848c
Don't log verification requests as sent if the request id doesn't match
2023-03-21 15:57:16 +01:00
Damir Jelić
c4d73c9901
fixup! Don't send m.no_olm withheld codes out if another session is doing so
2023-03-21 15:56:58 +01:00
Damir Jelić
eb9dd8fb0d
Don't send m.no_olm withheld codes out if another session is doing so
...
The `m.no_olm` withheld code is supposed to be sent out only once for a
given device.
This patch prevents double sending of m.no_olm withheld code by adding
a test that ensures only one group session will send it out.
Previously, the logic for sharing group sessions was mostly correct, but
an edge case was forgotten where two group sessions attempted to share
the withheld code concurrently.
Although there's still a possibility for multiple m.no_olm withheld codes
to be sent out. This may happen during the propagation of the flag
remembering the fact that the `m.no_olm` code has been sent from the
OutboundGroupSession to Device. This scenario is likely unrealistic and
the consequences of sending things twice aren't problematic.
2023-03-21 15:45:32 +01:00
Jonas Platte
a134cc378d
Sort sliding-sync-integration-test dependencies
2023-03-21 13:31:58 +01:00
Jonas Platte
a32fce6cdf
Make all sliding-sync-integration-test dependencies dev-dependencies
2023-03-21 13:31:58 +01:00
Jonas Platte
9ee2d04a41
Feature-gate everything in sliding-sync-integration-test
2023-03-21 12:24:14 +01:00
Mauro
1ce1c5636e
Add support for (un)ignoring users
2023-03-21 12:23:17 +01:00
Damir Jelić
8652cdf752
Test the VerificationState migration
2023-03-21 12:02:31 +01:00
Damir Jelić
32e2ea0288
Allow the old VerificationState enum to be deserialized into the new one
2023-03-21 12:02:31 +01:00
Damir Jelić
7263914f67
Remove the Apple specific auth service tests
...
These tests are doing real network requests towards hosts that are not
under our control.
2023-03-21 12:00:43 +01:00
Florian Renaud
76763a80fe
ffi: Add binding for get_dm_room
2023-03-20 16:30:25 +00:00
Jonas Platte
72ae9dd885
Upgrade eyeball-im
2023-03-20 16:51:28 +01:00
Jonas Platte
816e722807
ffi: Inline uniffi_api modules
...
include_scaffolding! is expected to be used at the crate root now, and
clippy seems happy with the generated code right now.
2023-03-20 15:42:38 +01:00
Jonas Platte
1a1fe97d00
Use Rust conventions for variable names in UDL
2023-03-20 15:42:38 +01:00
Jonas Platte
16687f24f9
sdk: Fix documentation of create_room
2023-03-20 13:56:43 +01:00
Jonas Platte
ea41076c82
sdk: Rename create_dm_room to create_dm and make it public
2023-03-20 13:56:43 +01:00
Jonas Platte
130dc58a5d
Remove redundant cfg attributes
...
The whole encryption module is only enabled with e2e-encryption.
2023-03-20 13:56:43 +01:00
Jonas Platte
9d6e192b9f
sdk: Move create_dm_room out of encryption module
...
Creating DM rooms makes sense for non-encryption-capable client as well.
2023-03-20 13:56:43 +01:00
Jonas Platte
82d1d64f85
sdk: Simplify create_dm_room
...
It doesn't need to call mark_as_dm itself as create_room will do that.
2023-03-20 13:56:43 +01:00
Jonas Platte
39a4dc911f
Remove event contents from (Sync)TimelineEvent Debug impls
2023-03-20 13:21:41 +01:00
Alfonso Grillo
a7ed8e0b45
Update account_data when creating a new dm room
2023-03-20 12:08:21 +01:00
Ivan Enderlin
e64ab6cf9c
Merge pull request #1677 from matrix-org/rav/update-js-bindings-prefix
...
matrix-sdk-crypto-js: drop `v` from release tags
2023-03-20 09:23:29 +01:00
Damir Jelić
43d883da9c
Refactor the room key sharing logic
2023-03-16 19:40:30 +01:00
Richard van der Hoff
42dce635de
matrix-sdk-crypto-js: drop v from release tags
...
Currently, the tags used for releases of this binding have the format:
"matrix-sdk-crypto-js-v0.1.0-alpha.5". This is inconsistent with tags used for
other parts of the project, which omit the `v` prefix.
2023-03-16 17:49:52 +00:00
Richard van der Hoff
7794b230e1
Merge pull request #1675 from matrix-org/release-matrix-sdk-crypto-js-v0.1.0-alpha.5
...
matrix-sdk-crypto-js: prepare v0.1.0-alpha.5
2023-03-16 17:38:33 +00:00
Ivan Enderlin
2d56f550aa
fix(sdk): Fix, test, and clean up SlidingSyncListRequestGenerator
...
fix(sdk): Fix, test, and clean up `SlidingSyncListRequestGenerator`
2023-03-16 17:04:05 +01:00
Ivan Enderlin
b39a224be8
doc(sdk): Use the Rust range notation to avoid ambiguity.
2023-03-16 17:03:25 +01:00
Richard van der Hoff
e6bf74b7db
matrix-sdk-crypto-js v0.1.0-alpha.5
Release `crypto-js` / Publish 🕸 [m]-crypto-js (push) Failing after 41s
2023-03-16 13:47:55 +00:00
Ivan Enderlin
5f06dc8229
doc(sdk): Fix a typo.
2023-03-16 11:53:01 +01:00
Kévin Commaille
46d8d26b71
sdk: Fix a typo
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-16 11:40:47 +01:00
Kévin Commaille
e23be44345
sdk: Store OIDC issuer as a String rather than a Url
...
The url crate normalizes the string, but during OIDC verification steps,
the issuer verification must be made against the exact string that was
provided.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-16 11:40:47 +01:00
Ivan Enderlin
57fb659b86
Merge pull request #1666 from zecakeh/indexeddb-crypto-version
...
indexeddb: Use u32 to represent version of crypto store
2023-03-16 11:12:27 +01:00
Ivan Enderlin
1933fe7a8f
doc(sdk): Fix a typo.
2023-03-16 11:04:18 +01:00
Ivan Enderlin
6a6d94a065
Re-expose the vodozemac and matrix-sdk-crypto versions in the bindings
...
Re-expose the vodozemac and matrix-sdk-crypto versions in the bindings
2023-03-16 10:56:51 +01:00
Ivan Enderlin
ccfb66c576
chore(crypto-nodejs): Fix a lint.
2023-03-16 10:39:43 +01:00
Ivan Enderlin
c2d3afffff
feat(crypto-nodejs): Make Versions a class, not a JS object.
2023-03-16 10:33:41 +01:00
Ivan Enderlin
e1f6fd8a1e
feat(ffi): Create the version and vodozemac_version functions.
2023-03-16 09:53:39 +01:00
Damir Jelić
2f377d536a
fixup! Re-expose the vodozemac and matrix-sdk-crypto versions in the bindings
2023-03-16 09:53:39 +01:00
Damir Jelić
26789f22b0
fixup! Re-expose the vodozemac and matrix-sdk-crypto versions in the bindings
2023-03-16 09:53:39 +01:00
Damir Jelić
3aa1c30f5c
Re-expose the vodozemac and matrix-sdk-crypto versions in the bindings
2023-03-16 09:53:37 +01:00
Ivan Enderlin
5e23bd09bc
feat(ci): aarch64-apple-ios should work on rustc stable.
2023-03-16 09:01:14 +01:00
Ivan Enderlin
c8bad4b86e
doc(sdk): Fix a typo.
2023-03-16 08:55:25 +01:00
Ivan Enderlin
07c366983d
doc(sdk): Fix a typo.
2023-03-16 08:24:05 +01:00
Ivan Enderlin
51abedda59
feat(ffi): Update SlidingStateState variants.
2023-03-16 08:21:11 +01:00
Ivan Enderlin
9d5a1fda3c
doc(sdk): Fix typos or improve.
2023-03-16 08:11:45 +01:00
Damir Jelić
61ea15eb39
Merge branch 'main' into valere/msc_2399
2023-03-15 19:31:04 +01:00
Kévin Commaille
fe69948926
sdk: Add a method to change the room name
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-15 17:28:08 +00:00
Valere
248b8db309
Extended verification states
...
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2023-03-15 18:16:31 +01:00
Ivan Enderlin
ca5cabb7e1
doc(sdk): Fix a typo.
2023-03-15 18:08:19 +01:00
Ivan Enderlin
7a2b1e6e1f
doc(sdk): Fix a typo.
2023-03-15 17:59:11 +01:00
Ivan Enderlin
c0f84bb8da
test(sdk): Fix tests and improve speed.
...
To improve the speed, we simply reduce the numbers of rooms involved in
the test.
2023-03-15 17:54:39 +01:00
Kévin Commaille
9a9b142630
indexeddb: Use u32 to represent version of crypto store
...
Like for the state store, the bindings expose the version as an f64
while the web API expects an unsigned integer.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-15 17:08:33 +01:00
Ivan Enderlin
a2dcfa905f
fix(sdk): Fix, test, and clean up SlidingSyncList.
...
This patch should ideally be split into multiple smaller ones, but life
is life.
This main purpose of this patch is to fix and to test
`SlidingSyncListRequestGenerator`. This quest has led me to rename
mutiple fields in `SlidingSyncList` and `SlidingSyncListBuilder`, like:
* `rooms_count` becomes `maximum_number_of_rooms`, it's not something
the _client_ counts, but it's a maximum number given by the server,
* `batch_size` becomes `full_sync_batch_size`, so that now, it
emphasizes that it's about full-sync only,
* `limit` becomes `full_sync_maximum_number_of_rooms_to_fetch`, so that
now, it also emphasizes that it's about ful-sync only _and_ what the
limit is about!
This quest has continued with the renaming of the `SlidingSyncMode`
variants. After a discussion with the ElementX team, we've agreed on the
following renamings:
* `Cold` becomes `NotLoaded`,
* `Preload` becomes `Preloaded`,
* `CatchingUp` becomes `PartiallyLoaded`,
* `Live` becomes `FullyLoaded`.
Finally, _le plat de résistance_.
In `SlidingSyncListRequestGenerator`, the `make_request_for_ranges`
has been renamed to `build_request` and no longer takes a `&mut self`
but a simpler `&self`! It didn't make sense to me that something
that make/build a request was modifying `Self`. Because the type of
`SlidingSyncListRequestGenerator::ranges` has changed, all ranges now
have a consistent type (within this module at least). Consequently, this
method no longer need to do a type conversion.
Still on the same type, the `update_state` method is much more
documented, and errors on range bounds (offset by 1) are now all fixed.
The creation of new ranges happens in a new dedicated pure function,
`create_range`. It returns an `Option` because it's possible to not be
able to compute a range (previously, invalid ranges were considered
valid). It's used in the `Iterator` implementation. This `Iterator`
implementation contains a liiiittle bit more code, but at least now
we understand what it does, and it's clear what `range_start` and
`desired_size` we calculate. By the way, the `prefetch_request` method
has been removed: it's not a prefetch, it's a regular request; it was
calculating the range. But now there is `create_range`, and since it's
pure, we can unit test it!
_Pour le dessert_, this patch adds multiple tests. It is now
possible because of the previous refactoring. First off, we test the
`create_range` in many configurations. It's pretty clear to understand,
and since it's core to `SlidingSyncListRequestGenerator`, I'm pretty
happy with how it ends. Second, we test paging-, growing- and selective-
mode with a new macro: `assert_request_and_response`, which allows to
“send” requests, and to “receive” responses. The design of `SlidingSync`
allows to mimic requests and responses, that's great. We don't really
care about the responses here, but we care about the requests' `ranges`,
and the `SlidingSyncList.state` after a response is received. It also
helps to see how ranges behaves when the state is `PartiallyLoaded`
or `FullyLoaded`.
2023-03-15 16:57:29 +01:00
Kévin Commaille
1e1e0d7e6d
ci: Make sure all rendered docs examples are compiling
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-15 14:42:12 +01:00
Kévin Commaille
5d1a738162
sdk: Fix generate_image_thumbnail example in docs
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-15 14:42:12 +01:00
Jonas Platte
e4e9efb7d9
ffi: Put CreateRoomParameters back into the UDL file
...
… to restore the default values of some fields.
2023-03-15 13:09:54 +01:00
Doug
b1074e400e
sdk: Add get_media_file function
2023-03-15 09:22:53 +00:00
Ivan Enderlin
9574f93320
feat(sdk): Add more Sliding Sync logs
...
feat(sdk): Add more Sliding Sync logs
2023-03-15 09:58:02 +01:00
Ivan Enderlin
c3bcbf8952
chore(sdk): Rephrase logs a little bit.
2023-03-15 09:41:39 +01:00
Jonas Platte
739dd8cf93
Fix clippy complaint
2023-03-14 18:34:23 +01:00
Jonas Platte
c7e1d617ec
ffi: Use UniFFI derives for types no longer referenced in UDL
2023-03-14 18:34:23 +01:00
Jonas Platte
ae85e18588
ffi: Use UniFFI proc-macros for more Client methods
2023-03-14 18:34:23 +01:00
Damir Jelić
516d849ef2
Allow room key forwarding to be enabled and disabled ( #1365 )
...
Co-authored-by: Ivan Enderlin <ivan@mnt.io >
2023-03-14 18:23:39 +01:00
Damir Jelić
eb2bf61236
Merge pull request #1657 from matrix-org/poljar/session-creator-info
...
Improve the docs of the inbound group session type
2023-03-14 17:33:24 +01:00
Damir Jelić
0985043a6a
Apply suggestions from code review
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2023-03-14 17:01:03 +01:00
Damir Jelić
36b739b830
Improve the docs of the inbound group session type
2023-03-14 15:50:03 +01:00
Doug
eeea4f23bc
fix(bindings): More authentication service server name fixes
...
- Trim any trailing slashes
- If server name parsing fails, try as a URL instead of throwing
- Add tests
- Fix typo & clippy
2023-03-14 14:40:19 +00:00
Alfonso Grillo
c9a6898c73
Add a guide for contributing to UniFFI bindings
2023-03-14 15:39:09 +01:00
Damir Jelić
18c33aefa1
Merge pull request #1633 from matrix-org/rav/fix_wait_if_user_pending
...
Fix races in `wait_if_user_pending`
2023-03-14 14:59:20 +01:00
Damir Jelić
2c7c251e47
Silence an invalid clippy warning
2023-03-14 14:45:19 +01:00
Damir Jelić
f3ee6c735b
Fix some formatting issue where cargo fmt failed to take care of things
2023-03-14 14:28:34 +01:00
Damir Jelić
4f9cb48ef8
Use a Display implementation to record the SequenceNumber in logs
2023-03-14 14:28:27 +01:00
Damir Jelić
9880619d81
Merge branch 'main' into rav/fix_wait_if_user_pending
2023-03-14 14:26:28 +01:00
Mauro
a8204987be
Add convenience methods for updating a room's avatar
2023-03-14 13:03:52 +00:00
Kévin Commaille
cc585974e0
sdk: Get push actions of events received via back pagination
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-14 14:02:01 +01:00
Kévin Commaille
aebd5fe4eb
sdk: Fix timeline highlight test
...
Update Ruma to fix the server default push rules.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-14 14:02:01 +01:00
Mauro
7ab134233e
bindings: Set pusher from client + notification service stub
...
Co-authored-by: ismailgulek <ismailg@matrix.org >
2023-03-14 13:36:36 +01:00
Kévin Commaille
0f54877b31
feat(sdk): Add methods to only send receipts newer than the current ones in the timeline
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-14 13:32:30 +01:00
Kévin Commaille
1c9aa7c907
refactor(sdk): Add private method to get the fully-read event for a timeline.
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-14 13:32:30 +01:00
Damir Jelić
4041c875d1
Merge pull request #1460 from matrix-org/andy/enhance_store
...
Store encryption settings
2023-03-14 12:36:42 +01:00
Andy Uhnak
d226738d15
More pub(crate) methods
2023-03-14 10:43:40 +00:00
Andy Uhnak
404b95ab84
Missing migration method in UDL
2023-03-14 10:28:41 +00:00
Andy Uhnak
0d082f6b96
Update js tests
2023-03-14 10:28:15 +00:00
Andy Uhnak
5bf9182549
Fix issues after rebase
2023-03-14 10:28:15 +00:00
Andy Uhnak
1177bdd394
Indexdb migration
2023-03-14 10:28:15 +00:00
Andy Uhnak
98ca774118
Constrain store methods
2023-03-14 10:28:12 +00:00
Andy Uhnak
8f13023333
Missing stores
2023-03-14 10:27:11 +00:00
Andy Uhnak
51b3bf4c75
Add room settings migration
2023-03-14 10:27:11 +00:00
Andy Uhnak
283137f190
Introduce RoomSettings
2023-03-14 10:27:11 +00:00
Andy Uhnak
33b348c376
Constrain new api to Store struct
2023-03-14 10:27:11 +00:00
Andy Uhnak
7e7c91699f
Generic key-value API
2023-03-14 10:27:11 +00:00
Andy Uhnak
b4b111f91f
Store encryption settings
2023-03-14 10:27:11 +00:00
Jonas Platte
0f7d839c49
Undo room_type => room_state rename in serialized form of RoomInfo
2023-03-13 16:45:44 +01:00
Jonas Platte
ee6c0d9486
Simplify TimelineEvent construction
2023-03-13 16:31:19 +01:00
Jonas Platte
7121179b6a
sdk: Make test code less repetitive
2023-03-13 16:31:19 +01:00
Jonas Platte
59edc22a35
Use Action covenience methods
...
Now Action::Coalesce will also generate a notification.
2023-03-13 16:31:19 +01:00
Jonas Platte
e9058f58be
Upgrade Ruma
2023-03-13 16:31:19 +01:00
Jonas Platte
7dee9648cf
sdk: Clone VerificationRequest twice in generate_qr_code method again
...
… required for the returned Future to be Send.
2023-03-13 15:34:14 +01:00
Alfonso Grillo
786e9b5db9
Add createRoom UniFFI binding
2023-03-13 15:33:18 +01:00
valere
e20db574ec
Merge branch 'main' into valere/msc_2399
2023-03-13 14:51:23 +01:00
Ivan Enderlin
c6c259144a
chore(sdk): Rename enum variants to be consistent across all the modules.
2023-03-13 14:29:12 +01:00
Damir Jelić
58e99a645f
Don't use a type alias for the sequence number
...
Using a wrapper type allows us to hide the internals a bit better and
we're now implementing Ord which is used in the comparison.
2023-03-13 14:17:12 +01:00
Damir Jelić
5d6cf2d33a
Remove some clones when creating a /keys/query request
...
The part of code that converts a list of users to the actual
/keys/query request uses the chunks() method. This method operates on
the slice. Our list/vec of users gets dereferenced into a slice before
we create our chunks. The chunks can't take ownership of the data, which
in turn requires us to clone the user IDs for them to be put into the
request.
Itertools has a chunks() method which operates on an iterator which we
can utilize to remove, not only the clone, but also a collect call.
At the same time, let's make the conversion step a simple functional
mapping and document what's going on.
2023-03-13 14:17:12 +01:00
Damir Jelić
5f1a22e26f
Remove some useless ? -> Ok invocations
...
We can just return the result directly instead of doing the error
conversion dance using the question mark operator
2023-03-13 14:17:12 +01:00
Damir Jelić
6afb6f1e27
Use an Option for the KeysQueryDetails instead of a default value
...
The Option conveys our intention a bit better compared to the default
value. While nothing bad can happen, since the request IDs map will be
empty by default, it's a bit scary to have a valid sequence number since
an i64 defaults to 0.
2023-03-13 14:17:12 +01:00
Ivan Enderlin
032356566e
chore(sdk): Rewrite a small part of the code to make it clearer.
2023-03-13 14:07:36 +01:00
Ivan Enderlin
d7468ec158
Update crates/matrix-sdk/src/sliding_sync/mod.rs
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2023-03-13 13:49:21 +01:00
Kévin Commaille
929538608a
timeline: Expose if an event should be highlighted
...
Only events received via sync.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-13 13:47:06 +01:00
Kévin Commaille
d5a56bcbc7
sdk: Expose calculated push actions for event handlers
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-13 13:47:06 +01:00
Kévin Commaille
84ff8980f3
sdk-base: Expose calculated push actions on event
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-13 13:47:06 +01:00
Jonas Platte
84d83dda0a
base: Add RoomInfo::state accessor
2023-03-13 13:17:15 +01:00
Jonas Platte
fb4b347433
base: Rename RoomType to RoomState
2023-03-13 13:17:15 +01:00
Richard van der Hoff
e1c6ac9787
Merge branch 'main' into rav/fix_wait_if_user_pending
2023-03-13 11:52:11 +00:00
Ivan Enderlin
35bb18a1e8
feat(sdk): Add more Sliding Sync logs.
...
This patch adds more logs around `SlidingSync` to ease debugging sessions.
2023-03-13 11:41:20 +01:00
Ivan Enderlin
483bef0748
Merge pull request #1645 from Hywan/fix-sdk-fixme
2023-03-13 11:21:17 +01:00
Ivan Enderlin
3c25ad1489
doc(sdk): Remove a FIXME that is actually fixed.
...
The #1386 issue is closed. Yepee.
2023-03-13 09:05:32 +01:00
Jonas Platte
8d83a996a6
Handle another new clippy lint
...
Issue about false positives:
https://github.com/rust-lang/rust-clippy/issues/10482
2023-03-11 13:13:50 +01:00
Jonas Platte
595e34aad5
Silence new clippy lint for generated code
2023-03-11 13:13:50 +01:00
Jonas Platte
cc35ee72b8
Upgrade eyeball to 0.4.0
2023-03-11 13:13:50 +01:00
Jonas Platte
b148ea2fb1
Bump locked version of clap
...
To work around this clippy bug:
https://github.com/rust-lang/rust-clippy/issues/10421
2023-03-11 13:13:50 +01:00
Mauro
2bb66f0f2e
bindings: Expose leave and reject_invitation functions to FFI
2023-03-10 18:07:13 +01:00
valere
8057a3691f
unused import
2023-03-10 16:00:22 +01:00
valere
057cf0bde7
unneeded trait impl
2023-03-10 08:57:56 +01:00
valere
c43d9d3e43
post rebase fix
2023-03-09 17:27:34 +01:00
Ivan Enderlin
331ea35be6
fix(sdk): SlidingSync has a lock for both pos _and_ delta_token
...
fix(sdk): `SlidingSync` has a lock for both `pos` _and_ `delta_token`
2023-03-09 17:10:42 +01:00
Richard van der Hoff
fc9dbae23b
fixup! Rewrite wait_if_user_pending to fix races
2023-03-09 16:06:37 +00:00
valere
9733d9842a
Merge branch 'main' into valere/msc_2399
2023-03-09 17:04:21 +01:00
Ivan Enderlin
b9fd451d54
feat(sdk): Move Client.root_span inside ClientInner
...
feat(sdk): Move `Client.root_span` inside `ClientInner`
2023-03-09 17:03:27 +01:00
Ivan Enderlin
3511a4a053
fix(sdk): SlidingSync has a lock for both pos _and_ delta_token.
...
This patch updates `SlidingSync.pos` and `.delta_token`. Each field has their
own lock. It's annoying because they must updated at the same time to not be
out-of-sync.
So a new field `SlidingSync.position` of type `SlidingSyncPositionMarkers` is
created. It holds `pos` and `delta_token. This new field is behind a single
`RwLock`.
2023-03-09 16:47:11 +01:00
Ivan Enderlin
7f52292e92
chore(sdk): Remove useless comment.
2023-03-09 16:43:41 +01:00
valere
980c9cb4f5
report partially withheld error as MissingRoomKey
2023-03-09 16:39:02 +01:00
valere
2368ac74de
feat(withheld) expose withheld code in error binding
2023-03-09 16:38:38 +01:00
Ivan Enderlin
cc69efc3f8
feat(sdk): Move Client.root_span inside ClientInner.
2023-03-09 15:12:11 +01:00
Richard van der Hoff
5a06c11ac0
Move UserKeyQueryResult to store
...
Now that `wait_if_user_key_query_pending` is in Store, it makes more sense that
the result type be in the same module.
2023-03-09 13:11:34 +00:00
Richard van der Hoff
d2fdc20733
Rip out redundant KeysQueryListener
2023-03-09 13:11:34 +00:00
Richard van der Hoff
16871d1dcd
Rewrite wait_if_user_pending to fix races
2023-03-09 13:11:34 +00:00
Richard van der Hoff
508f1bc976
Fix races between /sync and /keys/queries ( #1619 )
...
The comments in the code should explain the general approach, but to give an overview:
We assign a unique sequence number to each device-list-invalidation notice, and keep track
of the sequence number at which each user was most recently invalidated. Then, when we
build a `/keys/query` request, we take note of the current sequence number. Finally, when
we get the response from that `/keys/query` request, we compare that sequence number
with the most-recent-invalidation of each user that is now supposedly up-to-date. All
of that means that we can see if the user has been invalidated *since* we built the
`/keys/query` request, in which case our request may have raced against the new device,
so we do not mark the user as up-to-date.
To make that work, we need to keep track of the sequence number for in-flight `/keys/query`
requests; we do that in the `IdentityManager`. Since there should only ever be at most one
batch of requests in flight, that is relatively easy; however, we also record the request ids
just to check that the application isn't doing something weird.
There is no need to persist the sequence numbers to permanent storage: provided the
`IdentityManager` and `Store` objects have a lifetime at least as long as an in-flight
`/keys/query` request, it is sufficient just to retain the `dirty` bit in permanent storage,
and then, when we reload the ephemeral `Store` cache, to treat everything with a `dirty`
bit as a "new" invalidation.
Fixes : #1386 .
2023-03-09 10:57:20 +00:00
Ivan Enderlin
0419967158
doc(sdk): Rephrase the Quick refreshing Section.
...
With https://github.com/matrix-org/matrix-rust-sdk/pull/1601 , it's safer to
cancel a stream at any time, as any `Future` cancellation. This documentation
section of `SlidingSync` is no longer relevant as is, and can be rephrased.
2023-03-09 11:56:33 +01:00
Ivan Enderlin
da5c79482b
feat(ffi): Rethink TaskHandle
...
feat(ffi): Rethink `TaskHandle`
2023-03-08 17:21:52 +01:00
Ivan Enderlin
4996a19b31
feat(ffi): Rethink TaskHandle.
...
With https://github.com/matrix-org/matrix-rust-sdk/pull/1601 ,
`TaskHandle::with_callback` is no longer necessary.
This patch updates `TaskHandle` as follows:
1. Before, the `handle` and `callback` fields were not mutually exclusive!
Indeed, the `callback` field was used as an abort mechanism, but _also_ as a
finalizer, i.e. a code that runs _after_ the cancellation of `handle`. Now
that the callback-based solution is no longer used, we can keep one usage for
this field and rename it `finalizer`.
2. The `handle` field is no longer optional, as it will always be set.
3. The `with_callback` method is renamed `new` as it's now the only constructor.
4. The `set_callback` method is renamed `set_finalizer`.
Tadaaa.
2023-03-08 17:09:47 +01:00
Ivan Enderlin
d720861fbd
fix(bindings): SlidingSync.sync returns an immediately cancellable TaskHandle
...
fix(bindings): `SlidingSync.sync` returns an immediately cancellable `TaskHandle`
2023-03-08 16:39:09 +01:00
Ivan Enderlin
c517f38ec8
sliding-sync: process receipt extension response
...
sliding-sync: process receipt extension response
2023-03-08 16:29:56 +01:00
Ivan Enderlin
ac863409bb
doc(sdk): Remove notion of fairness.
2023-03-08 16:20:50 +01:00
Kegan Dougal
417008cc87
Clippy
2023-03-08 15:14:59 +00:00
Ivan Enderlin
5dd404d2f1
doc(sdk): Precise in which order SS responses will be handled.
2023-03-08 16:09:05 +01:00
Kegan Dougal
2c0466a8cc
Unbreak tests; don't shadow
2023-03-08 15:03:41 +00:00
kegsay
aec65c818b
Update testing/sliding-sync-integration-test/src/lib.rs
...
Co-authored-by: Ivan Enderlin <ivan@mnt.io >
2023-03-08 14:51:26 +00:00
Jonas Platte
0d9d130833
Replace StateStoreDataKey::encoding_key by associated constants
2023-03-08 15:51:13 +01:00
Jonas Platte
26e259455a
Adhere to module naming conventions
2023-03-08 15:51:13 +01:00
Ivan Enderlin
2f637cda6f
doc(sdk): Add note about fairness of the SS lock.
2023-03-08 15:33:40 +01:00
Ivan Enderlin
64ae77ec70
feat(sdk): Run SS response handling in a single non-cancellable block.
2023-03-08 15:15:16 +01:00
Jonas Platte
932cf2ad99
Fix experimental features not compiling without encryption
2023-03-08 15:03:20 +01:00
Jonas Platte
68f8ed5a92
Add futures-util as a workspace dependency
...
… and always activate its `alloc` feature.
Fixes building matrix-sdk without the e2e-encryption feature.
2023-03-08 15:03:20 +01:00
Kegan Dougal
4670142a83
Clippy
2023-03-08 13:21:56 +00:00
Kegan Dougal
9a53602d73
Formatting
2023-03-08 12:58:48 +00:00
Kegan Dougal
48bf20fcca
Add integration test for receipts in sliding sync
2023-03-08 12:53:23 +00:00
Mauro
be6c7c8b4c
Add user avatar URL caching
2023-03-08 13:30:46 +01:00
Ivan Enderlin
832146b43d
feat(sdk): Create SlidingSyncInner.
...
Move all `SlidingSync`'s fields into a new `SlidingSyncInner` type, and then
update `SlidingSync` to contain a single `inner: Arc<SlidingSyncInner>` field.
First off, it's much simpler to understand what's behind an `Arc` for
“clonability” of `SlidingSync`, and what's not. We don't need to worry about
adding a new field that is not behind an `Arc` for a specific reason or
anything. The pattern is clear now.
Second, this is required for next commits.
2023-03-08 12:12:58 +01:00
Ivan Enderlin
66d4ced90f
chore: Add some inline documentation.
2023-03-08 12:01:57 +01:00
Jonas Platte
5c2915bb6a
crypto-ffi: Use uniffi derives for types no longer referenced in UDL
2023-03-08 11:12:11 +01:00
Jonas Platte
fb23cbff97
crypto-ffi: Use UniFFI proc-macros for more OlmMachine methods
2023-03-08 11:12:11 +01:00
Jonas Platte
9fe880d05d
Clean up formatting of olm.udl
2023-03-08 11:12:11 +01:00
Jonas Platte
7af2bea2fc
Upgrade UniFFI
2023-03-08 11:12:11 +01:00
Kegan Dougal
f1829faa99
Merge branch 'main' into kegan/receipts-ss
2023-03-08 09:33:48 +00:00
valere
a767187ff6
add more tests
2023-03-08 10:06:46 +01:00
Ivan Enderlin
7369010964
feat(sdk): Make SlidingSync::handle_response _sync_, no more _async_.
...
The idea is to group all async and await points in `sync_once`. It's easier to
think about it.
2023-03-08 09:41:32 +01:00
Ivan Enderlin
07f6a3b345
chore: Remove warnings.
2023-03-08 09:35:47 +01:00
Ivan Enderlin
8f6f20bbe7
fix(bindings): SlidingSync.sync returns an immediately cancellable TaskHandle.
...
Before this patch, `SlidingSync::sync` was returning a callback-based
`TaskHandle`. It was waiting on the “stream loop” to finish (since it's a long-
poll, it means waiting 2*30s, cf. our code), before checking an atomic flag has
some value to decide whether it was time to leave the loop or not. So when the
user is cancelling this `TaskHandle`, a response (if any) was always handled.
But in the meantime, it was possible to start a new `sync`, and it seems like
it creates bugs.
After this patch, `SlidingSync::sync` now returns a handle-based `TaskHandle`.
It means that cancelling it will cancel the “stream loop” immediately. If
no response was in-flight from the server, that's perfect, no problem. If a
response was in-flight, the inner `pos` of the `SlidingSync` instance won't be
updated as the response won't be handled. So the server will re-send the same
response with the next sync request.
I guess it's better this way. Thoughts?
2023-03-08 09:35:47 +01:00
Ivan Enderlin
6a9cf1f9ce
feat(sdk): SlidingSync::stream can match expected responses
...
feat(sdk): `SlidingSync::stream` can match expected responses
2023-03-08 09:14:32 +01:00
Ivan Enderlin
f8ce49cc49
chore: Add documentation.
2023-03-08 08:56:38 +01:00
Ivan Enderlin
46d71acb44
chore: Update ruma to a specific revision.
2023-03-08 08:56:38 +01:00
Ivan Enderlin
9f0563eb95
feat(sdk): SlidingSync::stream can match expected responses.
...
This patch adds a new feature.
Each call to `SlidingSync::stream` generates a unique `stream_id`. This
`stream_id` is passed to requests as a `txn_id` field. Returned responses must
hold the same `txn_id`, otherwise it means `stream` has received unexpected
responses from another `stream` or something else.
So far, when the `txn_id` field of the response and the `stream_id` don't
match, a log with the `ERROR` level is raised. Should we do more, like ignoring
the response entirely? Not sure yet.
2023-03-08 08:56:32 +01:00
valere
bd48cae28d
unused import
2023-03-07 19:24:50 +01:00
valere
69749ab8fe
feat(withheld) fix experimental-algorithms
2023-03-07 19:07:27 +01:00
valere
97b5a3a61b
feat(withheld) cleaning
2023-03-07 19:04:44 +01:00
valere
0ec3aca727
refactor(withheld) store withheld as ShareInfo
...
and store no_olm sent in device
2023-03-07 18:46:52 +01:00
Kévin Commaille
18e6f10367
examples: Also handle SSO login in the login example
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-07 15:12:33 +01:00
Kévin Commaille
d77efd7327
state-store: Replace methods to get and set key-value data
...
Avoid to make the API bigger when we want to add new key-value data
in the store.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-07 13:52:37 +01:00
Kévin Commaille
5b28c69cfc
sled: Rename session store to kv
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-07 13:52:37 +01:00
Kévin Commaille
61796a2725
sled: Move state store keys into keys module
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-07 13:52:37 +01:00
Kévin Commaille
f538b5e595
sled: Move the state store migrations to a separate file
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-07 13:52:37 +01:00
Kévin Commaille
4d1363e683
indexeddb: Merge session and sync_token stores into new kv store
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-07 13:52:37 +01:00
Damir Jelić
9324702b04
feat(bindings): Add a method to partially migrate data
2023-03-07 13:29:00 +01:00
Jonas Platte
0c4c73084d
Appease clippy
2023-03-07 12:53:32 +01:00
Jonas Platte
6ce51b5890
Remove unnecessary allow attribute
2023-03-07 12:53:32 +01:00
Jonas Platte
3ff1844da4
base: Remove unused Deserialize implementation
2023-03-07 12:53:32 +01:00
Jonas Platte
99cbf3122b
ci: Work around frequent codecov upload errors
2023-03-07 11:08:09 +01:00
Kévin Commaille
e09ec389d1
indexeddb: Fix migration of state store
...
The IndexedDB API expects an unsigned integer for the version.
The web-sys bindings expose it as a f64 so versions like 1.1 and 1.2
were used. The were converted back to uint in JS which means the version
was always 1.0 and no real upgrade was processed
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-07 10:04:09 +01:00
Kévin Commaille
2aec3d0502
indexeddb: Move the state store migrations to a separate file
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-07 10:04:09 +01:00
Damir Jelić
2f974c11f7
Simplify handling of sliding sync extensions
...
Simplify handling of sliding sync extensions
This patch simplifies the logic for handling sliding sync extensions.
These extensions are sticky, meaning that once enabled in one request,
they do not need to be repeatedly enabled for subsequent requests.
However, the previous logic tried to accommodate the case where the
extensions were initially disabled to reduce the size and processing
time of the initial response. This resulted in complex and error-prone
code.
With this patch, we have removed support for disabling to-device events
and streamlined the handling of sync extensions.
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-03-07 08:48:05 +01:00
Richard van der Hoff
79ee4b59ee
matrix-sdk-crypto: enable tracing for in-crate tests
2023-03-06 19:25:47 +01:00
Jonas Platte
01a66d4874
Fix unnecessary cfg(all())
2023-03-06 18:25:16 +01:00
valere
1ddcc97f84
refactor(withheld) collect_session_recipient result struct
2023-03-06 12:23:10 +01:00
valere
c6a12304ba
refactor(msc2399) avoid iterating twice on devices
2023-03-06 11:46:37 +01:00
Jonas Platte
50114f4e74
Mention changelogs in PR template
2023-03-06 10:41:18 +01:00
Jonas Platte
792b60c501
Remove most mentions of conventional commits
2023-03-06 10:41:18 +01:00
Jonas Platte
d8465a2c1e
Add a very basic changelog to crates/matrix-sdk
2023-03-06 10:41:18 +01:00
Damir Jelić
8550eaeed0
Make sure that syncing members is only happening if they aren't already synced
2023-03-06 10:00:00 +01:00
Damir Jelić
071ba2376e
Make the majority of fields of the RoomInfo private
2023-03-06 10:00:00 +01:00
Damir Jelić
7ec98ff721
Remove a race condition when fetching members and sending out room keys
2023-03-06 10:00:00 +01:00
Florian Renaud
f03f7c8d1a
Fix a typo in the integration tests readme
2023-03-06 09:29:23 +01:00
Stefan Ceriu
0dd2b12141
chore(ffi): Remove now unnecessarly stored is_soft_logout session and client state property. The did_receive_auth_error(is_soft_logout) client delegate is enough.
2023-03-03 18:10:57 +01:00
Stefan Ceriu
d513cb9a47
chore(ffi): remove now unused start_sync method and related properties
2023-03-03 18:10:57 +01:00
Stefan Ceriu
e550c16c14
Broadcast UnknownToken API client errors, handle them on the FFI client side and send a did_receive_auth_error delegate call
2023-03-03 12:13:26 +01:00
Sam Wedgwood
0da29057f8
feat(sdk): Expose prepare_encrypted_file function
...
Signed-off-by: Sam Wedgwood <sam@wedgwood.dev >
2023-03-03 09:27:10 +00:00
Kegan Dougal
5881503a6a
Clippy
2023-03-02 14:49:16 +00:00
kegsay
e261d37756
Apply suggestions from code review
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-03-02 14:48:00 +00:00
Richard van der Hoff
a2da63758c
Use a separate GHA cache for each matrix build ( #1605 )
...
You can't update a GHA cache once you create it, so if we use the same cache
for each job in a matrix build, then we end up populating it for the first job
that completes, so any slower jobs don't get their dependencies cached.
On the other hand, if we create 20 500MB cache items on each build, we're going
to exhaust the cache storage as soon as we do a build. So, instead, let's just
do the caching for the main branch, and hope that other branches can still
benefit from it.
2023-03-02 14:10:53 +00:00
Richard van der Hoff
a86754a317
Minor tweaks to the github actions configurations ( #1606 )
...
* Replace custom cancellation action with `concurrency`
* Improve step names
... so don't have three steps with the same name
* Bump version of checkout action
checkout@v2 uses an old version of nodejs, which is deprecated.
2023-03-02 14:04:59 +00:00
Kegan Dougal
5c3d02cb89
sliding-sync: process receipt extension response
...
Needs some kind of tests, but this should do the trick.
2023-03-02 13:53:11 +00:00
Kévin Commaille
e84a43dbaa
Split StateStore integration tests into a trait
...
To declare the tests, the macro is still used but the content of the
tests is moved in the StateStoreIntegrationTests trait.
Allows to get the proper line reported when a panic occurs,
and have linting, formatting and IDE suggestions.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-03-02 14:35:51 +01:00
Richard van der Hoff
2fe08a90c5
Reinstate protoc for a couple of GHA jobs ( #1607 )
...
Looks like #1604 broke the build :(
2023-03-02 12:47:58 +00:00
Richard van der Hoff
bdb9d274ce
Skip installing protoc where it is unneeded ( #1604 )
...
This seems to have been cargo-culted to lots of places where it is redundant.
2023-03-01 22:17:36 +00:00
Ivan Enderlin
862b4a3df7
chore(bindings): Clean up and code simplification on matrix_sdk_ffi::sliding_sync
...
chore(bindings): Clean up and code simplification on `matrix_sdk_ffi::sliding_sync`
2023-03-01 20:12:45 +01:00
Ivan Enderlin
1dccea8735
doc: Fix a typo.
2023-03-01 19:59:55 +01:00
Ivan Enderlin
e1fe1279c2
Merge pull request #1598 from Hywan/chore-sdk-sliding-sync-list-cleanup
...
chore(sdk): Various clean up on Sliding Sync (List)
2023-03-01 16:56:57 +01:00
Richard van der Hoff
15513b0ada
Clean up the way we build xtask in CI ( #1600 )
...
Currently, the cache of the xtask binary isn't working terribly well:
* we seem to build it on each run anyway, presumably because we don't cache any of the intermediate build
artifacts. Running the binary directly rather than indirecting via "cargo" prevents this.
* There is no sharing of the cache between the "rust" and "bindings" CI, because we use different cache keys.
This PR addresses both problems, and hopefully speeds up CI a bit as a result.
2023-03-01 15:50:31 +00:00
Jonas Platte
c9e6d3e2dc
Make RemoteEventTimelineItem fields private, provide methods instead
2023-03-01 16:45:43 +01:00
Jonas Platte
400879c819
Make LocalEventTimelineItem fields private, provide methods instead
2023-03-01 16:45:43 +01:00
Jonas Platte
aac9d9c29b
Move TimelineItemContent and related types into a new submodule
2023-03-01 16:45:43 +01:00
Jonas Platte
770a67678c
Move RemoteEventTimelineItem into its own module
2023-03-01 16:45:43 +01:00
Jonas Platte
1452a2124f
Move LocalEventTimelineItem into its own module
2023-03-01 16:45:43 +01:00
Jonas Platte
daa3b80870
Re-export and document LocalEventTimelineItem, RemoteEventTimelineItem
2023-03-01 16:45:43 +01:00
Ivan Enderlin
ccd9ad7b49
chore(bindings): Simplify the code.
...
Rust is a beautiful language. Let's use all the great constructions it gives to
us to write pretty code.
2023-03-01 16:42:47 +01:00
Ivan Enderlin
4212980f32
chore(bindings): Remove a From<JoinHandle> for TaskHandle impl.
...
This implementation is never used.
2023-03-01 16:42:09 +01:00
Ivan Enderlin
9b1c5079e6
chore: cargo fmt.
2023-03-01 15:58:22 +01:00
Ivan Enderlin
a341caa773
chore(sdk): Continue the move from view to list in Sliding Sync.
2023-03-01 15:46:40 +01:00
Ivan Enderlin
b4bf544676
test: Continue the move from view to list in Sliding Sync.
2023-03-01 15:43:59 +01:00
Ivan Enderlin
bfb55d782f
chore(sdk): Clean up rooms_ops.
2023-03-01 15:38:15 +01:00
Ivan Enderlin
3bad2a84ad
chore(sdk): Remove SlidingSyncListRequestGenerator::live_request.
2023-03-01 15:17:53 +01:00
Ivan Enderlin
866c91ffbc
chore(sdk): Simplify code of Sliding Sync request generator.
2023-03-01 15:17:31 +01:00
Ivan Enderlin
c03ba55f24
chore(sdk): Rename InnerSlidingSyncListRequestGenerator to GeneratorKind.
2023-03-01 15:04:37 +01:00
Ivan Enderlin
1f5c4feafc
chore(sdk): Extract Sliding Sync request generators into their own module.
2023-03-01 15:01:02 +01:00
Ivan Enderlin
6d2055449d
chore(bindings): Continue to rename view to list in Sliding Sync.
2023-03-01 14:51:34 +01:00
Ivan Enderlin
f5cc6feccd
chore(sdk): Split the list.rs module into list/mod.rs and list/builder.rs.
2023-03-01 14:43:58 +01:00
Ivan Enderlin
c5d5deba8e
chore: Continue the renaming from view to list for Sliding Sync.
2023-03-01 14:39:09 +01:00
Ivan Enderlin
d829fd3376
chore(bindings): Continue the renaming from view to list for Sliding Sync.
2023-03-01 14:38:43 +01:00
Ivan Enderlin
50a248c18b
chore(sdk): Continue the renaming from view to list for Sliding Sync.
2023-03-01 14:38:26 +01:00
Ivan Enderlin
c366eadf33
chore(sdk): Rename variables, clean up code, improve documentation…
2023-03-01 14:35:46 +01:00
Jonas Platte
318ede131d
refactor(indexeddb): Use IndexeddbStateStoreError in StateStore impl
2023-03-01 14:30:13 +01:00
Jonas Platte
146db59370
refactor(base): Add an Error type to StateStore trait
2023-03-01 14:30:13 +01:00
Ivan Enderlin
97dd68e7fc
fix(sdk): Deal with missing data in Sliding Sync's responses
...
fix(sdk): Deal with missing data in Sliding Sync's responses
2023-03-01 14:24:24 +01:00
Ivan Enderlin
4e4c745032
chore(sdk): Update all mentions to view as list in SlidingSyncList.
2023-03-01 14:20:44 +01:00
Ivan Enderlin
f03767318f
chore(sdk): Update all mentions to view as list in SlidingSync and SlidingSyncBuilder.
2023-03-01 14:18:40 +01:00
Ivan Enderlin
cf83112bf0
chore(sdk): Move FrozenSlidingSyncList lower in the file.
2023-03-01 13:58:55 +01:00
Ivan Enderlin
575eea4701
fix(sdk): Deal with missing data in Sliding Sync's responses.
...
The Sliding Sync server might not send some parts of the response, because they
were sent before and the server wants to save bandwidth. So let's update values
only when they exist.
2023-03-01 12:19:30 +01:00
Ivan Enderlin
5377bb7ecf
fix(sdk): Rename SlidingSyncView to SlidingSyncList.
...
The specification describes “list”, not “view”. Consistency is important, so
let's rename this type!
2023-03-01 12:09:34 +01:00
Ivan Enderlin
629b74e4f5
chore(sdk): Rename the sliding_sync::view module to …::list.
2023-03-01 11:56:01 +01:00
Ivan Enderlin
9475bb4d53
chore(indexeddb): Update version of uuid
...
chore(indexeddb): Update version of `uuid`
2023-03-01 09:09:15 +01:00
Ivan Enderlin
452588a18e
chore(indexeddb): Update version of uuid.
2023-03-01 08:26:28 +01:00
Stefan Ceriu
ff5dedbb07
fix(sliding_sync): Prevent PagingFullSync and GrowingFullSync from going over the total room count
2023-02-28 18:32:11 +01:00
valere
6539dc3060
quick typo
2023-02-28 17:53:54 +01:00
valere
7b8608e4c5
refactor(withheld) better type for no_olm
2023-02-28 17:38:37 +01:00
Stefan Ceriu
5c3972938e
chore: Add platform versions for swift CI tests
2023-02-28 15:06:23 +01:00
Jonas Platte
b936d3e32d
chore: Remove workaround for clippy bug that was fixed
2023-02-28 12:36:08 +01:00
Kévin Commaille
da8d74ccc1
feat(sdk): Keep track of events read receipts in the timeline API
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-28 09:44:35 +01:00
Kévin Commaille
6aad2a661d
refactor(sdk): Rename ProfileProvider to RoomDataProvider
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-28 09:44:35 +01:00
Kévin Commaille
3139204f4b
fix(examples): Don't use the sled store if the session is not persisted
...
Running the same example twice
borks encryption.
Instead point to an example that shows how to do it.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-28 09:20:53 +01:00
Kévin Commaille
1684dbe0a1
feat(examples): Add example to persist a session
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-28 09:20:53 +01:00
Doug
9531dc195a
fix(bindings): Fix double quotes when replying to a reply.
2023-02-27 18:23:49 +01:00
Sam Wedgwood
abab6dcf0f
docs(crypto): Fix typo
...
Signed-off-by: Sam Wedgwood <sam@wedgwood.dev >
2023-02-27 15:39:01 +00:00
Ivan Enderlin
d699161981
chore(sdk): Code reorganization of the sliding_sync module + doc improvement
...
chore(sdk): Code reorganization of the `sliding_sync` module + doc improvement
2023-02-27 15:27:08 +01:00
Ivan Enderlin
927c44bec3
doc(sdk): Fix doctests + remove mentions to futures-signals.
2023-02-27 15:08:13 +01:00
Ivan Enderlin
96248248ca
chore(sdk): Move UpdateSummary at the bottom of the module.
2023-02-27 13:56:04 +01:00
Ivan Enderlin
b7b86fa95b
fix(sdk): Few fixes and cleans up of SlidingSync itself
...
fix+chore(sdk): Few fixes and cleans up of `SlidingSync` itself
2023-02-27 13:50:48 +01:00
Ivan Enderlin
4f7186a840
chore(sdk): Simplify the implementation of RoomListEntry.
2023-02-27 13:49:34 +01:00
Ivan Enderlin
9b062fa782
chore(sdk): Move RoomListEntry into the sliding_sync::view module.
2023-02-27 13:43:40 +01:00
Ivan Enderlin
4d8c3172a4
chore(sdk): Extract Error into its own module.
2023-02-27 13:42:01 +01:00
Ivan Enderlin
b1c9ea9aa3
chore(sdk): Move SlidingSyncMode into the sliding_sync::view module.
2023-02-27 13:38:54 +01:00
Ivan Enderlin
49eee14665
chore(sdk): Move SlidingSyncState into the sliding_sync::view module.
2023-02-27 13:38:09 +01:00
Ivan Enderlin
6cec946401
chore(sdk): Improve documentation of SlidingSync.
2023-02-27 13:36:08 +01:00
Jonas Platte
d06e8ccfc5
refactor: Upgrade eyeball and use SharedObservable
...
… but not in sliding sync yet, where some planned refactorings might
conflict with this.
2023-02-27 13:29:28 +01:00
Ivan Enderlin
ac1d5afac3
doc(sdk): Improve inline documentation with link to an issue.
2023-02-27 13:29:03 +01:00
Ivan Enderlin
f51b51b19e
chore(sdk): Avoid mapping to a function returning ().
2023-02-27 12:14:01 +01:00
Ivan Enderlin
16c9845a47
chore(sdk): Rename SlidingSync.failure_count to .reset_counter.
...
This patch cleans up the `SlidingSync::stream` method. It renames variables,
improves log messages etc.
This patch also creates a new `MAXIMUM_SLIDING_SYNC_SESSION_EXPIRATION`
constant. This value was previously hardcoded and lost in the code, now it's
easier to spot it for further updates.
This patch finally renames the `failure_count` field to `reset_counter`,
because it doesn't count the number of failure, but the number of
`ErrorKind::UnknownPos` exactly, i.e. the number of times we reset the
`SlidingSync` state.
2023-02-27 12:09:14 +01:00
Ivan Enderlin
4dbd1a7db4
fix(sdk): Fix join in SlidingSync::sync_once.
...
This patch cleans up the `SlidingSync::sync_once` method by renaming variables,
adding more comments, simplifying the code by reducing the number of variables
etc.
This patch also changes `futures_util::join!` to `futures_util::future::join`.
It does the same but the macro needs the `async-await-macros` feature to be
turned on, while the second works without any features.
Finally, this patch improves the log messages by making them more clear for a
new reader.
2023-02-27 11:56:16 +01:00
Ivan Enderlin
e5c85410a8
doc(sdk): Fix documentation, add links etc.
2023-02-27 11:54:48 +01:00
Ivan Enderlin
98ea3f096b
chore(sdk): Clean up code of SlidingSync::cache_to_storage.
2023-02-27 11:54:13 +01:00
Anderas
f0986643ce
chore(crypto): Log Olm session identifiers
...
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2023-02-27 10:59:30 +01:00
valere
f4d4d96c8e
support migration for outbound after withheld addtition
2023-02-27 09:56:56 +01:00
Ivan Enderlin
b214a0e098
feat(sdk): Remove clones of large responses in Sliding Sync
...
feat(sdk): Remove clones of large responses in Sliding Sync
2023-02-27 09:47:26 +01:00
Ivan Enderlin
70380a6ee4
doc(sdk): Improve documentation of SlidingSync::handle_response.
2023-02-27 09:30:50 +01:00
valere
39997376af
fix js binding test
2023-02-25 16:33:16 +01:00
valere
58fa9d7767
fix ci
2023-02-25 16:18:06 +01:00
valere
ad18ecc2c1
cleaning
2023-02-25 10:50:37 +01:00
valere
ff500fc707
fix unused result
2023-02-25 10:39:17 +01:00
valere
76a286c91d
feat(withheld) sled store support
2023-02-25 10:31:23 +01:00
valere
6cc31a0e13
fix clippy
2023-02-24 17:15:51 +01:00
valere
228b963f74
feat(withheld) fix indexeddb test
2023-02-24 16:39:37 +01:00
Jonas Platte
1783cd7738
test: Remove unused constant
2023-02-24 12:39:55 +01:00
Jonas Platte
32e8cb76b0
ci: Remove unused FeatureSet variant
2023-02-24 12:39:55 +01:00
valere
81c9f57e02
clippy fix
2023-02-23 18:02:45 +01:00
Benjamin Kampmann
e162c99074
feat: Handy function to update power levels of a room
2023-02-23 17:53:48 +01:00
Benjamin Kampmann
6465398322
feat: expose power_levels.user_can_do on RoomMember
2023-02-23 17:53:48 +01:00
valere
6b948711b9
feat(withheld) Integration tests
2023-02-23 17:47:57 +01:00
Ivan Enderlin
f803e58e36
chore(sdk): Keep to_remove inside its own scope.
2023-02-23 16:53:16 +01:00
Ivan Enderlin
23b3e3aa10
chore(sdk): Format code a little bit.
2023-02-23 16:40:48 +01:00
Ivan Enderlin
fcfdf5c57c
chore(sdk): Rename a variable in SlidingSync::handle_response.
2023-02-23 16:40:48 +01:00
Ivan Enderlin
3b01e4f9a6
chore(sdk): Use T::default instead of Default::default.
2023-02-23 16:39:56 +01:00
Ivan Enderlin
3c44f87bee
doc(sdk): Simplify one documentation.
2023-02-23 16:39:39 +01:00
Ivan Enderlin
af6cd85cf4
chore(sdk): SlidingSyncRoom::new no longer needs a mutable inner.
2023-02-23 16:27:19 +01:00
Ivan Enderlin
54654aa0c7
chore(sdk): Simplify references, thanks Clippy.
2023-02-23 16:03:11 +01:00
Ivan Enderlin
778d1211c7
feat(bindings): Replace many scripts by one xtask
...
Ganfra/kotlin binding scripts
2023-02-23 15:58:40 +01:00
Ivan Enderlin
c69d28ef79
feat(sdk): Remove clones of large responses in Sliding Sync.
...
I admit this patch is quite tricky. Please try to follow me.
So, first off, in `SlidingSyncRoom::new`, we were clearing the timeline,
because somehow it exists twice in memory at this step.
Which led me to understand how `SlidingSync::handle_response` was working.
I've clarified how this part of the code works. We are dealing with 2 kind of
responses for a specific reason: `SyncResponse` and `v4::Response`, now it's
documented and I hope it's clearer.
Then, I notice that we were passing a clone of the entire sliding sync
response (`v4::Response`) to `Client::process_sliding_sync`. I thought it was
suboptimal, so I've updated the code to take a reference. It led me to update
`BaseClient::process_sliding_sync`. It was a little bit tricky, but I reckon we
have less clones now than before.
And now, back to `SlidingSync::handle_response`, I was able to compute the
`timeline` correctly by draining it from the `v4::Response`, or by moving it
from `SyncResponse`. So it's no longer necessary to have this clearing code
inside `SlidingSyncRoom::new`. Honestly it has nothing to do at this place
before.
To conclude: We have cleaner code, and less clones.
What thing I reckon could be optimized, is that the entire `timeline`
(`Vec<TimelineEvent>`) is cloned to be passed to `Client::handle_timeline`. So
this timeline exists in 2 places: in Sliding Sync, and somewhere else. I don't
believe it's a problem now, that's how it works, but we must be aware of that.
2023-02-23 15:21:21 +01:00
Jonas Platte
d0c8ec7a22
refactor: Replace remaining usage of futures-signal with eyeball(-im)
2023-02-23 15:08:41 +01:00
Doug
01e3a31a11
fix(bindings): Verify entered homeserver before proxy availability
...
The reported errors weren't that helpful to the user.
Additionally attempt discovery when a URL is entered before falling back to the URL directly.
2023-02-23 12:12:53 +00:00
ganfra
83dcb0eb48
xtask kotlin : fix formatting
2023-02-23 11:53:32 +01:00
Jonas Platte
6c92bf8745
refactor(sdk): Remove unused dependency
2023-02-23 11:47:51 +01:00
Jonas Platte
ba6fc794b0
refactor(base): Replace futures-signals with eyeball
2023-02-23 11:47:51 +01:00
Jonas Platte
17b86b7c38
refactor(crypto): Replace futures-signals with eyeball
2023-02-23 11:47:51 +01:00
valere
9894d3c72d
feature(withheld) indexeddb store implem
2023-02-23 10:13:32 +01:00
boxdot
d5154577a0
feat(sdk): Add custom login method
...
The `Client::login_custom` allows to login by using a custom login
method. In particular, it is possible to login to Synapse which supports
JWT authentication.
Signed-off-by: boxdot <d@zerovolt.org >
2023-02-23 08:16:04 +01:00
Ivan Enderlin
5be00d5950
chore(sdk): Many clean ups in SlidingSync
...
chore(sdk): Many clean ups in `SlidingSync`
2023-02-22 20:16:54 +01:00
Ivan Enderlin
f3928e8d35
chore(sdk): Remove an unnecessary clone in SlidingSyncRoom::update.
2023-02-22 20:03:11 +01:00
Ivan Enderlin
c766d8b3ef
chore(sdk): Address PR feedback.
2023-02-22 20:00:49 +01:00
Ivan Enderlin
4d33fe1c31
chore(sdk): Rename some variable inside FrozenSlidingSyncRoom.
2023-02-22 19:59:57 +01:00
Ivan Enderlin
e80713e933
chore(sdk): SlidingSyncRoom::update takes ownership of room_data.
...
First off, it's not necessary for `SlidingSyncRoom::update` to take a reference
to `room_data: v4::SlidingSyncRoom`. When `update` is called, the iterator owns
its items.
Second, by taking ownership of `room_data`, we no longer need to clone all the
data we need to assign to `self.inner`.
2023-02-22 19:59:57 +01:00
Ivan Enderlin
5d356ca1b5
feat(sdk): Avoid locking prev_batch in SlidingSyncRoom::timeline_builder.
2023-02-22 19:59:57 +01:00
Ivan Enderlin
56daa6cb8f
chore(sdk): Rename SlidingSyncRoom pub(crate) from to pub(super) new.
...
First off, `SlidingSyncRoom.from` doesn't need to be visible to the entire
crate, only to `crate::sliding_sync.
Second, it's a constructor, so let's call it `new`.
2023-02-22 19:59:43 +01:00
Kévin Commaille
bcc04bdf35
feat(sdk): Add conversion from EventTimelineItem and VirtualTimelineItem to TimelineItem
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-22 16:59:22 +00:00
Ivan Enderlin
ebe8ce3177
feat(sdk): Make SlidingSync.pos already private
...
feat(sdk): Make SlidingSync.pos already private
2023-02-22 17:42:30 +01:00
Ivan Enderlin
1d02515186
chore(sdk): Re-organizing the code inside sliding_sync::room.
...
1. Put `FrozenSlidingSyncRoom` at the bottom of the module.
2. Put merge 2 `impl SlidingSyncRoom` together.
3. Remove the `AliveRoomTimeline` type alias.
4. Improve the documentation.
2023-02-22 17:38:37 +01:00
Ivan Enderlin
0abef77408
doc(sdk): Improve documentation of SlidingSyncBuilder.
2023-02-22 17:29:40 +01:00
Jonas Platte
fe7f157253
refactor(bindings): Use UniFFI proc-macros for CrossSigningStatus
2023-02-22 17:21:21 +01:00
Ivan Enderlin
5a62ec3fc1
chore(ffi) Rename StoppableSpawn to TaskHandle
...
chore(ffi) Rename `StoppableSpawn` to `TaskHandle`
2023-02-22 17:11:36 +01:00
Ivan Enderlin
5727726e5d
feat(sdk): Make SlidingSync.pos already private.
...
So far, the `SlidingSync.pos` field was public to the crate. In order to avoid
breaking the internal state of this type, its visibility is now private.
However, we need to be able to change the value when testing the
`SlidingSync` type itself. To achieve that, this patch removes the old
`force_sliding_sync_pos` function, and implements 2 new functions: `set_pos`
and `pos` directly on `SlidingSync` only when `#[cfg(any(test, feature ="testing"))]`.
2023-02-22 17:07:50 +01:00
Ivan Enderlin
dec4b2122b
doc(sdk): Improve documentation of SlidingSyncMode.
2023-02-22 16:51:42 +01:00
Ivan Enderlin
cfcafc8425
chore(ffi) Rename StoppableSpawn to TaskHandle.
...
Because it is what it is.
2023-02-22 16:48:46 +01:00
valere
42934ea7e4
feature(withheld) ffi bindings
2023-02-22 15:46:56 +01:00
kegsay
7e64c15145
fix: look for the right list when waiting for updates
...
Otherwise it will time out after 30s and then continue executing,
causing a slow test.
2023-02-22 14:42:32 +00:00
valere
e56d380f65
fix store after rebase
2023-02-22 14:28:20 +01:00
ganfra
f72d9c2016
Merge branch 'main' into ganfra/kotlin_binding_scripts
2023-02-22 13:31:56 +01:00
Jonas Platte
95f1867816
chore: Delete sled-state-inspector
...
The sled store is on its way out and nobody is using this.
2023-02-22 13:17:01 +01:00
Jonas Platte
b1062a67e0
fix(sdk): Rewrite decryption retrying to fix invalid index bug
...
Previously, it was possible for us to use invalid indices when:
- We retried decrypting multiple events at once
- One of them (not the last) was an edit or reaction
This lead to a situation where we would remove the UTD item once
decryption for it was successfully retried, but not account for the
resulting index shift for all later timeline items.
2023-02-22 12:44:11 +01:00
Janne Heß
02a213c1b5
feat(sdk): Add support to change display names of devices
...
Signed-off-by: Janne Heß <janne.hess@helsinki-systems.de >
2023-02-22 10:55:54 +00:00
Archit Bhonsle
64ec5ec561
feat(crypto): Expose and re-expose the version of the matrix-sdk-crypto crate
2023-02-22 10:21:48 +00:00
ganfra
953d4c0ef7
Remove kotlin bindings for now
2023-02-22 11:00:05 +01:00
Ivan Enderlin
1469e9033c
feat(crypto-nodejs): OlmMachine.initialize takes a new optional store type
...
feat(crypto-nodejs): `OlmMachine.initialize` takes a new optional store type
2023-02-22 10:33:26 +01:00
ganfra
260e7c2d5e
Update kotlin xtask to not build aar
2023-02-22 10:28:08 +01:00
Archit Bhonsle
ae4ed2e7c8
feat(crypto): Re-expose the version of vodozemac
2023-02-22 09:45:25 +01:00
valere
28fadb875a
Post rebase fix
2023-02-21 17:48:05 +01:00
valere
3dbad4229a
feat(withheld): sql store support
2023-02-21 15:05:14 +01:00
valere
c497efc27a
feat(withheld): handle incoming withheld + report error
2023-02-21 15:04:58 +01:00
valere
0154cccd4b
feat(withheld) Remember no_olm and implement in memory store
2023-02-21 15:03:04 +01:00
valere
99232f2340
refactor(withheld)
2023-02-21 15:00:34 +01:00
valere
592be5bd57
feat(withheld) basic no_olm
2023-02-21 15:00:34 +01:00
valere
dc0fe35103
feat(withheld) balcklist + refactoring
2023-02-21 15:00:34 +01:00
valere
7accfdc2ef
feat(withheld) Implement MSC2399
2023-02-21 15:00:34 +01:00
Damir Jelić
655d7d00d0
chore(crypto): Add support for encrypted m.dummy events
...
This mostly just silences an incorrect log warning that we received an unsupported event.
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-02-21 14:33:14 +01:00
Jonas Platte
ac5b439249
chore(sdk): Add an extra trace event to TimelineEventHandler::add
2023-02-21 12:11:03 +01:00
Jonas Platte
f76bc16a10
fix(sdk): Lock timeline state once for decryption retrying
...
Before, we were releasing the lock and re-obtaining it between obtaining
item indices and using them for decryption retrying.
2023-02-21 12:11:03 +01:00
Jonas Platte
a89a12701a
refactor(sdk): Remove unneeded Arc around MutableVec
2023-02-21 10:20:11 +01:00
Jonas Platte
843fe6a239
refactor(sdk): Remove derive_builder
2023-02-21 10:20:11 +01:00
Jonas Platte
cb06feea22
refactor(sled): Remove derive_builder
...
… and use owned Builder pattern like for Client.
2023-02-21 10:20:11 +01:00
Jonas Platte
b0e7f3d031
refactor(indexeddb): Remove derive_builder
...
… and use owned Builder pattern like for Client.
2023-02-21 10:20:11 +01:00
Jonas Platte
b96532878b
refactor(sdk): Replace futures-signals with eyeball-im in the timeline
2023-02-20 18:01:31 +01:00
Ivan Enderlin
b439d60b1f
feat(sdk): SlidingSyncView.state, .rooms_list and .rooms_count are now private
...
feat(sdk): `SlidingSyncView.state`, `.rooms_list` and `.rooms_count` are now private
2023-02-20 16:25:02 +01:00
Ivan Enderlin
e8af3e2d60
chore(clippy): Make Clippy happy.
2023-02-20 15:39:23 +01:00
Ivan Enderlin
1f3b8048c7
chore(jack-in): Use the latest SS API.
2023-02-20 15:39:23 +01:00
Ivan Enderlin
48257ac7cd
test(sdk): SS integration test suites use the new API.
2023-02-20 15:39:23 +01:00
Matteo Ludwig
dffc65007c
feat(bindings): Add AudioInfo & AudioMessageContent to matrix-sdk-ffi
...
Signed-off-by: Matteo Ludwig <ludwig@silpion.de >
2023-02-20 14:01:06 +00:00
Ivan Enderlin
3796469a29
doc(sdk): Fix Sliding Sync examples.
2023-02-20 14:24:38 +01:00
Ivan Enderlin
d49ceddfd5
feat(sdk): SlidingSyncView.state, .rooms_list and .rooms_count are now private.
...
Before this patch, `SlidingSyncView` has the following fields that were public:
`state`, `rooms_list` and `rooms_count`. Since they are `Mutable`, they can be
changed from the outside, and then will break the internal state of the view.
This problem is mentioned in https://github.com/matrix-org/matrix-rust-sdk/
issues/1474.
This patch solves this by making them prviate. Phew. That was simple!
But wait, we have a problem now. `matrix-sdk-ffi` was relying on them. So
this patch adds “helpers” methods on `SlidingSyncView`, like `state_stream`,
`rooms_list`, `rooms_list_stream`, `rooms_count` and `rooms_count_stream`.
Let's add new ones when it's necessary.
2023-02-20 14:22:42 +01:00
Ivan Enderlin
03c3f66c9a
doc(sdk): Fix Sliding Sync examples.
2023-02-20 14:20:22 +01:00
Ivan Enderlin
7b06822687
chore(sdk): Group impl blocks for the same SlidingSyncView in a single impl block.
2023-02-20 14:15:20 +01:00
Jonas Platte
1f128c1dd6
refactor(sdk): Remove Mutable<_> around SlidingSyncView#sync_mode
2023-02-20 13:20:33 +01:00
Jonas Platte
e92841d6bc
refactor(sdk): Inline Mutable type aliases
2023-02-20 13:20:33 +01:00
Jonas Platte
a112076664
refactor(sdk): Remove usage of MutableBTreeMap
...
No instance was ever subscribed to, so we can just use a regular shared RwLock.
2023-02-20 13:20:33 +01:00
Jonas Platte
2f9106a6d0
refactor(sdk): Make SlidingSync fields private
2023-02-20 13:20:33 +01:00
Ivan Enderlin
8a70df80b2
doc(sdk): Fix Sliding Sync module documentation.
...
doc(sdk): Fix Sliding Sync module documentation.
2023-02-20 12:23:10 +01:00
Jonas Platte
cbcfd5d531
refactor(bindings): Fix SlidingSyncRoom timeline listener return type
...
It's an error if the room was not found, so it should be surfaced as such.
2023-02-20 12:10:13 +01:00
Ivan Enderlin
b451460d8d
doc(sdk): Improve Sliding Sync documentation
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2023-02-20 12:06:20 +01:00
Ivan Enderlin
772a94cc8c
doc(sdk): Fix Sliding Sync module documentation.
2023-02-20 11:49:35 +01:00
Jonas Platte
0f077ffcd3
fix(sdk): Don't overwrite parallel updates when fetching reply details
2023-02-20 11:15:23 +01:00
Jonas Platte
9eefe9377e
refactor(sdk): Move timeline functionality into TimelineInner
2023-02-20 11:15:23 +01:00
Ivan Enderlin
b35f2669d2
chore(sdk): Split the sliding_sync module into smaller ones
...
chore(sdk): Split the `sliding_sync` module into smaller ones
2023-02-20 11:09:05 +01:00
Ivan Enderlin
4102d25ebe
chore(sdk): Split the sliding_sync module into smaller ones.
...
It's an strict copy-paste. Nothing has changed, except the
`SlidingSyncConfigBuilder::subscriptions` method that is now public within
the crate.
2023-02-20 10:43:05 +01:00
Ivan Enderlin
177fa140fc
fix(sdk): FrozenSlidingSyncRoom.timeline_queue must serialize to timeline
...
fix(sdk): `FrozenSlidingSyncRoom.timeline_queue` must serialize to `timeline`
2023-02-17 19:46:50 +01:00
Ivan Enderlin
e0eeba21ff
fix(sdk): FrozenSlidingSyncRoom.timeline_queue must serialize to timeline.
...
In https://github.com/matrix-org/matrix-rust-sdk/pull/1478 , I've introduced
a regression. The FrozenSlidingSyncRoom.timeline` field has been renamed to
`timeline_queue`.
I didn't notice that this type can be serialized and deserialized. That's
actually a breaking change because this type is stored somewhere once
serialized. So with #1478 , it was impossible to deserialize them!
This patch fixes that. It also adds a test to ensure the serialization form of
`FrozenSlidingSyncRoom` doesn't change.
2023-02-17 19:24:39 +01:00
Jonas Platte
e4f94f3174
chore: Fix warnings
2023-02-17 11:30:13 +01:00
Jonas Platte
c2f529ed71
chore: Run cargo update
...
To pull in the latest Ruma release with a bugfix for content reporting.
2023-02-17 11:30:13 +01:00
Jonas Platte
0b91ec29a4
Allow to get or send any type of receipt
2023-02-17 10:54:03 +01:00
Kévin Commaille
362a394a11
feat(sdk)!: Allow to send private read receipts and receipts in threads
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-17 10:33:09 +01:00
Kévin Commaille
6ddb22d6ab
feat(sdk): Expose methods to get a user or an event's receipts
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-17 10:29:22 +01:00
Kévin Commaille
a3f289c6fc
feat(base)!: Allow to get any receipt type for a user or event
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-17 10:29:21 +01:00
Jonas Platte
44d8f99bc4
docs(sdk): Remove outdated documentation
2023-02-17 09:56:29 +01:00
Ivan Enderlin
eb3fb6986d
doc(sdk): Fix links to examples and to matrix_sdk_base
...
doc(sdk): Fix links to examples and to `matrix_sdk_base`
2023-02-17 08:53:00 +01:00
Ivan Enderlin
b6fb25fdfa
test(sliding-sync): ensure unknown pos does recover the room subscription properly
...
test(sliding-sync): ensure unknown pos does recover the room subscription properly
2023-02-16 18:24:17 +01:00
Mauro
679d3084aa
feat(bindings): Add Room::report_content
2023-02-16 17:18:18 +00:00
Ivan Enderlin
94b60f915f
test(sdk): Address feedbacks.
2023-02-16 17:54:28 +01:00
Ivan Enderlin
3bf1060705
Merge branch 'main' into ben-fix-resubscribe-problem
2023-02-16 17:44:26 +01:00
Ivan Enderlin
d600af7c0e
feat(crypto-nodejs): OlmMachine.initialize takes a new optional store type.
...
This patch allows an `OlmMachine` to use a different store than Sled, like SQLite.
A new enum is introduced: `StoreType` which 2 variants: `Sled` (the default), and `Sqlite`.
The `OlmMachine.initialize` constructor now takes a new optional `store_type:
Option<StoreType>` argument. If no value is passed, the default `StoreType`
variant will be used (as mentioned: `StoreType.Sled`).
The code has been rewritten a little bit to make the type system happy without
introducing too much type indirections.
This patch finally adds a parameterized tests that exhaustively test: no store
type, `Sled` and `Sqlite`.
2023-02-16 16:26:06 +01:00
Damir Jelić
9649100adb
feat(sdk): Add a root span to our client
2023-02-16 15:31:38 +01:00
Damir Jelić
292a9831f5
refactor(crypto): Move the usage specific cross signing types into the types module
2023-02-16 14:39:07 +01:00
Damir Jelić
04d8348477
refactor(crypto): Split out the cross signing key handling method
2023-02-16 14:39:07 +01:00
Ivan Enderlin
7049bd9183
doc(sdk): Improve Sliding Sync documentation
...
Sliding Sync API docs & minor fixes around API accessibility
2023-02-16 14:12:45 +01:00
Ivan Enderlin
1c7ffedf1a
Merge branch 'main' into ben-sliding-sync-docs
2023-02-16 14:00:56 +01:00
Ivan Enderlin
7cc06cb76d
chore(sdk): Small cleans up when reading the Sliding Sync code
...
chore(sdk): Small cleans up when reading the Sliding Sync code
2023-02-16 13:38:04 +01:00
Ivan Enderlin
9479f23f4b
fix(sdk): Reconciliate events in the timeline queue in Sliding Sync when new updates arrive
...
fix(sdk): Reconciliate events in the timeline queue in Sliding Sync when new updates arrive
2023-02-16 12:35:35 +01:00
Ivan Enderlin
c719d6d22e
doc(sdk): Fix links to examples and to matrix_sdk_base.
2023-02-16 12:08:42 +01:00
Ivan Enderlin
6aa766efd0
chore(sdk): Address PR feedback.
2023-02-16 11:58:07 +01:00
Richard van der Hoff
a0807cb337
crypto-js: support npm run build:dev ( #1510 )
...
Building the crypto-js bindings in release mode is very slow and not really
necessary for local development.
`--release` is the default, so there is no need to specify it
explicitly. Instead, allow `wasm-pack` args to be specified by an env var, and
add a `build:debug` npm script which will build in debug mode.
2023-02-16 10:51:37 +00:00
Richard van der Hoff
480800b996
crypto-js: have share_room_key return ToDeviceRequests ( #1516 )
...
We already have support for proper `ToDeviceRequest` objects in
`outgoing_requests`, so let's use it in `share_room_key` as well. It's much
easier for the application to work with the proper object than an untyped json
blob.
2023-02-16 10:51:15 +00:00
Ivan Enderlin
1c0288e42b
chore(sdk): Simplify code by removing a map.
...
In the code `if let Some(global_data) = account_data.as_ref().map(|a|
&a.global)`, the `map` is not purely necessary. This patch simplifies the code
to remove the `map` and read the `global` field later on.
2023-02-16 11:49:21 +01:00
Ivan Enderlin
0a97ac8316
chore(sdk): Address PR feedback.
2023-02-16 11:45:10 +01:00
Ivan Enderlin
46006cf108
chore(sdk): Address PR feedback.
2023-02-16 11:43:25 +01:00
Ivan Enderlin
10adb6d26b
chore(sdk): Use appropriate type to remove the need of a comment.
...
By using `Default::default` for the parameter value, we don't know which type
we are passing to the function. Hence the useful comment `room_info.ephemeral`.
This patch changes this to `Ephemeral::default`, so that we now know what we
pass without the need of a comment.
2023-02-16 11:23:05 +01:00
Richard van der Hoff
5abab932db
ci: Fail coverage job if the coverage report can't be uploaded ( #1515 )
2023-02-16 09:36:43 +00:00
Damir Jelić
abef9fae1a
chore(bindings): Use tracing-android instead of android-logger
2023-02-16 09:59:16 +01:00
Ivan Enderlin
b05d6874c0
test(sdk): Update the timeline inspection when the timeline_limit is modified.
2023-02-16 09:49:36 +01:00
Jonas Platte
3f2b12c996
chore(base): Remove unused futures-channel dependency
2023-02-16 08:59:41 +01:00
Ivan Enderlin
838488702f
Merge branch 'main' into test-sliding-sync-timeline-limit-duplication
2023-02-16 08:45:22 +01:00
Ivan Enderlin
6c62b5f637
test(sdk): Restore the sliding-sync Docker image to v0.99.0.
2023-02-16 08:16:03 +01:00
Richard van der Hoff
826dc46ddf
Merge pull request #1511 from matrix-org/rav/trace-to-debug
...
crypto-js: log trace messages at debug
2023-02-15 18:13:06 +00:00
Richard van der Hoff
d9e455ab82
crypto-nodejs, crypto-js: prettify the javascript codebase ( #1509 )
2023-02-15 17:47:32 +00:00
kegsay
19b8ab409d
test: Add depends_on block for the sliding sync proxy
...
This prevents the proxy starting before postgres is ready, which
causes the proxy to panic.
2023-02-15 17:32:57 +00:00
Richard van der Hoff
99b61ef660
Remove redundant log_trace
2023-02-15 17:06:46 +00:00
kegsay
fb467b75e0
ci: Update sliding sync integration tests job
2023-02-15 17:03:29 +00:00
Jonas Platte
9e2fa13b9c
fix(sdk): Respect new server ordering when receiving duplicate events
2023-02-15 17:40:16 +01:00
Jonas Platte
38e2d0bdcd
fix(sdk): Fix day divider removal logic in timeline
2023-02-15 17:40:16 +01:00
Jonas Platte
e8d5d29d2c
chore(sdk): Improve tracing in TimelineEventHandler::add
2023-02-15 17:40:16 +01:00
Jonas Platte
88376e85cd
test(sdk): Remove TestTimeline::with_initial_events
...
It's not general enough for further inital event tests.
2023-02-15 17:40:16 +01:00
Ivan Enderlin
b1bfb868ab
chore(sdk): Make Clippy happy.
2023-02-15 17:15:03 +01:00
Ivan Enderlin
6b3a550b22
chore(sdk): Fix lints.
2023-02-15 17:08:30 +01:00
Ivan Enderlin
d9f9ed9d68
fix(sdk): Reconciliate timeline queue in SlidingSync when new updates arrive.
...
The code is self-documented. Please read it.
2023-02-15 16:50:40 +01:00
Jonas Platte
188aaecde3
feat(sdk): Keep Timeline event handlers around longer
...
… if the Timeline object itself is dropped, but something is still
subscribed to its changes.
2023-02-15 15:29:04 +01:00
Richard van der Hoff
d41753ea17
crypto-js: log trace messages at debug
...
Javascript's `console.trace` is not a good equivalent for Rust's
`Level::TRACE`.
In particular:
* `console.trace` causes a stacktrace to be written with each message
* Under nodejs, `console.trace` writes the message to `stderr`, while
`console.debug` writes to stdout
`console.trace` is therefore somewhat analogous to `console.error`.
Since we already include the log level in the message, we might as well just
send trace messages to `console.debug` rather than `console.trace`.
2023-02-15 12:50:42 +00:00
Richard van der Hoff
e16c113db0
crypto-js, crypto-nodejs: Run prettier in CI
2023-02-15 12:39:54 +00:00
Richard van der Hoff
3f8590f86d
crypto-nodejs, crypto-js: Run prettier on source code
2023-02-15 12:39:54 +00:00
Ivan Enderlin
a0bd88aefc
feat(crypto-nodejs) Implement OlmMachine.close
...
feat(crypto-nodejs) Implement `OlmMachine.close`
2023-02-15 12:48:45 +01:00
Jonas Platte
74056de8d7
fix(sdk): Deduplicate events coming from back-pagination
2023-02-15 12:41:26 +01:00
Jonas Platte
4f14728c91
chore(sdk): Add more spans and trace events to the timeline
2023-02-15 11:08:20 +01:00
Ivan Enderlin
57b810d70c
test(sdk): Test changing the sliding sync limit on-the-fly.
2023-02-15 10:13:03 +01:00
Ivan Enderlin
b3fedda90c
chore(sdk): Clean up useless code.
...
The `experimental-timeline` feature is always enabled by `experimental-sliding-
sync`. Thus we can clean up the code.
2023-02-15 10:12:56 +01:00
Jonas Platte
20e082d416
refactor(sdk): Add a Date type for day divider logic
2023-02-15 10:08:05 +01:00
Jonas Platte
9e0ff4b9a9
fix(sdk): Handle remote echo on the first message of the day correctly
2023-02-15 10:08:05 +01:00
Jonas Platte
b57bd55204
refactor(sdk): Use .rev().find_map() instead of .rfind().and_then()
2023-02-15 10:08:05 +01:00
Jonas Platte
4cad934a6b
refactor(sdk): Simplify day divider timestamp conversion
2023-02-15 10:08:05 +01:00
Jonas Platte
aa2b2dfff4
test(sdk): Fix reference to renamed test case
2023-02-15 09:31:42 +01:00
Jonas Platte
6c2a9dae55
test(sdk): Use u64 instead of u32 for next_ts
...
It seems weird to artificially limit the number range to 32 bits there,
panicking inside a test on too large values is fine.
2023-02-15 09:31:42 +01:00
Jonas Platte
360864841e
test(sdk): Allow tests to set the next TS, use for day divider test
2023-02-15 09:31:42 +01:00
Jonas Platte
563ba884eb
test(sdk): Make next_ts part of TestTimeline
2023-02-15 09:31:42 +01:00
Jonas Platte
13ffadc32a
test(sdk): Add handle_live_redacted_message_event
2023-02-15 09:31:42 +01:00
Jonas Platte
e246735866
test(sdk): Shorten some method names
2023-02-15 09:31:42 +01:00
Ivan Enderlin
6593f61556
doc(crypto-nodejs): Add safety comment for OlmMachine.close.
2023-02-15 09:15:31 +01:00
Jonas Platte
423d6ace83
fix(sdk): Attempt to EX-android crash with more hacks
2023-02-14 17:53:21 +01:00
Jonas Platte
ce315a5229
chore: Use fully-qualified Docker image names
...
This brings us closer to being able to use our Docker setup with podman too.
2023-02-14 10:19:06 +01:00
Jonas Platte
ca1163c9cc
test: Remove trailing spaces from docker-compose.yml
2023-02-14 10:19:06 +01:00
Jonas Platte
e576af8267
test: Fix docker-compose.yml error
...
Seems to be accepted by some older versions of docker-compose, but not
by current ones.
2023-02-14 10:19:06 +01:00
Jonas Platte
118497f9ec
test: Remove unused dependency
2023-02-13 16:59:45 +01:00
Jonas Platte
ac06172cf2
test(sdk): Add timeline items accessor
2023-02-13 16:21:30 +01:00
Damir Jelić
2654e909be
feat(store-encryption): Add support to export/import the cipher using a key
...
This is useful for platforms which might want to avoid the cost of
password based key-derivation and have the ability to securely store an
encryption key.
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2023-02-13 14:08:45 +00:00
Damir Jelić
a1b1862479
docs(crypto): Explain a bit better what it means that a Device owns a room key
...
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com >
2023-02-13 15:00:15 +01:00
Ivan Enderlin
5001cef372
Merge pull request #1375 from Hywan/feat-crypto-nodejs-requests-more-types
2023-02-13 14:46:47 +01:00
Kévin Commaille
a6f74fa22c
fix(sled): Use proper table name for encoding key when redacting
...
Contrary to other tables that use their own name to encode their keys,
the `ROOM_INFO` table uses the `ROOM` table name to encode its keys.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-13 14:07:06 +01:00
Damir Jelić
56cfa8f4f9
fix(crypto): Always mark your own device as verified
2023-02-13 14:01:31 +01:00
Richard van der Hoff
8d642784bb
fix: remove dependency on broken wasm_timer crate
...
`wasm_timer` doesn't work outside the browser, which prevents it being used in
tests.
We can replace it with `gloo-timers` wich uses the standard Javascript
`setTimeout`.
2023-02-13 12:41:36 +01:00
enterprisey
e45bf9f9bd
docs(sdk): Improve read receipt/marker explanation
2023-02-13 12:05:35 +01:00
Jonas Platte
3a516a5fce
refactor(sqlite): Use internal Error in CryptoStore impl
2023-02-13 12:05:04 +01:00
Jonas Platte
9fc7d1c78b
refactor(indexeddb): Use IndexeddbCryptoStoreError in CryptoStore impl
2023-02-13 12:05:04 +01:00
Jonas Platte
c6f0e47077
refactor(crypto)!: Add an error type to the CryptoStore trait
...
This makes it easier to implement it. However, using a different error
type than CryptoStoreError is a non-trivial change, so left for the
coming commits for all stores except the memory store.
2023-02-13 12:05:04 +01:00
Kévin Commaille
96c796bb0e
ci: Silence clippy::extra_unused_type_parameters in affected crates
...
Triggers false positives.
See discussion in https://github.com/rust-lang/rust-clippy/issues/10319 .
Possibly fixed in https://github.com/rust-lang/rust-clippy/pull/10321 .
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-13 11:57:05 +01:00
Kévin Commaille
63fa645cea
fix(indexeddb): Fix implementation of SafeEncode for tuple of 5 elements
...
Regression introduced by merging commit 9707d73 after efdeba7
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-13 11:57:05 +01:00
Kévin Commaille
0d4fac5962
test(base): Test collision between threaded and unthreaded receipts in store
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-12 11:04:26 +01:00
Kévin Commaille
2e497198f8
fix(stores): Separate receipts by thread
...
The key encoding in key-value stores is backwards-compatible so
old receipts are counted as unthreaded receipts.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-12 11:04:26 +01:00
Kévin Commaille
9707d73ead
fix(indexeddb): Fix broken raw redacted state events
...
A fix for (de)serialization of redacted state events in Ruma made
old events undeserializable.
Bump the DB version.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-11 22:54:38 +01:00
Kévin Commaille
5ae84a9a80
fix(sled): Fix broken raw redacted state events
...
A fix for (de)serialization of redacted state events in Ruma made
old events undeserializable.
Bump the DB version.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-11 22:54:38 +01:00
Jonas Platte
57c3224b6b
ci: Work around not being able to use matrix variables inside uses
2023-02-10 13:58:41 +01:00
Jonas Platte
4a5a0293a9
ci: Replace unmaintained actions-rs/cargo action
...
… we really didn't need it and can use run instead.
2023-02-10 13:58:41 +01:00
Jonas Platte
3f16b324d7
ci: Use taiki-e/install-action to install cargo-tarpaulin
2023-02-10 13:58:41 +01:00
Jonas Platte
a5bfab1d55
ci: Replace unmaintained actions-rs/toolchain action
...
… with dtolnay/rust-toolchain.
2023-02-10 13:58:41 +01:00
Jonas Platte
e430f65ce8
ci: Exclude Debug implementations from coverage reports
...
We don't really want to check for exact representations, and otherwise
they are really just invoked in tests that fail.
2023-02-10 13:46:00 +01:00
Jonas Platte
441626bf68
ci: Exclude uniffi-bindgen from coverage checks
2023-02-10 13:02:31 +01:00
Jonas Platte
02e51a9cb9
ci: Test sqlite crypto store in coverage check
2023-02-10 13:02:31 +01:00
Jonas Platte
4492df6fc6
test(sdk): Add a test for retrying edit decryption
2023-02-10 12:41:05 +01:00
Jonas Platte
573b672470
fix(sdk): Fix handling of UTD "insivible" events
...
(ones which don't produce a timeline item on their own)
2023-02-10 12:41:05 +01:00
Jonas Platte
fe3c73602f
refactor(sdk): Always add UTD events to the timeline
...
… as currently this is the only way decryption can be retried.
2023-02-10 12:41:05 +01:00
Jonas Platte
fd2dc18746
refactor(sdk): Retry event decryption in timeline item order
...
This works better for relations.
2023-02-10 12:41:05 +01:00
Jonas Platte
55549f61be
test(sdk): Split timeline tests into smaller modules
2023-02-10 12:41:05 +01:00
Jonas Platte
cf359dede5
chore: Upgrade rust-cache GitHub action
2023-02-10 12:16:06 +01:00
Ivan Enderlin
13f50fbf6c
fix(sdk): Remove Deref impl for SlidingSyncRoom
...
fix(sdk): Remove `Deref` impl for `SlidingSyncRoom`
2023-02-09 16:32:31 +01:00
Ivan Enderlin
0f7646ade1
chore: Make Clippy happy.
2023-02-09 16:16:31 +01:00
Ivan Enderlin
4e1fe3bec4
chore: Fix a function renaming.
2023-02-09 15:49:55 +01:00
Ivan Enderlin
c6d99305d5
fix(labs): Fix jack-in.
2023-02-09 15:46:08 +01:00
Ivan Enderlin
c86ebaddd2
Update crates/matrix-sdk/src/sliding_sync.rs
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2023-02-09 15:36:13 +01:00
Benjamin Kampmann
048d6a774c
docs(sliding-sync): improved language
...
Co-authored-by: Ivan Enderlin <ivan@mnt.io >
2023-02-09 14:13:41 +01:00
Ivan Enderlin
43f2f60bfd
fix(sdk): Remove Deref impl for SlidingSyncRoom.
...
This implementation is wrong in the sense of its semantics is not about
dereferencing a thin pointer to something, but just to give access to one
specific field of the entire structure. That's not how `Deref` is supposed to
be used.
Moreover, it creates conflict between the `SlidingSyncRoom.timeline` field,
and `SlidingSyncRoom.inner.timeline` field, which both exist, but not for the
same purposes. It creates confusion in the code.
Finally, it's better to expose proper getters to the outside world, so that we
control _and_ test _and_ know exactly what API we provide.
2023-02-09 13:09:22 +01:00
Gabriel Féron
12cbff2688
refactor(sdk): Use spawn_blocking when generating attachment thumbnails
2023-02-09 09:54:43 +01:00
Jonas Platte
bdab40a772
refactor: Fix clippy lint str_to_string in sliding sync tests
2023-02-08 17:52:31 +01:00
Jonas Platte
87de9c7453
refactor(sled): Remove unused re-export
2023-02-08 17:52:31 +01:00
Benjamin Kampmann
765959758b
docs(sliding-sync): Document cold-cache, reactive-api and bot-mode
2023-02-08 16:54:06 +01:00
Jonas Platte
efdeba79f9
chore: Upgrade workspace dependencies
2023-02-08 16:04:29 +01:00
Jonas Platte
e25061f8cb
refactor(crypto)!: Unwrap unused Result
2023-02-08 16:04:29 +01:00
Jonas Platte
345f4f39f4
refactor(sqlite): Make Error more precise / useful
2023-02-08 15:44:17 +01:00
Jonas Platte
e12b9e3027
refactor(sqlite): Encode olm hashes with rmp instead of serde_json
...
… like everything else in the sqlite crypto store.
2023-02-08 15:44:17 +01:00
Jonas Platte
a22529344a
refactor(sqlite): Inline inherent methods that duplicate trait methods
2023-02-08 15:44:17 +01:00
Jonas Platte
64b7c4eb59
refactor(sqlite): Make OpenStoreError more precise / useful
2023-02-08 15:44:17 +01:00
Jonas Platte
1988d1e9a3
refactor(sqlite): Move sqlite extension traits to utils module
2023-02-08 15:44:17 +01:00
Jonas Platte
efc2397267
refactor(sqlite): Always use rusqlite::Error for sqlite extension traits
2023-02-08 15:44:17 +01:00
Jonas Platte
ecb521205f
refactor(sqlite): Move error types into new error module
2023-02-08 15:44:17 +01:00
Jonas Platte
7db40746bb
refactor(sqlite): Start cleaning up cfg attributes
2023-02-08 15:44:17 +01:00
Benjamin Kampmann
3639215d53
docs(sliding-sync): long polling and quick refreshing explained
2023-02-08 13:29:38 +01:00
Benjamin Kampmann
d51e9694f6
fix(sliding-sync): Set as default view mode
2023-02-08 12:43:32 +01:00
Jonas Platte
ae21a56be2
chore: Add missing copyright headers
2023-02-08 11:15:02 +01:00
Kévin Commaille
c252b984e0
refactor(sdk): Use a builder pattern to construct Timeline
...
`Timeline::with_fully_read_tracking` was public although all public
Timeline constructors enable it by default.
It is also meant to be called when constructing the timeline so
using a builder pattern makes sense.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-08 10:46:59 +01:00
Benjamin Kampmann
300fdec83f
docs(sliding-sync): First half of sliding sync API docs
2023-02-07 22:41:58 +01:00
Jonas Platte
ee9d47f647
refactor(crypto): Remove confusing explicit Sized bound
...
The bound is there by default, no need to put it in explicitly.
2023-02-07 18:45:32 +01:00
Jonas Platte
2e80073f28
refactor(crypto): Use IntoCryptoStore for OlmMachine::with_store
2023-02-07 18:45:32 +01:00
Jonas Platte
c3d5932a0f
refactor(crypto): Move store::{CryptoStoreError, Result} into new module
2023-02-07 18:45:32 +01:00
Doug
7fdccfcea4
chore(bindings): Rename property and use feature flag.
2023-02-07 15:22:39 +00:00
Doug
630836b3c7
chore(bindings): Store the proxy URL directly in Client.
2023-02-07 15:22:39 +00:00
Doug
3705925a22
chore(bindings): Persist the sliding sync proxy.
...
Added to the Session for automatic restoration.
2023-02-07 15:22:39 +00:00
Doug
b7a3ab7c5b
feat(ffi): Sliding sync proxy discovery.
2023-02-07 15:22:39 +00:00
Jonas Platte
5692480112
refactor(crypto): Remove unused method
2023-02-07 15:59:19 +01:00
Jonas Platte
5b63bd4cf1
refactor(crypto): Reduce direct visibility of some internal types
...
They weren't being exported from any public modules before.
This helps human readers as well as some compiler lints.
2023-02-07 15:59:19 +01:00
Jonas Platte
9711e1b2f5
refactor(crypto): Move (Into)CryptoStore traits into a new module
2023-02-07 15:59:19 +01:00
Damir Jelić
a17346158f
docs(sdk): Fix the sliding sync builder example
2023-02-07 14:26:33 +01:00
Damir Jelić
30ddbab686
refactor(sdk): Move the bulk of the sliding sync logic into a sync_once method
2023-02-07 14:26:33 +01:00
Jonas Platte
b436918cb3
fix(sqlite): Fix Debug output for SqliteCryptoStore
2023-02-06 17:08:21 +01:00
Jonas Platte
b20424b8b5
chore(sqlite): Undo weird formatting of TOML file
2023-02-06 17:08:21 +01:00
Ivan Enderlin
5f933b1033
feat(sdk): Simplify code by using std::cmp::min
...
feat(sdk): Simplify code by using `std::cmp::min`
2023-02-06 14:46:46 +01:00
Ivan Enderlin
5e8224f19c
feat(sdk): Simplify code by using std::cmp::min.
2023-02-06 13:43:01 +01:00
Damir Jelić
e68134dd53
chore(crypto): Improve the logs for the OlmMachine constructor
2023-02-06 13:31:00 +01:00
Damir Jelić
945c16a7fb
feat(crypto): Throw an error if our user/device pair isn't what we have in the store
2023-02-06 13:31:00 +01:00
dependabot[bot]
fc8cd2e7e5
chore(deps): bump tokio from 1.24.1 to 1.24.2
...
Bumps [tokio](https://github.com/tokio-rs/tokio ) from 1.24.1 to 1.24.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/commits )
---
updated-dependencies:
- dependency-name: tokio
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2023-02-04 08:27:50 +01:00
Damir Jelić
4115975135
fix(bindings): Expose the OpenTelemetry logging for other platforms as well
2023-02-03 22:30:11 +01:00
Damir Jelić
35a26be7b0
chore(sdk): Record the sliding sync pos in our logs
2023-02-03 16:51:33 +01:00
Jonas Platte
052832b4d3
fix: Don't log raw events that fail deserialization
...
… but do log relevant parts to allow debugging.
2023-02-03 14:35:10 +01:00
Richard van der Hoff
e516e15d2b
matrix-sdk-crypto-js v0.1.0-alpha.4
Release `crypto-js` / Publish 🕸 [m]-crypto-js (push) Failing after 31s
2023-02-03 12:17:37 +01:00
Ivan Enderlin
2bc9407563
feat(sdk): Remove SlidingSyncView.rooms
...
feat(sdk): Remove `SlidingSyncView.rooms`
2023-02-03 11:51:25 +01:00
Jonas Platte
47f8b6cb79
feat(ffi): Add Room::fetch_members
2023-02-02 17:48:26 +01:00
Jonas Platte
e11dd099d8
feat(sdk): Add Timeline::fetch_members
2023-02-02 17:48:26 +01:00
Jonas Platte
c294a376e8
refactor(sdk): Use TimelineDetails for sender profile
2023-02-02 17:48:26 +01:00
Jonas Platte
ffa0190517
refactor(sdk): Add missing feature-gate
...
… for fn that is only used from sliding-sync.
2023-02-02 17:48:26 +01:00
Jonas Platte
3a863fa8fb
refactor(sdk): Remove unnecessary inner block in function
2023-02-02 17:48:26 +01:00
ganfra
75d396e2ec
Merge branch 'main' into ganfra/kotlin_binding_scripts
2023-02-02 17:10:34 +01:00
Ivan Enderlin
672a640854
chore(labs): Update to later changes.
2023-02-02 15:27:18 +01:00
Ivan Enderlin
40010cd511
Merge branch 'main' into feat-sliding-sync-view-rooms
2023-02-02 15:26:30 +01:00
Ivan Enderlin
a6d33fcd16
feat(labs): Update jack-in to the new sliding sync room API.
2023-02-02 15:22:41 +01:00
Ivan Enderlin
d08606e3b9
feat(sdk): SlidingSync::get_room now takes a ref to OwnedRoomId
...
feat(sdk): `SlidingSync::get_room` now takes a ref to `OwnedRoomId`.
2023-02-02 14:06:14 +01:00
Ivan Enderlin
ae8a8c6cc3
feat(sdk): SldingSync::get_room takes a &RoomId.
2023-02-02 13:36:32 +01:00
Ivan Enderlin
0d87d0f786
feat(sdk): Remove SlidingSyncView.rooms.
...
`SlidingSyncView` exposes a `room` field. Problem: It's not updated
correctly and leads to error. The canonical way to get a room is by using
`SlidingSync::get_room`. This patch thus removes `SlidingSyncView.rooms`
entirely.
2023-02-02 13:31:46 +01:00
Ivan Enderlin
a9ba2dd546
feat(sdk): SlidingSync::get_room now takes a ref to OwnedRoomId.
...
Before this patch, `SlidingSync::get_room` was taking ownership of an
`OwnedRoomId`, to only use it as a reference. Thus, calling this method was
creating useless clones.
This patch updates `SlidingSync::get_room` to receive a reference to
`OwnedRoomId`.
2023-02-02 13:25:36 +01:00
Kévin Commaille
00638ba74c
feat(sdk): Allow to fetch replied to messages
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-02-02 13:06:11 +01:00
ganfra
6a7b28c085
Merge branch 'main' into ganfra/kotlin_binding_scripts
2023-02-02 11:52:32 +01:00
ganfra
1bcd8c7aae
Comment remove gradle_build
2023-02-02 11:50:47 +01:00
Jonas Platte
ce973b35e9
chore: Upgrade uniffi to 0.23.0
2023-02-02 10:15:05 +01:00
Jonas Platte
8a1b1eccd6
doc(sdk): Fix docs that refer to TimelineKey
2023-02-02 10:15:05 +01:00
Jonas Platte
e068b4987e
doc(sdk): Document what happens when timeline event sending fails
2023-02-02 10:14:23 +01:00
Jonas Platte
3a1eb62c38
refactor(sdk): Expose event sending errors through timeline item
...
… instead of through the return value of Timeline::send.
2023-02-02 10:14:23 +01:00
Jonas Platte
c8021cf2ba
refactor(sdk): Move LocalEventTimelineItem#event_id into send_state
2023-02-02 10:14:23 +01:00
Jonas Platte
a48fd77c4a
refactor(sdk): Rename LocalEventTimelineItemSendState => EventSendState
2023-02-02 10:14:23 +01:00
Damir Jelić
ab0e27622e
feat(bindings): Add support to setup a OpenTracing based logger
2023-02-01 22:55:47 +01:00
Damir Jelić
7b044ef5dd
fix(crypto): Ignore the usage and signatures when comparing cross signing keys
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2023-02-01 18:25:48 +01:00
Benjamin Kampmann
8a9b72ae6c
test(sliding-sync): ensure unknown pos does recover the room subscription properly
2023-02-01 17:37:16 +01:00
Anderas
e9cef35f99
Add matrix-sdk-sqlite with a CryptoStore implementation
...
Note about "Write-Ahead Log" (WAL) mode: The SQLite WAL mode has a
bunch of advantages that are quite nice to have:
1. WAL is significantly faster in most scenarios.
2. WAL provides more concurrency as readers do not block writers and a
writer does not block readers. Reading and writing can proceed
concurrently.
3. Disk I/O operations tends to be more sequential using WAL.
4. WAL uses many fewer fsync() operations and is thus less vulnerable
to problems on systems where the fsync() system call is broken.
The downsides of WAL mode don't really affect us. So let's turn it on.
More info: https://www.sqlite.org/wal.html
Co-authored-by: Jonas Platte <jplatte@matrix.org >
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2023-02-01 15:06:59 +01:00
Damir Jelić
3a183b4c22
chore(sdk): Tweak the instrumentation for some encryption related methods
2023-02-01 10:16:14 +01:00
Richard van der Hoff
5dbee7dcdc
fix(indexeddb): correctly encode Olm session keys
...
When we store an Olm session in the database, we encode the sender key and
session ID using the store cipher. That means that we also need to encode them
when we look them up, otherwise we won't find them.
2023-01-31 16:59:22 +01:00
Benjamin Kampmann
b9b00743c9
fix(sliding-sync): catching up on new count for full-sync views
2023-01-31 15:02:19 +00:00
Benjamin Kampmann
14be1f888a
test(sliding-sync): integration test for UnknownPos
2023-01-31 15:02:19 +00:00
Benjamin Kampmann
a77295120a
fix(sliding-sync): fixing restarting growing view
2023-01-31 15:02:19 +00:00
Benjamin Kampmann
a6ad0e35b3
style(sliding-sync): improved style and docs
2023-01-31 14:03:43 +00:00
Benjamin Kampmann
5b3ec33ddc
chore: Update to specific, supported ruma and sliding-sync-proxy-version.
2023-01-31 14:03:43 +00:00
Benjamin Kampmann
aa10e70851
feat(sliding-sync): enable gzip when enabling sliding-sync
2023-01-31 14:03:43 +00:00
Benjamin Kampmann
826b2874ec
ffi: expose sliding sync extension enabling
2023-01-31 14:03:43 +00:00
Benjamin Kampmann
8f17b6c38d
feat(sliding-sync): add Receipt and Typing extension config
2023-01-31 14:03:43 +00:00
Benjamin Kampmann
9ae9c98340
test(sliding-sync): activate live views test
2023-01-31 14:03:43 +00:00
Benjamin Kampmann
f6da282557
feat(sliding-sync): add delta-token support
2023-01-31 14:03:43 +00:00
Benjamin Kampmann
9ad34e8565
chore(sliding-sync): update to latest sliding-sync JSON layout
2023-01-31 14:03:43 +00:00
Benjamin Kampmann
a973c372e6
chore: use local volumes for testing server
2023-01-31 14:03:43 +00:00
Ivan Enderlin
00e93e08e7
feat(sdk): Add EventTimelineItem::unique_identifier.
2023-01-31 13:21:19 +01:00
Kévin Commaille
75a2d2d92c
fix(sdk): Aggregate reactions locally
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-01-31 12:11:44 +00:00
Jonas Platte
e066346b16
feat(bindings): Clear the timeline when sliding-sync loop is reset
2023-01-31 11:49:25 +01:00
Jonas Platte
754453c135
refactor: Import tracing macros instead of using qualified paths
2023-01-31 11:49:25 +01:00
Jonas Platte
c481caf060
refactor: Clean up format strings
2023-01-31 11:49:25 +01:00
Jonas Platte
6d868908cb
refactor(sdk): Remove unused Result
2023-01-31 11:49:25 +01:00
Jonas Platte
d2678e2f01
refactor(sdk): Remove unused async
2023-01-31 11:49:25 +01:00
Jonas Platte
c24316e5e3
refactor(sdk): Remove unused lifetime parameter
2023-01-31 11:49:25 +01:00
Jonas Platte
48bc5b9b7e
refactor(sdk): Work around receiving event with txn-id multiple times
2023-01-30 20:12:44 +01:00
Jonas Platte
01c828ed4b
chore(sdk): Remove weird space
2023-01-30 20:12:44 +01:00
Benjamin Kampmann
102994b030
feat(sliding-sync): allow updating the timeline limit at runtime
2023-01-30 16:05:19 +00:00
Ivan Enderlin
38dfa90441
feat(sdk): LocalEventTimelineItem has a new send_state field
...
feat(sdk): `LocalEventTimelineItem` has a new `send_state` field
2023-01-30 14:08:47 +01:00
Ivan Enderlin
274bc20603
doc(sdk): Fix typos.
2023-01-30 13:58:00 +01:00
Ivan Enderlin
c8d561d17d
feat(ffi): Add LocalEventTimelineItemSendState + EventTimelineItem::local_send_state.
2023-01-30 13:51:29 +01:00
Ivan Enderlin
8ea2cef55d
feat(sdk): LocalEventTimelineItem has a new send_state field.
...
This patch is trying to resolve the following issue:
When a local event is sent to the server, in case of an error, the
`Timeline::send` method just returned the error but it wasn't reflected inside
the `LocalEventTimelineItem` type itself. It's easy to loss this information.
So now, there is a new enum: `LocalEventTimelineItemSendState` with 3 states:
1. `NotSentYet`, when the local event has not been sent yet, it's theorically
the initial state,
2. `SendingFailed`, when the local event has been sent but it's failed!
3. `Sent`, when the local event has been sent successfully.
Therefore, the `LocalEventTimelineItem` struct has a new field: `send_state`.
The send state is managed by its `with_event_id` method which now receives an
`Option<OwnedEventId>` (prev. `OwnedEventId` directly):
* If it's `Some(_)`, then it means we got a successful response from the server
after the sending, so the send state is set to `Sent`,
* If it's `None`, then it means we got an error response from the server, so
the send state is set to `SentFailed`.
(A small change: The method `TimelineInner::add_event_id` has been renamed
`TimelineInner::update_event_id_of_local_event`.)
The `Timeline::send` still returns a `Result`, but the server's response is
passed to a new method: `TimelinerInner::handle_local_event_send_response`
(it's logically named after the `handle_local_event` method), which is
responsible to call `TimelineInner:update_event_id_of_local_event` (which was
previously called directly by `Timeline::send`).
And `TimelineInner::update_event_id_of_local_event` was already calling
`LocalEventTimelineItem::with_event_id`. So everything works like a charm here.
The local send state is closely managed by `LocalEventTimelineItem`, I hope it
will avoid state breakage as much as possible.
2023-01-30 11:47:38 +01:00
Ivan Enderlin
4086492ef9
feat(sdk): EventTimelineItem is now an enum … { Local(…), Remote(…) }
...
feat(sdk): `EventTimelineItem` is now an `enum … { Local(…), Remote(…) }`
2023-01-30 11:03:49 +01:00
Ivan Enderlin
6bfa3df691
chore(sdk): Replace ref by &.
2023-01-30 10:20:44 +01:00
Ivan Enderlin
f4607146e2
chore(sdk): Replace ref by &.
2023-01-30 10:13:54 +01:00
Ivan Enderlin
0a7193de62
chore(sdk): Remove useless custom Debug impl.
2023-01-30 09:30:12 +01:00
Ivan Enderlin
5c2e6b2743
chore(sdk): Simplify code.
2023-01-30 08:58:26 +01:00
Ivan Enderlin
47256eb4f9
chore(sdk): Remove a warning for an unused variable.
2023-01-30 08:50:47 +01:00
Ivan Enderlin
1c8d57321c
chore(sdk): Remove Flow.timestamp and .raw_event.
2023-01-30 08:50:08 +01:00
Ivan Enderlin
322aa776f2
feat(sdk): Remove LocalEventTimelineItem.encryption_info and .raw, and Remote….raw is no more an Option.
2023-01-30 08:49:48 +01:00
ganfra
517b71cb06
kotlin bindings: replace shell by xtask scripts
2023-01-27 16:29:44 +01:00
Ivan Enderlin
17a9c4829d
chore(sdk): Make Clippy happy.
2023-01-27 15:25:37 +01:00
Ivan Enderlin
59a5805af7
chore(sdk): Remove commented code.
2023-01-27 15:14:10 +01:00
Ivan Enderlin
882f3cad25
chore(sdk): Simplify code by using Into<EventTimelineItem> for LocalEventTimelineItem`.
2023-01-27 15:12:38 +01:00
Ivan Enderlin
5ce3c45637
chore(sdk): Simplify code by importing a type.
2023-01-27 15:07:42 +01:00
Ivan Enderlin
ab617ddda0
chore(sdk): Fix a typo in an error message.
2023-01-27 15:05:27 +01:00
Ivan Enderlin
3a1c5580e7
chore(sdk): Fix a typo in an error message.
2023-01-27 15:03:49 +01:00
Ivan Enderlin
8486976804
feat(ffi): Update EventTimelineItem::reactions to return an Option.
2023-01-27 14:59:47 +01:00
Ivan Enderlin
8f13bb5ca5
feat(ffi): Add the EventTimelineItem::is_local and is_remote method.
2023-01-27 14:59:27 +01:00
Ivan Enderlin
7257cff5fe
docs: Add the ffi scope.
2023-01-27 14:58:54 +01:00
Ivan Enderlin
eb47869a45
feat(ffi): Remote TimelineKey.
2023-01-27 14:58:34 +01:00
Ivan Enderlin
636f4f8f8d
feat(sdk): Remove the TimelineKey type.
2023-01-27 14:41:01 +01:00
Damir Jelić
819f962419
fix(sdk): Retry decryption if you initialize a Timeline with some events
...
The sliding sync logic has another room type called `SlidingSyncRoom`.
This room type stores a limited amount of events in something called
`AliveRoomTimeline` in a in-memory cache. This room also gets persisted
to the store via another room type called `FrozenSyncRoom`.
These types are used when clients restore their view of the room, i.e.
when the user enters the room to look at messages.
When the client enters a room, a `Timeline` object will be created, but
it will be initially populated with events coming from
`AliveRoomTimeline`.
In a hot potato contest of who should be responsible to decrypt injected
events, everybody claims to be allergic to potatoes.
This patch modifies the `Timeline` constructor that populates the
timeline with events from the `AliveTimeline` to retry decryption on the
events that the `AliveTimeline` pushes into the `Timeline`.
Note that, because the `AliveRoomTimeline` never replaces encrypted
events with decrypted ones, every time the client enters/exits the room
events well get re-decrypted.
2023-01-27 14:07:41 +01:00
Ivan Enderlin
3c9e84397a
test(sdk): Update tests since the new EventTimelineItem type.
2023-01-27 14:00:41 +01:00
Ivan Enderlin
f7bf6ba220
feat(sdk): Rewrite EventTimelineItem as an enum: Local and Remote.
2023-01-27 13:26:31 +01:00
Denis Kasak
539cbee087
test(crypto): Test failure when deserializing cross-signing keys with incorrect usage.
2023-01-26 17:01:00 +01:00
Damir Jelić
d442cac936
refactor!(crypto): Directly deserialize into per usage cross signing key type
...
This moves the usage checking directly into our deserialization path.
2023-01-26 17:01:00 +01:00
Damir Jelić
72ed024303
fix(crypto): Make sure the master key self-signs as well
...
This is an omission from the spec where the subkeys are supposed to be
signed by the master key, but signing the master key wasn't mentioned.
This is still fine, since we always treated the master key and their
subkeys as a whole and never accepted one without the others.
2023-01-26 17:01:00 +01:00
Damir Jelić
148c4907b5
fix(crypto): Inspect the key usage when receiving cross signing keys
2023-01-26 17:01:00 +01:00
Ivan Enderlin
8c91314b58
feat(sdk): Move EventTimelineItem.event_id into TimelineKey::TransactionId
...
feat(sdk): Move `EventTimelineItem.event_id` into `TimelineKey::TransactionId`
2023-01-26 15:07:40 +01:00
Ivan Enderlin
9006bd1bba
chore(sdk): Address review feedback.
2023-01-26 14:55:16 +01:00
Kévin Commaille
32e7209c66
refactor(sdk): Split room member events between membership and profile change
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-01-26 14:24:59 +01:00
Ivan Enderlin
4dfa41ce8f
doc(sdk): Simplify if let into let
...
doc(sdk): Simplify `if let` into `let`
2023-01-26 14:24:35 +01:00
Ivan Enderlin
1a5ead58f6
feat(sdk): Move EventTimelineItem.event_id into TimelineKey::TransactionId.
...
To create an event next to the server, the event must be accompanied by
a transaction ID. When the server receives the event creation request, it
responds with a new event ID (which we will name `event_id_1`). Later on, when
a sync is done to the server, the server may respond with the transaction ID
and a new event ID (which we will name `event_id_2`).
The transaction ID is used to update the state of the local event. The event
ID received from the sync may ideally be the same as the one received by the
creation request's response.
Knowing that…
`EventTimelineItem` had a field: `event_id: Option<OwnedEventId>`. It was
`Some(event_id)` where `event_id` is the event ID responded by the server when
an event was created, i.e. it's `event_id_1`; otherwise it was `None`. This is
never `event_id_2`. Why?
Because `EventTimelineItem` has an other field: `key: TimelineKey`, which
represents the following states:
* `TimelineKey::TransactionId(OwnedTransactionId)`,
* `TimelineKey::EventId(OwnedEventId)`, where the event ID is `event_id_2`!
So it becomes obvious that `event_id_1` should be part of `TimelineKey`, not
`EventTimelineItem`. `TimelineKey` is where this transaction ID and event ID
logic is managed.
This patch updates `TimelineyKey::TransactionId` to be defined as:
* `TimelineKey::TransactionId { txn_id: OwnedTransactionId, event_id: Option<OwnedEventId> }`.
Why an `Option`? Because before receiving `event_id_1`, we may still want to
create a `TimelineKey`, the API must reflect that state.
So basically, `EventTimelineItem.event_id` is moved inside
`TimelineyKey::TransactionId`.
2023-01-26 11:36:42 +01:00
Jonas Platte
220617fd04
fix(sdk): Update add_event_id logs to make more sense
2023-01-26 10:59:28 +01:00
Jonas Platte
a37ce68eae
fix(sdk): Only look for local echoes for events appended to the timeline
...
… rather than prepended, or added at a specific point as replacement for
an existing timeline item.
Previously, we would log lots of useless tracing events when retrying to
decrypt UTD items.
2023-01-26 10:55:41 +01:00
Ivan Enderlin
0c4ca84eec
test(sdk): Improve m.fully_read test coverage and documentation
...
test(sdk): Improve `m.fully_read` test coverage and documentation
2023-01-26 10:16:48 +01:00
Ivan Enderlin
77b7451f59
doc(sdk): Fix a typo.
2023-01-26 10:06:11 +01:00
Ivan Enderlin
bac105a9aa
doc(crypto-nodejs): Fix a typo.
2023-01-26 09:59:15 +01:00
Ivan Enderlin
832bba8a2b
test(sdk): Improve m.fully_read test coverage and documentation.
2023-01-26 09:46:47 +01:00
Jonas Platte
0e39a7cbf2
chore: Upgrade Ruma
2023-01-25 18:01:12 +01:00
Jonas Platte
db11940f8f
test(sdk): Fix clippy warning
2023-01-25 18:01:12 +01:00
Damir Jelić
4ef654f1d1
chore: Bump the Ruma version
2023-01-25 18:01:12 +01:00
Ivan Enderlin
793e18e44f
Merge pull request #1388 from matrix-org/release-matrix-sdk-crypto-js-v0.1.0-alpha.3
...
Release matrix-sdk-crypto-js v0.1.0-alpha.3
2023-01-25 12:56:41 +01:00
Ivan Enderlin
578b446ea4
chore(sdk): Rename a variable to clarify its content.
2023-01-25 11:00:03 +01:00
Ivan Enderlin
3fe5f13df4
doc(sdk): Simplify if let into let.
2023-01-25 10:58:46 +01:00
Ivan Enderlin
54f00dc05a
feat(crypto-nodejs) Implement OlmMachine.close.
...
This patch fixes https://github.com/matrix-org/matrix-rust-sdk/issues/1379/ .
This is similar to https://github.com/matrix-org/matrix-rust-sdk/pull/1197/ .
We need to close the `OlmMachine`. Problem, `napi-rs` doesn't allow methods to
take ownership of `self`, so the following code:
```rs
fn close(self) {}
````
isn't allowed. There an [`ObjectFinalize`](https://docs.rs/napi/latest/napi/bindgen_prelude/trait.ObjectFinalize.html )
trait, but it's only called when the JS value is being collected by the GC.
It's not possible to force call `finalize` here.
This patch then introduces a new type:
```rs
enum OlmMachineInner {
Opened(matrix_sdk_crypto::OlmMachine),
Closed
}
```
that derefs to `matrix_sdk_crypto::OlmMachine` when its variant is `Opened`,
otherwise it panics. Calling the new `OlmMachine::close` method will change the
inner state from `Opened` to `Closed`.
Ideally, I wanted to throw an error instead of panicking, but `napi_env`
(used to build an `Env`, used to throw an error) is neither `Sync` nor `Send`.
Honestly, my knowledge of NodeJS and NAPI is too weak to implement `Sync`
and `Send` for `*mut napi_env__` safely. Especially because it can be executed
from various threads within `async fn` functions, that are driven by Tokio in
`napi-rs`. So, yeah, for the moment, it panics!
2023-01-25 09:56:21 +01:00
Benjamin Kampmann
464e40bc32
fix(ffi): add erroneously removed loop
2023-01-24 15:41:12 +00:00
Benjamin Kampmann
f22660d5e9
chore(sliding-sync): more logging information
2023-01-24 15:41:12 +00:00
Andy Uhnak
2db1bc75c1
Expose MissingRoomKey decryption error
2023-01-24 16:27:02 +01:00
Damir Jelić
18ec101719
refactor!(crypto): Move some caches out of the CryptoStore implementations
...
This moves the caches we have for tracked users out of the Sled, and
IndexedDB, CryptoStore into the Store struct. The Store struct is a
wrapper for the CryptoStore trait, so this is the natural place where
these caches should live.
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-01-24 15:26:33 +00:00
Doug
a762b2027f
feat(bindings): Expose aliases to the FFI.
2023-01-24 16:12:39 +01:00
Jonas Platte
934181be44
refactor(sdk): Update confusing variable names
2023-01-24 13:43:55 +01:00
Jonas Platte
3d34743ae9
fix(sdk): Respect server ordering for remote echoes
2023-01-24 13:43:55 +01:00
Kévin Commaille
718864bfdd
refactor(sdk): Provide day divider as a timestamp
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-01-24 12:29:15 +01:00
Benjamin Kampmann
24ac5b9f16
feat(sliding-sync): add configuration to inform about room changes without positional update
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
cc835da347
fix(sliding-sync): refresh timeline if server told us we are limited
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
933eec2d1d
fix(sliding-sync): switch Atomic Ordering from Relaxed to SeqCst
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
de4a8e3e7a
chore(base): additional tracing information for sliding sync responses
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
b08c740181
fix(ffi): don't cancel the actual spawn, instead ensure it finishes processing before stopping the loop
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
950bb83f8d
style: use trace! instead of tracing::trace!
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
a06aa43dd1
feat(sliding-sync): cache room data next to view for selective unfreezing
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
a572f61edf
tests: additional ignored tests for future scenarios
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
a964585e35
fix(sliding-sync): have views go live right at response processing
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
71407a636c
fix(sliding-sync): use single replace on cold and empty views
...
Before we'd push one empty entry at a time, which lead to a lot of vecdiff updates pushed. With this
we now only push one event after the entire operation set has been applied on the fresh
or cold view.
2023-01-24 10:30:07 +00:00
Benjamin Kampmann
b7a8a93a73
chore(sliding-sync): additional tracing around unfreezing from cold cache
2023-01-24 10:30:07 +00:00
Damir Jelić
600fd62dc5
crypto(fix): Fail to decrypt if there's a key mismatch
...
A mismatch between the recorded Ed25519 and Curve25519 keys of the room
key and the identity keys of a Device used to be just a warning.
Considering that many clients will aggressively try to hide E2EE related
warnings let's upgrade this clear error into a full blown decryption
failure.
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2023-01-24 09:14:42 +01:00
Damir Jelić
00d1437e5a
chore(crypto): Log the full error messages when decrypting room events
2023-01-23 15:03:03 +01:00
Damir Jelić
f774159e15
chore(crypto): Record the event id when decrypting a room event
2023-01-23 15:03:03 +01:00
Damir Jelić
a1fba86f75
chore(crypto): Log the session id when we receive a room key
2023-01-23 15:03:03 +01:00
Damir Jelić
3c4d1cfb47
fix(sled): Don't load the tracked users with the Account
...
We might have a lot of tracked users, clients will usually have 1-10
thousand tracked users. This might slow down client startup if there are
so many tracked users.
We don't need the tracked users until we sync or try to send a message,
so load them lazily when they are first needed.
2023-01-23 13:35:51 +01:00
Damir Jelić
3ab95c74c7
refactor!(crypto): Make the methods related to tracked users async
2023-01-23 13:35:51 +01:00
Damir Jelić
8c1a81eebc
chore: Fix the conventional commit type for documentation
...
The conventional commit specification recommends the "docs" type for
documentation related changes. This also matches the initial usage of
this type in our commit history.
While the default git-cliff config does specify a regex "^doc", where I
suspect our types have been taken from, this regex actually allows "doc"
as well as "docs" for the type.
Nevertheless, let's specify that we're using the one recommended in the
spec.
2023-01-20 20:30:06 +01:00
Richard van der Hoff
acfa8a4190
docs(bindings): Fix return type documentation for get_missing_sessions
2023-01-20 20:09:42 +01:00
Richard van der Hoff
0771d73543
matrix-sdk-crypto-js v0.1.0-alpha.3
Release `crypto-js` / Publish 🕸 [m]-crypto-js (push) Failing after 46s
2023-01-20 17:37:49 +00:00
Richard van der Hoff
92546acc85
chore(crypto-js): configuration for 'yarn version'
2023-01-20 17:37:40 +00:00
Richard van der Hoff
c7f258d8b0
doc: Improve the documentation of "tracked users"
...
I had no idea what a tracked user was, so I've attempted to clarify this
somewhat for future readers.
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2023-01-20 14:02:02 +01:00
Jonas Platte
1e2fd02478
doc(base): Explain purpose of BaseClient#crypto_store
2023-01-20 10:56:09 +01:00
Stefan Ceriu
b0c70dc606
chore(bindings): Exclude the target folder from the debug swift package
...
… to improve package loading time.
2023-01-20 09:00:36 +00:00
Benjamin Kampmann
0fea33de4d
feat(ffi): expose server_versions on ClientBuilder
2023-01-19 21:31:57 +00:00
Damir Jelić
053b609899
chore(sdk): Add a prefix to the request id to make it easier to grep for them
2023-01-19 15:47:08 +01:00
Damir Jelić
a54a421f91
chore(sdk): Log the response/request sizes as well
2023-01-19 15:46:49 +01:00
Ivan Enderlin
78147e0d33
doc(crypto-js): Fix wording.
2023-01-18 17:22:02 +01:00
Ivan Enderlin
430c573494
feat(crypto-nodejs): Request types have more fields.
...
Instead of putting all request fields inside a single `body` JSON-
encoded string field, there is now more types. There is less need to call
`JSON.parse`, and the type system will be able to catch more things.
For example, `ToDeviceRequest` now has 2 more fields: `event_type` and
`txn_id`.
2023-01-18 17:21:52 +01:00
Ivan Enderlin
9db09e22b2
feat(crypto-js): Request types have fields extracted from their “body” directly
...
feat(crypto-js): Request types have fields extracted from their “body” directly
2023-01-18 13:41:14 +01:00
Ivan Enderlin
94fadf74b9
feat(crypto-js): Rename RoomMessageRequest.content to .body.
2023-01-18 13:31:26 +01:00
Ivan Enderlin
7c01f8490f
test(crypto-js): Test `RoomMessageRequest.content.
2023-01-18 13:14:06 +01:00
Ivan Enderlin
ca00112804
test(crypto-js): Add test for in-room verification (w/ RoomMessageRequest).
2023-01-18 11:42:34 +01:00
Benjamin Kampmann
6c0ef2db51
refactor(ffi): refactor stoppable spawn to be more token-oriented
2023-01-18 10:08:58 +00:00
Benjamin Kampmann
938a03867b
feat(ffi): add subscribe_and_add_timeline_listener helper fn
...
re-applying the fixes from ##1346
2023-01-18 10:08:58 +00:00
Ivan Enderlin
90cce1a47c
chore(crypto-js): Improve documentation, and do a little clean up.
2023-01-18 10:58:59 +01:00
Ivan Enderlin
c427caf473
feat(crypto-js): Rename requests extra field to body.
2023-01-18 10:58:59 +01:00
Ivan Enderlin
3ad675db5c
feat(crypto-js): Extract RoomMessageRequest.event_type from EventContent.
2023-01-18 10:58:59 +01:00
Ivan Enderlin
efde81646b
feat(crypto-js): Extract RoomMessageRequest.content as a JSON-encoded string.
2023-01-18 10:58:59 +01:00
Ivan Enderlin
8f9859c41c
feat(crypto-js): Rename the body fields to extra to avoid confusion with HTTP terminology.
2023-01-18 10:58:58 +01:00
Ivan Enderlin
6248e2bc68
test(crypto-js): Update tests according to previous commit.
2023-01-18 10:58:58 +01:00
Ivan Enderlin
c0ccd55df8
feat(crypto-js): request! differentiates “extracted” and “grouped” fields.
2023-01-18 10:58:58 +01:00
Ivan Enderlin
b125b2e9da
test(crypto-js): Update tests according to previous commit.
2023-01-18 10:58:58 +01:00
Ivan Enderlin
3c838b2f4a
feat(crypto-js): Request types have fields from their “body” directly.
2023-01-18 10:58:58 +01:00
Jonas Platte
f4fba3efb7
fix(bindings): Add user_id to RoomMembership
...
Without that, it is useless.
2023-01-18 09:58:36 +01:00
Jonas Platte
e64b2f65da
Revert "refactor(bindings): Fetch latest event earlier"
...
This reverts commit 7d1372195cf2af56c3d8ef95ac1b183ace8a5eec.
2023-01-18 09:31:45 +01:00
Doug
9e12a88e03
feat(bindings): Allow setting the store passphrase in the bindings
...
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2023-01-18 06:45:21 +00:00
Anderas
0af38d9a76
fix(crypto): Mark our own identity as verified if we have the private part of the identity
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2023-01-17 18:41:00 +00:00
Damir Jelić
ade3a09848
chore(base): Remove a leftover unwrap
2023-01-17 19:13:29 +01:00
Damir Jelić
3641e0d540
docs(crypto): Note that the in-room verification events need to be decrypted
2023-01-17 18:11:53 +01:00
Damir Jelić
e1d8c72d3a
chore(crypto): Improve some docs
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-01-17 18:11:53 +01:00
Damir Jelić
c8d9581f8b
refactor!(crypto): Don't process in-room verification implicitly
2023-01-17 18:11:53 +01:00
Kévin Commaille
8cc632ffd1
feat(sdk): Add support for state events in the timeline
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-01-17 12:10:19 +01:00
Kévin Commaille
1b7f4b4b42
fix(test): Fix position of prev_content in JSON
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-01-17 12:10:19 +01:00
Damir Jelić
928871d16e
chore(sdk): Log the request body for sliding sync requests
2023-01-16 17:02:46 +01:00
Damir Jelić
87f5b251f5
chore(sdk): Add a request id counter to our HTTP client
...
This solves the issue of correlating different log lines that are talking
about the same request/response cycle. Plaintext logs would show this as
a flat structure, while something like Jaeger would show you a nice
tree. This allows you to reconstruct the tree in plaintext logs.
2023-01-16 17:02:46 +01:00
Damir Jelić
e76272a68b
chore(sdk): Improve the HTTP request sending logs
2023-01-16 17:02:46 +01:00
Damir Jelić
b30c74cb01
chore(crypto): Bump the to-device event logging to debug
2023-01-16 16:23:58 +01:00
Jonas Platte
686541155f
feat(sdk): Add display_name_ambiguous to timeline::Profile
2023-01-16 15:35:29 +01:00
Jonas Platte
b256b6f625
refactor(bindings): Fetch latest event earlier
...
Does this crash?
2023-01-16 15:35:29 +01:00
Jonas Platte
7b913a0759
feat(bindings): Add EventTimelineItem::sender_profile
2023-01-16 15:35:29 +01:00
Jonas Platte
9e60a9dd3f
feat(sdk): Attach profile information to timeline items
2023-01-16 15:35:29 +01:00
Jonas Platte
00bdb08973
refactor(sdk): Move locking of timeline_items into handle_remote_event
2023-01-16 15:35:29 +01:00
Jonas Platte
ed70ccb988
refactor(sdk): Add trait ProfileProvider for use in TimelineInner
2023-01-16 15:35:29 +01:00
Jonas Platte
e52af8a315
refactor(sdk): Make TimelineInner fields private
2023-01-16 15:35:29 +01:00
Jonas Platte
b5450ee5ad
test(sdk): Simplify TestTimeline construction
2023-01-16 15:35:29 +01:00
Jonas Platte
b105b34cf6
refactor(sdk): Use regular struct update syntax for EventTimelineItem
...
The previous solution was annoying to maintain and only more efficient
without compiler optimizations.
2023-01-16 15:35:29 +01:00
Jonas Platte
e0b0b632ec
chore: Fix a typo
2023-01-16 11:31:03 +01:00
Jonas Platte
4febe45364
refactor(base): Make AmbiguityChange(s) non-exhaustive
...
They are meant to be consumed, but not created, by other crates.
2023-01-16 11:31:03 +01:00
Jonas Platte
70de11a73a
refactor: Remove unused Deserialize, Serialize implementations
2023-01-16 11:31:03 +01:00
Jonas Platte
58f2d53293
doc(sdk): Update spec link
2023-01-16 11:31:03 +01:00
Doug
6540b9bb49
feat(bindings): Expose read receipts to FFI
2023-01-16 10:58:40 +01:00
Jonas Platte
6c53842599
chore: Bump ruma, vodozemac
2023-01-16 10:34:06 +01:00
Jonas Platte
663d043abb
refactor: Always use Debug for logging enum or identifier values
2023-01-16 10:34:06 +01:00
Damir Jelić
386cbce344
Revert "feat(ffi): add subscribe_and_add_timeline_listener helper fn"
...
This reverts commit ba4e304cad .
2023-01-13 14:55:39 +01:00
Damir Jelić
ece9252a3d
chore(crypto): Add the sender and event type to the to-device handling span
2023-01-13 12:46:07 +01:00
Damir Jelić
c13cb4957e
chore(crypto): Don't use a JsOption needlessly.
2023-01-13 12:46:07 +01:00
Damir Jelić
1f34a016e5
chore(crypto): Add the to-device message id to the logs if there is one
2023-01-13 11:58:42 +01:00
Damir Jelić
b8dd704658
refactor(crypto): Move the to-device event handling into a separate method
2023-01-13 11:58:42 +01:00
Benjamin Kampmann
273e96265f
Merge pull request #1335 from gnunicorn/ben-sliding-sync-integration-test
...
Various smaller fixes on sliding-sync for elem-x:
- Infrastructure and smoke test only for integration testing sliding-sync
- Expose Pop and Clear on VecDiff
- Expose adding views during sliding sync live runtime incl integration tests
- bug fix on replacing only in-window-items in the insert-code (was leading to a wrong list setting), including integration test
2023-01-13 10:11:30 +00:00
Jonas Platte
0e3ea58aa4
Revert unrelated change
2023-01-13 10:51:52 +01:00
Benjamin Kampmann
ba4e304cad
feat(ffi): add subscribe_and_add_timeline_listener helper fn
2023-01-13 08:09:10 +00:00
Benjamin Kampmann
723e3a3135
tests(sliding-sync): minor style improvements
2023-01-12 19:53:57 +01:00
Kévin Commaille
1c754e663d
fix(sdk): Make pagination strategy implement Send
...
Required when `PaginationOptions` must implement `Send`,
e.g. with `tokio::runtime::Runtime::spawn`.
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-01-12 19:24:47 +01:00
Damir Jelić
846844e67b
fixup! chore(sdk): Re-export the AmbiguityChange type
2023-01-12 19:12:01 +01:00
Damir Jelić
51d96213ba
chore(sdk): Re-export the AmbiguityChange type
...
This was forgotten to be re-exposed after it was moved to the base
crate.
2023-01-12 19:12:01 +01:00
Damir Jelić
80868919ae
fix(crypto): Make the device update logic a bit more strict and obvious
...
When updating a device after we receive new device keys from a
/keys/query call we implicitly check that the user and device id match
since we need to fetch the device using the mentioned ids.
This moves the check into the update method as well to make it more
explicit. We also prevent upgrades of the Ed25519 key since we don't
support any different key type anyways.
2023-01-12 17:55:06 +01:00
Damir Jelić
e3e9898f88
fixup! test(crypto): Check that we sign and verify fallback keys properly
2023-01-12 17:53:22 +01:00
Damir Jelić
f2055f8069
test(crypto): Check that we sign and verify fallback keys properly
2023-01-12 17:53:22 +01:00
Damir Jelić
151f87a417
chore(crypto): Improve some docs
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2023-01-12 17:37:06 +01:00
Damir Jelić
0e4f4d69b8
feat(crypto): Handle the failures field in the /keys/claim response
2023-01-12 17:37:06 +01:00
Damir Jelić
8db84a3c9e
feat(crypto): Handle the failures field in the /keys/query response
2023-01-12 17:37:06 +01:00
Damir Jelić
1b18402707
feat(crypto): Add a TTL-cache that will handle failures for some requests
2023-01-12 17:37:06 +01:00
Benjamin Kampmann
6ec8ff6363
ci(coverage): ignore new sliding-sync-integration-tests for now
2023-01-12 13:51:59 +01:00
Benjamin Kampmann
906c09987f
style(sliding-sync): minor style refinements
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
c93a9ef9a3
fix(sliding-sync): Simply room_range checking
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
51f2e773a0
fix(ffi): add Pop and Clear to VecDiff for sliding-sync
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
3c6c5f4fae
ci: disable broken sliding-sync-integration-test-runs
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
a8d49b86df
feat(sliding-sync): adding views on live sliding-sync
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
2949dcc773
docs: Add a Readme to explain usage
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
b790bf9397
test(sliding-sync): add integration test covering #1333
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
91941a5360
fix(sliding-sync): ensure we are only replacing items in the requested range
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
fabf0d40bc
test: add test for moving window and rooms
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
08bec243ff
ci(sliding-sync): add sliding sync integration test
2023-01-12 13:24:16 +01:00
Benjamin Kampmann
60d82fde38
test: add sliding-sync integration-testing facilities
2023-01-12 13:24:16 +01:00
Jonas Platte
866158f6ff
chore(sdk): Add logging for when timeline events are not handled
2023-01-11 17:14:09 +01:00
Kévin Commaille
f883293168
chore: Update Ruma
...
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr >
2023-01-11 16:05:02 +01:00
Damir Jelić
c6e883da68
fix(sdk): Pass in to-device events to the OlmMachine unconditionally
...
The sliding sync proxy seems to have started to omit the e2ee extension
completely if no changes happened to the one-time key counts.
Our sync response processing assumed that, if there are some to-device
events that need to be passed to the OlmMachine, then we'll have some
data in the e2ee extension of the response as well. In other words, it
wouldn't pass in the to-device events to the OlmMachine if the e2ee
field of the sync response is `None`.
Since the assumption isn't true, we're going to pass in default values
for the one-time key counts when the e2ee extension field of the
response is `None`.
2023-01-11 14:18:40 +01:00
Damir Jelić
cdfb51a606
refactor!(sdk): Add the experimental prefix to the sliding-sync feature
2023-01-11 11:54:32 +01:00
Damir Jelić
3e88905518
chore(sdk): Make the timeline feature a dependency of the sliding sync one
2023-01-11 11:54:32 +01:00
Damir Jelić
156c351023
chore(crypto): Instrument the receive_sync_changes method
...
This is mainly done so we create a span with the name of the function,
since we can filter logs by the name of the span we're now able to
enable logs for this method only.
2023-01-11 11:17:58 +01:00
Jonas Platte
a98c1fd00d
chore: Update Cargo.lock
2023-01-10 10:19:02 +01:00
Jonas Platte
f4bfbdf97d
chore: Upgrade base64
2023-01-10 10:19:02 +01:00
Jonas Platte
2e30e11101
refactor: Use workspace dependencies for more crates
2023-01-10 10:19:02 +01:00
Jonas Platte
3af6ba245c
refactor: Fully replace matches crate with assert_matches
2023-01-10 10:19:02 +01:00
Benjamin Kampmann
db1d31c9cc
fix(sliding-sync): Do not implictly activate to-device extension upon unfreeze
...
Previously, when we found a since-token in the frozen state, we'd always activate the to-device extensions
regardless of whether the user had activated it in their builder or didn't. With this change we are only
setting the since parameter from cache if the user actually activated the to-device extension.
2023-01-10 10:04:31 +01:00
Jonas Platte
444a82fd9e
fix(sdk): Small documentation update
2023-01-10 10:01:26 +01:00
Jonas Platte
6e218bdebc
feat(sdk): Make pagination more flexible and smarter
...
- Don't actually fire off a request when the top of the timeline has
already been reached
- Allow making multiple requests without removing the loading indicator
in between
2023-01-10 10:01:26 +01:00
Jonas Platte
9b3bf5a4fa
feat(sdk): Add TimelineStart virtual timeline item
2023-01-10 10:01:26 +01:00
Jonas Platte
237edcd747
refactor(sdk): Move day_divider constructor to TimelineItem
2023-01-10 10:01:26 +01:00
Jonas Platte
271e925adc
refactor(sdk): Add and use TimelineItem::{read_marker, is_read_marker}
2023-01-10 10:01:26 +01:00
Benjamin Kampmann
514530c19a
fix(sliding-sync): ensure last index is also invalidated
...
Index ranges are inclusive, but our loop would stop one short. This particuarly
tricky when the selective view is moved, as we didn't properly invalidate all items.
2023-01-09 22:48:57 +00:00
Benjamin Kampmann
58aec0d126
feat(uniffi): Add support to set list filters on sliding sync view builders ( #1296 )
...
* feat(uniffi): Add support to set list filters on sliding sync view builders
* fix: expose SlidingSyncRequestListFilters via proc-macros
2023-01-09 14:45:35 +00:00
dependabot[bot]
63c8696cac
chore(deps): bump tokio from 1.22.0 to 1.23.1
...
Bumps [tokio](https://github.com/tokio-rs/tokio ) from 1.22.0 to 1.23.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.22.0...tokio-1.23.1 )
---
updated-dependencies:
- dependency-name: tokio
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2023-01-07 14:06:32 +01:00
Damir Jelić
6aff4fc2c0
Update the bindings to use the SAS signalling ( #1300 )
...
* feat(bindings): Expose support for manually starting SAS verifications
Co-authored-by: Stefan Ceriu <stefanc@matrix.org >
2023-01-06 10:20:40 +01:00
Jonas Platte
8375c47f42
feat(sdk): Add pagination loading indicator as a virtual timeline item
2023-01-06 09:48:44 +01:00
Jonas Platte
1b2387bcb2
refactor(sdk): Enforce no pagination overlap in timeline
...
… by locking the pagination token for the entire duration of the API call.
2023-01-06 09:48:44 +01:00
Jonas Platte
1e71036b19
refactor(sdk): Simplify day divider matching
2023-01-06 09:48:44 +01:00
Jonas Platte
e0f5dc97a5
refactor(bindings): Avoid single letter type aliases
2023-01-05 10:53:56 +01:00
Jonas Platte
64f367d474
feat(bindings): Expose all TimelineItemContent variants
2023-01-05 10:53:56 +01:00
Jonas Platte
bb39c2aa9d
feat(sdk): Persist sliding-sync to-device extension since value
2023-01-04 19:05:37 +01:00
Jonas Platte
b82cd7fa5a
refactor(common): Simplify wasm timeout implementation
...
… and remove an infinitely-recursive From impl in the process.
2023-01-04 18:59:11 +01:00
Jonas Platte
6780dc0312
refactor(sdk): Increase default request timeout to 30s
2023-01-04 17:55:18 +01:00
Damir Jelić
72519b7386
chore(labs): Use clap instead of structopt for jack-in
...
Update to clap v4 in jack-in
2023-01-04 12:49:50 +01:00
Jonas Platte
c7b41e3fca
test(sdk): Add a test for TimelineInner::add_initial_events
2023-01-04 12:44:51 +01:00
Marcel Kräml
5852d751bd
Updated jack-in README.md for full-sync-mode lowercase options
...
Signed-off-by: Marcel Kräml <m.kraeml@kraeml.it >
2023-01-04 12:38:54 +01:00
Marcel Kräml
cda596ebed
Changed full_sync_mode to lowercase
...
Signed-off-by: Marcel Kräml <m.kraeml@kraeml.it >
2023-01-04 12:21:14 +01:00
Jonas Platte
a5e17be3a1
refactor(bindings): Only create a timeline for SlidingSyncRoom if needed
2023-01-04 11:44:07 +01:00
Jonas Platte
33cdc108b5
chore(sdk): Log number of events in add_initial_events
2023-01-04 11:44:07 +01:00
Jonas Platte
c3dfd2e744
refactor(sdk): Only lock timeline items if needed in add_initial_events
2023-01-04 11:44:07 +01:00
Jonas Platte
8ab5bb7fca
refactor(sdk): Use HttpError::client_api_error_kind
2023-01-04 11:44:07 +01:00
Jonas Platte
80d8a8f41f
refactor: Import tracing macros
2023-01-04 11:44:07 +01:00
Jonas Platte
46fe998a33
refactor(crypto): Improve logging
2023-01-03 13:09:09 +01:00
Jonas Platte
7efbba5d8b
refactor(sdk): Improve logging in timeline::event_handler
2023-01-03 13:09:09 +01:00
Jonas Platte
907d50f773
refactor(sdk): Move TimelineInnerMetadata definition to timeline::inner
2023-01-03 13:09:09 +01:00
Jonas Platte
9cba98ae1b
feat(sdk): Add num_updates to timeline PaginationOutcome
2023-01-03 09:44:23 +01:00
Jonas Platte
108950c706
refactor(sdk): Remove update_timeline_item
...
… inlining it into its only call site.
2023-01-03 09:44:23 +01:00
Jonas Platte
4452e15489
refactor(sdk): Rename TimelineEventHandler#event_added to item_created
2023-01-03 09:44:23 +01:00
Matthew Hodgson
b026d90bcf
fix(sdk): Handle to-device sliding sync extension correctly
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2023-01-02 18:00:38 +00:00
Jonas Platte
aa5f74ffb1
fix(sdk): Fix clippy lint
2023-01-02 12:45:50 +01:00
Jonas Platte
469c6cf104
fix(sdk): Don't log raw JSON which can contain personal data
2023-01-02 12:45:50 +01:00
Jonas Platte
3c5b005aae
fix(sdk): Remove message contents from TimelineItem debug string
2023-01-02 12:45:50 +01:00
Marcel Kräml
eef0bf4b91
Fixed clap for jack-in and update README.md
...
Signed-off-by: Marcel Kräml <m.kraeml@kraeml.it >
2022-12-23 11:29:21 +01:00
Marcel Kräml
ad1011ec53
Replace structopt with clap in jack-in
...
Signed-off-by: Marcel Kräml <m.kraeml@kraeml.it >
2022-12-23 11:17:02 +01:00
Jonas Platte
c215ac1f4b
ci: Specify which version of wasm-pack we want
2022-12-22 16:06:48 +01:00
Jonas Platte
187696aa62
ci: Use latest version of wasm-pack-action
2022-12-22 16:06:48 +01:00
Jonas Platte
e1e094f2f4
chore(sdk): Lower log level of event ID duplication event
2022-12-22 14:45:41 +01:00
Damir Jelić
e2d4be2050
chore: Fix our build badge
2022-12-22 11:26:29 +01:00
Jonas Platte
7dc4d47d3c
refactor(sdk): Store timeline event handler handles in a Vec
...
… instead of individual EventHandlerDropGuard's that each individually
hold a copy of Client.
2022-12-22 10:32:03 +01:00
Jonas Platte
9bad6faedd
feat(sdk): Retry event decryption on forwarded room keys
2022-12-22 08:37:17 +01:00
Jonas Platte
3a715ea822
refactor(sdk): Move timeline m.room_key handler into new module
2022-12-22 08:37:17 +01:00
Jonas Platte
f58f3fe055
chore(sdk): Add more logging to decryption retrying
2022-12-22 08:37:17 +01:00
Benjamin Kampmann
6eda742fff
style(sliding-sync): explain why we limit the timeline items in freeze
2022-12-21 12:51:12 +00:00
Jonas Platte
14f451c6dd
feat(bindings): Add decryption retrying to matrix-sdk-ffi
2022-12-21 13:35:27 +01:00
Benjamin Kampmann
562087a70e
fix(sliding-sync): properly handle rooms_count == 1. fixes #1285
2022-12-21 10:13:39 +00:00
Benjamin Kampmann
e3e0eb9144
fix(sliding-sync): sync view state for selective views.
...
Fixes ##1284
2022-12-21 10:13:39 +00:00
Benjamin Kampmann
b6d48cb31a
fix(sliding-sync): limit cold storage of timeline items to 10 and drop prev-batch token in case we'd store too many
2022-12-21 10:13:39 +00:00
Ivan Enderlin
e4257f9aff
feat(crypto-js): Make our promises reject with Error.
...
feat(crypto-js): Make our promises reject with `Error`.
2022-12-21 09:49:30 +01:00
Richard van der Hoff
6b871b0a48
matrix-sdk-crypto-js: Make our promises reject with Error
...
It's not a hard-and-fast-rule that Javascript exceptions should be `Error`
instances, but it's certainly a convention, and one that is going to reduce
surprises if we follow.
2022-12-20 22:36:42 +00:00
Jonas Platte
561fb97a7b
feat(bindings): Add virtual timeline items to matrix-sdk-ffi
2022-12-19 13:54:55 +01:00
Jonas Platte
a5080b6ed9
chore: Upgrade Ruma
2022-12-19 13:50:02 +01:00
Jonas Platte
8034ac20f9
refactor(base): Keep redaction events as Raw inside StateChanges
2022-12-19 13:50:02 +01:00
Jonas Platte
f5c0ea4605
doc(bindings): Update docs for Apple platforms
2022-12-19 13:44:00 +01:00
Doug
ddf448aa02
doc(bindings): Update docs for Apple platforms.
...
Remove old bash scripts now we have the xtask.
2022-12-19 12:31:29 +00:00
Kévin Commaille
b960c372ac
feat(sdk): Add support for stickers in the timeline
2022-12-19 08:39:07 +00:00
Jonas Platte
05e4bc0557
refactor: Don't reserialize member events before storing them
2022-12-15 18:19:35 +01:00
Jonathan de Jong
d79c70177b
Lab: The Setup Pattern
2022-12-15 16:48:55 +01:00
Kateřina Churanová
db7eafb7d0
fix(doc): Fix unresolved link in documentation
...
Signed-off-by: Kateřina Churanová <k.churanova@famedly.com >
2022-12-14 22:00:25 +01:00
Anderas
9239470c1c
feat(crypto): Add signalling to the verification requests and qr code verification
2022-12-14 19:15:22 +01:00
Benjamin Kampmann
dab20638f9
fix(sliding-sync): new limit should default to None in builder
2022-12-14 14:06:31 +01:00
Benjamin Kampmann
273d0a0edf
feat(sliding-sync): Growing window and limit count full sync ( #1270 )
...
Add a second full-sync-up mode to sliding sync. Previously - and still the default for backwards compatibility, but now named `PagingFullSync` - was to page through the list by the page-size, de-validating the previous page of items. The newly added `GrowingFullSync` instead grows the window by the given number `batch_size` per request, starting and keeping it from `0`. In the latter we might be pushing more data over the connection and are slightly slower, but the top always stays active and thus reactive to changes.
Furthermore the developer can now configure an optional maximum number to grow/paginate the full-sync up to (so stopping before actually having reached `count` whatever is smaller). This is already exposed via FFI, too.
- [x] add new full-sync-mode
- [x] add limited sync-up mode (similar to full sync but only to a limit `n`)
- [x] implement sync-up in jack-in
2022-12-14 13:50:35 +01:00
Jonas Platte
1c12b23e4c
refactor(sdk): Move PaginationOutcome out of event_item module
2022-12-14 12:38:48 +01:00
Kévin Commaille
37bea19ab5
feat(sdk): Add day dividers to the experimental timeline
2022-12-14 12:29:24 +01:00
Jonas Platte
eb0c3449fa
refactor(bindings): Use proc-macro frontend more in sdk-ffi
2022-12-14 12:03:13 +01:00
Jonas Platte
b3f146c932
refactor(bindings): Use proc-macro frontend more in crypto-ffi
2022-12-14 12:03:13 +01:00
Jonas Platte
34d458d3a3
chore: Upgrade UniFFI
2022-12-14 12:03:13 +01:00
Benjamin Kampmann
1c55565403
Merge pull request #1255 from gnunicorn/ben-update-jack-in
...
Sliding Sync updates
- expose timeline listener via FFI on slidingsyncroom, too - returning a stoppable spawn
- connect room timeline and sliding-sync-room timeline together
- increase HTTP timeout on jack-in
- add jack-in support for actual timeline items.
2022-12-13 15:14:57 +00:00
Richard van der Hoff
c8da05125e
Merge remote-tracking branch 'origin/main'
2022-12-12 18:41:30 +00:00
Richard van der Hoff
9ec9a59509
Release 0.1.0-alpha.2
Release `crypto-js` / Publish 🕸 [m]-crypto-js (push) Failing after 34s
2022-12-12 18:02:21 +00:00
Richard van der Hoff
4f9452c9b0
Fix yet another typo in package.json
2022-12-12 17:51:10 +00:00
Richard van der Hoff
dfed2f1b3a
Bump version
Release `crypto-js` / Publish 🕸 [m]-crypto-js (push) Failing after 36s
2022-12-12 17:35:54 +00:00
Richard van der Hoff
5850ff4cfc
Fix filenames in package.json
2022-12-12 17:31:54 +00:00
Doug
e64a8113e9
feat(bindings): Generate a Package.swift in xtask
2022-12-12 18:04:15 +01:00
Richard van der Hoff
2a4b83b5e6
Switch to npm-publish GHA script
...
Release `crypto-js` / Publish 🕸 [m]-crypto-js (push) Failing after 57s
Mostly because, as of #1167 , we no longer have a `publish` script.
2022-12-12 16:17:32 +00:00
Benjamin Kampmann
799447f481
Merge remote-tracking branch 'origin/main' into ben-update-jack-in
2022-12-12 15:15:14 +01:00
Benjamin Kampmann
1a0b90291c
fix(jack-in): rendering formatting improvements
2022-12-12 15:14:18 +01:00
Valere
9a058b9ea0
feat(crypto): Request room keys if the decryption failure is an unknown message index
...
We automatically request room keys to be forwarded from our other trusted devices if a decryption failure happens because the room key is missing.
This patch introduces automatic room key requests for decryption failures if the room key is available but has been ratcheted forward. In other words, we will now request a better version of the given room key automatically as well.
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2022-12-12 13:09:45 +01:00
Erwan Bousse
1ef645d285
feat(bindings): Use HTTPS proxy when provided as environment variable
2022-12-09 16:01:02 +01:00
valere
57e09c07dc
Git Ignore generated files from kotlin bindings
2022-12-09 13:12:50 +01:00
Benjamin Kampmann
1e4c16b9a9
Merge remote-tracking branch 'origin/main' into ben-update-jack-in
2022-12-07 16:31:32 +01:00
Benjamin Kampmann
26486fc905
feat: add kotlin bindings
...
Merge pull request #1239 from matrix-org/ganfra/kotlin_bindings
2022-12-07 14:50:38 +00:00
Benjamin Kampmann
c4884887ef
fix(sliding-sync): set views to preload if we've recovered from frozen
2022-12-07 13:59:50 +00:00
Jonas Platte
ddde87f14b
fix(sdk): Fix remote echo event_id check
...
The send-event response sets the event_id field, not the timeline key.
The previous error branch wasn't actually reachable.
2022-12-07 12:32:44 +01:00
Jonas Platte
3e1fddccfd
fix(sdk): De-duplicate local echoes with remote echoes without txn ID
2022-12-07 12:32:44 +01:00
Jonas Platte
c1949e3fc6
refactor(sdk): Move timeline::add_event_id to TimelineInner
2022-12-07 12:32:44 +01:00
Juliette
63bc004e26
feat(bindings): Add uploading media and setting display name to FFI
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-12-07 10:40:15 +00:00
Jonas Platte
e99341df69
chore(bindings): Move bindings around to work around rustfmt bug
2022-12-07 11:16:25 +01:00
Jonas Platte
7667f0c429
refactor(sled): Use open_with_database for SledCryptoStore::open
2022-12-07 11:16:25 +01:00
Jonas Platte
d0609822bc
refactor(sled)!: Rename SledCryptoStore::{open_with_passphrase => open}
...
`open_with_db` also has the passphrase parameter without mentioning it
in its name. The old name also sounded like the passphrase was required
when it's actually optional.
2022-12-07 11:16:25 +01:00
Jonas Platte
262fe5630f
feat(sdk): Implement IntoFuture for LoginBuilder and SsoLoginBuilder
2022-12-07 11:13:44 +01:00
Andrew Ferrazzutti
2176b7ee39
Revise example of machine.receiveSyncChanges
...
Clarify that the JSON-encoded `toDeviceEvents` passed to
`OlmMachine.receiveSyncChanges` must be the list of events themselves,
instead of a wrapper object that contains the event list.
Signed-off-by: Andrew Ferrazzutti <andrewf@element.io >
2022-12-07 11:00:22 +01:00
Benjamin Kampmann
2bc738be8c
feat(jack-in): sending messages via timeline API
2022-12-06 14:28:34 +01:00
Jonas Platte
f5b59c3de2
refactor(sdk)!: Remove impl Into<_> around Ruma request types
...
The SDK used to have builder types for these request types, but they
were removed long ago.
2022-12-06 14:00:33 +01:00
ismailgulek
31e5d4d663
feat(bindings): Add members accessor to Room
...
Co-authored-by: Doug <douglase@element.io >
2022-12-06 12:58:30 +00:00
Jonas Platte
6a386ca5fb
feat(bindings): Add sending of reactions to matrix-sdk-ffi
2022-12-06 12:48:06 +01:00
Jonas Platte
a18919bf50
chore: Add a PR template
2022-12-05 14:58:33 +01:00
Jonas Platte
f92153757b
chore: Add CONTRIBUTING.md
...
… and move the testing section from README.md into it.
2022-12-05 14:58:33 +01:00
Benjamin Kampmann
83d0abc6d7
feat(sliding-sync): properly handle all timeline event types
2022-12-05 14:52:38 +01:00
Benjamin Kampmann
f919ee3b7d
fix(ffi): clean up sliding sync timeline API
2022-12-05 14:52:38 +01:00
Benjamin Kampmann
0bfa63b31e
fix(sliding-sync): return a stoppable spawn to allow listener cancellation
2022-12-05 14:52:38 +01:00
Benjamin Kampmann
229e6b28a5
fix(ffi): connect timelines together
2022-12-05 14:52:38 +01:00
Benjamin Kampmann
fee9d52dde
feat(ffi): expose sliding-sync timeline
2022-12-05 14:52:38 +01:00
Benjamin Kampmann
d4890807f9
fix(jack-in): bump http timeout to 90seconds
2022-12-05 14:52:38 +01:00
Damir Jelić
58f92e59fe
fix(bindings): Change the is_syncing method to read the correct value
2022-12-05 14:16:01 +01:00
Damir Jelić
1f38becdd9
chore: Fix a clippy warning
2022-12-05 14:16:01 +01:00
Ivan Enderlin
2d9e8170fe
feat(indexeddb): Update to indexed_db_futures 0.3.0.
...
It removes the fork we have introduced in https://github.com/matrix-org/matrix-rust-sdk/pull/1068
(all our patches have been merged and are part of this 0.3.0 release).
2022-12-05 14:16:01 +01:00
Kévin Commaille
aeb419207a
refactor(sdk): Split restore_session into two parts at the Client level ( #1246 )
...
Tokens are not necessary for the restoration of the crypto/store, only
the meta. Required for OpenID Connect support where we need the tokens to get the
meta.
2022-12-05 13:19:35 +01:00
Flix
ee713d42ae
chore: Bump axum
2022-12-01 13:26:07 +01:00
ganfra
97578e418c
Merge branch 'main' into ganfra/kotlin_bindings
2022-11-30 20:39:42 +01:00
Benjamin Kampmann
7d69fb2314
fix(sliding-sync): fallback to invite-room if regular room can't be found ( #1249 )
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-11-30 13:59:25 +00:00
Jonas Platte
32cc477f54
refactor(sdk): Remove media caching from in-memory state store
2022-11-30 10:21:24 +01:00
Andy Uhnak
457c5f4fa3
Add cancel methods and rename callback method
2022-11-30 10:18:47 +01:00
Damir Jelić
c604e59dcc
feat(bindings): Expose the Sas::changes method over the FFI
2022-11-30 10:18:47 +01:00
Damir Jelić
026659ef68
refactor!(bindings): Return objects for the verification support
...
When the verification support was initially bound, Uniffi did not
support objects (the OlmMachine) returning other objects (our
verification objects). Instead we converted all the verification objects
into pure data structs which the other side had to poll for changes.
Now that Uniffi supports returning objects we can refactor this and make
the API on the other side the same as on the Rust side.
2022-11-30 10:18:47 +01:00
Jonas Platte
195ade911e
refactor(sdk): Simplify signature of handle_back_paginated_event
2022-11-29 23:55:33 +01:00
Jonas Platte
a881dad529
refactor(sdk): Make Timeline construction non-async
2022-11-29 23:55:33 +01:00
Jonas Platte
090b4495ea
refactor(sdk): Simplify signature of handle_remote_event
2022-11-29 23:55:33 +01:00
Jonas Platte
3dfc60506f
feat(sdk): Add SlidingSyncRoom::latest_event
2022-11-29 23:55:33 +01:00
Jonas Platte
d4b67de9c3
refactor: Replace Timeline::latest with Timeline::latest_event
2022-11-29 23:55:33 +01:00
Jonas Platte
78e621010d
refactor(sdk): Make tracking of fully-read marker in Timeline optional
2022-11-29 23:55:33 +01:00
Jonas Platte
1b0849a20c
refactor(sdk): Move TimelineInner into its own module
2022-11-29 23:55:33 +01:00
Jonas Platte
32bf3143c7
doc: Hint towards test execution
2022-11-29 23:38:31 +01:00
Jonas Platte
3d22b6d5a4
chore: Upgrade Ruma
2022-11-29 15:37:18 +01:00
Flix
bc29bcef38
doc: Hint towards test execution
2022-11-29 15:29:41 +01:00
Jonas Platte
859b12fca9
feat(sdk): Add debug logs for aggregated event handler execution times
2022-11-29 09:46:43 +01:00
Jonas Platte
c564696a8a
feat(sdk): Add tracing info to call_event_handlers
2022-11-29 09:46:43 +01:00
Benjamin Kampmann
d3ff402813
feat(sliding-sync): Offline caching for Sliding Sync & session recovery ( #1193 )
...
With these changes, the user of sliding sync can configure the SlidingSync-Builder to store and recover the state from storage. For that they should call cold_cache("my-sliding-sync-key") with their preferred storage location during setup time on SlidingSyncBuilder. If a cached version is found under that key, the internal state of the rooms-list as well as each view found (identified by their name) will be set from storage immediately - allowing the user to show the last cached state. The Builder then also uses the same key to store its latest state after every update received from remote.
👉 Note on room list:
As we store a disconnected state, we are saving all RoomList entries as either Empty or Invalidated. This allows for an easier updating when the server comes back with results, as we don't track the ranges in cache - in the view of the server, we haven't seen anything yet.
👉 Note on timeline events:
This does store all existing timeline events - initial and seen during the session (as we keep track of them right now) - and will recover that state. However, as we can't be sure wether we have gaps in the timeline, the timeline items are reset upon receiving updates for them from the server.
👉 Note on (full-sync-)view:
While we are caching the server returned results (view list, room count and room info) as is, we are not caching the internal state (whether we are catching up) nor the ranges (as they are likely to be out of date) - those will be acting the same way you configured them, just with preloaded results. So for a full-sync-view, it will still do requests in batches and replace the corresponding set of rooms. Which could mean you might see the same room appear twice, though the cached one would be marked as invalidated. This might be problematic if the list the UI shows is longer than the batches fetched, but would be resolved quickly when catching up.
👉 On recovery:
When the sliding sync receives a M_UNKNOWN_POS, indicating the server has expired our session, sliding sync now transparently retries with up to three times to restart the sliding sync with full set of extensions and the latest views at their existing windows, the current room state is held. For full sync this starts a new sync-up with the existing room list staying intact. This also works from the offline at start.
2022-11-28 18:01:04 +00:00
Kateřina Churanová
08951e1c56
fix(ci): Fix unused import warnings on macos
2022-11-28 15:08:01 +01:00
Jonas Platte
afda63f9e2
fix(sdk): Only retry requests on M_LIMIT_EXCEEDED or HTTP 5xx
2022-11-28 14:13:03 +01:00
Jonas Platte
d7e6dd22e6
refactor(sdk): Simplify RumaApiError again
...
by folding Uiaa(UiaaResponse::MatrixError) into RumaApiError::ClientApi.
2022-11-28 14:13:03 +01:00
ganfra
68a6d2707f
Fix naming of generated crypto .so files
2022-11-28 11:47:59 +01:00
ganfra
6666cd7a79
Use the generate .a file from cargo build as it's not stripped (instead of new target)
2022-11-25 19:20:54 +01:00
ganfra
75bb44bebf
Add script to generate only crypto-ffi crate
2022-11-25 11:59:27 +01:00
ganfra
0504240878
Merge branch 'main' into ganfra/kotlin_bindings
2022-11-25 10:19:19 +01:00
Jonas Platte
c0910a3693
chore: Fix a typo, upgrade typo check action
2022-11-24 22:36:46 +01:00
Kévin Commaille
183d4595aa
fix(sdk): Make sure read marker can't go backwards
2022-11-24 22:15:36 +01:00
Kévin Commaille
580861cd1c
fix(sdk): Rename read marker functions and variables for clarity
2022-11-24 22:15:36 +01:00
Kévin Commaille
1f761f3c13
test(sdk): Add read marker case when fully read event wasn't found
2022-11-24 18:17:43 +01:00
Kévin Commaille
5dc6416a76
fix(sdk): Fix logic if read marker event was not in the timeline
2022-11-24 18:17:43 +01:00
Jonas Platte
c808a72914
feat(sdk): Add FailedToParse timeline items
2022-11-24 14:35:49 +01:00
Jonas Platte
6a1edf133d
refactor(sdk): Add NewEventTimelineItem::from_content
2022-11-24 14:35:49 +01:00
Jonas Platte
d0f0b650bd
chore: Move impl for type after its definition
2022-11-24 14:35:49 +01:00
Jonas Platte
d027005e87
chore(sdk): Rewrap info! invocation
2022-11-24 14:35:49 +01:00
Jonas Platte
43f0ba7711
chore: Appease clippy
2022-11-24 13:43:09 +01:00
Jonas Platte
8ce216974f
test(sdk): Add a regression test for read marker updates
2022-11-24 13:43:09 +01:00
Jonas Platte
f7d4129607
fix(sdk): Fix logic for updating an existing read marker
2022-11-24 13:43:09 +01:00
Stefan Ceriu
1107f27c3d
fix(ffi): Use the right path for generated source files and only copy the generated folder contents ( #1226 )
2022-11-22 14:21:58 +00:00
Damir Jelić
3113f6698f
chore: Don't use the term check for signature verification
2022-11-22 13:21:33 +01:00
Damir Jelić
38c38bc9f0
feat!(bindings): Expose the improved result of the verify_backup method
2022-11-22 13:21:33 +01:00
Jonas Platte
de71d7e434
refactor(base): Simplify default memory store initialization
2022-11-22 11:03:45 +01:00
Jonas Platte
57a1743566
chore: Update Cargo.lock
2022-11-22 11:01:23 +01:00
Stefan Ceriu
1025d42624
fix(ffi): Fix xcframework release script, add missing module map
2022-11-22 09:55:46 +01:00
Jonas Platte
fcb37b6962
feat: Support creating Timeline with initial items from sliding sync
...
Co-authored-by: Benjamin Kampmann <ben@gnunicorn.org >
2022-11-21 14:52:02 +01:00
bitfriend
2ab697328f
fix(sdk): Make handle_back_paginated_event future Send
2022-11-18 20:57:36 +00:00
Damir Jelić
eb20abe7b8
chore: The encryption feature was renamed
2022-11-18 19:53:07 +01:00
Jonas Platte
fa71122e7d
ci: Add sliding-sync and experimental-timeline to clippy check
2022-11-18 15:05:48 +01:00
Jonas Platte
785a3349ab
refactor(sdk)!: Make sync_token accessor private
2022-11-18 14:02:41 +01:00
Jonas Platte
6329dbe6c2
refactor!: Split SyncResponse into two types
...
- matrix_sdk_base::sync::SyncResponse is the internal representation that
we can update to account for sliding sync
- matrix_sdk::sync::SyncResponse is `/v3/`-specific and should not change
2022-11-18 14:02:41 +01:00
Jonas Platte
ec5306978e
refactor(sdk): Simplify signature of handle_sync_response
2022-11-18 14:02:41 +01:00
Jonas Platte
6b363120ef
fix(sdk): Fix errors & warnings w/ experimental-timeline, w/o e2e-encryption
2022-11-18 13:39:51 +01:00
Jonas Platte
4bafb3818b
feat(sdk): Add Timeline::retry_decryption
2022-11-18 13:39:51 +01:00
Jonas Platte
317965995a
test(sdk): Add a test for retrying decryption of timeline items
2022-11-18 13:39:51 +01:00
Jonas Platte
74e9209e95
feat(sdk): Retry decryption of UTD timeline items
2022-11-18 13:39:51 +01:00
Jonas Platte
da76a2700d
refactor(sdk): Use an async lock for TimelineInnerMetadata
2022-11-18 13:39:51 +01:00
Jonas Platte
ac33ca5fa0
refactor(sdk): Hold locks for the full lifetime of TimelineEventHandler
...
Not really necessary now, but required for thread-safe bulk updates like
we want for retrying decryption.
2022-11-18 13:39:51 +01:00
Jonas Platte
2bc0ac8fd7
refactor(sdk): Merge mutexes in TimelineInner into one
2022-11-18 13:39:51 +01:00
Damir Jelić
5a108f53cc
refactor(crypto): Only use the Mutable for the inner SAS object
...
This patch makes the SAS signalling more robust, it ensures that we
can't forget to signal changes to the state.
2022-11-18 09:26:20 +01:00
Damir Jelić
1f2cdfc601
chore(contrib): Mitmproxy 9 has removed the HTTP prefix from the Response type
2022-11-17 12:43:56 +01:00
Jonas Platte
02165f7a05
refactor(sdk)!: Move retrying out of HttpSend trait
2022-11-17 12:32:45 +01:00
Benjamin Kampmann
98600e4c1e
feat(jack-in): sending messages ( #1156 )
2022-11-17 11:18:27 +00:00
Jonas Platte
bb6145d581
refactor!: Move large parts of deserialized_responses to matrix-sdk-base
2022-11-17 11:33:37 +01:00
Jonas Platte
975626a4f8
refactor(common)!: Remove unused TimelineSlice type
2022-11-17 11:33:37 +01:00
Jonas Platte
c3aa03e486
chore: Add reldbg profile and use it for matrix-sdk-ffi iOS builds
2022-11-16 09:59:06 +01:00
Jonas Platte
51798e90bd
chore: Add dbg profile and improve profile comments
2022-11-16 09:59:06 +01:00
Jonas Platte
5fa6f34e41
refactor(sdk): Use ErrorKind for get_state_events_for_key response check
2022-11-15 16:06:21 +01:00
Jonas Platte
f9d2d32337
fix(xtask): Fix clippy warning
2022-11-15 16:06:21 +01:00
Jonas Platte
2dd2763d39
refactor(base): Unify identical branches and erase empty branches
2022-11-15 16:06:21 +01:00
Johannes Becker
bb6cf83a39
refactor(appservice)!: Rename virtual user to appservice user
2022-11-15 15:57:31 +01:00
Damir Jelić
a7dd690189
refactor(crypto): Split out the room key forwarding logic into a separate method
2022-11-15 14:57:46 +01:00
Jonas Platte
e060606331
refactor(crypto): Move some code into a new method
2022-11-15 14:57:46 +01:00
Jonas Platte
a30e40ed3a
refactor: Introduce more early returns to reduce rightwards drift
2022-11-15 14:57:46 +01:00
Jonas Platte
e59acfe28c
refactor: Use let-else to remove boilerplate code
2022-11-15 14:57:46 +01:00
Jonas Platte
d312aaecec
refactor(crypto): Replace ? on if-else by early return
2022-11-15 14:57:46 +01:00
Jonas Platte
2528a5501b
refactor(crypto): Remove unnecessary ref mut in patterns
2022-11-15 14:57:46 +01:00
Jonas Platte
cf241d8c32
refactor(crypto): Merge matches and reflow comments in accept_secret
2022-11-15 14:57:46 +01:00
Jonas Platte
db5d34e385
refactor(crypto): Reduce rightwards drift in test_device_signatures
2022-11-15 14:57:46 +01:00
Jonas Platte
7d2865f004
refactor(bindings): Shorten is_transaction_id_valid method
2022-11-15 14:57:46 +01:00
Jonas Platte
826705c174
chore: Bump MSRV to 1.65
2022-11-15 14:57:46 +01:00
Jonas Platte
5a1e347333
ci: Install stable toolchain for test-uniffi-codegen
...
The xtask is explicitly using the stable, and there is no reason to use
a less stable toolchain for this job.
2022-11-15 14:57:46 +01:00
Benjamin Kampmann
882b206144
feat(xtask): build xcframework
...
* Move swift build scripts into xtask (#1201 )
* fix(ffi): use target_path from `cargo metadata` rather than guessing
* ci(ffi): install necessary target arch for build-framework test
* feat(xtask): copy to target without rsync.
2022-11-15 13:06:33 +01:00
Flix
8d89037296
fix: Missing ServerError after ruma update
2022-11-15 12:32:20 +01:00
Flix
deb8ef801b
fix: Remove the condition to only set new members in get_members
2022-11-15 12:32:20 +01:00
Flix
0a45e401e3
test: Use MemoryStore to fix problems in coverage tests
2022-11-15 12:32:20 +01:00
Flix
456e00e953
fix: Add missing not_found errors
2022-11-15 12:32:20 +01:00
Flix
ab846f79f1
test: Add encryption state mock to tests where it is needed
2022-11-15 12:32:20 +01:00
Flix
b1c2da9a68
fix: Don't mark encryption state to be synced on sync
...
As it appears, the first sync for a room might not include the
encryption state, so we cannot set the encryption state to be synced on
incoming syncs. That way, we always fetch the encryption state manually.
2022-11-15 12:32:20 +01:00
Flix
1ab33a28c9
fix: Make sure room.sync_up works under all conditions
2022-11-15 12:32:20 +01:00
Flix
a3a9858bf4
refactor: Make if branches instead of early return
2022-11-15 12:32:20 +01:00
Flix
6951f7f5bf
fix: Review comments
2022-11-15 12:32:20 +01:00
Flix
fb8045b254
fix: Fix UDL or is_encrypted
2022-11-15 12:32:20 +01:00
Flix
be7c3239a8
refactor: Adjust create_dm_room to new room API
2022-11-15 12:32:20 +01:00
Flix
956e270941
feat: Implement room sync_up method
2022-11-15 12:32:20 +01:00
Flix
65721aafb9
fix: Lock syncing to the store to avoid races
2022-11-15 12:32:20 +01:00
Flix
9d150e5cc6
fix: Adjust repeated_join test to new changes
2022-11-15 12:32:20 +01:00
Flix
43dd4452cd
fix: Check encryption state in intermediate rooms
2022-11-15 12:32:20 +01:00
Flix
4abb08c4a1
feat!: Make intermediate rooms available right after joining/leaving
...
Co-Authored-By: Jonas Platte <jplatte@matrix.org >
Co-Authored-By: Benjamin Kampmann <ben@gnunicorn.org >
2022-11-15 12:32:20 +01:00
Jonas Platte
544da0d324
fix(sdk): Fix broken intra-doc link
2022-11-15 11:54:53 +01:00
ismailgulek
29aa9a78c3
feat(ffi): Expose file messages
...
Expose file messages (#1203 )
2022-11-14 15:56:38 +00:00
Jonas Platte
4dc0e0ef3c
chore: Upgrade Ruma
2022-11-14 15:01:53 +01:00
Gabriel Féron
680ef6b93a
feat(sdk): Allow using an existing sled::Db with SledStateStore
2022-11-12 13:04:34 +00:00
Benjamin Kampmann
078855b4c9
feat(ffi): logging support for android ( #1199 )
...
* split logger into platform specific implementations
* logging support for android
* use platform independent wrapper for uniffi:exports
* activate colors for ansi-terminals
2022-11-11 12:20:19 +00:00
Damir Jelić
0d80c0e3fe
chore(crypto): Improve the log for the one-time key signature error
2022-11-10 19:03:14 +01:00
ganfra
0901243440
Merge branch 'main' into ganfra/kotlin_bindings
2022-11-10 15:34:32 +01:00
ganfra
fc76cc443e
Fix build script
2022-11-10 15:34:00 +01:00
Jonas Platte
45cf32dfab
test(sdk): Add a test for an undecryptable event
2022-11-10 13:43:46 +01:00
Jonas Platte
aa4dbe4bc6
test(sdk): Add a test for editing a redacted event
2022-11-10 13:43:46 +01:00
Jonas Platte
b550e9ba14
test(sdk): Add a test for an invalid edit
2022-11-10 13:43:46 +01:00
Jonas Platte
79db05cffb
test(sdk): Add a unit test for redacting a reaction
2022-11-10 13:43:46 +01:00
Richard van der Hoff
e45c57d8fe
feat(crypto-js): allow async load of webassembly ( #1198 )
...
It turns out that Google Chrome refuses to initialise the wasm via the
synchronous `WebAssembly.Module` constructor, complaining that it is too
big. To be fair, it has a point.
Anyway, that means we need to provide a way to load the wasm
asynchronously. So, we introduce an `initAsync()` function which applications
can call before they do anything else, to load the wasm in the background.
If the app *doesn't* call `initAsync()`, then we load the wasm synchronously
the first time a function that accesses the wasm is called.
2022-11-10 11:51:37 +00:00
Ivan Enderlin
2eefb3a090
fix(indexeddb) + feat(crypto-js): Releasing IDBDatabase so that we can delete them
...
fix(indexeddb) + feat(crypto-js): Releasing `IDBDatabase` so that we can delete them
2022-11-10 10:40:16 +01:00
Ivan Enderlin
6754defb9b
doc(crypto-js): Improve documentation of OlmMachine.close.
2022-11-10 10:21:48 +01:00
Damir Jelić
078a75ea27
chore(crypto): Log the protocols we accepted for a SAS verification
2022-11-09 16:56:23 +01:00
Damir Jelić
0d74189cde
feat(crypto): Implement MSC3783
...
This commit adds support for the message authentication code calculation
that is using valid base64 when encoding the MAC.
2022-11-09 16:56:23 +01:00
Ivan Enderlin
196dfaea03
test(crypto-js): Test OlmMachine.close + IndexedDB clean up.
2022-11-09 14:48:37 +01:00
Ivan Enderlin
f6496d01c7
feat(crypto-js): Add OlmMachine.close.
...
This new `OlmMachine.close` forces to drop/close the `OlmMachine` without
waiting on the JavaScript garbage collector to collect it.
`wasm-bindgen` generates the following JS glue code:
```js
close() {
const ptr = this.__destroy_into_raw();
wasm.olmachine_close(ptr);
}
```
And, `__destroy_into_raw` looks like this:
```js
__destroy_into_raw() {
const ptr = this.ptr;
this.ptr = 0;
OlmMachineFinalization.unregister(this);
return ptr;
}
```
It unregisters itself from the `FinalizationRegistry` correctly. We are
protected from a double-free.
2022-11-09 14:48:37 +01:00
Jonas Platte
ca515997f1
feat(bindings): Expose video messages in matrix-sdk-ffi
2022-11-09 14:45:31 +01:00
Ivan Enderlin
3fe63c328f
fix(indexeddb): Call IDBDatabase.close manually.
...
Surprisingly, `indexed_db_futures::IdbDatabase` is not closed when dropped.
Hopefully, there is a [`IdbDatabase::close(&self)`][close] method, which calls
`web_sys::IdbDatabase.close`, aka [`IDBDatabase.close`][websys-close], so let's
use it!
`IDBDatabase.close` returns immediately and closes the connection in a separate
thread. The connection isn't actually closed until all transactions created
using this connection are complete. No new transactions can be created for this
connection once this method is called. Methods that create transactions throw
an exception if a closing operation is pending.
[close]: https://github.com/Alorel/rust-indexed-db/blob/8c106eb418aecdba2f3fde80d91a4673a875fdf6/src/idb_database.rs#L73-L77
[websys-close]: https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/close
2022-11-09 14:45:00 +01:00
ismailgulek
26d690a21c
Fix clippy
2022-11-09 16:34:41 +03:00
ismailgulek
045d6647b2
feat(bindings): Add support for editing messages
2022-11-09 14:15:19 +01:00
ismailgulek
7f54e4592f
Expose video messages
2022-11-09 16:02:40 +03:00
ganfra
4899f98f7f
Merge main into ganfra/kotlin_bindings
2022-11-08 17:25:57 +01:00
Kévin Commaille
93be96c85c
feat(sdk): Add read marker logic to the timeline API
2022-11-08 13:16:09 +01:00
Jonas Platte
c014f980cb
chore(sdk): Remove invalid comment
...
I have tried for hours and have concluded it is probably not possible
even with GATs to have RawEvent borrow its inner value.
It is also not a commonly-used feature, so removing the unnecessary
clones is not that important.
2022-11-04 15:17:01 +01:00
Jonas Platte
5601435449
refactor(sdk): Simplify bounds on event handler registration methods
...
… by introducing a hidden trait that constrains the output type of the
associated type EventHandler::Future.
2022-11-04 15:17:01 +01:00
Jonas Platte
5b919fc9df
refactor: Fix clippy lints
2022-11-04 15:17:01 +01:00
Stefan Ceriu
d57666c0b8
fix(sliding_sync): remove server versions fetch
...
before being able to use the sliding sync builder; the versions are still fetched but at a later date (#1183 )
2022-11-04 12:03:17 +00:00
Jonas Platte
ce966ed6ce
chore: Upgrade criterion, pprof
2022-11-04 11:14:13 +01:00
Jonas Platte
3a6d048b9f
refactor(sdk)!: Rename uiaa_response methods to as_uiaa_response
2022-11-03 18:05:04 +01:00
Jonas Platte
cf779822fe
refactor(sdk): Merge impl blocks
2022-11-03 18:05:04 +01:00
Jonas Platte
c8dd5c42e9
docs(sdk): Add more doc links to as_ruma_api_error methods
2022-11-03 18:05:04 +01:00
Jonas Platte
128c74ace5
refactor(sdk): Use server-supplied retry time when when available
2022-11-03 18:05:04 +01:00
Jonas Platte
85ea9554e5
feat(sdk): Add {RumaApiError,HttpError,Error}::as_client_api_error
2022-11-03 18:05:04 +01:00
Ivan Enderlin
5b25b8967c
feat(crypto-js): Encode the WASM as base64 for portability
...
feat(crypto-js): Encode the WASM as base64 for portability
2022-11-03 16:44:16 +01:00
Damir Jelić
3b755fc15e
chore(crypto): Fix some spelling
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-11-03 16:18:15 +01:00
Damir Jelić
da61005ee4
chore(crypto): Improve the logs for the SAS state transitions
2022-11-03 16:18:15 +01:00
Damir Jelić
7a263433c7
refactor!(crypto): Add a new SAS state that waits for a key to be sent
...
This patch adds a couple more states to the SAS verification state
machine. Namely we add the following states:
* KeySent
* KeysExchanged
This prevents users from confirming that the short auth string matches
before they have sent out a m.key.verification.key event, which is
necessary for the other side to present the short auth string.
The KeysExchanged state functionally replaces the KeyReceived state.
Meaning that the short auth string can only presented once we
transitioned into the KeysExchanged state.
We can transition into the KeysExchanged state from the KeyReceived
state or from the KeySent state, depending on if we first receive a
m.key.verification.key event or if we first send out our own
m.key.verification.key event.
This means that, if the transition into the KeysExchanged state happens
through the KeySent state, users won't be able to tell if the transition
happened. In other words, listening to `m.key.verification` events
doesn't work anymore, users will need to use the new `Sas::changes()`
API to listen to a stream of state changes.
2022-11-03 16:18:15 +01:00
Ivan Enderlin
ee27c19bf7
chore: Removing trailing spaces.
2022-11-03 15:57:20 +01:00
Ivan Enderlin
6d21df6d29
!debug off
2022-11-03 15:37:54 +01:00
Ivan Enderlin
e989bc2377
fix(crypto-js): scan_qr_code takes a reference to QrCodeScan.
2022-11-03 15:37:21 +01:00
Jonas Platte
28b44a7f03
refactor!: Rename restore_login to restore_session
2022-11-03 15:34:31 +01:00
Ivan Enderlin
265ac1f97b
chore(crypto-js): Configure a profiling profile for wasm-pack.
2022-11-03 14:59:22 +01:00
Ivan Enderlin
d044565caa
test(crypto-js): Keep qr.toBytes() local, to avoid weird GC collection.
2022-11-03 14:57:07 +01:00
Ivan Enderlin
aa7d225867
feat(crypto-js): Qr.to_bytes returns a Uint8ClampedArray.
2022-11-03 13:58:17 +01:00
Stefan Ceriu
af2de2d8ef
chore(ffi): Reduce the log level for some not so useful logs
2022-11-03 13:26:32 +01:00
Jonas Platte
a28a664302
refactor(bindings)!: Replace RestoreToken string with Session dictionary
2022-11-03 12:58:34 +01:00
Jonas Platte
c1423e9326
refactor(bindings)!: Remove is_guest
...
It's not used by anything and should be re-introduced in the main Rust
first if it's needed.
2022-11-03 12:58:34 +01:00
Jonas Platte
8bfc186595
feat(bindings): Add TimelineItemContent::as_unable_to_decrypt
2022-11-03 12:03:33 +01:00
Jonas Platte
0cf5356f15
feat(sdk): Add UnableToDecrypt as a variant of TimelineItemContent
2022-11-03 12:03:33 +01:00
Jonas Platte
c03940e6d5
chore(sdk): Reword log messages
2022-11-03 12:03:33 +01:00
Jonas Platte
f93170323b
refactor(sdk): Remove unnecessary pub(crate)
2022-11-03 12:03:33 +01:00
Ivan Enderlin
a3cdd31713
fix(crypto-nodejs): Pass secrets to the release workflow
...
fix(crypto-nodejs): Pass secrets to the release workflow
2022-11-03 11:58:59 +01:00
Ivan Enderlin
fb89de8267
fix(crypto-nodejs): Pass secrets to the release workflow.
...
See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsecrets .
2022-11-03 11:30:10 +01:00
Ivan Enderlin
223e65fc26
!debug
2022-11-03 11:08:52 +01:00
Jonas Platte
b5b2eafbec
refactor(base): Remove unused Error variants
2022-11-03 10:52:11 +01:00
Jonas Platte
27b0ea1aa0
refactor(crypto): Move EncryptionNotEnabled out of MegolmError
...
… into matrix_sdk_base::Error because it is never constructed in the
matrix_sdk_crypto crate that defines MegolmError.
2022-11-03 10:52:11 +01:00
Jonas Platte
4c4b1f3abc
refactor(bindings): Use uniffi proc-macros more in sdk-ffi
2022-11-03 09:48:41 +01:00
Jonas Platte
99e621a82b
chore: Upgrade UniFFI
2022-11-03 09:48:41 +01:00
ganfra
4eedbfbc11
Merge branch 'main' into ganfra/kotlin_bindings
2022-11-02 19:06:07 +01:00
Richard van der Hoff
898265b257
Clean up build script
2022-11-02 17:22:00 +00:00
Richard van der Hoff
9d400a7494
fix JS syntax
2022-11-02 17:13:58 +00:00
Ivan Enderlin
a4ca6dbf38
!debug
2022-11-02 17:25:13 +01:00
Ivan Enderlin
b23d30c951
fix(indexeddb): Fix wasm_bindgen::JsValue::(from|to)_serde warnings
...
fix(indexeddb): Fix `wasm_bindgen::JsValue::(from|to)_serde` warnings
2022-11-02 16:58:09 +01:00
Ivan Enderlin
bb96ab89f8
fix(crypto-js): Make build.sh cross-platform-ish.
2022-11-02 16:57:26 +01:00
Ivan Enderlin
4cd8a8400f
chore: Reorder dep names.
2022-11-02 16:38:01 +01:00
Ivan Enderlin
28d4a69552
!fixup
2022-11-02 16:32:20 +01:00
Jonas Platte
a6ca114bac
chore: Upgrade UniFFI
2022-11-02 16:21:16 +01:00
Ivan Enderlin
6497d6d676
feat(crypto-js): Make scripts/build.sh compatible with macOS.
...
This patch also improves the “phrasing”, simplifies the code a little bit etc.
Small stuff.
2022-11-02 16:19:17 +01:00
Ivan Enderlin
da93cf7dc4
fix(indexeddb): Fix wasm_bindgen::JsValue::(from|to)_serde warnings.
...
`wasm_bindgen::JsValue::(from|to)_serde` now emit warnings because of a
circular dependency. To solve this problem, this patch now uses `gloo-utils`,
see https://rustwasm.github.io/wasm-bindgen/reference/arbitrary-data-with-serde.html#an-alternative-approach---using-json .
Ideally, we would like to use `serde_wasm_bindgen` but the behaviour isn't
the same. `gloo-utils` serializes and deserialized through JSON, whilst
`serde_wasm_bindgen` manipulates the `JsValue` directly which can be better or
worst dependending of the case. This patch conserves the JSON approach as it
was the previous and tested one.
2022-11-02 08:59:37 +01:00
Ivan Enderlin
2b4f4b17c3
chore: Update wasm-bindgen's ecosystem to latest versions.
2022-11-02 08:59:21 +01:00
Richard van der Hoff
0f104c7433
Fix unbase64 loading
2022-11-01 13:47:44 +00:00
Jonas Platte
726e4b9aa0
fix(appservice): Fix nesting of AppServiceRouter in axum::Router
2022-11-01 11:37:16 +01:00
Jonas Platte
f227f583e0
chore: Upgrade ruma-client-api
2022-11-01 11:34:05 +01:00
Jonas Platte
36444cd3a0
chore: Clean up TOML formatting
2022-11-01 11:34:05 +01:00
Jonas Platte
9c489b398d
chore: Upgrade clap dependency of xtask
2022-11-01 11:34:05 +01:00
Richard van der Hoff
ce03f016b9
Copy unbase64.js into the right place
2022-11-01 10:19:13 +00:00
Richard van der Hoff
4557494da6
Optimise unbase64
...
Use a lookup table instead of a function with if statements
2022-11-01 10:18:44 +00:00
Richard van der Hoff
093856671a
Encode the WASM as base64
...
Some nasty hackery to get around the nastiness of the JS ecosystem
2022-10-31 22:39:44 +00:00
Ivan Enderlin
471ac07c88
fix(crypto-nodejs): Set KeepAlive to false since Node.js v19
...
Disable keepAlive in download-lib.js, allowing node bindings to work on Node.JS 19
2022-10-31 14:35:57 +01:00
Will Hunt
f4f3ca4b25
A newline
2022-10-31 13:18:16 +00:00
Will Hunt
c009f54ba9
Tidy
2022-10-31 13:17:48 +00:00
Will Hunt
546dc9a652
Run CI against 19
2022-10-31 13:04:05 +00:00
Will Hunt
717f86332f
Disable keepalive to prevent hanging connections
2022-10-31 12:39:23 +00:00
Jonas Platte
6c975b01b5
Revert #1151
...
This reverts the commits
- cacb20e3ef
- 01cc896dab
2022-10-31 12:03:23 +01:00
Ivan Enderlin
182733e984
feat(crypto-js): OlmMachine.initialize is the new constructor
...
feat(crypto-js): `OlmMachine.initialize` is the new constructor
2022-10-31 11:41:50 +01:00
Andy Uhnak
e4964b92a2
Local trust
2022-10-31 11:14:04 +01:00
Ivan Enderlin
bdf460cd91
doc(crypto-js): Rephase something.
...
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com >
2022-10-31 11:07:21 +01:00
Ivan Enderlin
0276552c72
feat(crypto-js): Use WeakRef to avoid calling free manually
...
feat(crypto-js): Use `WeakRef` to avoid calling `free` manually
2022-10-31 11:06:45 +01:00
Ivan Enderlin
3441c6cf9a
feat(crypto-js): Use WeakRef to avoid calling free manually.
...
By asking `wasm-bindgen` to generate JS glue code for `WeakRef` support,
it removes the need to call `free` manually to free objects, thus we reduce
potential memory leaks inside Rust. See https:// rustwasm.github.io/docs/wasm-
bindgen/reference/weak-references.html to learn more.
It uses [`FinalizationRegistry`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry )
under the hood, I reckon it's quite common and fits into Matrix's clients needs
in terms of browser support.
2022-10-28 21:02:35 +02:00
Ivan Enderlin
a07f89e340
feat(crypto-js): OlmMachine.initialize is the new constructor.
...
While technically a type constructor can return a `Promise`, it's not
considered as idiomatic JavaScript to do that. We are changing `new OlmMachine`
to `OlmMachine.initialize`. The rest of the code is strictly the same.
2022-10-28 20:37:46 +02:00
Benjamin Kampmann
cacb20e3ef
fix(ffi): Remove duplicate RequireState definition, left over after #1151 ( #1155 )
2022-10-28 13:38:21 +02:00
Benjamin Kampmann
255d3b7a18
Merge pull request #1154 from matrix-org/stefan/sessionVerificationFixes
...
Sliding Sync FFI and DevEx fixes
2022-10-28 11:40:33 +02:00
Jonas Platte
6ad7d29364
refactor(sdk): When processing remote events, check for duplicates
2022-10-28 11:30:32 +02:00
Jonas Platte
333c4f0644
refactor(sdk): Move timeline event origin_server_ts and raw_event fields
...
… from TimelineEventMetadata to Flow because they always exist for
remote events, and never for local echoes.
2022-10-28 11:30:32 +02:00
Jonas Platte
6ce23b17a6
refactor(sdk): Update tracing event for local echo not being found
2022-10-28 11:30:32 +02:00
Benjamin Kampmann
0cb34f7c86
fix: style fixes
2022-10-28 11:01:54 +02:00
Jonas Platte
0d84cf7b74
refactor(sdk): Make Debug format of EventTimelineItem less noisy
2022-10-28 10:56:28 +02:00
Jonas Platte
f2ea72224d
feat(bindings): Add {TimelineItem,EventTimelineItem}::fmt_debug
2022-10-28 10:56:28 +02:00
Jonas Platte
01cc896dab
refactor(bindings): Use uniffi proc-macros a little more in sdk-ffi
2022-10-28 10:55:46 +02:00
Benjamin Kampmann
278c6059ae
perf(sliding-sync): run outgoing e2ee requests and sync in parallel.
...
And continue the loop if even we hit an error in between
2022-10-27 15:59:02 +01:00
Benjamin Kampmann
d164165c7c
fix(ffi): remove extra to-device processing
2022-10-27 15:57:36 +01:00
ganfra
5a9b75c3ff
kotlin-bindings: remove sample
2022-10-27 14:38:17 +02:00
ganfra
c7c63fa41c
Merge branch 'main' into ganfra/kotlin_bindings
2022-10-27 14:37:53 +02:00
Benjamin Kampmann
0e59078211
fix(ffi): call process_sync_error of client for sliding-sync errors. break if wnated
2022-10-27 12:32:49 +01:00
Benjamin Kampmann
120d5edb03
feat(sliding-sync): Replace anyhow with proper Error type
2022-10-27 12:32:05 +01:00
Benjamin Kampmann
afc33e616c
revert start_sync removal
2022-10-27 12:06:06 +01:00
Jonas Platte
324411201e
fix(sdk): Enable required ruma features for experimental-timeline
2022-10-27 12:56:51 +02:00
Jonas Platte
e1ecc9de0d
chore: Bump versions of matrix-sdk, matrix-sdk-base
...
… to bring them up to the released ones from the v0.6.x branch.
All changes from those versions are already present on main.
2022-10-27 12:56:37 +02:00
Jonas Platte
c9c4473cd4
ci: Cache xtask for bindings checks
2022-10-27 11:58:42 +02:00
Jonas Platte
41be4c5209
ci: Test bindings generation
2022-10-27 11:58:42 +02:00
Jonas Platte
426f60a6a2
ci: Add bindings check to xtask
2022-10-27 11:58:42 +02:00
Jonas Platte
eddf202a76
chore: Upgrade UniFFI
2022-10-27 11:27:28 +02:00
Stefan Ceriu
d4cd8710a4
Refactor the SessionVerification flows and get them working through sliding sync
2022-10-27 10:45:05 +03:00
Benjamin Kampmann
a443e7277d
feat: Add sliding sync timeline events and extensions ( #1054 )
...
Add general extension framework for sliding sync, implementing the e2ee, to-device and account-data extensions as per existing proxy implementation. Add a new (ffi exposed) function to use activate the extensions.
Also extends jack-in to have permanent login and storage support now, rather than posting an access token and expose messages inside the sliding-sync layer to actually use the decrypted messages if given. Contains a lot of fixes around these aspects, too, like uploading any remaining messages from the olm-machine on every sliding-sync-request or processing even if no room data is present (which can happen now as processing only extensions might takes place).
2022-10-25 13:42:43 +02:00
Jonas Platte
2232092f11
refactor(sdk): Move timeline event handling fns to TimelineInner
2022-10-25 13:03:52 +02:00
Damir Jelić
2547d6ed64
fix(crypto): Don't create an infinite amount of streams in the SAS examples
2022-10-25 13:00:27 +02:00
Damir Jelić
6cb37520ce
docs(bindings): Document the EncryptionSettings a bit better
2022-10-25 12:44:18 +02:00
Jonas Platte
50a5ec89e9
chore: Fix more clippy lints
2022-10-25 12:20:07 +02:00
Jonas Platte
285dc129c3
chore(crypto): Clean up SecretInfo::as_key implementation
2022-10-25 12:20:07 +02:00
Jonas Platte
a59fdc08bb
chore: Fix clippy lints
...
Automated with cargo clippy --fix.
2022-10-25 12:20:07 +02:00
Jonas Platte
9de98dfa65
fix(sdk): Remove token field from SyncSettings Debug output
2022-10-24 13:14:30 +02:00
Damir Jelić
c03c90c1cf
feat(bindings)!: Allow passing the E2EE settings when sharing a room key
2022-10-24 09:50:57 +02:00
Damir Jelić
4a6208f808
feat(crypto): Add signaling to the SAS verification
...
This patch adds a way for users to listen to changes in the state of a
SAS verification.
This makes it much more pleasant to go through the verification flow and
incidentally easier to document it.
2022-10-24 09:50:17 +02:00
Jonas Platte
1aa48beca9
Revert "refactor(bindings): Use new uniffi::Enum derive macro in crypto-ffi"
...
This reverts commit 6b9075aa42 .
2022-10-20 17:41:16 +02:00
Jonas Platte
e05444554d
chore: Fix typo in comment
2022-10-20 14:14:18 +02:00
Jonas Platte
411095425c
refactor(sdk): Make ClientBuilder::{sled_store, indexeddb_store} simple setters
2022-10-20 13:35:06 +02:00
Jonas Platte
6b9075aa42
refactor(bindings): Use new uniffi::Enum derive macro in crypto-ffi
2022-10-20 12:53:09 +02:00
Jonas Platte
01dc166293
chore: Upgrade UniFFI
2022-10-20 12:53:09 +02:00
Jonas Platte
584a82b19b
fix(sdk): Remove Debug implementation for SessionTokens
2022-10-20 11:25:54 +02:00
Jonas Platte
0aba22855b
fix(sdk): Don't include access and refresh token in Debug output of Session
2022-10-20 11:25:54 +02:00
Jonas Platte
a50743874f
chore(base): Merge consecutive impls for the same type
2022-10-20 11:25:54 +02:00
Flix
7851eefb61
refactor(base)!: Get rid of String in StoreError
2022-10-19 16:28:27 +02:00
Stefan Ceriu
8470b494f4
chore(bindings): Replace various expectations with anyhow contexts
2022-10-19 13:18:19 +02:00
Andy Uhnak
c92d946777
Set local trust
2022-10-19 09:38:16 +02:00
Jonas Platte
0cfc7540cf
refactor: Use workspace dependencies for tracing
2022-10-18 19:24:22 +02:00
Jonas Platte
6990c1ca5c
test(base): Use tracing-subscriber for test debugging
...
… same as in our other crates.
2022-10-18 19:24:22 +02:00
Jonas Platte
0ee63344da
chore(base): Sort dev-dependencies
2022-10-18 19:24:22 +02:00
Jonas Platte
3daaa457e1
fix(bindings): Make tracing dependency for crypto-js optional
2022-10-18 19:24:22 +02:00
Jonas Platte
7a826fb7d6
ci: Cancel all CI jobs for old commits when pushing to a PR branch
2022-10-18 17:06:42 +02:00
Jonas Platte
95dfedb70a
Another test commit
2022-10-18 16:52:01 +02:00
Jonas Platte
eb58dcc556
Try to make it work
2022-10-18 16:51:07 +02:00
Damir Jelić
57e9b36fac
chore(bindings): Don't mention that the OlmMachine is a memory-only one
2022-10-18 15:49:09 +02:00
Damir Jelić
90865e2a0a
chore(bindings): Clarify the OlmMachine constructor in the WASM bindings
2022-10-18 15:49:09 +02:00
Damir Jelić
52d96ceb60
fix(bindings): Allow setting the store without a passphrase
2022-10-18 15:49:09 +02:00
Damir Jelić
8a720af215
feat(crypto): Support transitioning from a QR verification into a SAS or scanning QR one
2022-10-18 15:18:51 +02:00
Jonas Platte
bac95f4494
ci: Upgrade cancel-workflow-action
2022-10-18 15:00:35 +02:00
Jonas Platte
31293c6c2b
Testing with empty commit
2022-10-18 14:39:47 +02:00
Jonas Platte
089f92d238
ci: Cancel all CI jobs for old commits when pushing to a PR branch
...
(not just jobs from the ci workflow file)
2022-10-18 14:23:21 +02:00
Andy Uhnak
1a466eb667
Add flow_id to logs
2022-10-18 13:09:12 +01:00
Andy Uhnak
8bbdd28a8b
Use cfg-if and debug logs
2022-10-18 13:09:11 +01:00
Andy Uhnak
61452ad190
Replace QR with SAS verification
2022-10-18 13:08:47 +01:00
Flix
4816d93e96
docs: Improve documentation for custom event handler context
2022-10-18 13:39:08 +02:00
Jonas Platte
f25af209e1
refactor: Use workspace dependencies for zeroize
2022-10-18 13:38:05 +02:00
Jonas Platte
e6891addfb
refactor: Use workspace dependencies for vodozemac
2022-10-18 13:38:05 +02:00
Jonas Platte
f57b7782f4
refactor: Use workspace dependencies for ruma
2022-10-18 13:38:05 +02:00
Jonas Platte
e91cee7154
fix(sdk): Always send an access token for get_profile
2022-10-18 13:31:59 +02:00
Jonas Platte
5b46fa73e1
fix(sdk): Always send an access token for get_display_name
2022-10-18 11:19:32 +02:00
Jonas Platte
b309441dec
fix(sdk): Don't log the access token in HttpClient::send
2022-10-17 20:04:49 +02:00
Jonas Platte
391efcec12
feat(appservice): Return a concrete type from AppService::service
2022-10-17 17:03:37 +02:00
Jonas Platte
4e583bcb8a
chore: Exclude xtask from tarpaulin coverage collection
2022-10-17 15:38:42 +01:00
Benjamin Kampmann
5e621b7132
fix!: Switch to uniffi 0.21.0 and workspace-wide dependencies
...
Upgrade MSRV to 1.64, the first stable release to support workspace-wide depenendencies:
https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html#cargo-improvements-workspace-inheritance-and-multi-target-builds
2022-10-17 15:38:04 +01:00
Benjamin Kampmann
ab796cb32c
ci(xtask): switch to using uniffi as a lib rather than globally installed binary
2022-10-17 15:38:04 +01:00
Richard van der Hoff
dd82e0b8fc
chore: Update bindings/README
2022-10-17 13:24:09 +00:00
Doug
7125730917
ci(xtask): Switch to xtask for swift; run swift tasks on macOS
...
Merge pull request #1023 from matrix-org/doug/swift-linux: Run Swift tests on macOS
2022-10-17 14:12:43 +02:00
Jonas Platte
db2771bd17
feat(bindings): New timeline API
2022-10-17 13:40:35 +02:00
Jonas Platte
95face4aa4
chore(bindings): Delete unused code left over from old timeline API
2022-10-17 13:40:35 +02:00
Jonas Platte
a7cb80df1b
refactor(appservice): Clean up implementation of user_id_is_in_namespace
2022-10-13 12:13:56 +02:00
ganfra
e7d5b44343
Kotlin bindings: add matrix-rust-sdk.aar file to sample
2022-10-12 18:24:30 +02:00
ganfra
47478702b2
Kotlin bindings: create build_sdk script
2022-10-12 18:24:30 +02:00
ganfra
648895e2b0
Kotlin bindings: add uniffi.toml
2022-10-12 18:24:30 +02:00
ganfra
c8bddea6e1
Kotlin bindings: update Cargo.toml for kotlin generation
2022-10-12 18:24:30 +02:00
ganfra
f42215180e
Kotlin bindings: create project with sample, crypto and sdk modules
2022-10-12 18:24:12 +02:00
Jonas Platte
1e77e91ec4
refactor(appservice): Replace warp with axum
2022-10-12 17:32:31 +02:00
Jonas Platte
95613be6c9
chore: Remove redundant cfg attribute
2022-10-12 17:32:31 +02:00
Jonas Platte
b83e6be01e
refactor(sdk): Use lower-level libraries for builtin SSO server
2022-10-12 17:32:31 +02:00
Damir Jelić
086b6127e2
feat: Improve the timeline example
2022-10-12 16:12:06 +02:00
Jonas Platte
54fd40d8f5
feat(sdk): Add new timeline API
2022-10-12 16:12:06 +02:00
Damir Jelić
67d968d4fa
refactor(crypto): Remove the device ID from the megolm v2 m.room.encrypted content
2022-10-12 14:37:05 +02:00
Damir Jelić
7e14857239
test(crypto): Test that megolm v2 key forwards work
2022-10-12 14:37:05 +02:00
Damir Jelić
2425cd99cf
fix(crypto): Introduce the proper megolm v2 forwarded room key content
2022-10-12 14:37:05 +02:00
Damir Jelić
7c97c27441
feat(crypto): Start sending out megolm v2 room key requests
2022-10-12 14:37:05 +02:00
Damir Jelić
cbadd90eff
feat(crypto): Start responding to megolm v2 room key requests
2022-10-12 14:37:05 +02:00
Jonas Platte
d18b57dcdd
refactor: Make use of as_ruma_api_error internally
2022-10-12 12:34:09 +02:00
Jonas Platte
23c5929cfa
feat(sdk): Add Error::as_ruma_api_error
2022-10-12 12:34:09 +02:00
Jonas Platte
7bfa622a57
feat(sdk): Add HttpError::as_ruma_api_error
2022-10-12 12:34:09 +02:00
Jonas Platte
f4e0cab11f
feat(sdk)!: Merge HttpError::UiaaError into HttpError::Api
2022-10-12 12:34:09 +02:00
Jonas Platte
f07735291e
Fix warnings from generated code
2022-10-10 19:24:56 +02:00
Anderas
d4e7076e1d
Compile Crypto FFI for MacOS
2022-10-10 18:59:25 +02:00
Jonas Platte
61e95abaf2
refactor: Use Box::default
...
… as suggested by clippy.
2022-10-10 18:52:59 +02:00
Damir Jelić
8763a2468c
fix(crypto): Take more data into account when comparing sessions
2022-10-10 15:20:25 +02:00
Damir Jelić
8f6e3033e3
fix(crypto): Check for existing room keys when receiving a new one.
...
Now that we're not scoping the room keys by the Curve25519 sender key
we're opening the door of multiple devices trying to insert the same
room key into our store.
This patch changes our logic so we only store room keys from an
m.room_key event if we don't have one already or if the new key is
a better version of the one we already have.
This mostly assumes that the first room key with a given session id
is coming from the creator of the room key.
2022-10-10 15:20:25 +02:00
Damir Jelić
2f94886663
refactor(crypto)!: Don't use the Curve25519 sender key to store room keys
2022-10-10 15:20:25 +02:00
Jonas Platte
8b728d4ada
ci: Pin typos version
...
Currently, master is broken: https://github.com/crate-ci/typos/issues/590
2022-10-06 17:27:55 +02:00
Jonas Platte
26faf0d4c0
feat(bindings): Add custom kotlin package name for crypto-ffi
2022-10-06 17:27:55 +02:00
Jonas Platte
a3113bd125
refactor(bindings): Start using #[uniffi::export] for matrix-sdk-crypto-ffi
2022-10-06 17:27:55 +02:00
Jonas Platte
a75d7171f8
refactor(bindings): Rename crypto-ffi UniFFI namespace
...
… from olm to matrix_crypto_ffi to match the lib name.
Names need to match for integration of UniFFI's proc-macro frontend.
2022-10-06 17:27:55 +02:00
Jonas Platte
c3eaa864dd
refactor(bindings): Unset custom lib name for crypto-ffi
2022-10-06 17:27:55 +02:00
Jonas Platte
6a561c20e2
refactor(bindings): Use uniffi::export for most of ClientBuilder's API
2022-10-06 10:56:22 +02:00
Jonas Platte
0581b8a884
refactor: Derive Default for enums
2022-10-06 10:55:49 +02:00
Jonas Platte
bdfdaeb0ae
chore: Upgrade async-once-cell
2022-10-06 10:55:49 +02:00
Jonas Platte
c24c20f7f1
Raise MSRV to 1.62
2022-10-06 10:55:49 +02:00
Jonas Platte
6b3acf1bf7
chore(sdk): Use inline tables more in Cargo.toml
...
Makes the file a little more comprehensible.
2022-10-06 10:55:49 +02:00
Jonas Platte
822cdae8f3
chore(sdk): Only include derive_builder dependency for sliding-sync feature
2022-10-06 10:55:49 +02:00
Jonas Platte
4fcbb61145
refactor!: Delete the store module
...
It was very confusing that matrix_sdk::store::make_store_config's first
argument was either a path or a database name depending on the build
configuration. ClientBuilder::{sled_store, indexeddb_store} are also
easier to use.
2022-10-05 13:49:12 +02:00
Jonas Platte
4628481d0e
refactor(bindings): Use UniFFI proc-macro frontend more
2022-10-05 12:21:44 +02:00
Jonas Platte
e05de8d4ce
chore: Upgrade UniFFI
2022-10-05 12:21:44 +02:00
Johannes Marbach
6bc79b04cf
feat(bindings): Allow clients using matrix-sdk-ffi to set the user agent
2022-10-05 09:18:52 +02:00
Damir Jelić
fa88751548
fix(crypto): Ignore duplicate verification requests
2022-10-04 13:38:07 +02:00
Andy Uhnak
09c906b1d7
Debug message
2022-10-04 11:50:16 +01:00
Andy Uhnak
6fab6ef318
Ignore duplicate verification requests
2022-10-04 11:38:08 +01:00
Lautaro Bustos
d5728f235d
feat(sdk): Allow configuring the presence in the SyncSettings
2022-10-03 11:52:23 +02:00
Johannes Marbach
6827c70886
chore: Ignore Swift's .build folder
2022-09-30 21:54:09 +02:00
Jonas Platte
ab1a6a6b37
chore: Remove experimental-timeline Cargo feature
2022-09-30 13:48:17 +02:00
Jonas Platte
3c9c7290ae
chore: Remove deprecated functions
2022-09-30 10:40:56 +00:00
Benjamin Kampmann
530f8057cc
Merge pull request #1071 from matrix-org/ben-releasing-0.6
...
chore: crates.io only accepts versioned git deps
2022-09-29 15:02:10 +02:00
Ivan Enderlin
8e0e752f12
Merge pull request #1075 from Hywan/fix-crypto-nodejs-release-script-npm-token
...
fix(crypto-nodejs): Hopefully it will make `NPM_TOKEN` available in the script
2022-09-29 11:52:30 +02:00
Ivan Enderlin
b1493c5217
fix(crypto-nodejs): Hopefully it will make NPM_TOKEN available in the script.
...
We hope that adding this to the workflow will make `NPM_TOKEN`
available from within the script.
2022-09-29 11:36:29 +02:00
Ivan Enderlin
7988dc6cf3
Mergfix(crypto-nodejs): Fix the prep release script
...
fix(crypto-nodejs): Fix the prep release script
2022-09-28 17:48:43 +02:00
Ivan Enderlin
180796c747
fix(crypto-nodejs): Fix the prep release script.
2022-09-28 17:46:56 +02:00
Benjamin Kampmann
fefd2a6b68
chore: crates.io only accepts versioned git deps
2022-09-28 17:15:09 +02:00
Benjamin Kampmann
269bf3a706
chore: remove old release notes
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
91d1ee9f09
chore: fix typos in Upgrade guide
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
b22fe63476
chore: More minor changes of note
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
92467af4a0
docs: Upgrading typo fixes
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
f1f1c1bba6
chore: Version bump
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
ff82d6420d
chore: specify which crates to release and which not
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
b9409b7c0f
docs: more migrations guide
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
ea51935601
docs: Clarifications in the Upgrade guide
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
2fff5d916b
docs: More Upgrade guidance
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
d16faee68b
docs: First outline of upgrades guide
2022-09-28 17:07:37 +02:00
Benjamin Kampmann
df9b60a5bc
chore: Ignore flaky redaction tests
2022-09-28 17:07:10 +02:00
Damir Jelić
1a57170970
test(crypto): Make sure we don't accept megolm encrypted events over to-device
2022-09-28 16:03:17 +02:00
Damir Jelić
41449d2cc3
test(crypto): Test that we reject forwarded room keys from other users
2022-09-28 16:03:17 +02:00
Damir Jelić
093fb5d0aa
fix(crypto): Only accept forwarded room keys from our own trusted devices
2022-09-28 16:03:17 +02:00
Ivan Enderlin
513afa57ef
feat(indexeddb): Introduce the experimental-nodejs feature
...
feat(indexeddb): Introduce the `experimental-nodejs` feature
2022-09-28 14:57:55 +02:00
Ivan Enderlin
25632f04d4
feat(crypto-js): Update to napi-rs 2.9.1
...
feat(crypto-js): Update to `napi-rs` 2.9.1
2022-09-28 14:52:03 +02:00
Ivan Enderlin
7922786e0c
chore: Fix formatting.
2022-09-28 14:34:16 +02:00
Ivan Enderlin
9a006c58f5
feat(crypto-js): Update to napi-rs 2.9.1
2022-09-28 14:30:40 +02:00
Ivan Enderlin
9f4385e639
feat(indexeddb): Introduce the experimental-nodejs feature.
...
By default, the new `experimental-nodejs` feature is
disabled. However, when enabled, it uses our own fork of
`indexed_db_futures` that make it work on Node.js, and so this entire
`matrix-sdk-indexebdb` crate.
2022-09-28 14:27:37 +02:00
Damir Jelić
e79b683560
fix(crypto): Drop the redundant event_type field from ToDeviceEvent<C>
2022-09-28 11:27:44 +02:00
Damir Jelić
27e4675df0
fix(crypto) Fix the zeroizing serialization of to-device events
...
The crypto crate consumes to-device events, if needed decrypts them, and
in the end reserializes while zeroizing secrets.
It needs to do this reserialization cycle as loslessly as possible, this
is why we have a bunch of BTreeMaps lying in events and contents that
capture unknown fields.
The Deserialize implementation of ToDeviceEvent<C> put the event type
into this BTreeMap but the Serialize implementation figures it out from
the EventType trait of the content.
This patch simplifies things by putting the event type into
ToDeviceEvent<C>, this also means that we can just derive the Serialize
implementation for ToDeviceEvent<C>.
2022-09-27 21:33:06 +02:00
Benjamin Kampmann
b5bd6dfee9
fix: Apply redactions to room state events in database, too ( #917 )
...
fixes #890
2022-09-27 09:24:53 +02:00
Ivan Enderlin
f8b02d1a11
feat(crypto-js): Implement OlmMachine.export_room_keys and .import_room_keys
...
feat(crypto-js): Implement `OlmMachine.export_room_keys` and `.import_room_keys`
2022-09-27 07:26:51 +02:00
Jonas Platte
0a5ebe4dce
feat(sdk): Make EventHandlerDropGuard public ( #1055 )
2022-09-26 18:18:12 +02:00
Benjamin Kampmann
e8278b5d68
feat: add Result return value to sync_* ( #1037 )
...
Inspired by the changes in #1013 I was thinking about the use case for `sync_*` and how we handle error cases. Most notably while we give the callback the option to stop the loop, we don't really give an indication to the outside, how to interpret that cancellation: was there a failure? should we restart?
Take e.g. a connectivity issue on the wire, we'd constantly loop and just `warn`, what you might or might not see. Even if you handle that in the `sync_with_result_callback` and thus break the loop, the outer caller now still doesn't know whether everything is honky dory or whether they should restart.
This Changes reworks that area by having all the `sync` return `Result<(), Error>`, where `()` means it was ended by the inner callback (which in `sync()` never occurs) or `Error` is the error either the inner `result_callback` found or the that was coming from the `send` in the first place. Thus allowing us to e.g. back down to sync as it was a dead wire or restart it if there was only a temporary problem. Making all that a just a bit more "rust-y".
2022-09-26 17:14:15 +02:00
Jonas Platte
f054141e66
chore: Revert "feat(sdk): Make room actions return typed room objects"
2022-09-26 14:13:25 +02:00
Jonas Platte
1a6d5e7b26
Revert "feat(sdk): Make room actions return typed room objects"
...
This reverts commit febfcf9796 .
2022-09-26 14:01:52 +02:00
Jonas Platte
d3e5a3b7db
Revert "test: Add test for repeated joining and leaving"
...
This partially reverts commit df4ee7db4c .
The changes to logging and ci-start.sh are kept.
2022-09-26 12:31:12 +02:00
Jonas Platte
92809590b1
Revert "feat(examples): Add an example that lets you create rooms"
...
This reverts commit 01f8ed10aa .
2022-09-26 12:23:08 +02:00
Jonas Platte
00d388f3d3
Revert "feat(sdk): Make room actions return typed room objects"
...
This reverts commit febfcf9796 .
2022-09-26 12:19:36 +02:00
Jonas Platte
59901b6349
Update Cargo.lock
2022-09-26 12:19:36 +02:00
Johannes Becker
914ac5279e
chore: Make clippy happy
2022-09-23 17:01:01 +02:00
Johannes Becker
c23976f975
refactor(appservice): Move example to top-level
2022-09-23 17:01:01 +02:00
Emelie Graven
cb94d60e0e
feat(appservice): Add default request config
...
This adds a default RequestConfig to use when creating new virtual
clients.
2022-09-22 14:25:00 +02:00
Ivan Enderlin
df50a5446f
test(crypto-js): Test InboundGrounSession.sessionId and .hasBeenImported.
2022-09-22 11:31:28 +02:00
Ivan Enderlin
62ab263d0e
test(crypto-js): Test OlmMachine.(en|de)crypt_exported_room_keys.
2022-09-22 11:27:12 +02:00
Emelie Graven
2818551d62
refactor(appservice)!: Use builder pattern
2022-09-22 10:38:17 +02:00
Emelie Graven
c29b0f154a
chore: Add rust.vim edition workaround
2022-09-22 10:38:17 +02:00
Ivan Enderlin
6fa04a0ba1
feat(crypto-js): Implement OlmMachine.(en|de)crypt_exported_room_keys.
2022-09-21 18:00:15 +02:00
Ivan Enderlin
dee14c4ee4
doc(crypto-js): Improve documentation of OlmMachine.import_room_keys.
2022-09-21 17:50:28 +02:00
Ivan Enderlin
5b919dd840
test(crypto-js): Test OlmMachine.import_room_keys.
2022-09-21 17:46:23 +02:00
Ivan Enderlin
406fc58720
feat(crypto-js): Implement OlmMachine.import_room_keys.
2022-09-21 17:37:23 +02:00
Ivan Enderlin
b4cec6e1bb
feat(crypto-js): Implement OlmMachine.export_room_keys.
2022-09-21 16:03:51 +02:00
Ivan Enderlin
6be0fc1fae
feat(sdk): Rename (export|import)_keys to (export|import)_room_keys
...
feat(sdk): Rename `(export|import)_keys` to `(export|import)_room_keys`
2022-09-21 16:03:29 +02:00
Ivan Enderlin
782b256ea9
test(crypto): Rename OlmMachine.export_keys to OlmMachine.export_room_keys.
2022-09-21 13:43:25 +02:00
Ivan Enderlin
82670022f9
feat(crypto-ffi): Update olm.udl.
2022-09-21 13:24:25 +02:00
Ivan Enderlin
b8c41e805b
feat(sdk): Rename decrypt_key_export to decrypt_room_key_export.
2022-09-21 13:18:24 +02:00
Ivan Enderlin
e3d63c5593
feat(sdk): Rename encrypt_key_export to encrypt_room_key_export.
2022-09-21 13:16:08 +02:00
Ivan Enderlin
0222a8fec2
feat(sdk): Rename OlmMachine.import_keys to .import_room_keys.
...
Because that's what it does :-).
2022-09-21 13:12:07 +02:00
Ivan Enderlin
b442247946
feat(sdk): Rename OlmMachine.export_keys to .export_room_keys.
...
Because that's what it does :-).
2022-09-21 13:03:42 +02:00
Ivan Enderlin
c0ebeee730
feat(crypto-js): Implement OlmMachine.get_identity
...
feat(crypto-js): Implement `OlmMachine.get_identity`
2022-09-21 10:44:18 +02:00
Stefan Ceriu
a46b8f392a
Switch ffi layer logs output to stderr instead of stdout
2022-09-21 08:24:09 +02:00
Jonas Platte
b12da9d4db
refactor!: Move JS-specific functionality behind a Cargo feature
...
… for matrix-sdk, matrix-sdk-base, matrix-sdk-common and matrix-sdk-crypto.
matrix-sdk-indexeddb as well as the JS bindings and wasm_command_bot are
left as-is because they will likely always require JS.
2022-09-20 14:08:21 +02:00
Stefan Ceriu
6f5681f7c2
feat(bindings): Expose method for fetching media thumbnails
2022-09-19 10:56:22 +00:00
Jonas Platte
fee0db03c8
ci: Don't collect coverage for labs
2022-09-19 12:15:13 +02:00
Jonas Platte
b2ce906bce
ci: Don't report coverage inside test code
2022-09-19 12:15:13 +02:00
Jonas Platte
e45d6f45fd
refactor: Replace str::to_string with to_owned
2022-09-16 17:45:43 +02:00
Ivan Enderlin
84aa85958c
test(crypto-js): Test OlmMachine.getIdentity.
2022-09-16 11:23:32 +02:00
Jonas Platte
b941c16b7d
chore(sdk): Upgrade derive_builder
2022-09-16 11:17:24 +02:00
Ivan Enderlin
1a5379881e
test(crypto-js): Test EventId.
2022-09-16 11:11:06 +02:00
Ivan Enderlin
0c4b85e1f9
feat(crypto-js): Implement OwnUserIdentity and UserIdentity.
2022-09-16 11:02:34 +02:00
Ivan Enderlin
602dbe42f2
doc(crypto): Fix a typo.
2022-09-16 10:57:02 +02:00
Ivan Enderlin
d3d316ee6c
chore(crypto-js): Add helper to cast from JS Array to Vec<T>.
2022-09-16 10:46:28 +02:00
Jonas Platte
494969ed49
chore: Fix clippy lints
2022-09-15 20:48:22 +02:00
Kévin Commaille
34ed04958f
fix(sdk): Export RoomKeyImportError
2022-09-15 18:35:59 +02:00
Jonas Platte
8da456055d
refactor: Use event handlers in emoji_verification example
2022-09-15 18:33:58 +02:00
Jonas Platte
ef462c786a
refactor(sdk): Clean up sync_with_callback implementation
2022-09-15 17:53:32 +02:00
Benjamin Kampmann
1a50f42402
fix(jack-in): limit log4rs features to minimum
2022-09-15 17:08:09 +02:00
Benjamin Kampmann
020a75d55c
feat: implement " MSC 3575: sliding sync " behind a feature flag ( #728 )
...
* starting with jack-in
* starting by flying tui
* connecting to real server, showing info
* add .env to gitignore
* infrastructure for tests
* display loading time for syncv2
* minor design updates
* initial sync
* finalise first edition of sliding sync
* directly link to sliding sync and show rooms list
* nicer UI, toggle logs
* passing through sliding sync homeserver
* separate syncs and disable v2 autostart
* selecting rooms
* nicer view
* configurable batches and more default needed events
* selecting rooms
* calculate and show status info per room
* precalculated room stats
* restructure code to allow for cancellation of streams
* finish up merge updates
* fix calculation error in room list len
* cleaning up system flow
* fixing sync up
* new multi-view API
* move sliding sync in separate module
* fixing format
* adding and clearning views
* expose filters and timeline limits
* renamed
* adding room subscriptions to sliding sync
* update summary
* live fetching and subscriptions in jack-in
* subscribe to selected room
* starting to switch to tuireal - using example
* status bar and first linkup
* re-adding rooms
* implementing port for customised update event
* showing details and timeline
* fix formatting
* cleaner UI, updating details quickly
* make it green
* implement other Ops
* proper handling of invalidation
* saving sliding sync results to db, too
* saving new prev_batch field if given
* split events and timeline
* cleaning up
* live updates
* upgrading to latest ruma and matrix-sdk
* Update tui-logger to fix the broken build
* fixing latest ruma sliding-sync-branch updates
* feat: first set of ffi sliding sync
* expose sliding sync via FFI
* implement un-/subscribe
* implement view state updates
* updating to latest JSON format and ruma update
* implementing room selecting for new data model
* fixing room selection
* fixing feature flag requirements for sliding-sync
* fixing style, clippy and docs
* style(sliding-sync): fixing rust format styles
* fix(ffi): fixing sliding sync merge failure
* fix(jack-in): update jack-in to latest ruma
* fix(sliding-sync): need to have a version set before polling proxy
* expose sliding sync builder over ffi
* add SlidingSyncViewBuilder
* add forgotten changes on sdk itself
* new file logger feature on jack for deeper logging
* fix(http-client): log the raw request we are sending out
* feat(sliding-sync): better logging
* fix(sliding-sync): switch to full-listen after reaching live state in full-sync and make sure we replace the correct entries
* feat(ffi): expose sliding sync view ranges
* fix(ffi): fixing sliding sync start_sync loop to actually loop
* feat(sliding-sync): allow lookup of room data
* feat(sliding-sync-ffi): fetching name of room
* feat(ffi): expose unread_notifications of rooms
* feat(ffi): stoppable spawn for sliding sync
* fix(ffi): expose has_unread_notifications on room
* feat(sliding-sync): latest room message
* fix(sliding-sync): update to latest ruma layout
* doc(sliding-sync): adding docs to builder fns
* feat(sliding-sync): extra signal on the view to inform about general updates
* fix(sync-v4-ffi): expose new callbacks via ffi
* fix(sliding-sync): reduce default required states to make things faster
* fix(sliding-sync): fix build params
* feat(jack-in): extended instrumentation
* fix(sliding-sync): unbreak faulty feature-gate
* fix(sliding-sync-ffi): mut where mut is due
* fix(sdk): allow separate homeserver on every request to unbreak using send on client while in sliding sync on a proxy
* fix(jack-in): update to latest dependencies, that work
* feat(ffi): helper to patch sliding sync room into regular room
* style(jack-in): cargo fmt
* fix(sliding-sync): Update to latest ruma changes
* fix(sliding-sync): fix missing FFI updates to latest ruma
* feat(sliding-sync)!: simplify stream cancellation, cancel ffi sync if already existing
* fix: timeline backwards pagination must work without synctoken
* fix(sliding-sync): clarify order of messaes in alive TL; pick correct last item
* fix: update view delegate api for clarity
* style(jack-in): fix cargo warnings
* feat(sliding-sync): update room details
* fix(sliding-sync): only update room info selectively when given
* fix(sliding-sync-ffi): convert and store counts as u32, check against 0 for has notificaitons
* style: cargo fmt, file endings and a few other minor style fixes
* docs(jack-in): improving CLI and Readme
* feat(sliding-sync): allow setting of required event_states on viewbuilder
* style(sliding-sync): docs and minor fixes
* style(sliding-sync): various clippy fixes
* style(jack-in): clippy suggestions applied
* fix(sliding-sync): Delegate becomes observer
* test(sdk): adding test for request config
* docs: Fixing copyright header
* style(ffi): Nicer naming of params for observer
* fix(ffi): sliding sync is not optional for now
* fix(sdk): remove superflusous tracing instrumentation
* fix(sdk): use structured logging
* fix(jack-in): removed unneded log import
* fix(jack-in): use server_name rather than deprecated user_id on ClientBuilder
* style: typo and clippy
* style(sliding-sync): clippy and formatting
* fix(sliding-sync): cleaning up minor syntax issues
* fix: remove unneded feature-definition section
* fix(sliding-sync): minor fixes as per review
* fix(sliding-sync): Make Builders owned
* fix(sliding-sync): more minor style improvements
* fix(sliding-sync): minor style improvements
* fix(sliding-sync): remove homeserver from RequestConfig, use specific internal fn instead
Co-authored-by: Stefan Ceriu <stefanc@matrix.org >
2022-09-15 11:45:29 +00:00
Ivan Enderlin
f4e0c6e243
feat(crypto-js): Start implementing OlmMachine.get_identity.
2022-09-15 10:32:57 +02:00
Ivan Enderlin
01f1b9b846
feat(crypto-js): Implement EventId.
2022-09-15 10:32:57 +02:00
Ivan Enderlin
abcd287496
chore(crypto-js): Simplify code with a lovely macro.
2022-09-15 10:32:57 +02:00
Ivan Enderlin
cf96a3ba2e
feat(crypto-js): Implement key verification
...
feat(crypto-js): Implement key verification
2022-09-15 10:13:51 +02:00
Ivan Enderlin
9d2e0fe8ad
doc(crypto-js): Fix typos.
2022-09-15 09:59:27 +02:00
Jonas Platte
83d5e567eb
feat(bindings): Update send_reply to accept markdown
2022-09-14 22:10:16 +02:00
Benjamin Kampmann
a47d8669cd
feat: log out facilities
...
Merge pull request #1013 from matrix-org/ismail/logout
Add logout facilities to `client` and helpers to ffi for tracking the soft-logout issued by a server. Further more this adapts the `sync_with_callback` by adding a new `sync_with_result_callback` that hands the entire `Result` to the callback.
2022-09-14 15:15:47 +02:00
ismailgulek
0643292d76
Fix formatting
2022-09-14 15:07:05 +03:00
ismailgulek
8a26ba8343
Add a warning on sync error
2022-09-14 14:29:30 +03:00
ismailgulek
cc1c6aedcb
Revert sync_with_callback api call changes
2022-09-14 14:17:30 +03:00
ismailgulek
55cf573142
Implement the new sync with result callback method
2022-09-14 14:10:01 +03:00
Stefan Ceriu
c5006081e6
feat(bindings): Add method for sending plain text replies
2022-09-14 10:21:23 +00:00
Ivan Enderlin
4c4fcf91c1
chore(crypto-js): Inline vodozemac dependency.
2022-09-14 10:01:03 +02:00
Ivan Enderlin
6842fb97fd
chore(crypto-js): Make Clippy happy.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
8027a3036c
test(crypto-js): Remove dependency to canvas.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
1d9ac6e60c
chore(crypto-js): Fix typos.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
2f35b2cfc6
feat(crypto-js): QrCodeScan implements Debug.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
7edd6a148c
doc(crypto-js): Fix module documentation.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
3b526ea412
doc(crypto-js): Add missing documentation.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
1c50cee5d7
feat(crypto-js): Implement Sas and Qr cancel* methods.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
cb95c59194
test(crypto-js): Test m.key.verification.start and .done for QR code.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
792b4581ab
feat(crypto-js): Implement Qr.reciprocate and .confirm_scanning.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
58ea598c68
feat(crypto-js): Implement VerificationRequest.scan_qr_code.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
581c537396
test(crypto-js): Properly test `Qr.toQrCode.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
9834b67bd5
feat(crypto-js): QrCode.renderIntoBuffer returns an Uint8ClampedArray.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
6f89d02599
test(crypto-js): Test QrCode.render_into_buffer.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
cbb5080837
test(crypto-js): Properly test Qr.toBytes.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
6a05f834a9
test(crypto-js): Test Qr.toBytes.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
c7e0b3ee31
test(crypto-js): Testing key verification workflow until QR code generation.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
0d57983e1b
feat(crypto-js): Implement VerificationRequest.generate_qr_code.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
bbfc076c7f
test(crypto-js): Inject bootstrap cross signing keys when setting up machines.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
e367d8574d
feat(crypto-js): Implement OlmMachine.bootstrap_cross_signing.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
1be17d354d
feat(crypto-js): Implement OlmMachine.(export|import)_cross_signing_keys.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
e8331cc40c
feat(crypto-js): Enable the qrcode feature by default.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
71a2fac46f
test(crypto-js): Reorganize the tests a little bit.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
8948333e1e
test(crypto-js): Test until m.key.verification.done \o/.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
c471a6fb4d
test(crypto-js): Split the Key Verification test case into a test suite.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
6239d31bcf
test(crypto-js): Test the Emoji and decimals implementations.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
b5a8103023
feat(crypto-js): Implement Sas.accept.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
95709bb4b3
test(crypto-js): Test the Sas implementation.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
14f22979c0
feat(crypto-js): Implement VerificationRequest.start_sas.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
e6141d8efc
test(crypto-js): Continue to test m.key.verification.request and .ready.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
155b187d45
test(crypto-js): Write first tests for key verification.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
e659c724cd
chore(crypto-js): Some methods have been renamed.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
e00b9221b9
feat(crypto-js): Implement Device.request_verification.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
b6f01b3cec
feat(crypto-js): Implement the Device and UserDevice API.
2022-09-14 09:58:09 +02:00
Ivan Enderlin
53e21e0c26
feat(crypto-js): Start implementation key verification API.
2022-09-14 09:58:06 +02:00
Ivan Enderlin
9155989060
feat(crypto): Simplify code and add documentation.
2022-09-14 09:56:33 +02:00
Doug
bb62437369
feat(bindings): Expose redact method to FFI
2022-09-13 23:06:11 +02:00
Damir Jelić
6e6c474bcb
chore(base): Bump the lru crate
2022-09-13 16:03:42 +02:00
Damir Jelić
8ba33f6fd3
chore: Bump vodozemac to a released version
2022-09-13 16:03:42 +02:00
ismailgulek
2591bcbca9
Fix PR remarks
2022-09-13 15:47:26 +03:00
ismailgulek
18a8b2f275
Merge branch 'main' into ismail/logout
2022-09-13 13:01:57 +03:00
ismailgulek
f4764bbd8a
Fix PR comment
2022-09-13 13:01:38 +03:00
Jonas Platte
e46e13d1bf
chore: Upgrade Ruma
2022-09-13 08:32:59 +00:00
Kévin Commaille
97995b7bf6
fix(sdk): Re-export qrcode encoding and decoding error types
2022-09-12 19:27:30 +02:00
ismailgulek
b4f0438c1a
Move processing sync errors into a separate method
2022-09-12 18:40:50 +03:00
ismailgulek
076de488e7
Avoid too much indentation
2022-09-12 17:54:55 +03:00
ismailgulek
d0d8e38a1d
Merge branch 'main' into ismail/logout
2022-09-12 17:38:24 +03:00
Damir Jelić
aac41fc82a
refactor(crypto): Remove the forwarding chains
...
These aren't really useful since they can be easily spoofed by any room
key forwarder.
2022-09-12 16:03:05 +02:00
ismailgulek
268ecea7fe
Fix new format error
2022-09-12 16:55:03 +03:00
ismailgulek
24be8a8e82
Update tests
2022-09-12 16:29:46 +03:00
ismailgulek
3cc6fe5dea
Fix format errors
2022-09-12 15:35:45 +03:00
Ivan Enderlin
d1b2bfcaa4
feat(qrcode): Remove decoding QR code from an image
...
feat(qrcode): Remove decoding QR code from an image
2022-09-12 13:33:42 +02:00
Ivan Enderlin
a0edd2f8d8
test(qrcode): Restore image only for one test.
2022-09-12 12:42:18 +02:00
Ivan Enderlin
478529f230
chore: Update Cargo.lock.
2022-09-12 12:28:31 +02:00
Ivan Enderlin
9411801245
feat(qrcode): Remove decoding QR code from an image.
...
This patch removes the `decode_image` (default) feature for this
`matrix-sdk-qrcode` crate.
First reason is that `rqrr` panics for some particular QR codes, and
we don't want to panic.
Second reason is that it's not a feature that is used. For Element on
iOS and Android, it's very unlikely that every frame from the camera
will be sent to `matrix-sdk-qrcode` to see if it can be decoded. So
it's obvious that an external library is used to read the bytes from
the QR code, that are then sent to `matrix-sdk-qrcode`. For Element on
Web, it's basically the same argument.
This feature is actually used only in our tests to ensure the
generated QR code is valid, but it sometimes fails due to `rqrr`
(cf. First reason).
2022-09-12 12:15:49 +02:00
ismailgulek
361313fbea
Merge branch 'main' into ismail/logout
2022-09-12 13:10:21 +03:00
Ivan Enderlin
2a94f575b8
feat(qrcode): Allow VerificationData to receive a flow ID
...
feat(qrcode): Allow `VerificationData` to receive a flow ID
2022-09-12 12:10:11 +02:00
Ivan Enderlin
f9d09b60d5
chore(crypto): Reduce the size of AnyDecryptedOlmEvent.
...
`AnyDecryptedOlmEvent::Custom` contains at least 440 bytes, while the
second-largest variant (`RoomKey`) contains at least 0 bytes. Let's
box `Custom` so that the size of `AnyDecryptedOlmEvent` stays low.
2022-09-12 11:57:45 +02:00
ismailgulek
03477afb26
Add initial_device_name and device_id parameters to login method
2022-09-12 12:53:28 +03:00
ismailgulek
6b66a1de56
Introduce did_update_restore_token delegate method
2022-09-12 12:52:27 +03:00
ismailgulek
519a005d16
Introduce is_soft_logout flag on Client and did_receive_auth_error delegate method
2022-09-12 12:51:35 +03:00
Ivan Enderlin
7831e0cd89
chore(crypto): Use to_owned instead of to_string.
2022-09-12 09:49:30 +02:00
Ivan Enderlin
70eeffbbb0
doc(qrcode): Update documentation.
...
Since we have switched to Vodozemac, those values don't need to be
unpadded base64 anymore.
2022-09-12 09:47:38 +02:00
Jonas Platte
831e802dd0
refactor(bindings): Move some more functions and methods out of UDL
2022-09-09 14:30:23 +02:00
Jonas Platte
ab0c144f51
chore: Upgrade UniFFI
2022-09-09 14:30:23 +02:00
Jonas Platte
dc05c6e2b8
chore: Silence clippy lint
2022-09-09 12:51:57 +02:00
Jonas Platte
3a6397fdba
chore: Update Cargo.lock
2022-09-09 12:51:57 +02:00
Jonas Platte
4a481f09d1
fix(base): Make tokio dev-dependency arch-dependent
2022-09-09 12:51:57 +02:00
Ivan Enderlin
fa6745bb60
feat(qrcode): DecodingError::Identifier is no longer useful.
2022-09-08 16:14:30 +02:00
Ivan Enderlin
cb21d89229
test(qrcode): Removing decode_invalid_room_id.
...
A room ID can no longer be invalid, it's just a string representing
either a `EventId` (we can validate that but…) or a `TransactionId`
(which is an opaque string, so it can be anything).
2022-09-08 16:12:21 +02:00
Ivan Enderlin
12b1ec5ef9
feat(crypto): VerificationData takes a flow ID, removing a panic.
...
This patch updates `QrVerification::new_cross`, by passing a flow ID
as an owned `String` to `VerificationData`, thus removing a panic, and
allowing QR code verification to happen outside a room.
2022-09-08 15:43:26 +02:00
Ivan Enderlin
aa1a47831a
chore(crypto): Use longer variable names.
2022-09-08 15:43:09 +02:00
Ivan Enderlin
cc5034f4b9
feat(qrcode): Allow VerificationData to receive a flow ID.
...
This patch updates `VerificationData` to receive a flow ID,
represented as an owned `String`, instead of an `OwnedEventId`. Why?
Because QR code verification can happen outside a room. In such
scenario, there is no event ID, but a transaction ID, unified behind
the `matrix_sdk_crypto::FlowId` enum. `VerificationData` doesn't
really care about that details. Proof is that `QrVerificationData`
receives an owned `String`, which is then casted into an
`OwnedEventId` to match this API properly; but at the top, it just
receives a string.
This patch brings also a little bit of clean up while editing code
around.
2022-09-08 15:37:01 +02:00
Jonas Platte
3be8c9585d
refactor(sdk): Make SyncSettings Debug repr more compact
2022-09-08 12:13:30 +02:00
Jonas Platte
d810fa6883
test(sdk): Enable logging for tests
2022-09-08 12:13:30 +02:00
Jonas Platte
a744447bb5
test: Respect RUST_LOG in integration-testing
2022-09-08 12:13:30 +02:00
Damir Jelić
9252e2c7a9
refactor(sdk): Fetch the content using the new account data methods
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-09-07 13:38:42 +02:00
Damir Jelić
282072b6b0
chore(bindings): Fix a typo
2022-09-07 13:38:42 +02:00
Timothy Hobbs
e997da0e72
feat(sdk): Make created_dm_room public
2022-09-07 13:38:42 +02:00
Benjamin Kampmann
b3f3d0a95e
fix(sdk): proper implementation of stripped info preference
...
Merge pull request #979 from FlixCoder/cleanup
Fixes a problem, where non-stripped information of the room had predecence in all scenarios of the memory-, sled- and indexeddb-store, thought according to the spec, we prefer the full info only until we've received new stripped info (from another invite). This fixes that to be in line with the spec by removing stripped data when we see a full-event and keep stripped info preferred if found (so, after you joined, stripped data is removed and when you knocked or are invited again, it is preferred), without ever deleting full data. It also adds nice unit- and integration tests to ensure this works as intended.
2022-09-06 15:47:14 +02:00
ismailgulek
42767968ec
Implement logout method on Client
2022-09-06 15:56:14 +03:00
Benjamin Kampmann
68a8a214ee
Update testing/matrix-sdk-integration-testing/assets/ci-start.sh
2022-09-06 12:42:54 +02:00
Jonas Platte
5adec41b6b
test: Use a weak password hash for crypto-store testing
...
This speeds up the crypto-store tests a lot.
2022-09-05 16:58:12 +02:00
Flix
b816307ea9
fix: Listen only to events after sending the request
2022-09-05 16:41:55 +02:00
Flix
a182578722
fix: Fix rooms being returned in wrong state and having wrong state
2022-09-05 16:41:55 +02:00
Flix
8b5368ff06
chore: Clean up various mini things
2022-09-05 16:41:52 +02:00
Flix
a368caf2b0
test: Add StateStore integration test for stripped/non-stripped
2022-09-05 16:33:31 +02:00
Flix
df4ee7db4c
test: Add test for repeated joining and leaving
2022-09-05 16:33:31 +02:00
Damir Jelić
321e56cff8
fix(examples): Listen to the done event in the emoji verification example
...
Nowadays all verifications send a done event, so this is the safer
option.
2022-09-05 15:54:45 +02:00
Damir Jelić
a640312503
feat(crypto): Add method to format emojis
...
This patch adds a method to format a list of emojis in a a terminal
friendly way.
This method was borrowed from weechat-matrix but it's also quite useful
in our own emoji verification example.
2022-09-05 15:54:45 +02:00
Damir Jelić
b2452ae92c
feat(examples): Add a verbosity flag to the emoji example
...
Since this example prints out messages to stdout, it becomes quite hard
to see when we ask for user input if all the logging is going on.
This patch adds a standard verbosity flag which disables all logging by
default.
2022-09-05 15:54:45 +02:00
Jonas Platte
a25b2d4418
refactor(crypto): Clean up cryptostore_integration_tests macro
2022-09-05 15:44:14 +02:00
Jonas Platte
5f6775f47c
ci: Only cancel running CI for previous commits on PRs
2022-09-05 15:01:38 +02:00
Jonas Platte
c2a222278d
ci: Consistently indent job steps
2022-09-05 15:01:38 +02:00
Jonas Platte
567b230cb7
ci: Cache xtask binary
2022-09-05 15:01:38 +02:00
Jonas Platte
8535c16bc8
ci: Don't require fmt to run before typo check and clippy
2022-09-05 15:01:38 +02:00
Jonas Platte
d009d0475e
ci: Move appservice and style back into ci workflow
...
Required for job dependencies.
2022-09-05 15:01:38 +02:00
Jonas Platte
6b8cf3c02a
chore: Remove pre-commit configuration and CI job
...
It was not really being used.
2022-09-05 15:01:38 +02:00
Jonas Platte
edfc0cbe20
refactor(sdk): Deprecate ClientBuilder::user_id
2022-09-05 12:43:21 +02:00
Jonas Platte
91186d8a25
doc(sdk): Replace deprecated method in doctest
2022-09-05 11:55:49 +02:00
Jonas Platte
090d67b6ef
refactor(sdk): Move module-level documentation inside the module files
2022-09-05 11:55:49 +02:00
Jonas Platte
fd4957f533
test(sdk): Address commented-out code in a test
2022-09-05 11:55:49 +02:00
Jonas Platte
08760bd4c0
refactor(sdk): Make base_client field of Client private
2022-09-05 11:55:49 +02:00
Jonas Platte
b769827313
refactor(sdk)!: Move media methods from Client to a new type
2022-09-05 11:55:49 +02:00
Jonas Platte
79b5854c83
feat(sdk): Add request_config method to Client
2022-09-05 11:55:49 +02:00
Jonas Platte
38324f6c60
refactor(sdk): Use Client::send in Client::upload
2022-09-05 11:55:49 +02:00
Jonas Platte
33bce0b18d
refactor(sdk): Move RoomMember into room module
2022-09-05 11:55:49 +02:00
Jonas Platte
245ecea263
feat(sdk): Add support for AnySyncTimelineEvent in event handlers
2022-09-05 11:55:17 +02:00
Jonas Platte
d4ac1bffd0
refactor(sdk): Rename EventKind to HandlerKind
...
It's somewhat different as MessageLike, OriginalMessageLike and
RedactedMessageLike are not three distinct event kinds in Ruma.
2022-09-05 11:55:17 +02:00
Jonas Platte
d6af63e37b
refactor(sdk): Run event handlers for the same event concurrently
2022-09-05 11:55:17 +02:00
Jonas Platte
57dde2c4d3
refactor(sdk): Avoid duplicate work and fix event handler call order
...
Previously, when both a possibly-redacted timeline event handler and a
non-redacted timeline timeline event handler would apply to multiple
events in a sync response, they would individually run for every event
in order. With this change, they will instead both be called
for one event before the next is processed.
2022-09-05 11:55:17 +02:00
Kévin Commaille
6f3813a65f
Re-export vodozemac errors in a separate module
2022-09-05 11:44:42 +02:00
Kévin Commaille
433f75ae57
Remove dead error variants
2022-09-05 11:44:42 +02:00
Kévin Commaille
8f0fb08fe7
feat(sdk): Re-export matrix-sdk-crypto errors
2022-09-05 11:44:42 +02:00
Jonas Platte
4f6ff5c0d3
refactor(sdk): Make use of new Default impls from Ruma
2022-09-02 15:03:00 +02:00
Jonas Platte
c4d46f233e
chore: Upgrade ruma
2022-09-02 15:03:00 +02:00
Damir Jelić
faf0ce5007
chore(examples): Remove some empty useless attributes
2022-09-02 14:54:33 +02:00
Damir Jelić
c5e6178b70
refactor(examples): Add proxy support to the emoji verification example
2022-09-02 14:54:33 +02:00
Jonas Platte
bf9f431e22
refactor(sdk): Use new account_data method internally
2022-09-02 14:09:17 +02:00
Damir Jelić
4b673cfe9c
chore: Fix a bunch of clippy warnings
2022-09-02 11:39:06 +02:00
Benjamin Kampmann
0079f1d569
Merge pull request #977 from zecakeh/fix-examples-autojoin
...
fix(examples): Fix examples that accept invites
2022-09-02 11:14:40 +02:00
Damir Jelić
a71292cb16
chore(crypto): Remove a bunch of unnecessary allow deprecated attributes
2022-09-01 17:08:24 +02:00
Damir Jelić
cc813b049e
fix(crypto): Set the correct algorithm when exporting a room key
2022-09-01 17:08:24 +02:00
Damir Jelić
1b06d8ca51
refactor(crypto): Start using the customized room key request event type
2022-09-01 17:08:24 +02:00
Damir Jelić
4338d5e534
refactor(crypto): Add a customized room key request event type
2022-09-01 17:08:24 +02:00
Jonas Platte
4c98dfb42a
feat(bindings): Enable socks proxy support in matrix-sdk-ffi
2022-09-01 15:07:15 +02:00
Jonas Platte
dacaef3ddd
fix(bindings): Reduce scope of RwLock read lock
...
Fixes a clippy lint.
2022-09-01 13:40:47 +02:00
Jonas Platte
e4267cc4fd
refactor(sdk)! Make upload take &[u8] instead of impl Read
...
The use of `io::Read` wasn't helping since we had to buffer the whole
file in memory anyways, and we are unlikely to get around that in the
near future.
2022-09-01 13:40:47 +02:00
Jonas Platte
16ac69a967
chore: Simplify integration testing macro
2022-09-01 13:11:05 +02:00
Ivan Enderlin
193da88320
feat(crypto): Rename verified and deleted to is_*
...
feat(crypto): Rename `verified` and `deleted` to `is_*`
2022-09-01 10:50:05 +02:00
Ivan Enderlin
0d6a19e388
chore: verified has been renamed is_verified.
2022-09-01 10:35:51 +02:00
Flix
f49e9be905
feat: Expose client of rooms for extensions
2022-09-01 10:01:18 +02:00
Jonas Platte
a954518d73
ci: Stop ignoring .lock files in typos config explicitly
...
Typos now ignores .lock files automatically without any configuration.
2022-09-01 09:33:40 +02:00
Damir Jelić
16d9ed230a
chore(examples): Use automatic links for some URLs
2022-08-31 18:43:47 +02:00
Ivan Enderlin
82b647a888
doc(crypto): Fix typos in the documentation
...
doc(crypto): Fix typos in the documentation
2022-08-31 17:26:56 +02:00
Ivan Enderlin
2e74983c79
chore: Fix other is_verified.
2022-08-31 17:16:05 +02:00
Ivan Enderlin
ffebc7c313
doc(crypto): Fix typos in the documentation
2022-08-31 17:09:33 +02:00
Ivan Enderlin
7d1b60a3b1
doc(crypto): Fix a link.
2022-08-31 16:52:00 +02:00
Ivan Enderlin
53c5158eca
doc(crypto): Update link to `is_verified.
2022-08-31 16:45:52 +02:00
Ivan Enderlin
3eab9ca8e5
feat(crypto): Rename verified and deleted to is_*.
2022-08-31 16:44:59 +02:00
Doug
36b41ac1c6
chore(bindings): Replace failing test.
2022-08-31 16:22:59 +02:00
Doug
8a8cc5f230
chore(bindings): Use Swift package for tests.
2022-08-31 16:22:59 +02:00
Jonas Platte
96384d9447
feat(bindings): Add account data interaction to sdk-ffi
...
Co-authored-by: Doug <douglase@element.io >
2022-08-31 14:40:23 +02:00
Stefan Ceriu
bb04a1e041
chore(bindings): Fix Xcode project after sdk-ffi namespace change
2022-08-31 10:51:04 +00:00
Jonas Platte
d416e64a7e
refactor(sdk): Return only content from Account::account_data[_raw]
...
Since global account data events only consist of the type that is known
to the user anyways, and the content.
2022-08-31 12:19:35 +02:00
Jonas Platte
aedf807025
doc(sdk): Add an example for set_account_data
2022-08-31 12:19:35 +02:00
Jonas Platte
77afa26217
feat(sdk): Add account_data[_raw] accessors to Account
2022-08-31 12:19:35 +02:00
Jonas Platte
f1a03ececd
feat(sdk): Add public set_account_data[_raw] to Account
2022-08-31 12:19:35 +02:00
Jonas Platte
f8502720c3
fix(bindings): Pass library file to uniffi-bindgen
...
… so that functions bridged via #[uniffi::export] are included in the
generated Swift API.
2022-08-31 11:52:37 +02:00
Jonas Platte
84f9414aa4
refactor(bindings): Simplify debug build script
2022-08-31 11:52:37 +02:00
Jonas Platte
9cfddc4c65
refactor(bindings): Update namespace name for matrix-sdk-ffi
2022-08-31 11:52:37 +02:00
Damir Jelić
01f8ed10aa
feat(examples): Add an example that lets you create rooms
2022-08-31 11:51:50 +02:00
Damir Jelić
6bb9a7a7d7
docs(crypto): Improve some docs about the forwarded curve chains
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-08-30 17:14:29 +02:00
Damir Jelić
75fb3b81a7
fix(crypto): Fix the deserialization of exported inbound group sessions
2022-08-30 17:14:29 +02:00
Damir Jelić
504ad39c27
fix(crypto): Fix the deserialization of inbound group group_sessions
...
Inbound group sessions would fail to be deserialized if there was a
forwarding curve chain, this patch fixes it so we go through base64 when
we deserialize this field.
2022-08-30 17:14:29 +02:00
Benjamin Kampmann
d20db7c7c1
Merge pull request #981 from Hywan/fix-crypto-js-npm-publish
...
chore(crypto-js): Add `npm run pack`
2022-08-30 08:50:39 +02:00
Ivan Enderlin
1bfcc52a1f
chore(crypto-js): Add npm run pack.
...
This patch introduces a new `pack` NPM script, which runs `wasm-pack
pack` behind the scene.
This patch modifies the `publish` NPM script to run the `pack` script
as a pre-script (so… in the `prepublish` script).
Finally, this patch no longer uses `$npm_execpath` as it doesn't work
on Windows. It should be `%npm_execpath%`. It's not obvious to make
scripts interoperable, so we will stick with `npm` for now.
2022-08-29 14:22:39 +02:00
Damir Jelić
a8362e389e
Document the receive_supported_keys method in the gossiping module
2022-08-29 10:21:04 +02:00
Damir Jelić
fe35e7c9fa
ci: Test the experimental-algorithms feature of the crypto crate
2022-08-29 10:21:04 +02:00
Damir Jelić
5768188da8
Fix some clippy warnings
2022-08-29 10:21:04 +02:00
Damir Jelić
1e451a92e0
Add some missing docs to the Olm Session
2022-08-29 10:21:04 +02:00
Damir Jelić
12c1b80bc9
Remove a dead code allowed attribute
2022-08-29 10:21:04 +02:00
Damir Jelić
7fda431d5f
Remove the usage of the Ruma EventEncryptionAlgorithm
2022-08-29 10:21:04 +02:00
Damir Jelić
337fbb591d
Put the new megolm algorithm behind the experimental feature flag
2022-08-29 10:21:04 +02:00
Damir Jelić
8cca01369a
Put the new olm algorithm behind a feature flag
2022-08-29 10:21:04 +02:00
Damir Jelić
8cdc609876
Move the EventEncryptionAlgorithm into a more logical place
2022-08-29 10:21:04 +02:00
Damir Jelić
0673ad315f
Add support for megolm.v2 forwarded keys
2022-08-29 10:21:04 +02:00
Damir Jelić
3aaf70cb5a
Support the new algorithms in the gossiping tests
2022-08-29 10:21:04 +02:00
Damir Jelić
b00e963a21
Add support for the new algorithms in the bindings
2022-08-29 10:21:04 +02:00
Damir Jelić
7d98d87c5a
Enable the new olm/megolm algorithms
2022-08-29 10:21:04 +02:00
Damir Jelić
fb840f73a3
Add support for the m.megolm.v2.aes-sha2 room key content
2022-08-29 10:21:04 +02:00
Damir Jelić
e935f59039
Add support for the m.megolm.v2.aes-sha2 algorithm
2022-08-29 10:21:04 +02:00
Damir Jelić
3df6797419
Add support for the m.olm.v1.curve25519-aes-sha2 algorithm
2022-08-29 10:21:04 +02:00
Damir Jelić
eaf1f27831
refactor(crypto): Use our own enum for the encryption algorithms
2022-08-29 10:21:04 +02:00
Damir Jelić
748eff40f0
docs(crypto): Improve some docs around event trust states
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-08-29 09:50:38 +02:00
Damir Jelić
0084117de9
docs(crypto): Fix some spelling and improve a couple of docs
...
Co-authored-by: Ivan Enderlin <ivan@mnt.io >
2022-08-29 09:50:38 +02:00
Damir Jelić
a4af5bf4e1
fix(crypto): Improve the code checking if a decrypted event is trusted
...
This now takes into account if the room key was imported, i.e. received
as a forward. We also do the check of the Ed25519 key now.
2022-08-29 09:50:38 +02:00
Damir Jelić
27d4228269
fix(crypto): Check the Ed25519 key when we receive an Olm encrypted event
2022-08-29 09:50:38 +02:00
Kévin Commaille
dc39c8d96b
fix(examples): Fix examples that accept invites
...
Spawn a task for accepting the invite otherwise the call never returns and sync stops.
2022-08-26 18:15:56 +02:00
Jonas Platte
d427632230
chore: Add more backticks in comments
2022-08-25 18:09:13 +02:00
Jonas Platte
6ddc8ba36f
refactor!: Rename [Sync]RoomEvent to [Sync]TimelineEvent
2022-08-25 18:09:13 +02:00
Jonas Platte
4be2f3aa04
chore: Upgrade ruma
2022-08-25 18:09:13 +02:00
Jonas Platte
f6c404cb32
feat(sdk): Allow event enums to be used as the first event handler argument
2022-08-25 17:19:44 +02:00
Jonas Platte
20a6a16152
refactor(sdk): Split EventHandlerMap into separate maps
...
One for room-specific event handlers, one for non-room-specific ones.
2022-08-25 17:19:44 +02:00
Jonas Platte
5a1853b0d5
refactor(sdk): Split event_handler module into more files
2022-08-25 17:19:44 +02:00
Jonas Platte
9183f5d4ef
refactor(sdk): Move event handler fields from Client into a new struct
2022-08-25 17:19:44 +02:00
Ivan Enderlin
973833c643
feat(crypto-js): Add store configuration to the OlmMachine constructor
...
feat(crypto-js): Add store configuration to the `OlmMachine` constructor
2022-08-25 11:37:45 +02:00
Ivan Enderlin
ce4f7e2254
Merge branch 'main' into feat-crypto-js-store
2022-08-25 11:22:22 +02:00
Jonas Platte
0018749e15
feat(sdk): Allow Raw<_> to be used as the first event handler argument
2022-08-24 18:35:09 +02:00
Ivan Enderlin
9c414bbe9f
feat(crypto-js): Implement OlmMachine.sign and .cross_signing_status
...
feat(crypto-js): Implement `OlmMachine.sign` and `.cross_signing_status`
2022-08-24 09:48:03 +02:00
Jonas Platte
0b8462423a
chore: Reduce indirect dependencies of examples
2022-08-23 18:30:44 +02:00
Jonas Platte
2313c099fa
chore(bindings): Replace parking_lot RwLock by std RwLock
2022-08-23 18:30:44 +02:00
Ivan Enderlin
85795a92b6
chore(crypto-js): Make Clippy happy.
2022-08-23 17:38:32 +02:00
Ivan Enderlin
ef8207fbaa
chore(crypto-js): Make Clippy happy.
2022-08-23 17:06:07 +02:00
Jonas Platte
f83292fc75
refactor: Start using UniFFI proc-macro frontend
2022-08-23 16:47:08 +02:00
Jonas Platte
5faed2e635
Upgrade UniFFI
2022-08-23 16:47:08 +02:00
Ivan Enderlin
9722a4c415
chore(crypto-js): Use IndexeddbCryptoStore only for wasm32.
2022-08-23 16:46:09 +02:00
Ivan Enderlin
432449b009
chore(crypto-js): Make cargo fmt happy.
2022-08-23 15:08:51 +02:00
Ivan Enderlin
04634d5f39
chore(crypto-js): Fix a typo in an error message.
2022-08-23 15:04:50 +02:00
Ivan Enderlin
ef56f76978
doc(crypto-js): Fix a typo.
2022-08-23 15:03:26 +02:00
Ivan Enderlin
527c727e4a
test(crypto-js): Improve test cases.
2022-08-23 15:00:39 +02:00
Ivan Enderlin
d947448c64
test(crypto-js): Add more test case when store is not configured correctly.
2022-08-23 15:00:39 +02:00
Ivan Enderlin
d497883669
doc(crypto-js): Add more docmuentation and more error messages.
2022-08-23 15:00:39 +02:00
Ivan Enderlin
7f07ac52ef
feat(crypto-js): Add store configuration to the OlmMachine constructor.
...
The `OlmMachine` constructor now has 2 more optional arguments:
`store_name` and `store_passphrase`, to use Indexed DB as the backend
to store the Olm machine keys, rather than having an in-memory Olm
machine.
Node.js is used to test our binding. Indexed DB is absent of
Node.js. So, firstly, we are using the `fake-indexeddb` JavaScript
library to mimic the same API inside Node.js. And, secondly, we use
our own fork of the `indexed_db_futures` Rust crate to provide add
support for Node.js too ([PR is
here](https://github.com/Alorel/rust-indexed-db/pull/11 )). It
basically looks in the Node.js global environment if the `indexedDB`
getter is present, just like it is already done for `Window` on any
browser, or `WorkerGlobalScope` for workers.
2022-08-23 15:00:33 +02:00
Jonas Platte
9462061a5a
chore: Upgrade ruma
2022-08-23 14:28:21 +02:00
Ivan Enderlin
d508237078
chore(crypto-js): Add a release workflow for crypto-js
...
chore(crypto-js): Add a release workflow for `crypto-js`
2022-08-23 10:49:29 +02:00
Ivan Enderlin
331f8b381f
doc(crypto-js): Update documentation for the release workflow.
2022-08-22 15:10:01 +02:00
Ivan Enderlin
2481618608
chore(crypto-js): Create the Github release with the NPM package attached.
...
This patch updates the `publish` NPM script to explicitly run
`wasm-pack pack` to create the NPM package in the `pkg/`
directory. This patch also updates the Github Action workflow for the
`matrix-sdk-crypto-js` release, to create a new Github Release, with
the NPM package attached as an asset file.
2022-08-22 14:37:09 +02:00
Jonas Platte
dd78a8cecd
refactor(sdk)!: Make room type constructors private
...
… and avoid unnecessary clones before calling them.
2022-08-22 13:16:05 +02:00
Ivan Enderlin
39077b185b
chore(crypto-js): Add a release workflow for crypto-js.
...
This patch adds a new `npm run publish` script that:
1. Run `npm run prepublish` (which runs the `build` and `test` scripts),
2. Run `wasm-pack publish`.
Note 1: The `prepublish` script is using the `$npm_execpath`
environment variable instead of just “`npm`”, so that if someone is
using `yarn` or another JavaScript package manager, it _should_ work
(not tested yet).
Note 2: `wasm-pack publish` is run without running `wasm-pack login`
before that. _But_ we are updating the registry URL in the NPM
configuration file in the Github Action workflow, see below.
This patch then creates a new Github Action workflow that is triggered
when a new tag of the form `matrix-sdk-crypto-js-v[0_9]+.*` is
pushed. This workflow runs `npm run publish` basically, but before
that, it updates the NPM configuration file by setting a value for
`//registry.npmjs.org/:_authToken`. Thus, running `wasm-pack login` is
not necessary.
2022-08-22 12:14:44 +02:00
Benjamin Kampmann
68107e6285
Merge pull request #963 from gnunicorn/ben-update-ruma
...
chore: Update ruma
2022-08-18 16:13:15 +02:00
Benjamin Kampmann
549c829000
chore: Update ruma
2022-08-18 15:52:08 +02:00
Jonas Platte
3581d83389
chore: Upgrade Ruma
2022-08-17 10:15:05 +02:00
Jonas Platte
260b604615
refactor(sdk)!: Split strongly-typed state event functions into two
...
One for empty state keys under the existing name, one for non-empty
state keys with a `_for_key` suffix.
2022-08-17 10:15:05 +02:00
Ivan Enderlin
a1dca23c3c
Merge pull request #958 from Hywan/feat-crypto-js-attachment
2022-08-17 10:12:04 +02:00
Benjamin Kampmann
9fd5a8b3b1
Merge pull request #960 from matrix-org/poljar/delete-device-log-improvement
...
Improve the log line when we think our device has been deleted
2022-08-17 09:46:26 +02:00
Damir Jelić
180822dd18
chore(crypto): Improve the message when we think that we have been deleted
2022-08-16 18:32:14 +02:00
Damir Jelić
20477ab7da
chore(crypto): Log our identity keys when we think our device has been deleted
2022-08-16 18:31:30 +02:00
Damir Jelić
06f39696d3
chore(crypto): Improve some logs in the Olm message handling code
2022-08-16 16:18:50 +02:00
Damir Jelić
6f5443f8a0
chore(crypto): Log some info when we try to create an Olm session from a pre-key message
2022-08-16 16:18:50 +02:00
Ivan Enderlin
45a66f3321
doc(crypto-nodejs): Fix a typo.
2022-08-16 16:06:04 +02:00
Ivan Enderlin
7f35691236
feat(crypto-js): Implemented the Attachment API.
...
Implement the `Attachment.encrypt` and `Attachment.decrypt` methods,
along with its `EncryptedAttachment` companion.
The trick is to avoid copies as much as possible. Instead of dealing
with `Uint8Array` as I've initially done, `&[u8]` and `Vec<u8>` is
passed instead. `wasm-bindgen` is smart enough to do as few copies as
possible (from JavaScript to Wasm's memory is required, and we don't
want to do more), while typing everything as `Uint8Array`.
`EncryptedAttachment.encryptedData` returns a copy of the data
everytime it is called, and that's the last copy I'm not happy with.
2022-08-16 15:56:36 +02:00
Benjamin Kampmann
e8d51a4cba
Merge pull request #956 from gnunicorn/ben-fix-encode-key
...
fix(sled): Remove unused `from` on EncodeUnchecked
2022-08-16 15:51:36 +02:00
Benjamin Kampmann
7feffec9c0
fix(sled): feature-gate EncodeUnchecked::from
2022-08-16 15:18:46 +02:00
Ivan Enderlin
8e74834342
doc(crypto-js): Add missing module documentation.
2022-08-16 12:31:19 +02:00
Ivan Enderlin
070637b0ef
chore(crypto-js): Fix style.
2022-08-16 12:21:02 +02:00
Ivan Enderlin
2dffe03c8d
feat(crypto-js): Implement OlmMachine.sign.
2022-08-16 12:16:01 +02:00
Ivan Enderlin
3f0509e7b1
fix(crypto-js): Add missing Debug impl.
2022-08-16 12:16:01 +02:00
Ivan Enderlin
2275643ea0
chore(crypto-js): Move Vodozemac types into their own Rust module.
2022-08-16 12:16:01 +02:00
Ivan Enderlin
0fa6ff6955
feat(crypto-js): Add DeviceKeyId, DeviceKeyAlgorith and DeviceKeyAlgorithmName.
2022-08-16 12:16:01 +02:00
Ivan Enderlin
997a6ed0ad
feat(crypto-js): Implement OlmMachine.cross_signing_status.
2022-08-16 12:16:01 +02:00
Ivan Enderlin
fd220f197b
doc: Add link to online documentation for crypto-js and crypto-nodejs
...
doc: Add link to online documentation for crypto-js and crypto-nodejs
2022-08-16 10:21:39 +02:00
Ivan Enderlin
655e62814b
doc(crypto-nodejs) Add link to online documentation.
2022-08-16 10:06:22 +02:00
Ivan Enderlin
c2468b2f2e
doc(crypto-js) Add link to online documentation.
2022-08-16 10:04:54 +02:00
Benjamin Kampmann
e0ae4f60e3
docs(examples): update instructions for wasm_command_bot example
...
Merge pull request #952 from chrisguida/chrisguida/wasm-bot-readme -
2022-08-16 09:48:33 +02:00
Chris Guida
2beb13cc3e
update instructions for wasm_command_bot example
2022-08-15 17:56:54 -05:00
Damir Jelić
78dcff9259
chore(crypto): Fix an indentation issue
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-08-15 11:39:43 +02:00
Damir Jelić
0bd58a7741
refactor(crypto): Simplify the Curve25519 check when fetching a device
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-08-15 11:39:43 +02:00
Damir Jelić
405c3938b7
refactor(crypto): Use the Curve25519 key type in more places
2022-08-15 11:39:43 +02:00
Damir Jelić
bd5ea8b0f7
fix(crypto): Fix some error messages
2022-08-15 11:39:43 +02:00
Jonas Platte
24c042e974
refactor(base): Deserialize events at the expected type
...
… rather than deserializing at an enum type and taking the same branch
for getting a different enum variant¹ as failed deserialization.
¹ which should be impossible anyways
2022-08-15 11:05:22 +02:00
Jonas Platte
d236cde0c7
refactor(base): Use StateStoreExt in a few places
2022-08-15 11:05:22 +02:00
Jonas Platte
d2f39bc18f
feat(base): Add StateStoreExt for statically-typed event retrieval
2022-08-15 11:05:22 +02:00
Jonas Platte
96165f5602
chore(bindings): Use ? operator instead of and_then chaining
2022-08-15 11:05:22 +02:00
Damir Jelić
4a13b8d207
ci: Ignore thead when checking for spelling
2022-08-14 10:20:28 +02:00
Damir Jelić
c9c09adb38
chore: Fix some newly detected typos
2022-08-14 10:20:28 +02:00
Jonas Platte
aedbbcdde7
fix(sdk)!: Remove SyncEvent implementation for InitialStateEvent
...
Initial state events aren't actually received through sync, they're sent from
the client to the server when creating a room.
This change makes it impossible to register event handlers for initial state
events. Previously, this was allowed, but the event handler was never called.
2022-08-13 20:21:28 +02:00
Jonas Platte
97f37acb4a
chore: Reduce indirect dependencies of sled-state-inspector
2022-08-13 13:08:11 +02:00
Damir Jelić
0b5bfeadea
chore(crypto): Add a missing semicolon
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-08-13 09:58:57 +02:00
Damir Jelić
6d60acfff4
chore(common): Fix a clippy warning
2022-08-13 09:58:57 +02:00
Damir Jelić
3d56af442d
refactor(crypto): Utilize the decrypted Olm event type more
...
This patch adds some more stronger guarantees that received room key
events and other similarly security critical event types are only
handled if they have been received over a secure Olm channel.
2022-08-13 09:58:57 +02:00
Damir Jelić
ae18b01c25
refactor(crypto): Use the SigningKeys collection for inbound group sessions
2022-08-11 16:43:42 +02:00
Damir Jelić
4692a12cd7
refactor(crypto): Create a custom collection type for signed keys
2022-08-11 16:43:42 +02:00
Jonas Platte
344309c1bf
chore: Track Cargo.lock to make binding staticlibs reproducible
2022-08-11 13:32:32 +02:00
Jonas Platte
87094a9111
chore: Document dependency upgrade issues
2022-08-11 13:16:10 +02:00
Jonas Platte
adf3f9d434
chore(appservice): Upgrade serde_yaml
2022-08-11 13:15:57 +02:00
Jonas Platte
158bd24b40
chore: Bump pprof dependency
2022-08-11 13:09:09 +02:00
Jonas Platte
8e368d86b7
chore: Use the latest git version of UniFFI
2022-08-11 12:56:17 +02:00
Jonas Platte
0fe714df86
chore: Upgrade sled-state-inspector dependencies
2022-08-11 11:59:50 +02:00
Jonas Platte
936f0371de
chore: Use once_cell instead of lazy_static in integration test crate
2022-08-11 10:45:04 +02:00
Jonas Platte
ecc800a319
chore: Sort dependencies of integration test crate
2022-08-11 10:32:12 +02:00
docweirdo
febfcf9796
feat(sdk): Make room actions return typed room objects
...
… by waiting for the corresponding event confirming the action. Affects:
* Creating a room
* (Re-)Joining a room
* Leaving a room
* Accepting an invitation
* Rejecting an invitation
2022-08-10 17:32:38 +02:00
Damir Jelić
3f0a68082a
feat(crypto): Add a setting to only send room keys to trusted devices
2022-08-10 13:31:15 +02:00
Damir Jelić
18861bb595
refactor(crypto): Add a dedicated error for inbound group session exporting
2022-08-10 13:28:54 +02:00
Damir Jelić
329d461a2f
feat(crypto): Add customized event type for the forwarded room key
2022-08-10 13:28:54 +02:00
Jonas Platte
4914c595e9
fix(sdk): Further relax event / notification handler bounds on WASM
...
This allows capturing non-`Send` / -`Sync` values in handler closures.
2022-08-10 12:54:36 +02:00
Jonas Platte
ad80839ffd
fix(sdk): Make event handler futures non-Send on wasm
2022-08-09 14:25:57 +02:00
Jonas Platte
0701561e45
feat(common): Add SendOutsideWasm, SyncOutsideWasm
2022-08-09 14:25:57 +02:00
Jonas Platte
25030780b0
test(sdk): Run event handler tests on wasm
2022-08-09 14:25:57 +02:00
Jonas Platte
327a404d60
test(sdk): Move test client creation into separate module
2022-08-09 14:25:57 +02:00
Damir Jelić
06e096f6cc
fix(examples): Fix the in-room emoji verification example
2022-08-09 14:04:11 +02:00
Damir Jelić
a025163dae
test(crypto): Test that we correctly preserve relations in an encryption cycle
2022-08-09 14:04:11 +02:00
Damir Jelić
19fcff56de
chore(crypto): Make the relation copying code when decrypting a bit simpler
2022-08-09 14:04:11 +02:00
Damir Jelić
edf81fb325
fix(crypto): Correctly copy over the relation when encrypting
2022-08-09 14:04:11 +02:00
Damir Jelić
08338acac2
fix(crypto): Fix the deserialization of relations
2022-08-09 14:04:11 +02:00
Kévin Commaille
52e70f1955
refactor(sdk): Don't require the whole session for sending
...
Allow to send requests when only the access token is available.
Remove the unreachable UserIdRequired error.
2022-08-09 12:26:33 +02:00
Jonas Platte
e788ec6b07
ci: Only test one node.js version on macOS
2022-08-08 18:06:54 +02:00
Jonas Platte
d3d108deb8
chore: Add missing copyright headers
2022-08-08 16:28:48 +02:00
Jonas Platte
bd65d9b7a6
doc(sdk): Remove usage of deprecated function in doctest
2022-08-05 16:16:41 +02:00
Jonas Platte
230bb67763
refactor(sdk): Remove Clone requirement on event handlers
2022-08-05 16:16:41 +02:00
Jonas Platte
10a37f6d51
chore(sdk): Add EventHandlerDropGuard
...
It isn't used for now, but will be soon.
2022-08-05 16:16:41 +02:00
Jonas Platte
5156fb7dd4
refactor(sdk): Move add_event_handler_impl to event_handler module
2022-08-05 16:16:41 +02:00
Jonas Platte
3b03ad804f
refactor(sdk)!: Swap the async lock around event handlers for a sync one
2022-08-05 16:16:41 +02:00
Damir Jelić
603176f521
chore(crypto): Bump vodozemac
...
Vodozemac got some new knobs to twiddle with. This patch updates
vodozemac and sets the knobs to use the olm/megolm v1 supported
encryption schemes.
2022-08-05 14:06:42 +02:00
Jonas Platte
dfec17e6af
chore: Disable testing of crates without tests
...
This reduces the amount of "running 0 tests" spam when testing the whole
workspace and makes testing a little faster overall.
2022-08-05 11:10:31 +02:00
Kévin Commaille
7623f93bb3
fix(sdk)!: Make set_homeserver private
...
A user shouldn't need to change the homeserver after creating the client.
2022-08-05 09:55:55 +02:00
Jonas Platte
a60620306c
ci: Update tarpaulin.toml
2022-08-04 23:43:49 +02:00
Jonas Platte
1fea48359d
ci: Checkout head ref instead of merge commit for coverage
...
… this *should* fix bogus coverage change reporting.
2022-08-04 23:43:49 +02:00
Jonas Platte
054dfa98a0
ci: Upgrade checkout action
2022-08-04 23:43:49 +02:00
Damir Jelić
593d4e6062
perf(crypto): Use an RwLock for the OutboundGroupSession
2022-08-04 17:36:03 +02:00
Jonas Platte
5a94ba7b80
refactor(sled)!: Align open_with_database with its documentation
...
It now takes a passphrase instead of a store cipher as the second argument.
2022-08-04 17:04:31 +02:00
Jonas Platte
e1b7f3be05
refactor(sled): Simplify test code
2022-08-04 17:04:31 +02:00
Jonas Platte
6bed51f016
refactor(indexeddb)!: Use &str for name in public API
2022-08-04 17:04:31 +02:00
Jonas Platte
4db162b8a2
chore(indexeddb): Clean up Result usage
2022-08-04 17:04:31 +02:00
Jonas Platte
0b1bdd66f9
refactor(indexeddb): Export error types
2022-08-04 17:04:31 +02:00
Jonas Platte
a4f3c3a070
refactor!: Give sled / indexeddb types unique names
2022-08-04 17:04:31 +02:00
Jonas Platte
df7895d2c6
chore(indexeddb): Rename cryptostore => crypto_store
...
… for consistency with state_store.
2022-08-04 17:04:31 +02:00
Jonas Platte
694c36d741
chore(sled): Rename cryptostore => crypto_store
...
… for consistency with state_store.
2022-08-04 17:04:31 +02:00
Benjamin Kampmann
b5329f99f1
Merge pull request #903 from gnunicorn/ben-getting-started-example
...
Improving examples
2022-08-04 15:41:26 +02:00
Damir Jelić
f055e939e7
refactor(crypto): Use the vodozemac method to decide if a session is better
...
This patch delegates the decision making if a session is better to
vodozemac. Vodozemac has better insights if a group session can be
considered to be better.
2022-08-04 15:09:09 +02:00
Benjamin Kampmann
c4c7c2bb23
docs: remove unused import and fix style of custom events example
2022-08-04 15:02:39 +02:00
Benjamin Kampmann
efc0556124
doc: follow naming convention and use generated types from ruma
2022-08-04 13:31:16 +02:00
Benjamin Kampmann
9d588f7e00
doc: add example for sending and reacting on custom events
2022-08-04 13:13:48 +02:00
Benjamin Kampmann
323974fe4c
Merge remote-tracking branch 'origin/main' into ben-getting-started-example
2022-08-04 12:22:42 +02:00
Benjamin Kampmann
3bdb2f22ea
build(crypto-js): Pin yarg-parser to 21.0.1 to prevent upgrade bug
...
We are effected by https://github.com/yargs/yargs-parser/issues/452
through the transient dependency of jest on yargs
2022-08-04 12:21:18 +02:00
Damir Jelić
ddf8577c84
refactor(crypto): Start using our own event types when we encrypt
2022-08-04 11:16:02 +02:00
Benjamin Kampmann
90c2dcdbc0
style: fix clippy lints
2022-08-04 11:02:28 +02:00
Benjamin Kampmann
fe4bc0dc75
doc: fix docs of getting started bot
2022-08-03 17:07:59 +02:00
Benjamin Kampmann
69c8cdf304
Revert "fix: limit indexeddb features to target arch to stop clippy from complaining"
...
This reverts commit d54612b6e2 .
2022-08-03 16:40:17 +02:00
Benjamin Kampmann
daf92d7745
Merge remote-tracking branch 'origin/main' into ben-getting-started-example
2022-08-03 16:39:50 +02:00
Benjamin Kampmann
ccbd9e5712
chore: rename Readme.md to README.md
2022-08-03 16:39:14 +02:00
Jonas Platte
2430d7f267
chore: Remove unneeded docsrs Cargo features
2022-08-03 15:33:53 +02:00
Damir Jelić
3ca3016539
refactor(crypto): Use the curve 25519 key type for inbound group sessions
2022-08-03 15:28:24 +02:00
Jonas Platte
bbbd7942b0
fix(indexeddb): Export MigrationConflictStrategy
2022-08-03 15:17:05 +02:00
Jonas Platte
1a5953e01e
chore(indexeddb): Appease clippy
2022-08-03 15:17:05 +02:00
Jonas Platte
3a19d8e5bf
chore(indexeddb): Reduce target_arch feature gates
...
This allows smoother development as a regular 'cargo check' will
validate most of the code. It also makes rust-analyzer work for the
crate without any configuration.
2022-08-03 15:17:05 +02:00
Jonas Platte
0b7d0aa780
chore(common): Make timeout tests deterministic
...
… as well as simpler, and faster.
2022-08-03 14:54:43 +02:00
Jonas Platte
82f4e57a2c
feat(sled): Print a clear error message when attempting to build on wasm
2022-08-03 14:48:45 +02:00
Jonas Platte
9714ce9edf
refactor(sdk): Check permissible feature configuration in build script
...
… instead of through `compile_error!` invocations. This helps avoid
unhelpful errors from the unsupported feature configuration by aborting
compilation earlier.
2022-08-03 14:48:45 +02:00
Benjamin Kampmann
9538596fbb
doc: Add getting-started example autojoin & command bot with plenty of source docs
2022-08-03 13:05:25 +02:00
Benjamin Kampmann
35be128139
docs: add Readme to examples root
2022-08-03 12:06:50 +02:00
Benjamin Kampmann
d54612b6e2
fix: limit indexeddb features to target arch to stop clippy from complaining
2022-08-03 12:00:54 +02:00
Benjamin Kampmann
a1bf53a331
Merge remote-tracking branch 'origin/main' into ben-getting-started-example
2022-08-03 11:39:50 +02:00
Kévin Commaille
9064e7b02d
feat(sdk): Add support for refresh tokens
2022-08-03 10:42:28 +02:00
Damir Jelić
ae261c2091
refactor(crypto): Refactor the key sharing tests a bit
2022-08-02 16:48:05 +02:00
Damir Jelić
968792ea00
refactor(crypto): Split out the forwarded room key accepting method
2022-08-02 16:48:05 +02:00
Benjamin Kampmann
42c88e840f
Merge pull request #905 from gnunicorn/ben-fix-integration-test-coverage
...
ci: add backend server for integration test with tarpaulin
2022-08-02 16:14:26 +02:00
Benjamin Kampmann
38a71972e5
ci: add backend server for integration test with tarpaulin
2022-08-02 15:42:45 +02:00
Benjamin Kampmann
d8caaed1ce
docs: only document default workspace members, not all
2022-08-02 15:24:48 +02:00
Benjamin Kampmann
67e63c0d35
ci: update xtask, add ci to build examples
2022-08-02 15:13:27 +02:00
Benjamin Kampmann
4c7ddd7512
refactor: move examples from crates/matrix-sdk into separate crates in examples/
2022-08-02 15:06:04 +02:00
Jonas Platte
9fca639f9b
feat(sdk): Add room::Common::add_event_handler
2022-08-02 13:38:30 +02:00
Benjamin Kampmann
6cb87c64b5
Merge pull request #855 from gnunicorn/gnunicorn/issue833
...
Integration tests against an actual synapse server
2022-08-02 12:22:48 +02:00
Benjamin Kampmann
a5875ff75d
ci: update codecov config to exclude all testing crates
2022-08-02 10:59:18 +02:00
Benjamin Kampmann
9bb02f2419
fix: fix path to testing crate
2022-08-02 10:58:53 +02:00
Benjamin Kampmann
65be06ebad
Merge remote-tracking branch 'origin/main' into gnunicorn/issue833
2022-08-02 10:32:09 +02:00
Damir Jelić
154538c4c9
fix(crypto): Make the secret receiving logic more obvious.
...
This patch ensures that the received secret has been sent by one of our
verified devices. We already ensure so for the secrets we import, since
we check that the cross signing keys match the public keys of our own
user idenity.
No other secrets get imported by this method but it could quite easily
become an issue if we start accepting more secret types.
2022-08-02 09:35:38 +02:00
Damir Jelić
f23c16cf88
refactor(crypto): Split out the methods to receive a secret
2022-08-02 09:35:38 +02:00
Jonas Platte
165973121c
fix(sdk): Make remove_event_handler work with room-specific handlers
...
As part of that, store only the ID, not the whole key in
EventHandlerWrapper, because the key is getting bigger with room_id.
2022-08-01 23:57:00 +02:00
Jonas Platte
31903d3cbc
chore(sdk): Simplify remove_event_handler test
2022-08-01 23:55:44 +02:00
Jonas Platte
108f299e92
refactor(sdk): Inline handle_sync_events_wrapped_with into all callers
...
It was too generic to be readable.
2022-08-01 23:55:44 +02:00
Jonas Platte
eb78815be5
refactor(sdk): Create non-generic fn call_event_handlers
...
Extracted out of handle_sync_events_wrapped_with.
2022-08-01 23:55:44 +02:00
Jonas Platte
0716f6afaa
feat(sdk): Add Client::add_room_event_handler
2022-08-01 23:55:44 +02:00
Jonas Platte
78169d516e
refactor(sdk): Avoid unnecessary double map lookup
2022-08-01 23:55:44 +02:00
Jonas Platte
061fe104a9
chore(sdk): Move EventHandler{Fut,Fn} into event_handler module
2022-08-01 23:55:43 +02:00
Benjamin Kampmann
f91bdb28ba
Merge pull request #897 from gnunicorn/ben-fix-documentation-generation
...
Fix documentation generation
2022-08-01 22:37:21 +02:00
Benjamin Kampmann
14429af511
Update .github/workflows/documentation.yml
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-08-01 22:19:46 +02:00
Benjamin Kampmann
1e6e00b0c0
ci(integration-testing): split integration test off from regular tests
2022-08-01 18:54:33 +02:00
docweirdo
744bd8d0d2
feat(common): Add a generically usable timeout function
2022-08-01 18:23:30 +02:00
Benjamin Kampmann
06ad079099
Merge pull request #895 from matrix-org/ben-add-editoconfig
...
build: Adding .editorconfig
2022-08-01 15:23:58 +02:00
Benjamin Kampmann
7dfadd1848
ci(integration-testing): split integration test off from regular tests
2022-08-01 15:20:13 +02:00
Benjamin Kampmann
5089c1a7e9
ci(docs): force npm generated bindings if existing
2022-08-01 14:56:26 +02:00
Benjamin Kampmann
c15a4bcdd4
build: Adding .editorconfig
2022-08-01 14:33:05 +02:00
Benjamin Kampmann
729836cf70
Merge pull request #894 from gnunicorn/ben-add-js-docs
...
ci(js) add npm docs of bindings to pages
2022-08-01 13:35:17 +02:00
Benjamin Kampmann
2d21c30639
Merge remote-tracking branch 'origin/main' into gnunicorn/issue833
2022-08-01 13:28:28 +02:00
Benjamin Kampmann
3842426788
ci: Remove unneeded github action params
2022-08-01 13:27:00 +02:00
Benjamin Kampmann
c27016b2e7
testing: fix review grumbles
2022-08-01 13:01:50 +02:00
Benjamin Kampmann
d0f58d0879
ci(js) add npm docs of bindings to pages
2022-08-01 12:17:36 +02:00
Kévin Commaille
4cdc91844e
chore(ci): Fix new clippy warnings
2022-07-30 12:58:18 +02:00
Jonas Platte
fe5d8fb40e
refactor: Deprecate ClientBuilder::{crypto_store, state_store}
2022-07-29 17:22:12 +02:00
Jonas Platte
ffb4c6d6ef
docs: Use new ClientBuilder methods in examples
2022-07-29 17:22:12 +02:00
Jonas Platte
93c4c5d128
feat(sdk): Add ClientBuilder::indexeddb_store
2022-07-29 17:22:12 +02:00
Jonas Platte
ec3a6e4b15
feat(sdk): Add ClientBuilder::sled_store
2022-07-29 17:22:12 +02:00
Jonas Platte
ecbcf734b9
docs(sled): Clean up make_store_config description
2022-07-29 17:22:12 +02:00
Jonas Platte
75f08aed69
docs(sdk): Fix outdated description of ClientBuilder::store_config
2022-07-29 17:22:12 +02:00
Jonas Platte
255955555d
refactor(sdk): Add back register_event_handler[_context] as deprecated methods
...
… using their original signatures so upgrading matrix-sdk is easier.
2022-07-29 14:39:28 +02:00
Jonas Platte
27b858308c
refactor(sdk)!: Rename {register => add}_event_handler[_context]
...
It's shorter and better fits with the new remove_event_handler method.
2022-07-29 14:39:28 +02:00
Jonas Platte
a21ac5d6e4
Disable debug-info for the dev profile
2022-07-29 11:28:47 +02:00
Damir Jelić
4db041ce9a
docs(crypto): Improve the wording on the recipient collection method
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-07-29 10:20:36 +02:00
Damir Jelić
c194e08942
fix(crypto): Rotate the outbound group session if the algorithm changes
2022-07-29 10:20:36 +02:00
Damir Jelić
713e96d3a8
fix(crypto): Store intermediate changes to the outbound group session
...
This fixes a bug where we would lose already generated to-device
requests carrying an m.room_key when the client gets restarted.
This only happens if the request was generated after the initial
share of the room key. Such requests get generated if a new device
or member join the group.
2022-07-29 10:01:58 +02:00
Jonas Platte
b36f79a1bb
doc: Make rustfmt format code blocks in documentation
2022-07-28 20:06:12 +02:00
Jonas Platte
504464c1e8
chore: Remove edition from .rustfmt.toml
...
It will be picked up from Cargo.toml.
2022-07-28 20:06:12 +02:00
Doug
b884c5baae
chore(bindings/ffi): Print each step when building XCFramework.
2022-07-28 13:37:02 +02:00
Doug
c15fb5e5b7
fix(sdk): Reduce retry length on homeserver discovery
2022-07-28 13:37:02 +02:00
Damir Jelić
0555216f37
chore(crypto): Introduce a helper function to convert events in tests
2022-07-28 12:48:12 +02:00
Damir Jelić
03a4814a1a
refactor(crypto): Use our own type for megolm
2022-07-28 12:48:12 +02:00
Damir Jelić
80c7f057cc
refactor(crypto): Use our own struct for encrypted to-device events
2022-07-28 12:48:12 +02:00
Damir Jelić
7e70997e1c
feat(crypto): Add customized m.room.encrypted events
2022-07-28 12:48:12 +02:00
Damir Jelić
2bb7914611
refactor(crypto): Make the event type an associated constant
2022-07-28 12:48:12 +02:00
Benjamin Kampmann
c8c793da98
Merge pull request #768 from gnunicorn/gnunicorn/issue756
...
Bump db version, "upgrade" path to new db in sled and indexeddb
2022-07-28 09:51:27 +02:00
Damir Jelić
e501979d92
feat(bindings/ffi): Allow setting the timeline limit for the sync setup
2022-07-27 19:23:10 +02:00
Doug
57c1e68893
Rename limit to timeline_limit.
...
Use a u16 instead.
2022-07-27 18:03:04 +01:00
Doug
a875c4b373
Expose room membership in the FFI.
2022-07-27 17:23:09 +01:00
Doug
f6e215dac3
Add limit parameter to start_sync.
2022-07-27 17:22:17 +01:00
Jonas Platte
4415ed9b58
refactor: Improve tracing events
...
* Use fields more
* Adjust some wording
2022-07-27 17:47:01 +02:00
Benjamin Kampmann
59fc81b957
ci(xtask): bump wasm timeout to make the ci pass
2022-07-27 16:58:20 +02:00
Benjamin Kampmann
770ac193a7
fix(indexeddb): import errors
2022-07-27 15:08:51 +02:00
Benjamin Kampmann
fe40b3753a
Merge pull request #870 from Hywan/feat-crypto-js-npm-publish
...
chore: Update or add `git-cliff` config' & prepare `crypto-js` for publishing
2022-07-27 14:28:40 +02:00
Benjamin Kampmann
e871114436
docs(crypto-ffi): fixing path
2022-07-27 13:43:39 +02:00
Benjamin Kampmann
fb4dd4d875
test(crypto-js): fixing path
2022-07-27 13:32:26 +02:00
Benjamin Kampmann
5806b3fbe9
ci(crypto-js): use a specific node version to run tests
2022-07-27 13:23:44 +02:00
Benjamin Kampmann
e1be222558
style: fixing fmt
2022-07-27 13:09:08 +02:00
Benjamin Kampmann
37f0926832
chore: prefer to user Store::builder
2022-07-27 12:59:53 +02:00
Benjamin Kampmann
936731065b
fix(indexeddb): specify futures import
2022-07-27 12:53:54 +02:00
Benjamin Kampmann
088699b6a4
docs(xtask): remove comment
2022-07-27 12:20:46 +02:00
Benjamin Kampmann
b2da8b7dd7
fix(examples): update to renaming
2022-07-27 12:12:17 +02:00
Benjamin Kampmann
b80d3c2f2d
Merge remote-tracking branch 'origin/main' into gnunicorn/issue756
2022-07-27 12:04:56 +02:00
Benjamin Kampmann
eb1dfd9690
docs(indexeddb): document builder functions
2022-07-27 11:52:13 +02:00
Benjamin Kampmann
54c181a9ad
chore: cleaning up builder usage in sled and indexeddb
2022-07-27 11:51:56 +02:00
Benjamin Kampmann
003c946581
chore(sled): ascending order for dependencies
2022-07-27 10:59:02 +02:00
docweirdo
82731a5e89
feat(sdk): Add support for removing event handlers
2022-07-27 05:09:22 +00:00
Damir Jelić
4175e6badf
feat(bindings/ffi): Allow clients to be restored using only an access token
...
This functionality is important to allow clients to log in using an OIDC server. The OIDC server returns only an access token, the client needs to fetch the user ID and device ID from the Matrix server separately.
This lives in the bindings for now since OIDC support in Matrix is being actively developed.
2022-07-26 17:10:50 +02:00
Benjamin Kampmann
008c0f4659
Merge pull request #860 from matrix-org/doug/client-path
...
Use a consistent store path when logging in through the FFI.
2022-07-26 16:33:32 +02:00
Doug
a951a273e7
Rebase and rename method.
...
Add a device ID parameter to restore_with_access_token
2022-07-26 15:00:02 +01:00
Doug
f13f590b7f
Add login_access_token to the FFI auth service.
2022-07-26 15:00:02 +01:00
Doug
1eadd0ba2d
Revert changes to store path. Use whoami for path.
2022-07-26 14:50:51 +01:00
Doug
3b8a2ca2d7
Add missing path method to IndexeddbStore.
2022-07-26 14:50:51 +01:00
Doug
b6b1f904e0
Fix clippy warning.
2022-07-26 14:50:51 +01:00
Doug
f31528c926
Allow a client to be built without a store path.
...
Throw an error on login if it is missing.
2022-07-26 14:50:51 +01:00
Doug
05fab8c394
Add a store_path method on the FFI client.
2022-07-26 14:48:37 +01:00
Jonas Platte
e37e62c92c
chore(sdk): Fix event handler test
...
It wasn't actually testing typing and power-levels event handlers before.
2022-07-26 11:11:10 +02:00
Jonas Platte
d162dd07d5
refactor(sdk): Split SyncEvent::ID into KIND and TYPE
...
This should make things slightly easier to read.
2022-07-25 20:33:43 +02:00
Jonas Platte
42d3ebbe87
chore: Remove ugly commas right before closing parentheses
2022-07-25 20:30:13 +02:00
Jonas Platte
4e7bd6760a
chore: Replace qualified uses of tracing macros with imports
2022-07-25 20:30:13 +02:00
Jonas Platte
ab9476960b
chore(sled): Fix line length overflow
2022-07-25 20:30:13 +02:00
Jonas Platte
b3092bd1d9
chore(indexeddb): Remove unnecessary .to_string() call in test code
2022-07-25 20:30:13 +02:00
Jonas Platte
c2ad4b7d82
fix(appservice): Respond with a non-stringified empty object
...
warp::reply::json() serializes its argument to JSON, passing it an
already-serialized JSON string doesn't do the right thing.
2022-07-25 20:30:13 +02:00
Jonas Platte
f8e729f7f3
chore: Use implicit named arguments for formatting macros more
2022-07-25 20:30:12 +02:00
Jonas Platte
5c88bd1595
refactor(sdk): Remove ID from EventHandler
...
Turns out it wasn't actually needed.
2022-07-25 20:30:12 +02:00
Damir Jelić
204441f2b3
Fix a formatting issue in a doc example
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-07-25 19:06:15 +02:00
Damir Jelić
79d13148fb
chore: Remove TryFrom/TryInto imports
2022-07-25 19:06:15 +02:00
Julian Sparber
c247de95b6
client: Remove redudant delay after sync error
...
If the last sync was less then a 1s ago we wait for a 1s, it doesn't
make sense to wait an additional second on an error. Also the stream
sync api returns the error after a delay of 1s, which doesn't make
sense.
2022-07-25 12:01:28 +02:00
Johannes Becker
6d87dd8011
refactor(appservice)!: Make USER_MEMBER const private"
2022-07-22 09:33:42 +02:00
Jonas Platte
4b6a28da0d
chore(sdk): Fix line length overflow in common.rs
2022-07-21 19:24:42 +02:00
Benjamin Kampmann
bf6e1b594d
fix(integration-tests): requires multi-threading feature from tokio
2022-07-21 18:06:48 +02:00
Benjamin Kampmann
59332e46b5
switch to multithreaded tokio test runner
2022-07-21 17:58:50 +02:00
Benjamin Kampmann
c070b96a68
Merge remote-tracking branch 'origin/main' into gnunicorn/issue833
2022-07-21 17:37:49 +02:00
Benjamin Kampmann
d68d6ead69
chore: let's check the logs
2022-07-21 17:31:58 +02:00
Benjamin Kampmann
f34c2f0574
ci: fix typos
2022-07-21 17:28:38 +02:00
Benjamin Kampmann
aad167b792
style(indexeddb): fixing rust fmt
2022-07-21 17:25:43 +02:00
Benjamin Kampmann
814a30064f
fix(sled-inspector): new builder fn
2022-07-21 17:18:43 +02:00
Ivan Enderlin
6ce5d0b507
chore(crypto-js): Add cliff.toml for git-cliff.
2022-07-21 15:50:11 +02:00
Ivan Enderlin
db7824efbd
chore(crypto-nodejs): Update Conventional Commits types.
2022-07-21 15:49:26 +02:00
Ivan Enderlin
ee4702d04a
feat(bindings/crypto-js) Update package name, and use package scope.
2022-07-21 15:47:55 +02:00
Ivan Enderlin
d68b6ea64d
doc: Fix formatting.
2022-07-21 15:47:00 +02:00
Ivan Enderlin
49bc950fdd
doc: Add missing scope for matrix-sdk-crypto.
2022-07-21 15:46:21 +02:00
Ivan Enderlin
7001113877
doc: Propose conventional commits scopes & types
...
doc: Propose conventional commits scopes & types
2022-07-21 15:44:43 +02:00
Ivan Enderlin
c0d3099e2e
doc: Propose conventional commits types.
2022-07-21 15:43:31 +02:00
Ivan Enderlin
49e5d73d83
doc: Propose conventional commits scopes.
2022-07-21 13:59:31 +02:00
Benjamin Kampmann
2ffaaeeae2
docs(sled): fixing examples and utils
2022-07-21 13:18:15 +02:00
Benjamin Kampmann
60eef8967f
fix(sled-store): apply review requests
2022-07-21 11:52:04 +02:00
Benjamin Kampmann
ed893ed5b0
Merge remote-tracking branch 'origin/main' into gnunicorn/issue756
2022-07-21 11:38:10 +02:00
Jonas Platte
4e2bd14a27
chore: Silence buggy clippy lint
2022-07-21 11:30:13 +02:00
Jonas Platte
0b3b757120
refactor: Make Store type internal to base crate
2022-07-21 11:30:13 +02:00
Jonas Platte
63d01dd20e
refactor(base): Stop using Store type in store integration tests
2022-07-21 11:30:13 +02:00
Jonas Platte
a43005dec2
refactor(base): Add RoomInfo::new constructor
2022-07-21 11:30:13 +02:00
Jonas Platte
4187aa400f
refactor: Remove Store type usage from sled-state-inspector
...
Requires using more explicit syntax for some calls because SledStore has
methods of the same names with different (harder to use) signatures.
2022-07-21 11:30:13 +02:00
Jonas Platte
cf8f3bf7cc
refactor(sdk)!: Update MessageOptions API once again
...
… to match the latest changes in Ruma.
2022-07-21 11:18:09 +02:00
Jonas Platte
5b66bed1f0
chore: Remove unused imports from example
2022-07-21 11:18:09 +02:00
Benjamin Kampmann
1668c173e6
Merge pull request #836 from matrix-org/ben-release-crypto-nodes-beta0
...
Release crypto-nodejs beta1
2022-07-21 10:59:46 +02:00
Jonas Platte
76fd9bd963
fix(sdk): Call to-device handlers
2022-07-21 10:30:13 +02:00
Benjamin Kampmann
6f18e35b72
Merge remote-tracking branch 'origin/main' into ben-release-crypto-nodes-beta0
2022-07-21 10:25:26 +02:00
Johannes Becker
5f7e91c2e7
refactor(appservice)!: Cleanup
2022-07-21 09:01:53 +02:00
Jonas Platte
45829efa7e
feat(bindings): Tracing configuration through FFI
2022-07-20 16:38:51 +02:00
Kévin Commaille
a6bd7fc82f
chore: Update Ruma
2022-07-20 12:18:06 +00:00
Stefan Ceriu
5c53a5f699
chore(bindings/apple): Remove unnecessary +nightly flag from debug builds
2022-07-20 14:53:00 +03:00
Stefan Ceriu
021bf55074
feat(bindings/sdk-ffi): Expose full tracing configuration string through ffi.
2022-07-20 13:39:15 +03:00
Stefan Ceriu
0043de4028
Update bindings/matrix-sdk-ffi/Cargo.toml
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-07-20 13:28:58 +03:00
Stefan Ceriu
f9bb86c52f
feat(bindings/sdk-ffi): Allow ffi users to configure tracing and log levels
2022-07-20 12:56:42 +03:00
Stefan Ceriu
1cd18f49aa
chore(bindings/apple): Remove now unnecessary debug script module import following module map rename
2022-07-20 12:29:36 +03:00
Benjamin Kampmann
8b160dfd38
Merge pull request #857 from matrix-org/doug/homeserver-details
...
Add a `HomeserverLoginDetails` to the FFI's auth service.
2022-07-20 10:27:09 +02:00
Doug
77f7dbbbc8
Support server URLs. Join homeserver details futures.
2022-07-19 16:16:03 +01:00
Ivan Enderlin
fe590735c1
fix(bindings/crypto-nodejs): Fix CI typo
...
fix(bindings/crypto-nodejs): Rrrrr
2022-07-19 16:43:40 +02:00
Ivan Enderlin
0360b13cdb
fix(bindings/crypto-nodejs): Rrrrr
2022-07-19 16:12:43 +02:00
Jonas Platte
f30419446f
refactor(sdk)!: Make from in MessageOptions optional
2022-07-19 15:25:16 +02:00
Doug
93d879f356
Add homeserver_details property.
2022-07-19 12:48:00 +01:00
Benjamin Kampmann
c20c23bc19
Merge pull request #856 from matrix-org/fixing-clippy-lint
...
style(crypto): use matches for legibility
2022-07-19 12:54:44 +02:00
Johannes Becker
a174d0f669
sdk: Make from in MessageOptions optional
2022-07-19 12:46:48 +02:00
Doug
a10a26a68d
Tidy up authentication service.
...
Add HomeserverLoginDetails
2022-07-19 11:36:34 +01:00
Benjamin Kampmann
1940ebefcb
style(crypto): use matches for legibility
2022-07-19 12:22:53 +02:00
Benjamin Kampmann
b91217f53b
Merge remote-tracking branch 'origin/main' into gnunicorn/issue833
2022-07-19 12:19:20 +02:00
Benjamin Kampmann
3d3db96734
style(integration-tests): minor rust fmt fixes
2022-07-19 12:11:13 +02:00
Benjamin Kampmann
b24f7b7ad7
ci(integration-tests): switch to non-docker github action
2022-07-19 12:05:49 +02:00
Benjamin Kampmann
9502d32941
Merge remote-tracking branch 'origin/main' into gnunicorn/issue833
2022-07-19 12:03:47 +02:00
Benjamin Kampmann
9318c2f1e8
ci(crypto-nodejs): switch to main branch
2022-07-19 11:36:30 +02:00
Benjamin Kampmann
2d03cb5c79
Merge pull request #852 from zecakeh/test-bulk-member
...
test(sdk): Split tests for permalinks
2022-07-19 11:34:48 +02:00
Johannes Becker
aa8206d6c8
chore: Bump ruma
2022-07-18 19:32:16 +02:00
Johannes Becker
f937d82336
chore: Bump ruma
2022-07-18 16:46:34 +00:00
Benjamin Kampmann
3f71818704
ci(test): switch from docker to compose
2022-07-18 18:10:41 +02:00
Benjamin Kampmann
025db83af3
ci(test): cancel previous calls and fix the docker logs cmd
2022-07-18 18:06:54 +02:00
Benjamin Kampmann
8520976417
style(test): fix styles of integration tests
2022-07-18 17:55:31 +02:00
Benjamin Kampmann
06cab75df3
ci(sdk): Add integration tests to CI
2022-07-18 17:39:51 +02:00
Benjamin Kampmann
47a8c62f44
fix(sdk): fetch invitiation details without sync
2022-07-18 17:39:29 +02:00
Benjamin Kampmann
e2f1f01cb2
test(sdk): creating integration tests for invitations
2022-07-18 17:33:09 +02:00
Ivan Enderlin
fdef2dd86d
feat(bindings/crypto-js): Redirect panics and logs into JavaScript console
...
feat(bindings/crypto-js): Redirect panics and logs into JavaScript console
2022-07-18 14:59:50 +02:00
Ivan Enderlin
c72ec36b3a
chore(style) Make cargo fmt happy.
2022-07-18 14:39:39 +02:00
Benjamin Kampmann
e3febd6f1f
refactore(test): move testing out of regular build environment
2022-07-18 14:37:51 +02:00
Kévin Commaille
b98e3d80a0
test(sdk): Split tests for permalinks
2022-07-18 13:39:37 +02:00
Kévin Commaille
c0a7b17324
test: Add method to create room member events in bulk
2022-07-18 13:39:37 +02:00
Kévin Commaille
66c5d5311e
test: Add methods to add events in bulk
2022-07-18 13:39:36 +02:00
Stefan Ceriu
f215c92d0b
fix(bindings/apple): Remove briding header as no longer needed after corectly naming the module map
2022-07-18 13:09:39 +02:00
Stefan Ceriu
d571ca718d
fix(bindings/apple): Allow any platform OS simulator to run the Apple specific unit tests.
2022-07-18 13:09:39 +02:00
Kévin Commaille
37eb058dac
test: Reorganize JSON responses and events
2022-07-18 10:46:45 +02:00
Kévin Commaille
45ecd89387
test: Build sync response per room and event type
...
Allow to have more customizable and complete responses
2022-07-18 10:46:45 +02:00
Kévin Commaille
5d916e4a67
test: Expose default room ID used in sync JSON responses
2022-07-18 10:46:45 +02:00
Ivan Enderlin
daa0fc0206
doc(bindings/crypto-js): Fix typos.
2022-07-18 10:05:05 +02:00
Ivan Enderlin
3d1c96fbec
feat(bindings/crypto-js): Redirect errors to console.error.
2022-07-18 09:51:44 +02:00
Ivan Enderlin
decd3fcb43
feat(bindings/crypto-js) Simplify code for feature = "tracing".
...
This patch creates one `inner` module for when `feature = "tracing"`,
and one for when `no(feature = "tracing")`. Then, let's expose
everything from `inner::*`.
This patch also replaces `Tracing.install` by `new Tracing`. In case
of `not(feature = "tracing")`, `new Tracing` raises an error.
The goal is to remove all the `#[cfg(…)]` annotations everywhere. Now
there is only 2 of them.
2022-07-18 09:44:42 +02:00
Ivan Enderlin
c763ce3f41
feat(bindings/crypto-js): Tracing can be installed more than once.
2022-07-18 09:23:37 +02:00
Johannes Becker
09c56ea057
feat(appservice)!: Allow specifying device id for registration
2022-07-14 15:23:21 +02:00
github-actions
163ce94806
Tagging Crypto-Node.js for release
2022-07-14 10:40:57 +00:00
Benjamin Kampmann
ebfa235dab
chore(crypto-nodejs): Update changelog for beta.1
2022-07-14 12:31:04 +02:00
Benjamin Kampmann
0112396c99
ci(crypto-nodejs): trigger build for new tag
2022-07-14 12:31:04 +02:00
Benjamin Kampmann
8170d2c996
Merge remote-tracking branch 'origin/main' into ben-release-crypto-nodes-beta-1
2022-07-14 11:40:45 +02:00
Benjamin Kampmann
41de3e0af8
Merge pull request #844 from Hywan/fix-issue-842
...
fix(bindings/crypto-nodejs): Fix pre-built download link
2022-07-14 11:36:15 +02:00
Benjamin Kampmann
81bf300000
Merge pull request #839 from johannescpk/appservice/virtual-users
...
feat(appservice): Add method to get virtual user map
2022-07-14 11:31:02 +02:00
Benjamin Kampmann
594e8c04cd
Merge pull request #840 from matrix-org/jplatte/optional-dep-features
...
Remove implicit features for optional dependencies
2022-07-14 11:30:03 +02:00
Benjamin Kampmann
b6d94ab7c6
Merge pull request #845 from Hywan/fix-issue-843
...
fix(bindings/crypto-js): Use `cross-env` to pass envvar on Windows
2022-07-14 11:28:57 +02:00
Ivan Enderlin
283c5ff51e
fix(bindings/crypto-js): Let's not deal with Console.group.
...
Events and spans from `tracing` can happen asynchronously, and could
mess the `Console.group` structure.
2022-07-14 09:04:44 +02:00
Ivan Enderlin
bb631f2f79
feat(bindings/crypto-js): Add ability to turn Tracing on and off, and change logger min level.
...
The patch updates the code to use `tracing_subscriber::reload`, so
that we get a `Handle` that can be used to modify the tracing at
runtime.
This patch also adds a new `tracing` feature.
This patch finally adds a test suite for the `Tracing` API.
2022-07-14 09:04:13 +02:00
Ivan Enderlin
d39baf1295
test(bindings/crypto-js): Encrypt and decrypt a valid message.
2022-07-14 09:04:13 +02:00
Ivan Enderlin
f5016dbb97
feat(bindings/crypto-js): Define Layer.max_level_hint.
2022-07-14 09:04:13 +02:00
Ivan Enderlin
e7d0ee4379
!fixup
2022-07-14 09:04:13 +02:00
Ivan Enderlin
70561f9649
feat(bindings/crypto-js): Add the userLogger function to enable logging into Console.
2022-07-14 09:04:13 +02:00
Ivan Enderlin
8f8bd40e8d
feat(bindings/crypto-js): Redirect Rust panics to JavaScript console.
2022-07-14 09:04:13 +02:00
Ivan Enderlin
04d326eec1
doc(bindings/crypto-nodejs): Fix package name in the README.md
...
Fix package name in readme for nodejs bindings
2022-07-14 08:39:53 +02:00
Ivan Enderlin
3567d19359
fix(bindings/crypto-js): Use cross-env to pass envvar on Windows.
2022-07-14 08:26:57 +02:00
Ivan Enderlin
65b1dfef6f
fix(bindings/crypto-nodejs): Fix pre-built download link.
2022-07-14 08:14:45 +02:00
Travis Ralston
4f1718e587
Fix package name in readme for nodejs bindings
2022-07-13 13:45:07 -06:00
Jonas Platte
3c5f30d41e
refactor: Remove implicit features for optional dependencies
...
Consistently use `dep:` syntax for optional dependencies so they don't
implicitly act as features of their own.
2022-07-13 18:55:41 +02:00
Jonas Platte
529bdc8e0a
refactor: Remove unused optional dependencies
2022-07-13 18:23:52 +02:00
Johannes Becker
f55a86dd66
feat(appservice): Add method to get virtual user map
2022-07-13 17:16:12 +02:00
Benjamin Kampmann
f87764fabb
ci(ffi-apple): fixing ffi build for apple
...
Merge pull request #806 from matrix-org/stefan/ffi-workflow-optimization
2022-07-13 11:58:26 +02:00
Stefan Ceriu
65654de7eb
chore: sdk-ffi apple - try building the framework on x86_64 outside of Xcode
2022-07-13 11:19:07 +02:00
Stefan Ceriu
399bbc25e9
chore: sdk-ffi apple - run the CI build script from the Xcode project and only for the active architecture
2022-07-13 11:19:06 +02:00
Stefan Ceriu
c61dbb657e
chore: sdk-ffi apple - drop sample project deployment target to iOS 15 and macOS 12, disable catalyst.
2022-07-13 11:19:06 +02:00
Stefan Ceriu
a73b104c59
chore: sdk-ffi apple - rename modulemap to module.modulemap as per xcframework specifications
2022-07-13 11:19:06 +02:00
Stefan Ceriu
c10961f068
chore: sdk-ffi apple - remove mac catalyst target support
2022-07-13 11:19:06 +02:00
Benjamin Kampmann
15e22cba47
Merge pull request #837 from johannescpk/appservice/refactor-cleanup
...
refactor(appservice)!: Improve API and cleanup docs
2022-07-13 11:16:47 +02:00
Johannes Becker
ec00af0bca
refactor(appservice)!: Improve API and cleanup docs
2022-07-13 10:11:43 +02:00
Benjamin Kampmann
a4f1c404f6
ci(crypto-nodejs): set npm publish level to public
Release Crypto-Node.js / Upload prebuilt libraries (gcc-aarch64-linux-gnu g++-aarch64-linux-gnu, ubuntu-latest, aarch64-unknown-linux-gnu) (push) Failing after 45s
Release Crypto-Node.js / Upload prebuilt libraries (gcc-arm-linux-gnueabihf, ubuntu-latest, arm-unknown-linux-gnueabihf) (push) Failing after 41s
Release Crypto-Node.js / Upload prebuilt libraries (gcc-i686-linux-gnu g++-i686-linux-gnu, ubuntu-latest, i686-unknown-linux-gnu) (push) Failing after 30s
Release Crypto-Node.js / Upload prebuilt libraries (ubuntu-latest, x86_64-unknown-linux-gnu) (push) Failing after 42s
Release Crypto-Node.js / Upload prebuilt libraries (ubuntu-latest, x86_64-unknown-linux-musl) (push) Failing after 35s
Release Crypto-Node.js / Upload prebuilt libraries (macos-latest, aarch64-apple-darwin) (push) Has been cancelled
Release Crypto-Node.js / Upload prebuilt libraries (macos-latest, x86_64-apple-darwin) (push) Has been cancelled
Release Crypto-Node.js / Upload prebuilt libraries (windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
Release Crypto-Node.js / Upload prebuilt libraries (windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
Release Crypto-Node.js / Upload prebuilt libraries (windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
Release Crypto-Node.js / Package nodejs package (push) Has been cancelled
2022-07-12 19:28:59 +02:00
Benjamin Kampmann
402d061d42
ci(crypto-nodejs): fixing path to npm package for publishing
2022-07-12 18:02:59 +02:00
Benjamin Kampmann
2a1bc372fc
chore(crypto-nodejs): setting version
2022-07-12 17:35:46 +02:00
Benjamin Kampmann
bcab2a6d8c
ci(crypto-nodejs): setting base branch
2022-07-12 17:24:34 +02:00
Benjamin Kampmann
703b3a3561
ci(crypto-nodejs): Fixing typo in workflow
2022-07-12 17:18:54 +02:00
Benjamin Kampmann
36f62ce67f
ci(crypto-nodejs): Use regular npm version to set version
2022-07-12 17:14:15 +02:00
Benjamin Kampmann
9bc605a76d
ci(crypto-nodejs): FIxing name and directory for action
2022-07-12 17:11:20 +02:00
Benjamin Kampmann
13a6825af7
ci(crypto-nodejs): Fix workflow syntax error
2022-07-12 17:07:49 +02:00
Benjamin Kampmann
c5796991e8
chore(crypto-nodejs): Adding changelog
2022-07-12 17:05:40 +02:00
Benjamin Kampmann
9a45325683
ci(crypto-nodejs): use org-wide secrets ( #835 )
2022-07-12 17:00:44 +02:00
Ivan Enderlin
0bde5ccf38
feat(bindings/crypto-nodejs): Add #[napi(strict)] to force type checking from JavaScript ( #829 )
...
* feat(bindings/crypto-nodejs): Add `#[napi(strict)]` to force type checking from JavaScript.
* chore(bindings/crypto-nodejs): Use our own fork of `napi-rs` for the moment.
2022-07-12 16:24:24 +02:00
Benjamin Kampmann
94b635c074
build(crypto-nodejs): Crypto Node.js release infrastructure ( #763 )
...
* feat(crypto-nodejs): Download lib binary in postinstall
* build(crypto-nodejs): Workflow to prebuild napi bindings
* ci(crypto-nodejs): Disable broken target, install without download
* ci(apple-ffi): Don't run for drafts
* ci(coverage): Don't run for draft PRs
* fix(crypto-nodejs): bind to current version for download
* fix(crypto-nodejs): Ignore libs and package
* ci(crypto-nodejs): Build and upload NPM package
* fix(crypto-nodejs): Set proper target list
* ci(crypto-nodejs): Remove FreeBSD from build pipeline
* ci(crypto-nodejs): Linkers for linux cross compile
* ci(crypto-nodejs): Add arm64 build for windows
* ci(crypto-nodejs): Proper linkers for arm and musl
* ci(crypto-nodejs): Correct apt command for musl
* fix(crypto-nodejs): Drop arm64 linux musl support
* ci(crypto-nodejs): Manual Workflow trigger process
* chore(crypto-nodejs): Get Github to pickup our action
* ci(crypto-nodejs): Add i686 Linux built
* ci(crypto-nodejs): Configure cliff for nodejs changelogs
* ci(crypto-nodejs): Proper gcc for i868 targets
* docs(crypto-nodejs): Add supported targets for npm install
* ci(crypto-nodejs): Limit building of binaries to tags
* style: consol.log -> console.info; Improve docs
Co-authored-by: Ivan Enderlin <ivan@mnt.io >
* activate for testing
* fix broken merge
* 0.1.0
* fix(js): put in the proper package name
* activate for PR for testing
* fix(nodejs): getting ready for publishing
* ci(crypto-nodejs): Adding docs and fixing naming for workflows
* typo: missed one
* fixing package name
Co-authored-by: Ivan Enderlin <ivan@mnt.io >
2022-07-12 16:05:57 +02:00
Benjamin Kampmann
f69123b0d8
style(indexeddb): rust fmt
2022-07-12 13:11:50 +02:00
Benjamin Kampmann
15be2dc45e
Merge pull request #832 from johannescpk/sdk/identity-assertion-session
...
fix(sdk): Can't assert identity without session
2022-07-12 12:25:46 +02:00
Johannes Becker
420ca26bf5
fix(sdk): Can't assert identity without session
2022-07-12 10:44:56 +02:00
Benjamin Kampmann
c1f0c73728
fix(indexeddb): New migration didn't create schema for new db
2022-07-11 16:18:29 +02:00
Benjamin Kampmann
54ed1af223
Merge remote-tracking branch 'origin/main' into gnunicorn/issue756
2022-07-11 15:17:03 +02:00
Benjamin Kampmann
6a57461f74
feat(indexeddb)!: Implement StateStoreBuilder pattern to configure migration preferences
2022-07-11 14:28:09 +02:00
Kévin Commaille
2d0653894c
refactor(test): Rename LOGOUT to EMPTY
...
This name is more accurate for its uses.
2022-07-09 17:59:45 +02:00
Damir Jelić
47cfac7f4c
test: Optimize sha2 even in debug builds
...
This makes the tests finish on my machine twice as fast. This works
mainly because some tests utilize pbkdf2 to derive a key from a
passphrase.
2022-07-08 18:47:36 +02:00
Kévin Commaille
9539cbcfb9
test(appservice): Replace mockito with wiremock
2022-07-08 16:33:29 +02:00
Kévin Commaille
9778518347
test(sdk): Replace mockito with wiremock
2022-07-08 16:33:29 +02:00
Ivan Enderlin
dc2276cd8a
feat(bindings/crypto-nodejs): Implement an Attachment API.
...
feat(bindings/crypto-nodejs): Implement an `Attachment` API.
2022-07-08 16:26:19 +02:00
Damir Jelić
f1c880ff5f
feat(bindings/ffi): Add an authentication service
...
This adds a basic authentication service to the bindings that abstracts away the Client until a login has been completed successfully.
2022-07-08 12:24:15 +02:00
Damir Jelić
93e5728d65
test(sdk): Move the integration tests
...
This moves the bulk of the Client tests into integration tests.
2022-07-08 12:08:27 +02:00
Damir Jelić
a7af96d081
feat(crypto): Customized event types
...
This patch adds customized event types, currently only for the
m.room_key and m.secret.send to-device events.
This allows us to:
a) Deserialize the session_key field into a vodozemac type
b) Control when we zeroize secrets better
2022-07-07 19:20:42 +02:00
Benjamin Kampmann
d7b974ac04
build(xtask): indexeddb alias for ci wasm-commands
2022-07-07 18:35:54 +02:00
Benjamin Kampmann
aae9b5c6d8
refactor(test)!: More debugging info on errors in async_test macro
2022-07-07 18:35:16 +02:00
Doug
0dee880cd0
Address PR comments.
2022-07-07 17:15:12 +01:00
Ivan Enderlin
f0190b4601
feat(bindings/crypto-nodejs): Transform timeout into milliseconds
...
feat(bindings/crypto-nodejs): Transform `timeout` into milliseconds
2022-07-07 14:54:18 +02:00
Ivan Enderlin
6d83f01e73
fix(sdk): THe MediaEncryptionInfo.web_key has been renamed.
2022-07-07 13:59:36 +02:00
Ivan Enderlin
2eb5fc77f5
feat(bindings/crypto-nodejs): Remove Clone impl for MediaEncryptionInfo.
...
We don't want to clone a struct that contains a secret.
However, on the Node.js side, we can only receive arguments by
references. The problem we have is that we cannot transfer the
ownership of `MediaEncryptionInfo` to `AttachmentDecryptor` because we
don't own it. To simulate this behavior, we use `Option.take`.
A new method then appears:
`EncryptedAttachment.hasMediaEncryptionInfoBeenConsumed` to know if
the media encryption info has been consumed by `Attachment.decrypt`
already or not. That way, we can decrypt only once. It is possible to
do a JSON-encoded backup of the media encryption info by calling
`EncryptedAttachment.mediaEncryptionInfo` though.
2022-07-07 13:53:46 +02:00
Kévin Commaille
5ab8bd0885
Fix missing import
2022-07-07 13:24:54 +02:00
Kévin Commaille
ee69863912
Move event permalink test
2022-07-07 13:19:31 +02:00
Kévin Commaille
e87d599f84
Merge remote-tracking branch 'upstream/main' into integration-tests
2022-07-07 13:16:09 +02:00
Ivan Enderlin
0b011d9097
doc(bindings/crypto-nodejs): Add link to the specification.
2022-07-07 13:15:14 +02:00
Ivan Enderlin
0f5851cc01
chore(crypto): Rename MediaEncryptionInfo.web_key to .key.
2022-07-07 13:14:05 +02:00
Kévin Commaille
d6a2f15c68
Simplify use of via
...
Due to a ruma upgrade
2022-07-07 12:30:15 +02:00
Kévin Commaille
36a47c28ed
Add note that the event should be part of the room
2022-07-07 12:30:15 +02:00
Kévin Commaille
900016b249
feat(sdk): Get a permalink for an event
2022-07-07 12:30:15 +02:00
Kévin Commaille
de60a24602
Remove __test feature
2022-07-07 11:26:49 +02:00
Ivan Enderlin
29c10b8424
feat(bindings/crypto-nodejs): Convert timeout from u128 to u64.
...
First, u128 has a bug in `serde`,
cf. https://github.com/serde-rs/json/issues/625 .
Second, we don't need to represent the timeout as a u128, it's clearly
too large. This patch tries to convert it to u64. It should never
fail, but we propagate the error anyway.
2022-07-07 11:12:12 +02:00
Johannes Becker
4b856ce9d6
fix(sdk): Use the local config variable to decide identity assertion
2022-07-07 10:16:23 +02:00
Ivan Enderlin
c043daede0
test(crypto): Fix a test.
2022-07-07 10:15:24 +02:00
Ivan Enderlin
9f6988f766
Merge branch 'main' into fix-issue-796
2022-07-07 10:11:43 +02:00
Ivan Enderlin
ed0709373d
fix(crypto): Rename web_key to key for MediaEncryptionInfo.
...
Based on the [Section 11.11.1.6.1 Extensions to `m.room.message`
msgtypes](https://spec.matrix.org/v1.2/client-server-api/#extensions-to-mroommessage-msgtypes ),
the parameter for the JSON Web Key is named `key`, not `web_key`. This
patch fixes that by renaming the field when serializing and
deserializing.
2022-07-07 10:04:34 +02:00
Ivan Enderlin
acf9b15571
feat(bindings/crypto-nodejs): Use latest napi-rs version to avoid cloning Uint8Array.
...
The new `napi-rs` release includes a patch that avoids cloning and
copying data inside a `Uint8Array`
(https://github.com/napi-rs/napi-rs/pull/1224 ), it now returns a
“Node.js reference” of it.
This new `napi-rs` release also includes one of our patch,
https://github.com/napi-rs/napi-rs/pull/1200 , which means we no longer
need to depend on our fork.
2022-07-07 09:49:34 +02:00
Charles Wright
ba39185679
Fix build errors
2022-07-06 18:08:02 +02:00
Benjamin Kampmann
dc40309cbe
feat(sled): Introduce SledStoreBuilder, allow migration conflict strategy configuration
2022-07-06 17:51:51 +02:00
Doug
da277c4978
Create a new client on login.
...
More clippy errors.
2022-07-06 12:43:02 +01:00
Doug
9925d73e7b
Fix typos and clippy errors.
2022-07-06 11:52:33 +01:00
Benjamin Kampmann
d465b70bea
refactor(indexeddb)!: Rename SerializationError to IndexedDBStoreError
2022-07-06 12:18:58 +02:00
Doug
fec879f0f3
Simplify AuthenticationError for now.
2022-07-06 10:29:13 +01:00
Doug
91427b82a5
Use an Optional client instead of failable init.
2022-07-05 18:14:25 +01:00
Ivan Enderlin
d7739369ae
chore(bindings/crypto-nodejs): Remove useless napi::Result.
2022-07-05 17:45:09 +02:00
Ivan Enderlin
4fd24eebea
feat(bindings/crypto-nodejs): Implement an Attachment API.
...
This patch provides a new API to encrypt and decrypt attachment,
i.e. big buffer of type `Uint8Array`.
It's based on `matrix_sdk_crypto::AttachmentEncryptor` and `AttachmentDecryptor`.
2022-07-05 17:31:52 +02:00
Benjamin Kampmann
73daec3757
Merge pull request #810 from gnunicorn/expose-invite-details
...
feat(sdk): Expose details of invite for invited room
2022-07-05 14:56:05 +02:00
Benjamin Kampmann
d9f3b257b4
Apply suggestions from code review
...
Co-authored-by: Ivan Enderlin <ivan@mnt.io >
2022-07-05 14:38:53 +02:00
Damir Jelić
771c33d710
chore(crypto): Bump vodozemac
...
Vodozemac used to accept and return strings when encrypting and
decrypting. This is quite unusual for a pure cryptographic library so we
switched towards the usual setup where we encrypt/decrypt raw bytes.
Since we do encrypt/decrypt JSON strings in Matrix land, we do the
string conversions over here.
2022-07-05 13:23:50 +02:00
Doug
56adf6a89b
Add a client_container with locks.
2022-07-05 11:43:10 +01:00
Ivan Enderlin
e5a7a975a3
feat(bindings/crypto-nodejs): Transform timeout into milliseconds.
2022-07-05 12:05:53 +02:00
Ivan Enderlin
f3e69a2352
fix(bindings/cryto-nodejs): Fix memory corruption in async functions
...
fix(bindings/cryto-nodejs): Fix memory corruption in async functions
2022-07-05 10:25:16 +02:00
Ivan Enderlin
607d7ebc22
fix(bindings/cryto-nodejs): Fix memory corruption in async functions.
...
In async functions, the Node.js GC may or may not (that's a random
behavior) collect the arguments passed to the function as soon as it
returns. The function may not be executed yet, since it's async. Thus,
it leads to memory corruption: The function tries to read later on the
value inside an argument and… it crashes at best.
To avoid this bug, there is no other choice than cloning the values
before the function returns, in its “sync path” (so before any
transformation of an `.await` point into an “async block”).
The performance impact is not “massive”, I'm not sure it could be
noticeable easily since it is most of the time related to identifiers
(e.g. `UserId`), which are cheap to clone. I have to find the balance
here, and cloning offers the best trade off from my point of view.
2022-07-05 09:07:20 +02:00
Doug
0178b71437
Add basic AuthenticationService to the FFI.
2022-07-04 16:55:50 +01:00
Kévin Commaille
dd6a902240
test(sdk): Move integration tests
2022-07-04 16:22:20 +02:00
Kévin Commaille
4eb1337dc8
ci: Remove whitespaces in config file
2022-07-04 16:22:19 +02:00
Benjamin Kampmann
81f02f0d0b
Merge pull request #804 from gnunicorn/ben-hunting-the-nodjs-segfault
...
Hunting the nodejs segfault bug, long-term
2022-07-04 15:25:09 +02:00
Ivan Enderlin
76fe6d54ac
feat(bindings/crypto-*): Add fallback_keys field to KeysUploadRequest
...
feat(bindings/crypto-*): Add `fallback_keys` field to `KeysUploadRequest`
2022-07-04 15:02:38 +02:00
Ivan Enderlin
eb358889e9
Merge branch 'main' into fix-issue-800
2022-07-04 14:31:28 +02:00
Ivan Enderlin
c82631c414
feat(bindings/crypto-js): Implement OlmMachine.sign
...
feat(bindings/crypto-js): Implement `OlmMachine.sign`
2022-07-04 14:16:27 +02:00
Ivan Enderlin
fb4a940a26
chore: Make Clippy happy…
2022-07-04 13:50:28 +02:00
Ivan Enderlin
05561a8777
chore(crypto): Make Clippy happy.
2022-07-04 13:06:14 +02:00
Ivan Enderlin
909ada43d7
chore(base): Make Clippy happy.
...
So, Clippy suggests to change `(&member).into()` to `member.into()`
but it's the same, and `From<T>` is not implemented for this `T`, only
`From<&T>` is present. Thus, to deceive Clippy, I'm using
`std::borrow::Borrow` here. Not super happy with that though…
2022-07-04 12:00:42 +02:00
Ivan Enderlin
6176b3b658
feat(bindings/crypto-ffi): Add fallback_keys field to KeysUpload.
2022-07-04 11:49:45 +02:00
Ivan Enderlin
566227576e
feat(bindings/crypto-js): Add fallback_keys field to KeysUploadRequest.
2022-07-04 11:47:27 +02:00
Ivan Enderlin
d6c0ef1497
feat(bindings/crypto-nodejs): Add fallback_keys field to KeysUploadRequest.
2022-07-04 11:47:15 +02:00
Ivan Enderlin
f72a14890d
chore(crypto) Make Clippy happy.
2022-07-04 11:42:50 +02:00
Ivan Enderlin
62378b4abc
Merge branch 'main' into fix-issue-797
2022-07-04 11:24:33 +02:00
Ivan Enderlin
f96069f591
chore(store-encryption): Call DerefMut manually.
...
Clippy on nigtly is raising a warning, which is turned into an error
on the CI. It's the [`explicit_auto_deref`
lint](https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref ). I
suspect it's a false-positive but I'm not sure. Anyway, to workaround
this and unblock our CI, let's call `DerefMut::deref_mut` manually:
it's clearer anyway.
2022-07-04 11:00:23 +02:00
Ivan Enderlin
59615d4ae3
chore(bindings/crypto-nodejs): Clean up based on feedback.
2022-07-04 10:17:11 +02:00
Benjamin Kampmann
fd38c757e4
feat(sdk): Expose details of invite for invited room
2022-07-01 19:44:27 +02:00
Jonas Platte
861d899541
refactor(base): Remove an unnecessary allocation
2022-07-01 16:16:29 +02:00
Jonas Platte
fd08c9e7da
refactor(base): Remove check for own user in notification handling
...
This is now done in Ruma.
Reverts commit bc78095611 .
2022-07-01 16:16:29 +02:00
Jonas Platte
cffb565a5f
chore: Allow some usage of deprecated fields
...
… to allow CI to succeed. They should be removed soon.
2022-07-01 16:16:29 +02:00
Jonas Platte
f20d1c3d76
chore: Upgrade ruma
2022-07-01 16:16:29 +02:00
Jonas Platte
e4f6c0cc58
chore(sdk): Remove feature ruma/appservice-api-helper
...
No longer used as of https://github.com/matrix-org/matrix-rust-sdk/pull/710
2022-07-01 16:16:29 +02:00
Jonas Platte
d3ae99eb22
chore: Silence new clippy lint
2022-07-01 12:39:46 +02:00
Jonas Platte
bc47caa356
chore: Remove unnecessary map_err's
2022-07-01 11:55:28 +02:00
Ivan Enderlin
afa96f1bf4
test(bindings/crypto-nodejs): Add more signing test cases.
2022-06-30 16:58:39 +02:00
Ivan Enderlin
c99f42347c
chore(bindings/crypto-nodejs): Simplify code by removing matches!.
2022-06-30 16:52:08 +02:00
Ivan Enderlin
51cb35502d
doc(bindings/crypto-nodejs): Add missing documentation.
2022-06-30 16:50:33 +02:00
Ivan Enderlin
b59077e83d
chore(bindings/crypto-nodejs): Replacing into_iter by iter on &BTreeMap.
...
Calling `into_iter` on `&BTreeMap` will not consume it. It has the
same effect as calling `iter`. So let's do it.
2022-06-30 16:48:44 +02:00
Ivan Enderlin
3f197734d9
feat(bindings/crypto-nodejs) Implement OlmMachine.sign.
...
This patch first implements the new `Signatures`, `Signature` and `MaybeSignature` types.
Then, it moves some Vodozemac types into their own module, and
implements the new `Ed25519Signature` type.
Finally, it implements `OlmMachine.sign`.
2022-06-30 16:44:07 +02:00
Benjamin Kampmann
1961403512
ci(crypto-nodejs): Only build non-release version on failure, improve CI build time
2022-06-30 12:53:51 +02:00
Benjamin Kampmann
f1ebbfd245
ci(crypto-nodejs): Create non-release build of version and upload everything as artifacts upon failure
2022-06-30 12:24:21 +02:00
Ivan Enderlin
0458ed9be1
feat(bindings/crypto-js): Implement DeviceKeyId, DeviceKeyAlgorithm and DeviceKeyAlgorithmName.
2022-06-30 08:51:36 +02:00
Ivan Enderlin
12c7b76fea
feat(bindings/crypto-js): Implement `OlmMachine.crossSigningStatus.
2022-06-30 08:33:28 +02:00
Marcel
a8601e186a
fix(appservice): Don't process the same transaction twice
2022-06-29 16:17:25 +00:00
Stefan Ceriu
8a2d13feea
feat(bindings): Session verification through FFI
2022-06-29 13:59:52 +02:00
Benjamin Kampmann
e2ca56114e
Merge pull request #785 from zecakeh/room-permalink
...
feat(sdk): Add method to get a room permalink
2022-06-29 13:58:25 +02:00
Anderas
3c6d159a04
refactor: Use ClientBuilder pattern in SDK FFI
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-06-29 13:13:31 +02:00
Benjamin Kampmann
464bc43290
Merge pull request #793 from Hywan/test-crypto-nodejs-timeout
...
test(crypto-nodejs): Increase timeout
2022-06-29 12:58:11 +02:00
Kévin Commaille
297861e186
Fix docs styling
2022-06-29 12:20:57 +02:00
Kévin Commaille
8313029e33
Split into methods for both Matrix URI formats
2022-06-29 12:02:26 +02:00
Ivan Enderlin
913bdd683e
feat(crypto-js): Change the package name
...
feat(crypto-js): Change the package name
2022-06-28 19:28:58 +02:00
Ivan Enderlin
041b9bc405
feat(crypto-js): Change the package name.
2022-06-28 17:05:21 +02:00
Ivan Enderlin
1526f76686
test(crypto-nodejs): Increase timeout.
...
For some unknown reasons, sometimes, randomly, one test (initializing
an `OlmMachine` with a local store with a passphrase) can take more
than 5s, only on Github Actions. Let's increase the test timeout value
so that the entire test suite doesn't fail.
2022-06-28 16:47:46 +02:00
Kévin Commaille
f0e0194ff2
feat(sdk): Add method to get a room permalink
...
Include routing for room IDs
2022-06-26 13:38:01 +02:00
Kévin Commaille
ebc7177438
feat(base): Add method to get Room alt aliases
2022-06-26 12:01:51 +02:00
Ivan Enderlin
091fab8a2a
chore(bindings): Move matrix-sdk-ffi and matrix-sdk-crypto-ffi into the bindings/ directory
...
chore(bindings): Move `matrix-sdk-ffi` and `matrix-sdk-crypto-ffi` into the `bindings/` directory
2022-06-23 15:54:32 +02:00
Ivan Enderlin
818d715395
chore: Implement feedback.
2022-06-23 15:53:19 +02:00
Ivan Enderlin
5a0089da52
doc(bindings): Mention bindings in the top README.md file.
2022-06-23 15:12:51 +02:00
Ivan Enderlin
68b6c19dd4
test: Ensure all crates members of the workspace are compiled & tested.
2022-06-23 14:10:31 +02:00
Ivan Enderlin
c29e2b9563
!fixup
2022-06-23 11:35:42 +02:00
Ivan Enderlin
ecc28efd53
chore(bindings): Move matrix-sdk-ffi and matrix-sdk-crypto-ffi into the bindings/ directory.
2022-06-23 11:31:59 +02:00
Jonas Platte
f3a61020e7
refactor(sdk): Rewrite sso login to be easier to read
2022-06-22 17:17:52 +02:00
Jonas Platte
a423e92246
chore: Consistently capitalize 'device ID'
2022-06-22 17:17:52 +02:00
Jonas Platte
b5d7f10c6b
feature: Introduce a login builder API
...
This improves the readability of login calls.
The old login API is kept, but deprecated.
2022-06-22 17:17:52 +02:00
Ivan Enderlin
931eabf55c
chore(bindings): Move crypto-nodejs and crypto-js into the bindings/ directory
...
chore(bindings): Move `crypto-nodejs` and `crypto-js` into the `bindings/` directory
2022-06-22 16:33:20 +02:00
Ivan Enderlin
8cd7fa9fb0
chore: Implement feedback.
2022-06-22 16:03:37 +02:00
Ivan Enderlin
1604f24136
chore(test): Fix YAML.
2022-06-22 16:03:37 +02:00
Ivan Enderlin
3da737b9e2
chore(test): Shorten job name for test-matrix-sdk-crypto-nodejs.
...
In the Github UI, we can only see:
🐧 [m]-crypto-nodejs, Node.js…
What interests us is the Node.js version number.
2022-06-22 16:03:37 +02:00
Ivan Enderlin
2ffcc1a415
chore: Use [m] as an alias for matrix-sdk.
2022-06-22 16:03:37 +02:00
Ivan Enderlin
829dab42c5
chore(test): Rename the test-matrix-sdk-crypto-js job.
2022-06-22 16:03:37 +02:00
Ivan Enderlin
54acd314cc
chore(test): Move the wasm workflow inside the ci workflow.
2022-06-22 16:03:37 +02:00
Ivan Enderlin
74953031ee
chore(test): Use os-name in step name for test-appservice.
2022-06-22 16:03:37 +02:00
Ivan Enderlin
0436eb9349
chore(ci): Rephrase a little bit the Github Actions steps.
2022-06-22 16:03:37 +02:00
Ivan Enderlin
a23bb8f5a0
chore(docs): Rephrase a little bit the Github Actions steps.
2022-06-22 11:57:41 +02:00
Ivan Enderlin
8db58986fb
chore(bindings): Move crypto-nodejs and crypto-js into the bindings/ directory.
...
`matrix-sdk-crypto-nodejs` and `matrix-sdk-crypto-js` are no longer
default members of the Cargo virtual workspace. The Github Actions
workflows for the bindings now live in a `bindings_ci.yml` files
(ideally, it should be in a subdirectory,
`.github/workflows/bindings/ci.yml` but it doesn't work).
2022-06-22 11:54:49 +02:00
Ivan Enderlin
6ad323bc4e
test: Run tests faster with nextest
...
test: Run tests faster with `nextest`
2022-06-22 09:56:02 +02:00
Ivan Enderlin
b0d51fdfa5
test: There is no doctest for matrix-sdk-crypto-ffi.
2022-06-22 09:26:51 +02:00
Ivan Enderlin
3bfc68d476
test: Add missing cargo-nextest installation.
...
This patch also changes the step's name from Clippy to Test.
2022-06-22 09:26:51 +02:00
Ivan Enderlin
eb33333925
test: Run doctests manually.
...
`cargo-nextest` doesn't support doctests for now, so we must run them
“manually” by running a separate `cargo test --doc` command.
2022-06-22 09:26:51 +02:00
Ivan Enderlin
d9475c131a
test(xtask): Remove xtask -- ci test as it is unused.
2022-06-22 09:26:48 +02:00
Ivan Enderlin
399862d955
test: Run tests faster with nextest.
...
> [`cargo-nextest`](https://nexte.st/index.html ) is a next-generation
> test runner for Rust projects.
This patch installs and uses `nextest` to run our own tests.
Comparing `cargo test` and `cargo nextest` with hyperfine provides the
following results:
```sh
$ hyperfine 'cargo test --workspace' 'cargo nextest run --workspace && cargo test --doc'
Benchmark 1: cargo test --workspace
Time (mean ± σ): 51.785 s ± 2.066 s [User: 183.471 s, System: 10.563 s]
Range (min … max): 49.151 s … 56.641 s 10 runs
Benchmark 2: cargo nextest run --workspace && cargo test --doc
Time (mean ± σ): 44.556 s ± 0.894 s [User: 192.213 s, System: 11.441 s]
Range (min … max): 43.170 s … 45.762 s 10 runs
```
Benchmark 2 is 1.16 times faster than Benchmark 1.
2022-06-22 09:26:07 +02:00
Ivan Enderlin
2c1f5fed8d
feat(crypto-js): Migrate tests and polish the API
...
feat(crypto-js): Migrate tests and polish the API
2022-06-21 12:04:45 +02:00
Ivan Enderlin
8b2237fa7a
Merge branch 'main' into feat-crypto-js-next
2022-06-21 11:38:48 +02:00
Ivan Enderlin
e5ea2a770b
chore(crypto-js): Implement feedback from PR.
2022-06-21 11:25:58 +02:00
Jonas Platte
5f31e9d131
chore: Add missing json language specification to docs
2022-06-20 22:33:35 +02:00
Jonas Platte
6cb9c11b88
chore: Remove unnecessary pub visibility from OnceCell imports
2022-06-20 22:33:35 +02:00
Jonas Platte
a00c130fc3
feature: Allow passing already-Arc'ed stores to StoreConfig methods
2022-06-20 18:00:33 +02:00
Jonas Platte
4971802e75
chore: Replace usage of Store with Arc<dyn StateStore>
2022-06-17 17:35:33 +02:00
Jonas Platte
8690addfd5
chore: Add Clone impl for ClientBuilder
2022-06-17 14:59:22 +02:00
Jonas Platte
00a20f325b
chore: Add Clone impl for StoreConfig
...
… by storing the stores inside Arc's instead of Box'es.
2022-06-17 14:59:22 +02:00
Jonas Platte
a4e4bfe833
refactor(sdk)!: Change store builder methods from Box<dyn Trait> to impl Trait
...
To migrate, don't box the store before passing it to `builder.state_store` or
`builder.crypto_store` (remove `Box::new`).
2022-06-17 14:59:22 +02:00
Jonas Platte
02aa537f2a
chore: Keep uniffi version in sync across deps, CI
2022-06-17 13:37:07 +02:00
Benjamin Kampmann
5316d2e6e7
fix(indexeddb): Upgrade version to latest state store pattern
2022-06-16 13:17:45 +02:00
Benjamin Kampmann
7adef1d24e
fix(sled): Upgrade db version to latest changes
2022-06-16 13:17:35 +02:00
Anderas
c755e19fb3
Merge pull request #765 from matrix-org/andy/crypto_ffi
...
Build Crypto iOS framework
2022-06-16 11:25:39 +01:00
Jonas Platte
8250c24525
chore: Undo pinning of clap
2022-06-15 20:47:55 +02:00
Andy Uhnak
fe29fa57eb
Build Crypto iOS framework
2022-06-15 13:52:21 +01:00
Ivan Enderlin
c564b1a5e1
feat(crypto-nodejs): Add store_path and store_passphrase to the OlmMachine constructor
...
feat(crypto-nodejs): Add `store_path` and `store_passphrase` to the `OlmMachine` constructor
2022-06-15 07:28:29 +02:00
Benjamin Kampmann
9d691e238a
Merge pull request #759 from Hywan/fix-codecov-labs
...
chore(test): Remove `labs` from the projects + exclude `matrix-sdk-indexeddb` from code coverage report
2022-06-14 20:29:07 +02:00
Ivan Enderlin
520e2f30f7
doc(crypto-js): Add missing module documentation.
2022-06-14 16:54:22 +02:00
Ivan Enderlin
c56ab5928c
test(crypto-js): Add a workflow to test matrix-sdk-crypto-js.
2022-06-14 16:34:08 +02:00
Ivan Enderlin
f8cd2310be
feat(crypto-js): Implement OlmMachine.decryptRoomEvent & siblings.
2022-06-14 16:16:54 +02:00
Ivan Enderlin
073fb45580
feat(crypto-nodejs): Define Node.js versions policy.
...
We now support only “current”, “active” or “maintenance” versions
according to https://nodejs.org/en/about/releases/ , which are
compatible with NAPI v6.
2022-06-14 16:05:01 +02:00
Ivan Enderlin
3833d35348
chore(crypto-nodejs): Drop Node.js v12.17.
...
There is a segfault with `napi-rs` and Node.js in v12.17. It's an old
version, it may be fair to drop its support for now. Let's see if
people would need it in the future, we may work on `napi-rs` to fix
this bug in case it's really necessary.
2022-06-14 16:05:01 +02:00
Ivan Enderlin
83b730d1c8
chore(crypto-nodejs): Make the code compatible with Node.js < 18.
2022-06-14 16:05:01 +02:00
Ivan Enderlin
6477cc5072
feat(crypto-nodejs): Add store_path and store_passphrase to the OlmMachine constructor.
...
This patch adds the `store_path` and the `store_passphrase` arguments
to the `OlmMachine` constructor to use a `CryptoStore` instead of
having an in-memory Olm machine.
2022-06-14 16:05:01 +02:00
Ivan Enderlin
2117b36a75
chore(test): Exclude matrix-sdk-indexeddb from code coverage report.
2022-06-14 16:04:41 +02:00
Ivan Enderlin
5e8ed3bcbf
chore(test): Remove labs from the projects.
...
It's already part of the `ignore` section.
2022-06-14 16:04:41 +02:00
Jonas Platte
87639a4c4c
fix(appservice): Remove erroneous ? operator
2022-06-14 15:20:24 +02:00
Amanda Graven
de04aba5b3
fix(appservice): Remove erroneous ? operator
2022-06-14 15:02:55 +02:00
Amanda Graven
5243091bec
test(appservice): Virtual client membership
...
Test that virtual clients get assigned the correct membership to rooms
when processing received transactions.
2022-06-14 14:39:54 +02:00
Amanda Graven
1d746f1ef1
fix(appservice): Virtual client non-membership
...
Don't assume virtual client membership is join if none is stored, since
that leads to a client being told it's joined in rooms it has no
membership of. The main appservice client still assumes it's joined
every room it receives transaction events about.
2022-06-14 14:39:54 +02:00
Ivan Enderlin
56d74e25b8
test(crypto-js): Finish to migrate the test suites + code clean up.
2022-06-14 14:09:52 +02:00
Ivan Enderlin
a758d98f84
feat(crypto-nodejs): Update license.
2022-06-14 12:12:27 +02:00
Ivan Enderlin
5adae6fd41
feat(crypto-js): Migrate tests and polish the API.
2022-06-14 12:12:27 +02:00
Damir Jelić
38d771cca6
ci(coverage): Set the correct out format for CI coverage reports
2022-06-14 12:01:03 +02:00
Jonas Platte
dd4c329f57
chore: Prevent clap upgrades beyond 3.2
2022-06-14 11:02:19 +02:00
Jonas Platte
e3edf0139a
Enable rustdoc-map nightly feature via .cargo/config.toml
...
… instead of using -Z on the command line.
2022-06-13 14:30:10 +02:00
Jonas Platte
d07001a581
chore: Work around a cargo bug
2022-06-13 14:30:10 +02:00
Ivan Enderlin
62b8169ac2
chore(test): Ajust code coverage configurations (tarpaulin and codecov)
...
chore(test): Code Coverage must ignore some `matrix-sdk-crypto-(js|nodejs)`
2022-06-13 14:24:22 +02:00
Ivan Enderlin
d35063412f
chore(test): Ignore matrix-sdk-test-macros and matrix-sdk-ffi.
2022-06-13 12:52:37 +02:00
Damir Jelić
1a162e5dd5
test(crypto): Test the double verification cancellation
2022-06-13 12:30:52 +02:00
Damir Jelić
b8069af8ba
fix(crypto): Cancel the verification flow if we multiple verifications
...
The spec claims that we should cancel verifications if multiple
verifications are attempted at once[1]:
When the same device attempts to initiate multiple verification
attempts, the recipient should cancel all attempts with that device.
So let's start doing this.
[1]: https://spec.matrix.org/v1.2/client-server-api/#error-and-exception-handling
2022-06-13 12:30:52 +02:00
Damir Jelić
fa3e192c37
docs(crypto): Improve the signature verification docs some more
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-06-13 12:12:09 +02:00
Damir Jelić
efc53569ed
refactor(crypto): Rename our is_signed_by methods
2022-06-13 12:12:09 +02:00
Damir Jelić
5c12132569
refactor(crypto): Introduce a SignedJsonObject trait
...
This should mostly remove the wild west of signature verification. We
define a trait that tells us which objects can contain signatures and
thus can be passed on to signature verification methods.
It also should be slightly more efficient, since we removed a bunch of
duplicate canonicalization steps.
2022-06-13 12:12:09 +02:00
Amanda Graven
251a38285c
perf(appservice): Cache namespace regexes
2022-06-13 11:57:50 +02:00
Ivan Enderlin
b500fa1daa
chore(test): Configure Tarpaulin to collect data from matrix-sdk-common.
2022-06-13 11:27:22 +02:00
Ivan Enderlin
4430dae421
chore(test): Configure Tarpaulin to ignore more crates.
2022-06-13 11:25:54 +02:00
Ivan Enderlin
eead09984c
chore(test): Ask codecov.io to ignore the crates/matrix-sdk-crypto-ffi directory.
2022-06-13 11:25:38 +02:00
Ivan Enderlin
dcfcac0bd3
chore(test): Ask codecov.io to ignore labs and xtask directories.
2022-06-13 11:24:10 +02:00
Jonas Platte
dc32fc282d
Remove sync_token from BaseClient
...
… as it is also accessible as self.store.sync_token in BaseClient methods.
2022-06-13 11:10:12 +02:00
Jonas Platte
b6eed09564
Make session field in Store private
...
… for cleaner encapsulation.
2022-06-13 11:10:12 +02:00
Jonas Platte
29ba171953
Simplify ownership of server_versions
...
We couldn't originally take references to it when it was behind RwLock,
with OnceCell this is no longer a problem.
2022-06-13 11:10:12 +02:00
Jonas Platte
9e9152745c
Remove homeserver_url from HttpClient
2022-06-13 11:10:12 +02:00
Jonas Platte
12d1607cdc
Remove session from HttpClient
2022-06-13 11:10:12 +02:00
Jonas Platte
6c8b520f14
Remove unused Clone impls on private types
2022-06-13 11:10:12 +02:00
Jonas Platte
fedcdb1e63
chore: Add some more tracing events
2022-06-13 11:10:12 +02:00
Jonas Platte
1cfd69a880
chore: Improve doc comment formatting
2022-06-13 11:10:12 +02:00
Ivan Enderlin
dad035d170
chore(test): Configure tarpaulin to use its config file.
2022-06-13 10:46:29 +02:00
Ivan Enderlin
3c14acf163
chore(test): Exclude matrix-sdk-crypto-(js|nodejs) from code coverage reports.
2022-06-13 10:38:07 +02:00
Ivan Enderlin
253affeb0c
feat(crypto-nodejs) Implement missing APIs
...
feat(crypto-nodejs) Implement missing APIs
2022-06-09 21:38:41 +02:00
Ivan Enderlin
fe4ddfde89
chore(crypto-nodejs): Remove clone calls when possible.
2022-06-09 21:15:25 +02:00
Ivan Enderlin
8a332ca9e1
chore(crypto-nodejs): Implement feedbacks / polish.
2022-06-09 18:02:29 +02:00
Ivan Enderlin
506f57a22c
feat(crypto-nodejs): Enable traace filtering and change the env var to MATRIX_LOG.
2022-06-09 14:06:42 +02:00
Damir Jelić
8b05f9276f
fix(sdk): Remove a duplicate Session cell from the HttpClient
2022-06-09 13:37:42 +02:00
Damir Jelić
e8b2655d52
docs(crypto-ffi): Explain what a timeout of 0 means when fetching identities
2022-06-09 11:58:23 +02:00
Damir Jelić
537ef1409b
test(crypto): Test that we're now notifying when we receive a /keys/query
2022-06-09 11:58:23 +02:00
Damir Jelić
e2bf3d0d18
chore(crypto-js): Silence some doc warnings
2022-06-09 11:58:23 +02:00
Damir Jelić
d188ef3386
feat(crypto): Add a way wait for a keys/query to be done when fetching identities.
2022-06-09 11:58:23 +02:00
Damir Jelić
ba7ccb40cc
feat(crypto): Wait for a key query to be done if we're claming one-time keys
2022-06-09 11:58:23 +02:00
Ivan Enderlin
1b2c644277
test(crypto-nodejs): Set up CI to run the test suites.
2022-06-09 11:34:16 +02:00
Benjamin Kampmann
6a853d0173
Merge pull request #744 from matrix-org/jplatte/readme
...
chore: Fix `main` docs link in readme
2022-06-09 10:51:58 +02:00
Jonas Platte
7487b24fe3
chore: Fix main docs link in readme
2022-06-09 10:21:04 +02:00
Amanda Graven
5c4f2b3430
fix(appservice): Make membership keys consistent
...
Correct the inconsistency between the keys used for reading and writing
the membership of a virtual user in the appservice's namespace
2022-06-08 10:42:35 +02:00
Stefan Ceriu
901b670a22
Use the nightly toolchain together with the newly introduced target-applies-to-host on the sdk-ffi crate debug builds to avoid cache corruption issues. Switched back to debug mode as the internal tokio crashes went away
2022-06-08 08:55:28 +02:00
Jonas Platte
28d6e2821b
chore: Replace new usage of Box<UserId>
2022-06-07 21:12:43 +02:00
Jonas Platte
7f0b74a39d
fixup! style: Remove usage of assign! macro from doctests
2022-06-07 21:07:34 +02:00
Jonas Platte
7b6869310f
style: Make assign! formatting consistent
2022-06-07 21:07:34 +02:00
Jonas Platte
445b2e627d
style: Remove usage of assign! macro from examples
2022-06-07 21:07:34 +02:00
Jonas Platte
0e206506d9
style: Remove usage of assign! macro from doctests
2022-06-07 21:07:34 +02:00
Jonas Platte
0fb1d72100
style: Use anyhow::Ok in more places
2022-06-07 21:07:34 +02:00
Ivan Enderlin
6d8c54deb5
chore(crypto-nodejs): Add missing newline.
2022-06-07 17:03:02 +02:00
Ivan Enderlin
07620452df
chore(crypto-node): Make Clippy happy.
2022-06-07 16:50:26 +02:00
Jonas Platte
099db20555
Use target-applies-to-host to avoid unnecessary cache invalidation
2022-06-07 16:43:17 +02:00
Ivan Enderlin
75571c2c30
fix(crypto-js): Fix missing symbol.
2022-06-07 16:42:34 +02:00
Ivan Enderlin
8c95b1c4cf
chore(crypto-nodejs): Fix a typo.
2022-06-07 16:40:54 +02:00
Ivan Enderlin
530c268e61
doc(crypto-nodejs): Include the README.md in the generated documentation.
2022-06-07 16:35:22 +02:00
Ivan Enderlin
99dcf84340
chore(crypto-nodejs): Use napi::Result when possible.
2022-06-07 16:28:55 +02:00
Ivan Enderlin
2a76d17bd9
doc(crypto-nodejs): Generate JavaScript/TypeScript documentation.
2022-06-07 16:26:23 +02:00
Ivan Enderlin
15af364c97
Merge branch 'main' into feat-crypto-nodejs-next
2022-06-07 15:31:03 +02:00
Ivan Enderlin
ec7724f393
doc(crypto-nodejs): Improve the README.md.
2022-06-07 15:27:35 +02:00
Ivan Enderlin
1e7d509920
chore(crypto-nodejs): Clean up.
2022-06-07 14:45:20 +02:00
Ivan Enderlin
520758bf1e
test(crypto-nodejs): Finish the OlmMachine test suite.
2022-06-07 14:42:24 +02:00
Benjamin Kampmann
7f49618d35
Merge pull request #729 from gnunicorn/gnunicorn/issue609
...
Ensure all data state stores save is encrypted
2022-06-07 12:41:38 +02:00
Benjamin Kampmann
a308771a7a
fix(sled): Deserialize encrypted TimelineMetadata properly
2022-06-07 12:22:54 +02:00
Benjamin Kampmann
2c4379909c
fix(sled): Wrap [u8] encoding in an explicit type to prevent accidential misuse
2022-06-07 12:22:54 +02:00
Damir Jelić
d4f49ca334
chore: Fix some new clippy warnings
2022-06-07 11:41:29 +02:00
Damir Jelić
c97bb83af9
refactor(base): Remove a bunch of OlmMachine wrapper methods
...
The whole machine is nowadays exposed through the base Client, so no
need to re-expose individual methods that don't add more functionality.
2022-06-07 11:41:29 +02:00
Ivan Enderlin
12c53bb2bc
test(crypto-nodejs): Add more test cases.
2022-06-07 11:05:19 +02:00
Damir Jelić
7fd973c563
refactor(crypto-ffi): Make use of the BackupRecoveryKey type instead of a string
2022-06-07 10:47:19 +02:00
Benjamin Kampmann
f8dae723c3
style: Fix review remarks
2022-06-07 10:20:55 +02:00
Benjamin Kampmann
8ccf78c025
fix(indexeddb): Ensure all values are encrypted (namely filters and timeline metadata) if asked to
2022-06-07 10:20:40 +02:00
Benjamin Kampmann
47bb73cf89
fix(sled): Ensure timeline metadata is also saved encrypted
2022-06-07 10:20:27 +02:00
Benjamin Kampmann
f3d952839e
style: Clean up rustfmt and clippy
2022-06-07 10:19:43 +02:00
Benjamin Kampmann
85ea9279dc
fix(indexeddb): Use random db in plain test for consistency
2022-06-07 10:19:27 +02:00
Benjamin Kampmann
be159356cd
fix(sled): Encrypt custom key and value
2022-06-07 10:19:23 +02:00
Benjamin Kampmann
571b5e61cf
fix(sled): Encrypt media content
2022-06-07 10:19:20 +02:00
Benjamin Kampmann
77af11bcbc
fix(sled): Encrypt saved sync_token
2022-06-07 10:19:20 +02:00
Benjamin Kampmann
335251695a
fix(sled): Encrypt saved filters
2022-06-07 10:19:17 +02:00
Benjamin Kampmann
bf17012d6b
test(base): Add integration store test for saving filters
2022-06-07 10:19:13 +02:00
Benjamin Kampmann
328ebdba9c
fix(sled): Encrypt saved user_ids
2022-06-07 10:19:08 +02:00
Benjamin Kampmann
c359b011fa
refactor(sled): Rename for consistency event -> value
2022-06-07 10:19:04 +02:00
Ivan Enderlin
07fed7f4df
test(crypto-nodejs): Continue to test OlmMachine and add tracing support.
2022-06-06 16:27:32 +02:00
Ivan Enderlin
0ed74d8c31
test(crypto-nodejs): Test OlmMachine.receiveSyncChanges, .outgoingRequests and .markRequestAsSent.
2022-06-06 12:09:37 +02:00
Ivan Enderlin
35d7cab330
feat(crypto-nodejs): Rename requests request_id to id + add type.
2022-06-06 12:08:58 +02:00
Ivan Enderlin
407e27d176
feat(crypto-nodejs): Make changed and left optional in DeviceLists constructor.
2022-06-06 10:27:32 +02:00
Damir Jelić
0f758a643c
refactor(crypto): Make the boolean parameter for the backup verification clearer
2022-06-03 16:29:17 +02:00
Damir Jelić
fd2ae1ed8f
docs(crypto): Improve some backup verfication docs
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-06-03 16:29:17 +02:00
Damir Jelić
2b13c0832f
refactor(crypto): Introduce a struct for the backup info
2022-06-03 16:29:17 +02:00
Damir Jelić
b3fbd15270
feat(crypto): Improve the API to verify backups
...
This API change allows us to inspect why a backup is considered to be
trusted instead of just returning a boolean telling us if it's trusted
or not.
2022-06-03 16:29:17 +02:00
Amanda Graven
4e3e393596
refactor(appservice): Better virtual client sync
...
Store the membership state of clients in the appservice's namespace, and
construct sync events based on that information
2022-06-03 15:03:31 +02:00
Jonas Platte
7f81e7c61b
chore: Optimize quote even in debug mode
2022-06-03 14:48:48 +02:00
Ivan Enderlin
a75ae16b79
test(crypto-nodejs): Add more test suites.
2022-06-02 15:58:30 +02:00
Ivan Enderlin
9ebc61ad0f
test(crypto-nodejs): Adding more test suites.
2022-06-02 15:24:22 +02:00
Ivan Enderlin
0d66480cd6
fix(crypto-nodejs): OlmMachine.new effectively raises an error.
...
Returning an `napi::Error` doesn't raise it. We must return a
`Result<_, napi::Error>` to ensure `napi` will raise the error as
expected.
2022-06-02 15:23:25 +02:00
Ivan Enderlin
02802e9088
feat(crypto-nodejs): EncryptionSettings.rotation_period and .…_period_messages are now BigInt.
2022-06-02 13:59:00 +02:00
Ivan Enderlin
1a6adc6d41
chore(crypto-nodejs): Ignore package-lock.json for now.
2022-06-02 11:10:55 +02:00
Ivan Enderlin
6d10d6150c
test(crypto-nodejs): Add some test suites.
2022-06-02 11:09:57 +02:00
Damir Jelić
fb1a2f6d94
feat(appservice): Add support for appservice login
...
An appservice can log in by providing a valid appservice token and a user within the appservice’s namespace.
This allows the appservice to acquire a scoped access token for a single user. matrix-appservice-sdk can now take a persisted device id for virtual users. If e2ee is enabled, it will automatically perform an appservice login to create the an E2EE backed session for the virtual user.
2022-06-02 10:36:33 +02:00
Damir Jelić
bdee4e0547
refactor(crypto): Use a result type for invalid signatures
2022-06-02 09:31:37 +02:00
Denis Kasak
42d5eec8b7
docs(crypto): Improve Signature doc comment.
2022-06-02 09:31:37 +02:00
Damir Jelić
e50c1465ea
docs(crypto): Improve some signature verification related docs
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-06-02 09:31:37 +02:00
Damir Jelić
5827cc9a39
refactor(crypto): Use ? instead of nesting closures when searching for a key
...
Co-authored-by: Jonas Platte <jplatte@element.io >
2022-06-02 09:31:36 +02:00
Damir Jelić
c95fd93666
fix(types): Allow Ed25519 signatures to be invalid
...
Since signatures can be uploaded by anyone, unlike one-time keys which
might only be uploaded by the given device for themselves, a Signatures
struct might fail to be deserialized because a signature was maliciously
attached to the object by someone else.
We don't want to fail to deserialize all the signatures just because
someone attached an invalid one. We still would like to have the
signature be deserialized into its proper type if possible so the Raw<T>
pattern was not used.
2022-06-02 09:31:36 +02:00
Damir Jelić
d96fcf7199
refactor(crypto): Return a Signatures struct in the sign method
2022-06-02 09:31:36 +02:00
Damir Jelić
e2348471db
fix(crypto): Make fetching of the first cross signing key more robust
2022-06-02 09:31:36 +02:00
Ivan Enderlin
8e120eb648
doc(crypto-nodejs): Write missing documentation.
2022-06-02 09:23:26 +02:00
Ivan Enderlin
c573985c64
chore(crypto-nodejs): Add a .gitignore for artifacts.
2022-06-02 09:19:17 +02:00
Ivan Enderlin
6a996c7657
doc(crypto-nodejs): Write missing documentation and clean up the code.
2022-06-02 09:18:26 +02:00
Ivan Enderlin
7bb96e0ece
chore(crypto-node): Use Either7 (new pending feature).
2022-06-01 22:38:52 +02:00
Ivan Enderlin
dc7f0389b1
chore(crypto-node): Document and add napi(getter) when necessary.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
5d4b3a0457
feat(crypto-nodejs): Implement OlmMachine.decrypt_room_event.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
888ffb0a56
chore(crypto-node): Use Either5 + Either3 instead of Either.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
475fffb64d
feat(crypto-nodejs): Implement OlmMachine.encrypt_room_event.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
a8b44f26ea
feat(crypto-nodejs): Implement OlmMachine.share_room_key.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
a7697fbd32
feat(crypto-nodejs): Implement OlmMachine.get_missing_sessions.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
02e63ab9c1
chore(crypto-js): Remove a useless import.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
8d909ccabe
feat(crypto-nodejs): Implement OlmMachine.mark_request_as_sent.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
2e22f6b6c0
feat(crypto-nodejs): Implement OlmMachine.outgoing_requests.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
7c85fdaf28
doc(crypto-js): Update documentation.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
1ecf90bb42
feat(crypto-nodejs): Implement OlmMachine.receive_sync_changes.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
e2ecba7d45
feat(crypto-nodejs): Implement OlmMachine.update_tracked_users.
2022-06-01 20:55:34 +02:00
Ivan Enderlin
8a0e0a7a4d
feat(crypto-nodejs): Start implementing OlmMachine API.
2022-06-01 20:55:34 +02:00
Charlotte 🦝 Delenk
c562d91533
feat(appservice): Use appservice logins for e2ee
...
This commit also adds a virtual user builder, which allows you to
control the device id, change the client builder, perform an appservice
login, and even restore a previously created session.
https://spec.matrix.org/v1.2/client-server-api/#appservice-login
2022-06-01 15:29:04 +01:00
Ivan Enderlin
3cf4150df2
feat: Rename OlmMachine.share_group_session to OlmMachine.share_room_key
...
feat: Rename `OlmMachine.share_group_session` to `OlmMachine.share_room_key`
2022-06-01 15:08:58 +02:00
Ivan Enderlin
b3d52ca68c
feat: Rename OlmMachine.share_group_session to OlmMachine.share_room_key.
...
As discussed with @poljar, the Matrix event we are creating is
`m.room.key`, so it's preferable to rename the function
`share_room_key`. Note: Olm calls the things an inbound group session,
that's where the name comes from, but it's not aligned with the
specification.
2022-06-01 14:32:11 +02:00
Ivan Enderlin
e673954b98
chore: Add missing new lines at the end of files
...
chore: Add missing new lines at the end of files
2022-05-31 10:31:08 +02:00
Ivan Enderlin
6d7573dced
chore: Add missing new lines at the end of files.
2022-05-31 10:06:35 +02:00
Ivan Enderlin
2d14452398
Merge pull request #675 from Hywan/feat-crypto-wasm
...
feat(crypto): Port to Wasm (in a JS host) and to NodeJS
2022-05-31 10:01:57 +02:00
Ivan Enderlin
7931c4a589
chore(crypto-js): Clean up code and make CI happy.
2022-05-31 08:44:36 +02:00
Ivan Enderlin
4db1ad350b
feat(crypto-nodejs): Derive Debug for UserId.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
0debbf24d7
chore(crypto-js): Remove an unknown Clippy lint for now.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
bb8217d10f
doc(crypto-nodejs) Disable missing docs for now.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
6ff5c8e918
chore(crypto-js): Thanks Clippy.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
7fa89f76aa
chore(crypto-js): Update vodozemac's version to match matrix-sdk-crypto's.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
0335fdd07f
doc(crypto): Add missing module documentation.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
3f8e3b61ff
test(xtask) Replace WasmFeatureSet::MatrixSdkCrypto by *Js.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
efe5ea6a9c
test(ci): Exclude matrix-sdk-crypto-(js|nodejs) from code coverage.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
6afeeea56c
test(ci): Do not compile matrix-sdk-crypto to Wasm, but -crypto-js instead.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
bef1dfbf79
chore(crypto-js): Fix typos.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
51488b40d0
doc(crypto-js) Add missing documentation.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
b6a637893e
chore(crypto-js): Fix cargo fmt.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
2a4dce30b2
Merge branch 'main' into feat-crypto-wasm
2022-05-31 08:40:11 +02:00
Ivan Enderlin
3194ad1f9a
feat(crypto-js): Implement OlmMachine.get_verification.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
ee648144a2
feat(crypto-nodejs): Split into a new crate: matrix-sdk-crypto-nodejs.
...
Why? Because `napi` and `wasm-bindgen` are too different. At this
step, the most notable bugs are the way `napi` is handling its proc
macros. There is too much conflicts when used with `#[cfg_attr]`. It
makes the code repetitive and harder to read and to understand (and
also to compile, we must be very careful). But on the short-term,
quickly, we will see more notable differences between `wasm-bindgen`
and `napi`, e.g. with array (in `wasm-bindgen`, we can downcast array
items into particular types, with `napi` it's going to be a very
different code).
Instead of fighting the proc macros bugs now, and having to split the
code later inside the same crate, we believe it's a good idea to split
the code now into 2 crates. At first we will see obvious code
duplications, but on the short-term, the code is likely to be more and
more different.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
afef9103a3
feat(crypto-js): Continue to port the API to NodeJS.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
4df5ee6087
chore(crypto-js): Improve the Makefile for NodeJS support.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
1a731ec385
feat(crypto-js): Rename OlmMachine.encrypt to .encrypt_room_event.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
84fe78bab3
Merge branch 'main' into feat-crypto-wasm
2022-05-31 08:39:29 +02:00
Ivan Enderlin
bce11b209e
feat(crypto-js): Implement OlmMachine.update_tracked_users.
2022-05-31 08:38:24 +02:00
Ivan Enderlin
6c472f873f
feat(crypto-js): Start adding support for NodeJS.
2022-05-31 08:38:24 +02:00
Ivan Enderlin
250b85dc79
feat(crypto): Extract js module to its own crate: matrix-sdk-crypto-js.
2022-05-31 08:38:13 +02:00
Ivan Enderlin
f3ab1ae276
chore(crypto): Fix a typo.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
6b2df7afdd
feat(crypto): Implement `OlmMachine.get_missing_sessions.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
cdb252be5e
chore(crypto): Move everything inside crates/matrix-sdk-crypto/.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
db30ef6ee4
test(crypto): Add tests for the Wasm API.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
da8699fe40
feat(crypto): DeviceLists.new expects Array<UserId>s now.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
16b5eebe23
feat(crypto): Implement a hacky downcast function.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
8161360852
feat(crypto): Add toString methods on identifier objects.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
f01cfe42b4
feat(crypto): Implement EncryptionSettings.new with default values.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
a024c9b268
docs(crypto): Add missing documentation.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
c20349f46f
feat(crypto): Implement OlmMachine.share_group_session.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
e9d37d7c4e
docs(crypto): Add missing docs.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
8b94aed27f
fix(crypto): Use txn_id for transaction_id.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
dc5b15e799
fix(crypto): OutgoingRequest::ToDeviceRequest was not correctly mapped.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
30e9189f7b
fix(crypto): Use JavaScript naming convention for OlmMachine.invalidate_group_session.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
b6a5d4962b
Merge branch 'main' into feat-crypto-wasm
2022-05-31 08:36:30 +02:00
Ivan Enderlin
ee713f928f
feat(crypto): Implement OlmMachine.encrypt and .invalidate_group_session.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
444ff9936b
feat(crypto): Implement RoomId.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
2451815226
feat(crypto): Implement *PublicKey.to_base64 and .length.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
86c6e601bd
chore(crypto): Refactor the code with TryFrom on a tuple.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
9f159ff5a4
feat(crypto): Implement OlmMachine.mark_request_as_sent.
...
To implement this method, a new `responses::OwnedResponse`
intermediate type was needed. In addition to that, the `http` crate is
now required when the `js` feature is enabled.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
056f34883f
feat(crypto): Implement OlmMachine.trackedUsers.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
2d15f758da
feat(crypto): Use JavaScript naming style for methods.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
acd5de3cf3
feat(crypto): Implement ServerName, and add UserId.serverName.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
f0bb35a96c
feat(crypto): Add changed and left to the constructor of DeviceLists.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
1d38e54739
feat(crypto): Return a JsError rather than a String.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
08665dcd1c
feat(crypto): Implement our own future_to_promise helper to simplify code.
...
`wasm_bindgen_future::future_to_promise` expects a `Future<Output =
Result<JsValue, JsValue>>`. We reimplement this function by expecting
a `Future<Output = Result<T, anyhow::Error>>` where `T:
Into<JsValue>`. That way, we apply the type conversions to `JsValue`
inside this helper rather than in the call site. Additionally, all
errors are managed automatically without having to deal with `JsError`
or `JsValue`. It makes the code simpler to read and easier to write
from my point of view.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
569adb7ceb
feat(crypto) Implement OlmMachine.identity_keys.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
fd4dff79d4
feat(crypto) Implement OlmMachine.user_id, .device_id and .display_name.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
fdb9fe21c6
feat(crypto) Remove existing unwrap code.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
7e5eec82c5
feat(crypto) Implement OlmMachine.outgoing_requests.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
901715bcf3
chore(crypto) Generate a smaller Wasm module.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
3aa46fa746
feat(crypto) Implement OlmMachine.receive_sync_changes & friends.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
3318789a8b
feat(crypto) Implement UserId, DeviceId and OlmMachine in Wasm for JS.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
0fe0910fea
feat(crypto) Reduce Wasm binary size by enabling LTO.
2022-05-31 08:35:09 +02:00
Damir Jelić
a11633381b
Merge branch 'poljar/borrow-signature-check-fix'
2022-05-30 12:54:35 +02:00
Benjamin Kampmann
2ff6497604
Merge pull request #715 from gnunicorn/gnunicorn/issue694
...
docs: configure docs.rs build to contain more features
2022-05-27 22:24:02 +02:00
Damir Jelić
7f87abf408
refactor(crypto): Simplify the signature checking method
2022-05-27 21:29:58 +02:00
Damir Jelić
dd49a8bd43
fix(crypto): Don't require mutable borrows when signature checking
2022-05-27 21:28:35 +02:00
Damir Jelić
f8c3a1d03b
Merge branch 'poljar/signatures-struct'
2022-05-27 20:58:45 +02:00
Damir Jelić
808c4c6f3c
chore(crypto): Remove some indentation levels in the types module
...
Co-authored-by: Jonas Platte <jplatte@element.io >
2022-05-27 20:55:17 +02:00
Damir Jelić
a14549d5cc
fix(crypto): Don't unwrap when converting to canonical json
2022-05-27 20:55:17 +02:00
Damir Jelić
9b5b4ab2b2
refactor(crypto): Use the Signatures struct for the CrossSigningKey
2022-05-27 20:55:17 +02:00
Damir Jelić
5756057719
refactor(crypto): Use the new Signatures struct for the DeviceKeys
2022-05-27 20:55:17 +02:00
Damir Jelić
c5ef3e7c94
refactor(crypto): Turn the SignedKeySignatures into a struct
2022-05-27 20:55:17 +02:00
Damir Jelić
fa7c1b60f6
feat(sdk): Replace some Mutex usage with a OnceCell
...
This makes some simpler getter methods non-async.
2022-05-27 16:37:51 +02:00
Julian Sparber
39b1fff218
Merge remote-tracking branch 'origin/main' into user_once_cell_for_session
2022-05-27 15:53:22 +02:00
Benjamin Kampmann
c6df6b421c
docs: fix target and feature-list for docsrs
2022-05-27 13:04:07 +02:00
Benjamin Kampmann
f9b4fd2d12
docs: configure docs.rs build to contain more features
2022-05-27 10:44:16 +02:00
Damir Jelić
e5390e18de
refactor(crypto): Introduce a SignJson trait
...
This patch collects our json signing logic into a single place.
2022-05-27 10:39:12 +02:00
Brandon Lau
28cd0c19e9
fix(crypto-ffi): make crypto-ffi generate a static library for iOS clients
2022-05-27 10:38:21 +02:00
Damir Jelić
15ebc95cd0
chore(qrcode): Add more missing Eq implementations
2022-05-25 13:52:22 +02:00
Damir Jelić
39e12a86ca
chore(crypto): Bump vodozemac
2022-05-25 13:49:00 +02:00
依云
ec9ec2567f
feat: Add .resolve_room_alias() method to the Client
2022-05-24 08:43:02 +02:00
Damir Jelić
fa9c91fb0e
fix(crypto-ffi): Add support to encrypt custom events
2022-05-23 19:37:04 +02:00
Johannes Becker
24b71bf869
feat(appservice): Improve autojoin example
2022-05-23 14:14:05 +02:00
Benjamin Kampmann
dd83cdd74b
Merge pull request #704 from matrix-org/poljar/eq-store-encryption
...
feat(store-encryption): Derive Eq for some structs
2022-05-23 13:07:29 +02:00
Jonas Platte
453cae641b
fix(docs): Remove history gh-pages branch
...
This should drastically reduce the repository size.
2022-05-23 12:57:45 +02:00
Damir Jelić
f838b5fae8
fix(base): Fix a clippy warning about temporary variables
2022-05-23 11:35:23 +02:00
Damir Jelić
1f722f224f
feat(crypto): Add a bunch of Eq implementations
2022-05-23 11:35:07 +02:00
Damir Jelić
a992a4e831
feat(store-encryption): Derive Eq for some structs
2022-05-23 11:14:09 +02:00
Benjamin Kampmann
017359b081
Merge pull request #700 from gnunicorn/b-improve-coverage-reporting
...
Improve CI coverage reporting
2022-05-20 12:33:05 +02:00
Benjamin Kampmann
08718acd57
Merge pull request #698 from matrix-org/poljar/rename-encrypt-method
...
refactor(crypto): Make it clear that the encrypt method is for room events
2022-05-20 10:35:03 +02:00
Benjamin Kampmann
dd1f817701
ci(CodeCoverage): exclude ffi & wasm from default project
2022-05-20 10:26:31 +02:00
Benjamin Kampmann
81db9ef4ca
ci(CodeCoverage): Remove patch-level coverage reporting
2022-05-20 08:34:56 +02:00
Benjamin Kampmann
e927834108
ci(CodeCoverage): split code coverage reporting in mandatory and optional areas
2022-05-20 08:34:39 +02:00
Damir Jelić
f3045dbf99
fixup! refactor(crypto): Make it clear that the encrypt method is for room events
2022-05-20 08:32:50 +02:00
Jonas Platte
d6c6211c00
chore: Use matrix_sdk::Result alias more
2022-05-20 07:52:39 +02:00
Jonas Platte
85949081ce
chore: Consistently use anyhow for Result-returning doctests
...
Cuts down on syntactic noise.
2022-05-20 07:52:39 +02:00
Jonas Platte
cbcc5feef2
fix(sled): Fix unused import when experimental-timeline isn't enabled
2022-05-20 07:52:39 +02:00
Jonas Platte
1b569a8fd4
chore: Consistently use anyhow::Result for example main fn's
...
When an `Err` is propagated out of `main`, it will be printed using
`Debug`, which is much easier to read in anyhow::Error's case. See also
https://docs.rs/anyhow/latest/anyhow/struct.Error.html#display-representations
2022-05-20 07:52:39 +02:00
Damir Jelić
813f388812
refactor(crypto): Make it clear that the encrypt method is for room events
2022-05-20 07:47:47 +02:00
Damir Jelić
552de33dbc
Merge branch 'dkasak/docs-improvements'
2022-05-20 07:26:00 +02:00
Denis Kasak
c3f2003eb7
docs: Slightly reword CryptoStore doc for consistency.
2022-05-19 16:22:09 +02:00
Denis Kasak
3b70d7f9ba
docs: Improve wording of store module-level comment
...
Includes a fix to refer to the `e2e-encryption` feature instead of
`encryption` (which doesn't exist).
2022-05-19 16:22:09 +02:00
Denis Kasak
c00c9d7b81
docs: Reword feature table so the wording is more uniform
2022-05-19 16:22:09 +02:00
Denis Kasak
126e8f1bd9
docs: Unify references to "cryptostore" as "crypto store"
2022-05-19 16:22:09 +02:00
Denis Kasak
9e6e76e5ed
docs: Fix reference to ClientConfig in doc comment
2022-05-19 15:38:13 +02:00
Damir Jelić
d1410fcded
ci: Run cargo audit every day
2022-05-19 10:03:46 +02:00
Jonas Platte
b955e7aad9
Use anyhow::Ok instead of turbofish on Result
2022-05-18 22:04:44 +02:00
Jonas Platte
a364018c0e
chore: Use serde::de::DeserializeOwned convenience trait
2022-05-18 22:04:44 +02:00
Jonas Platte
0f910b6229
fix(base): Make max_power_level reflect the current maximum only
...
… instead of taking into account an older maximum as well.
2022-05-18 14:03:12 +02:00
Benjamin Kampmann
736f0e7687
feat: Initial apple platforms support
...
Merge pull request #571 from matrix-org/jplatte/matrix-sdk-ffi
2022-05-18 13:14:29 +02:00
Stefan Ceriu
6a1b85c560
Fix xcframework debug build script
2022-05-18 13:43:29 +03:00
Benjamin Kampmann
e3503fe102
ci: one more move
2022-05-18 11:56:38 +02:00
Benjamin Kampmann
4522b4e8f5
ci: move rust cache to include uniffi bindgen install
2022-05-18 11:32:03 +02:00
Benjamin Kampmann
886809b579
chore(Apple): Move apple into subfolder
2022-05-18 11:24:30 +02:00
Benjamin Kampmann
97b91a47f1
ci: Setup CI test runs FFI crate (Apple platforms support)
...
Merge pull request #679 from matrix-org/stefan/matrix-sdk-ffi
2022-05-18 10:52:39 +02:00
Stefan Ceriu
4b8b9db075
Have FII action only run on PRs targetting main, similar to the CI one.
2022-05-18 11:49:29 +03:00
Jonas Platte
bc207f1e5c
chore(sdk): Upgrade async-once-cell to 0.3.1
2022-05-18 10:31:52 +02:00
Stefan Ceriu
d863b4eb75
Bump uniffi to version 0.18.0
2022-05-18 11:13:15 +03:00
Stefan Ceriu
45cb162e5a
Fix sample project, cleanup tests and add github action
2022-05-18 11:08:51 +03:00
Stefan Ceriu
ba2cef62b0
Move apple scripts; tweak the debug one to allow for CI builds
2022-05-18 11:08:51 +03:00
Jonas Platte
2d7fb1b61c
fix(matrix-sdk): room::Common:messages() don't return decryption error
...
If decryption fails we want that the user still has access to
the events.
This was broken in a previous commit.
2022-05-17 18:09:09 +02:00
Julian Sparber
d6f9e5f6b6
Remove extra controll flow
2022-05-17 17:52:12 +02:00
Julian Sparber
9c07ff1166
matrix-sdk: room::Common:messages() don't return decryption error
...
If decryption fails we want that the user still has access to
the events.
This was broken in a previous commit.
2022-05-17 17:23:32 +02:00
Julian Sparber
5bd7d17234
fix(matrix-sdk): room::Common:event() don't return decryption error
2022-05-17 17:03:28 +02:00
Benjamin Kampmann
7d439b1697
Merge pull request #680 from gnunicorn/ben-fix-docs
...
Fixing docs
2022-05-17 15:45:39 +02:00
Benjamin Kampmann
39f1b9d464
docs: fix link
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-05-17 13:54:37 +02:00
Benjamin Kampmann
8a86369e68
Merge branch 'ben-fix-docs' into jplatte/matrix-sdk-ffi
2022-05-17 13:39:46 +02:00
Benjamin Kampmann
a19999b240
docs: fixing broken inner link
2022-05-17 13:38:07 +02:00
Benjamin Kampmann
a72a05edc3
Merge remote-tracking branch 'origin/main' into jplatte/matrix-sdk-ffi
2022-05-17 13:05:24 +02:00
Julian Sparber
d0cc3d9c2b
Don't split links to two lines
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-05-17 12:56:24 +02:00
Benjamin Kampmann
2862934b87
style: fix clippy lints for ffi
2022-05-17 12:51:47 +02:00
Julian Sparber
3f3f9d653b
Fix code style
2022-05-17 12:46:06 +02:00
Julian Sparber
83fc91f87e
Add a pretty label for Session link
2022-05-17 12:39:11 +02:00
Julian Sparber
1e77c39498
Fix store example
2022-05-17 12:37:51 +02:00
Julian Sparber
1de27bcc0c
Fix CI and address requested changes
2022-05-17 12:22:35 +02:00
Amanda Graven
248fff370a
test(base): Remove invalid sync event from json
...
The test json used for mocking a sync response contained an ill-formed
event with a room_id key present in the event. Since the deserialization
ignores the room_id key, this resulted in the client's membership state
evaluating to left going by the contents of the state events, despite
the room being in the "joined" section of the sync response. This is a
violation of the spec.
2022-05-17 11:31:36 +02:00
Julian Sparber
26dd2d0e62
Merge remote-tracking branch 'origin/main' into user_once_cell_for_session
2022-05-17 11:14:28 +02:00
Benjamin Kampmann
4bbfa4345f
Merge pull request #678 from Hywan/fix-crypto-doc
...
docs(crypto): Remove outdated documentation and use auto-link
2022-05-17 10:28:07 +02:00
Johannes Becker
5f92113627
chore: Use resolver2 for workspace
2022-05-17 10:24:28 +02:00
Ivan Enderlin
426a93f07c
docs(crypto): Remove outdated documentation and use auto-link.
2022-05-17 10:08:42 +02:00
Benjamin Kampmann
0949979a1b
Merge remote-tracking branch 'origin/main' into jplatte/matrix-sdk-ffi
2022-05-16 13:35:51 +02:00
Benjamin Kampmann
76144de881
Fix(SDK): add missing import for experimental-timeline feature
...
Merge pull request #671 from jsparber/fix_import
2022-05-13 10:33:03 +02:00
Stefan Ceriu
bd4763235a
chore(matrix-sdk-ffi) Use stable toolchain for targeting aarch64-apple-ios-sim
2022-05-12 16:49:49 +03:00
Julian Sparber
911b5415b9
ci: Use experimental-timeline feature
2022-05-12 13:59:18 +02:00
Julian Sparber
c3fc6ff58f
Fix missing import for experimental-timeline feature
2022-05-12 12:38:58 +02:00
Benjamin Kampmann
4c84f252d2
Merge pull request #667 from matrix-org/ben-releasing-base-0.5.1
...
Release matrix-sdk-base 0.5.1
2022-05-11 19:23:16 +02:00
Benjamin Kampmann
70c0626882
chore: tag base 0.5.1
2022-05-11 19:01:12 +02:00
Benjamin Kampmann
5570181bf8
fix(sdk): Fix regression with push rules being applied to the own user_id only instead of all but the own user_id
...
Merge pull request #664 from JCWasmx86/ignore_notification
2022-05-11 18:52:55 +02:00
Benjamin Kampmann
7088ff89b5
Merge pull request #665 from matrix-org/ben-releasing-0.5.0
...
Releasing 0.5.0
2022-05-11 18:50:34 +02:00
Benjamin Kampmann
2561ed1df9
docs: Adding release notes for 0.5.0
2022-05-11 18:16:44 +02:00
JCWasmx86
3f36528a98
fix(sdk): Fix regression
2022-05-11 18:15:33 +02:00
Benjamin Kampmann
34da27222f
chore: Preparing all the small things for release
...
Merge pull request #657 from gnunicorn/ben-preping-for-release
2022-05-11 18:10:11 +02:00
Benjamin Kampmann
aa69bda05b
feat(matrix-sdk): Expose method to decrypt room events
...
Merge pull request #614 from jsparber/fix_decrypt_timeline
2022-05-11 17:34:19 +02:00
Benjamin Kampmann
8bdd0ffc5d
docs: Update crates/matrix-sdk-crypto-ffi/README.md
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-05-11 17:32:22 +02:00
Benjamin Kampmann
c21408934c
chore: Mark crypto-ffi as non-publish
2022-05-11 17:31:19 +02:00
Benjamin Kampmann
daa0768a04
Apply suggestions from code review
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-05-11 17:30:12 +02:00
Benjamin Kampmann
706ea248eb
Merge pull request #660 from gnunicorn/ben-encrypt-indexeddb-cryptostore-keys
...
fix(indexeddb): encrypt crypto-store key
2022-05-11 17:26:41 +02:00
Benjamin Kampmann
d120d9b70f
style(indexeddb): fix import order
2022-05-11 17:09:29 +02:00
Benjamin Kampmann
ef2754736a
docs(sled): Document doubts on sled in the readme
2022-05-11 17:07:07 +02:00
Jonas Platte
bc78095611
fix(sdk): Don't send notifications for your own user
2022-05-11 17:02:30 +02:00
Benjamin Kampmann
45ea472c83
Merge remote-tracking branch 'origin/main' into ben-preping-for-release
2022-05-11 16:57:40 +02:00
Benjamin Kampmann
583810726d
style(indexeddb): Minor style fixes for fmt and clippy
2022-05-11 16:56:18 +02:00
JCWasmx86
5fef975ef2
fix(sdk): Don't send notifications for your own user
2022-05-11 16:52:24 +02:00
Benjamin Kampmann
86d2a74c25
Chore: adding issue tracker link to fixme
2022-05-11 15:32:09 +02:00
Benjamin Kampmann
aa5e28e58f
style(indexeddb): &self.store_cipher instead of Some(ref cipher)
2022-05-11 15:27:28 +02:00
Benjamin Kampmann
0080a74d3b
fix(indexeddb): temporarily disable tests
2022-05-11 15:24:56 +02:00
Benjamin Kampmann
44c5244b9a
style: fixing cargo format
2022-05-11 13:09:07 +02:00
Benjamin Kampmann
339d701477
fix(indexeddb): Encrypt key with store-cipher
2022-05-11 13:04:15 +02:00
Benjamin Kampmann
74a01376c7
test(sled): Add tests for encrypted crypto-store
2022-05-11 12:42:45 +02:00
Julian Sparber
379e3f27af
Merge remote-tracking branch 'origin/main' into fix_decrypt_timeline
2022-05-11 12:28:43 +02:00
Julian Sparber
89e0af97af
Drop trait used in room::Common::decrypt_event
2022-05-11 12:28:20 +02:00
Damir Jelić
fbb369da8d
refactor(crypto): Remove the dead pickle key
2022-05-11 12:02:35 +02:00
Jonas Platte
1fdd1ab23a
Cleanup after rebase
2022-05-11 11:57:27 +02:00
Jonas Platte
40dcc988d6
fixup! feat: Initial apple platforms support
2022-05-11 11:07:50 +02:00
Jonas Platte
9909cb597a
squash! feat: Initial apple platforms support
...
Enable sending of messages
2022-05-11 11:07:50 +02:00
Jonas Platte
56cfe8f231
squash! feat: Initial apple platforms support
...
Some FFI API cleanup
2022-05-11 11:07:50 +02:00
Jonas Platte
ab9d8eb52b
feat: Initial apple platforms support
...
Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com >
Co-authored-by: Benjamin Kampmann <ben.kampmann@gmail.com >
2022-05-11 11:07:42 +02:00
Julian Sparber
af01c64712
Fix doc ofr room::Common::decrypt_event()
2022-05-11 11:01:54 +02:00
Julian Sparber
c8233b6c85
Drop CryptoHolder and use OnceCell for OlmMachine
...
THe CryptoHolder is just used to hold the crypto-store till the
matrix_sdk::Session is set and it is possible to create the OlmMachine.
But with this approch we need to use a Mutex and getting the OlmMachine
becomes more expensive because of this. Therefore this replaces the
Mutex with a OnceCell. The only downside is that the BaseClient needs to
hold onto a referance to the crypto-store. (It would be possible to drop
it after the OlmMachine is created, but I don't think gives use any
improvment)
2022-05-11 10:48:12 +02:00
Julian Sparber
b72bdcd7d4
Use OnceCell to store matrix_sdk::Session
...
Since the session can be set only once there is no point in using a
Mutex or RwLock.
2022-05-10 17:10:34 +02:00
Benjamin Kampmann
ab87013125
chore: make wasm-example non-publish
2022-05-10 15:10:01 +02:00
Benjamin Kampmann
e146daf2a3
chore: bump main crate
2022-05-10 15:09:41 +02:00
Julian Sparber
5501378a77
Merge remote-tracking branch 'origin/main' into fix_decrypt_timeline
2022-05-10 14:55:29 +02:00
Julian Sparber
b586f1690b
use trait as argument for room::Common::decrypt_event
2022-05-10 14:54:13 +02:00
Benjamin Kampmann
1c967669d9
chore: Bumping crate versions
2022-05-10 13:41:00 +02:00
Benjamin Kampmann
89a8245ce6
fix(test-macros): Add missing feature from syn
2022-05-10 13:09:27 +02:00
Benjamin Kampmann
d2f251b2d5
chore: version and path fixes for releasing
2022-05-09 20:11:10 +02:00
Benjamin Kampmann
c72b769389
Merge remote-tracking branch 'origin/main' into ben-preping-for-release
2022-05-09 20:09:26 +02:00
Benjamin Kampmann
41799a08ed
Merge pull request #655 from matrix-org/ben-name-alignment
...
Align crate names
2022-05-09 20:04:02 +02:00
Benjamin Kampmann
4b2bac965d
docs: Adding Readmes
2022-05-09 17:58:31 +02:00
Benjamin Kampmann
c61215630b
chore: Fixing missing Cargo.toml Metadata"
2022-05-09 17:43:41 +02:00
Benjamin Kampmann
23a13a77a4
Merge remote-tracking branch 'origin/main' into ben-name-alignment
2022-05-09 17:04:17 +02:00
Benjamin Kampmann
cea57724e7
missed one
2022-05-09 16:39:50 +02:00
Jonas Platte
1f714e9cc5
feat(sdk): Allow OriginalSyncRoomRedactionEvent as first event handler param
2022-05-09 16:38:58 +02:00
Jonas Platte
02587bf6bf
fix(sdk): Fix wrong event handler ID for redacted redaction event
2022-05-09 16:38:58 +02:00
Jonas Platte
320a20b787
chore: Add store error backend variant constructors
2022-05-09 16:38:58 +02:00
Jonas Platte
844b22fd8e
chore: Remove From<Box<dyn Error + …>> impls for store errors
2022-05-09 16:38:58 +02:00
Benjamin Kampmann
26c82b3010
fix: fixing missed cases and style
2022-05-09 16:22:37 +02:00
Benjamin Kampmann
1de4a6cdd6
refactor: Rename matrix-crypto-ffi to matrix-sdk-crypto-ffi
2022-05-09 16:12:11 +02:00
Benjamin Kampmann
08f180cdb7
refactor: Rename matrix-qrcode to matrix-sdk-qrcode
2022-05-09 16:12:11 +02:00
Denis Kasak
8c3843f392
Merge pull request #654 from matrix-org/dkasak/switch-to-vodozemac-release
...
chore: Switch to released vodozemac
2022-05-09 12:46:15 +00:00
Denis Kasak
b396232756
refactor: clippy fixes
2022-05-09 14:34:31 +02:00
Denis Kasak
9e3089074f
chore: Switch to released vodozemac.
2022-05-09 14:06:05 +02:00
Julian Sparber
fa37a2dea2
Fix missing referance
2022-05-09 13:58:04 +02:00
Julian Sparber
3910122fd5
Remove uneeded ref
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-05-09 13:51:03 +02:00
Julian Sparber
2919c2d5d1
matrix-sdk: Expose method to decrypt room events
...
The also adds an enum so that the user can give many different rust
types to the decryption method.
2022-05-09 13:12:40 +02:00
Jonas Platte
0fad7b60a9
feat(base): Properly handle redacted m.room.member events
2022-05-09 12:38:22 +02:00
Jonas Platte
a2fb420635
chore(base): Use PowerLevels::for_user helper
2022-05-09 12:38:22 +02:00
Jonas Platte
6088993706
chore(base): Move MinimalStateEvent higher up the module hierarchy
2022-05-09 12:38:22 +02:00
Jonas Platte
41bcc9bdd7
chore(base): Remove unnecessary bounds on MinimalStateEvent
2022-05-09 12:38:22 +02:00
Jonas Platte
dc08d5f62b
chore: Update MemberEvent to allow redacted member events
2022-05-09 12:38:22 +02:00
Jonas Platte
985c7d7b36
chore: Inline From trait implementations for MemberEvent
...
They were each just used in a single place.
2022-05-09 12:38:22 +02:00
Jonas Platte
58bcd354f6
chore(sdk): Reduce unnecessary clones
2022-05-09 12:38:22 +02:00
Ivan Enderlin
5c6a6464c4
chore(crypto) Fix a typo in the code.
2022-05-09 11:50:40 +02:00
Ivan Enderlin
d3c20b2a13
feat(crypto) Generate a cdylib for the crate.
...
Ask `rustc` to generate a dynamic system library, which will be useful
to generate a Wasm module.
2022-05-09 10:51:18 +02:00
Ivan Enderlin
7817af9aa6
feat(crypto) Add the js feature.
...
This patch updates to code to raise a compilation error if the `js`
feature is used for another architecture than `wasm32`.
2022-05-09 10:40:32 +02:00
Ivan Enderlin
7569c08ada
feat(crypto) Add wasm-bindgen as a dep and simplify Cargo.toml.
2022-05-09 10:40:13 +02:00
Charlotte
be2a818c84
feat(base)!: Use boxed errors in StoreError and CryptoStoreError
2022-05-06 17:05:27 +02:00
Benjamin Kampmann
8b805f9f01
Merge pull request #649 from zecakeh/display-name
...
DisplayName fixes
2022-05-06 14:46:49 +02:00
Benjamin Kampmann
86b9dc5e57
style(appservice): Remove allocation and make clippy happy
2022-05-06 14:08:27 +02:00
Jonas Platte
260f888a89
chore(appservice): Fix another clippy warning
2022-05-06 14:08:01 +02:00
Jonas Platte
5907fac248
chore(base): Rewrite BaseRoomInfo::handle_redaction
2022-05-06 14:08:01 +02:00
Jonas Platte
3c8da5f7e1
feat(base): Handle redactions in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
8043b6c1e1
chore(base): Store topic event's ID in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
4e16f79ad2
chore(base): Store tombstone event's ID in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
f93baf7ed4
chore(base): Store name event's ID in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
9e058b6202
chore(base): Store join_rules event's ID in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
a5e81ebcc9
chore(base): Store history_visibility event's ID in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
aa7fc8ff47
chore(base): Store guest_access event's ID in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
849fbe94f1
chore(base): Store create event's ID in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
c9527e7263
chore(base): Store canonical_alias event's ID in BaseRoomInfo
2022-05-06 14:08:01 +02:00
Jonas Platte
9a3b81178f
chore(base): Store avatar event's ID in BaseRoomInfo
...
Required to make redactions work properly.
2022-05-06 14:08:01 +02:00
Jonas Platte
1e9e13ab63
chore(base): Use RoomInfo::room_version accessor
2022-05-06 14:08:01 +02:00
Kévin Commaille
2545e1bd72
fix(sdk): Re-export DisplayName
2022-05-06 11:35:48 +02:00
Kévin Commaille
1b8337cdc2
doc(sdk-base): Fix typo
2022-05-06 11:35:48 +02:00
Jonas Platte
b95aea9cf0
chore(crypto): Fix new clippy warning
2022-05-06 11:29:35 +02:00
Julian Sparber
12cdf8c159
chore(sdk): Use OnceCell to store server versions
2022-05-06 11:08:10 +02:00
Benjamin Kampmann
2054f5deef
docs(crypto-ffi) Fix a typo in the README.md
...
Merge pull request #645 from Hywan/doc-readme-typo
2022-05-06 08:23:28 +02:00
Benjamin Kampmann
0a6983512a
Merge pull request #646 from Hywan/doc-sdk-base-readme-typo
...
docs(sdk-base) Fix a typo in the `README.md`
2022-05-06 08:07:34 +02:00
Ivan Enderlin
977438207c
docs(sdk-base) Fix a typo in the README.md.
2022-05-05 13:42:34 +02:00
Ivan Enderlin
87b849a95b
docs(crypto-ffi) Fix a typo in the README.md.
2022-05-05 13:36:39 +02:00
Damir Jelić
3a4656cedd
Merge branch 'poljar/cleanup-verification-constructors'
2022-05-05 13:16:34 +02:00
Benjamin Kampmann
7e399e1e8d
Merge pull request #644 from matrix-org/poljar/fix-sled-cryptostore-only-compilation
...
fix(sled): Fix the compilation if only the cryptostore is enabled
2022-05-05 12:43:38 +02:00
Benjamin Kampmann
b9e92886de
refactor!: Put timeline behind experimental-timeline-feature-flag
2022-05-05 12:31:02 +02:00
Damir Jelić
2c415abce8
fix(sled): Fix the compilation if only the cryptostore is enabled
2022-05-05 12:22:16 +02:00
Benjamin Kampmann
3de2a9ad22
feat(sled): Add state store db schema version support
...
Merge pull request #640 from matrix-org/gnunicorn/issue585
2022-05-05 12:13:30 +02:00
Benjamin Kampmann
0f95687bec
fix(base): Don't create empty changeset for each run
2022-05-05 12:11:33 +02:00
Damir Jelić
2a5f17005d
refactor(crypto): Make the transaction id non-optional in the Sas constructor
2022-05-05 11:55:00 +02:00
Benjamin Kampmann
5fce18f4dd
chore: remove unneccessary feature-flag
2022-05-05 11:21:34 +02:00
Benjamin Kampmann
93b42236fe
chore: Merge remote-tracking branch 'origin/main' into b-featureflag-timeline
2022-05-05 10:33:56 +02:00
Benjamin Kampmann
26935ee1c0
Fix(room)!: Calculate display_name correctly for invited rooms
...
- [x] Make the `DisplayName` an actual type to allow API users to localize the generic name
- [x] tests for various naming use cases
- [x] fix the cases where we currently calculate a faulty name, fixes #133
- [x] strong-typed EitherMemberEvent from storage
- [x] add tests for eithermember in store integration tests
- [x] update sled store for new trait signature
- [x] update indexeddb store for new signature
- [x] rename `DisplayName::Computed` to `DisplayName::Calculated`
- [x] fix renaming failing test(s)
2022-05-04 20:04:07 +02:00
Benjamin Kampmann
ab08ce6ff1
style(sled): cargo fmt
2022-05-04 16:54:03 +02:00
Benjamin Kampmann
ae3cd70904
feat(sled): Add store db schema version support
2022-05-04 16:39:08 +02:00
Benjamin Kampmann
7b21166784
chore: Merge remote-tracking branch 'origin/main' into b-featureflag-timeline
2022-05-04 16:17:06 +02:00
Benjamin Kampmann
403ce9b711
chore: Merge remote-tracking branch 'origin/main' into gnunicorn/issue133
2022-05-04 16:10:22 +02:00
Benjamin Kampmann
98fa629f38
fix(memstore): Separate stripped and regular user indixes
2022-05-04 16:09:54 +02:00
Benjamin Kampmann
75f0fe94e8
fix(indexeddb): Separate stripped and regular user_id indixes
2022-05-04 16:02:02 +02:00
Benjamin Kampmann
c0c4c603aa
refactor!: Cleaning up feature gates
...
Merge pull request #591 from matrix-org/ben-feature-fixup
- [x] switches to latest rust 1.60 as MSRV
- [x] renames `encryption`-feature to `e2e-encryption` for clarity
- [x] combines the `*-state-store`/`*-crypto-store` features into a single feature `sled` and `indexeddb` respectivly
- [x] and combines them with weak `e2e-encryption`-dependencies to activate the features as necessary
- [x] moves the code back to the sled-store, where it belongs
- [x] updates the docs accordingly
BREAKING CHANGE
2022-05-04 15:26:20 +02:00
Benjamin Kampmann
0abdebfe8b
docs: typo in feature name
...
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2022-05-04 15:15:06 +02:00
Benjamin Kampmann
8e2e4e6058
style(xtask): Fixing formatting
2022-05-04 13:54:55 +02:00
Benjamin Kampmann
aaee28b34f
style: Improved wording
...
As suggested in the review.
Co-authored-by: Damir Jelić <poljar@termina.org.uk >
2022-05-04 13:48:11 +02:00
Benjamin Kampmann
335a7d03c3
fix: Put all MSRV to 1.60
2022-05-04 13:41:07 +02:00
Benjamin Kampmann
f61248cbbd
style: Put warnings aside by feature-gating properly
2022-05-04 13:38:08 +02:00
Damir Jelić
83d6e8ea82
refactor(crypto): Simplify the verification object constructors
...
This patch moves all the important identities that we need for
verification into the already existing IdentitiesBeingVerified struct.
It adds a method to get those identities to the store, and streamlines
our to-device and in-room verification constructors.
2022-05-04 13:36:26 +02:00
Benjamin Kampmann
fdcbd59557
fix(SDK): Put timeline behind a feature-flag
2022-05-04 12:55:01 +02:00
Benjamin Kampmann
3a06908755
fix(sled): Put timeline behind feature-flag
2022-05-04 12:42:34 +02:00
Benjamin Kampmann
5f6e0ae033
fix(base): Put further timeline features behind feature-flag
2022-05-04 12:36:53 +02:00
Benjamin Kampmann
e1e919dd2c
fix(indexeddb): Put timeline feature behind feature-flag
2022-05-04 12:24:21 +02:00
Benjamin Kampmann
98d2b8a0fe
fix(base): Put timeline behind exprimental-timeline-feature-flag
2022-05-04 11:54:14 +02:00
Benjamin Kampmann
e60d2fde7e
fixing xtask wasm-pack cli command
2022-05-04 11:11:01 +02:00
Benjamin Kampmann
5d3351f5cc
chore(sledstore): Revert user-id removing code
2022-05-04 10:52:42 +02:00
Jonas Platte
b2273ab7a1
chore: Add semicolons after unit-typed expressions
2022-05-03 14:23:29 +02:00
Jonas Platte
17a26bfe68
chore: Use Entry::or_default() where applicable
2022-05-03 14:23:29 +02:00
Jonas Platte
d44f2657f4
chore(base): Fix inconsistent order of common function parameters
2022-05-03 14:23:29 +02:00
Jonas Platte
1c3890651d
chore(base): Simplify signature of handle_invited_state
2022-05-03 14:23:29 +02:00
Jonas Platte
92f3737be6
chore: Remove unneeded lint silencing
2022-05-03 14:23:29 +02:00
Benjamin Kampmann
3cc5e48aac
ci: Fix new no-crypto ci wasm command
2022-05-03 12:05:34 +02:00
Damir Jelić
c01cbdd3f2
fix(crypto-ffi): Allow room message requests to be marked as sent
2022-05-03 10:59:16 +02:00
ganfra
84d1af1332
[crypto-ffi] Add RoomMessage in RequestType
2022-05-03 10:49:17 +02:00
Benjamin Kampmann
e3016482e1
fix: Simplify UnknownError in SDK
2022-05-03 10:28:28 +02:00
Benjamin Kampmann
a58a58f30d
Merge remote-tracking branch 'origin/main' into ben-feature-fixup
2022-05-03 10:21:11 +02:00
Benjamin Kampmann
7dd7f5a611
Merge pull request #626 from matrix-org/gnunicorn/issue565
...
Fixing benchmarking,
fixes #565
2022-05-03 10:20:15 +02:00
Benjamin Kampmann
aad0cbe496
ci(benchmarking): disable benchmark runs other than manually requested
2022-05-03 09:39:35 +02:00
Benjamin Kampmann
68d5097d96
fix(sled): Unmix stripped and regular user_ids
2022-05-03 09:03:13 +02:00
Benjamin Kampmann
06085a0c74
Merge remote-tracking branch 'origin/main' into gnunicorn/issue133
2022-05-03 08:45:24 +02:00
Benjamin Kampmann
f416ebfdd8
fix(sled-store): Fix faulty mixing of stripped and regular user_ids
2022-05-03 08:44:52 +02:00
Benjamin Kampmann
4de29b8178
test(state tests): Put stripped_member test into its own DB to ensure separation
2022-05-03 08:22:57 +02:00
Benjamin Kampmann
12894aff99
ci(benchmark): Fixing output format
2022-05-02 17:01:56 +02:00
Benjamin Kampmann
f20390036b
fix(indexeddb): Ensure internal account info is up to date on regular save_changes
2022-05-02 16:58:21 +02:00
Benjamin Kampmann
9763c13a34
ci(benchmarks): Switch to Mr. B access token
2022-05-02 16:36:44 +02:00
Benjamin Kampmann
54c93e4982
ci(benchmarks): more specific cargo-bench params
2022-05-02 16:30:30 +02:00
Benjamin Kampmann
b6d71cbeba
fix(benchmarks): keep the temprorary dir until end of tests
2022-05-02 16:29:50 +02:00
Benjamin Kampmann
a4ec6cb6d6
fix(sled-crypto): Ensure cryptostore.save_changes for account updates internal account_info
2022-05-02 16:29:02 +02:00
Benjamin Kampmann
1ea377bdbf
chore: Merge pull request #625 from matrix-org/ben-ci-fixup
...
xtask fixup
2022-05-02 15:45:29 +02:00
Benjamin Kampmann
827f8c3e17
ci(benchmarking): Add github token to benchmarking
2022-05-02 14:17:13 +02:00
Benjamin Kampmann
32cd372f49
Merge remote-tracking branch 'origin/main' into ben-feature-fixup
2022-05-02 13:30:42 +02:00
Benjamin Kampmann
b592fc5cac
Update xtask/src/fixup.rs
...
Co-authored-by: Jonas Platte <jplatte@element.io >
2022-05-02 12:44:31 +02:00
Benjamin Kampmann
d077aa6a90
chore(indexeddb): Merge fixes
2022-05-02 12:07:40 +02:00
Benjamin Kampmann
392d48ba01
Merge remote-tracking branch 'origin/main' into gnunicorn/issue133
2022-05-02 11:51:26 +02:00
Benjamin Kampmann
d1aa463b7c
Apply suggestions from code review
...
Co-authored-by: Jonas Platte <jplatte@element.io >
2022-05-02 11:43:37 +02:00
Benjamin Kampmann
fb8ddfa07d
style: Fixing name
2022-04-29 17:56:50 +02:00
Benjamin Kampmann
2803694cdf
ci(benchmarks): Adding Benchmarks to CI
2022-04-29 17:54:53 +02:00
Benjamin Kampmann
a7b8cc5810
ci: remove unnecessary dependency
2022-04-29 17:28:51 +02:00
Jonas Platte
f8b9ec9626
chore: Remove ruma re-export from matrix-sdk-common
...
The user-facing re-exports in matrix-sdk-base and matrix-sdk remain.
2022-04-29 17:13:22 +02:00
Jonas Platte
c3d9a60067
chore: Remove async_trait from matrix-sdk-common
2022-04-29 17:13:22 +02:00
Benjamin Kampmann
a70d05cb63
Merge branch 'main' into ben-ci-fixup
2022-04-29 15:15:46 +02:00
Benjamin Kampmann
5682b3bc09
ci(xtask): Adding fixup to xtask
2022-04-29 15:13:43 +02:00
Benjamin Kampmann
29674213e8
style: Cleanup styles with pre-commit
2022-04-29 14:52:41 +02:00
Benjamin Kampmann
9b6fe94bc8
ci(tooling): Improved Style Checking
...
- separate Styles from ci.yaml into its own for clarity
- extend pre-commit config with other useful defaults
- move clippy, tests and typos into a push-based pre-commit
2022-04-29 14:50:12 +02:00
Jonas Platte
c0c30438ab
chore: Upgrade Ruma to 0.6.1
2022-04-29 13:17:51 +02:00
Jonas Platte
814e415374
chore: Use new Ruma helper methods for some events
2022-04-29 13:03:50 +02:00
Jonas Platte
dfd193e3b0
chore: Change TOML inline tables to be single-line consistently
2022-04-29 13:03:50 +02:00
Jonas Platte
82164b098a
chore: Sort dependencies
...
Mostly automated (cargo sort --workspace).
2022-04-29 13:03:50 +02:00
Jonas Platte
4b1c77ec5a
chore: Use js Date.now() support from Ruma
2022-04-29 13:03:49 +02:00
Benjamin Kampmann
d9d143eba7
fix(sled-store): Seperate stripped and non-stripped buckets
2022-04-29 12:42:36 +02:00
Jonas Platte
097cb99ae5
chore: Make target-specific dependency formatting more consistent
...
* Put target-specific dependencies last
* Put cfg(wasm) before cfg(not(wasm))
* Use long table names only where lines get too long otherwise
2022-04-29 11:30:31 +02:00
Jonas Platte
aae8989f99
chore(sdk): Merge local import with file-level imports
2022-04-29 11:09:14 +02:00
Jonas Platte
70174e1fea
Upgrade Ruma to 0.6.0
2022-04-29 11:07:17 +02:00
Benjamin Kampmann
301cf3561f
chore(indexeddb): Fix merge leftover
2022-04-29 10:41:14 +02:00
Benjamin Kampmann
18864d9722
chore: Merge remote-tracking branch 'origin/main' into gnunicorn/issue133
2022-04-29 10:27:33 +02:00
Benjamin Kampmann
9c6bc066f2
chore(CI): Add Wasm-Pack to CI
...
Merge pull request #619 from matrix-org/gnunicorn/issue617
2022-04-28 17:50:39 +02:00
Benjamin Kampmann
83b5d8f20e
style: cargo fmt
2022-04-28 17:32:54 +02:00
Benjamin Kampmann
ebd85ebaa2
feat(indexeddb): Add support for key backup v1
2022-04-28 17:31:09 +02:00
Denis Kasak
1962e7ec1d
Merge pull request #621 from matrix-org/dkasak/doc-improvements2
...
Document `OlmDecryptionInfo` and make it `pub(crate)`.
2022-04-28 14:35:32 +00:00
Denis Kasak
73bd3a0598
fix(crypto): Make OlmDecryptionInfo and decrypt_to_device_event pub(crate).
2022-04-28 16:21:39 +02:00
Denis Kasak
698ab5328f
docs(crypto): Document OlmDecryptionInfo and fix some errors.
2022-04-28 16:08:07 +02:00
Benjamin Kampmann
87ae677fc3
fix(ci): fixing it right this time
2022-04-28 13:15:27 +02:00
Benjamin Kampmann
5d3c14f309
fix(ci): fixing the wasm ci command
2022-04-28 13:12:06 +02:00
cutecutecat
33425a43d0
chore: Replace lazy_static with once_cell
2022-04-28 11:10:34 +00:00
Benjamin Kampmann
608eca6166
test(indexeddb): activate indexeddb tests for CI
2022-04-28 12:43:07 +02:00
Benjamin Kampmann
a49dfa8aa2
Merge branch 'main' into gnunicorn/issue133
2022-04-28 12:36:36 +02:00
Benjamin Kampmann
3caed26f93
test(base): fix wasm tests
2022-04-28 12:00:19 +02:00
Benjamin Kampmann
7aeb8cf482
style: cargo fmt
2022-04-28 11:24:59 +02:00
Benjamin Kampmann
16ec5fe9ff
chore: Merge remote-tracking branch 'origin/main' into gnunicorn/issue617
2022-04-28 11:23:32 +02:00
Benjamin Kampmann
aff106f0d6
style: cargo fmt
2022-04-28 11:08:27 +02:00
Benjamin Kampmann
4b575d3d2b
style: newline
2022-04-28 11:08:03 +02:00
Benjamin Kampmann
0f2424d140
test(crypto): fix wasm tests
2022-04-28 11:06:35 +02:00
Benjamin Kampmann
9c80774140
feat(common-utils): helper for modified MilliSecondsSinceUnixEpoch
2022-04-28 11:06:35 +02:00
Benjamin Kampmann
d46b5ab0b6
tests: add js to get-random on matrix-sdk to allow compilation
2022-04-28 11:06:35 +02:00
Benjamin Kampmann
5b13cf4e92
Apply suggestions from code review
...
Co-authored-by: Jonas Platte <jplatte@element.io >
2022-04-28 10:25:03 +02:00
Damir Jelić
649aff2c92
fix(crypto-ffi): Rename the error message field for MigrationError
...
The field is called message which clashes with the field of the same
name in the Kotlin Exception class.
2022-04-27 18:56:30 +02:00
Damir Jelić
5d8c485a51
chore: Bump most of our deps
2022-04-27 17:30:53 +02:00
Damir Jelić
d8ff18322e
feat(crypto-ffi): Allow unencrypted verification events to be handled
2022-04-27 17:30:41 +02:00
Damir Jelić
4780c560e1
feat(base): Pass unencrypted verification events to the olm machine
2022-04-27 17:30:41 +02:00
Damir Jelić
d94f415db4
feat(crypto): Allow unencrypted verification events to be handled
2022-04-27 17:30:41 +02:00
Benjamin Kampmann
4b6ed22476
chore(ci): install wasm-pack
2022-04-27 17:20:14 +02:00
Benjamin Kampmann
868afffc4d
formatting
2022-04-27 17:05:50 +02:00
Benjamin Kampmann
6a81ec226e
chore: enable wasm-pack tests in ci
2022-04-27 16:58:42 +02:00
Benjamin Kampmann
c0fc7c9f7e
chore: Adding ci-subcommand to xtask for testing
2022-04-27 16:50:27 +02:00
Benjamin Kampmann
1bf1147d18
fixing style
2022-04-27 16:22:47 +02:00
Benjamin Kampmann
2bdd44ce1d
Merge branch 'main' into gnunicorn/issue133
2022-04-27 15:45:39 +02:00
Julian Sparber
910bf531fe
feat(sdk): Add method to set whether a room is DM and store all targets
...
This ensures also that we use, for user verification, only a DM room with
no members other then ourself and the user to be verified.
2022-04-27 12:53:51 +02:00
Benjamin Kampmann
66fcc1e486
forgot two instances in rename
2022-04-27 12:36:19 +02:00
Benjamin Kampmann
628de09938
rename Full -> Original
2022-04-27 12:22:19 +02:00
Benjamin Kampmann
703a95c486
grumbles
2022-04-27 12:21:06 +02:00
Benjamin Kampmann
48cb625f19
fixing lints
2022-04-27 12:06:42 +02:00
Benjamin Kampmann
266d7c6da7
fixing last broken display_name tests
2022-04-27 12:06:15 +02:00
Benjamin Kampmann
b5ab076546
tests(matrix-sdk-base): allowing enable debugging logs for tests
2022-04-27 12:02:56 +02:00
Jonas Platte
e5c2ba4bd8
fix(sdk): Export RumaApiError
2022-04-26 19:16:36 +02:00
Kévin Commaille
d62cb9650f
Fix typo
2022-04-26 18:59:51 +02:00
Kévin Commaille
dfdaea786b
docs: Document RumaApiError variants
2022-04-26 18:49:21 +02:00
Damir Jelić
6e89ecfbf0
fix(indexeddb): Don't derive a StoreCipher twice if we're reusing the db
2022-04-26 18:46:55 +02:00
Damir Jelić
742c1944eb
fix(sled): Put the StoreCipher behind the Arc, not the Option
2022-04-26 18:46:55 +02:00
Damir Jelić
e1baa25713
fix(sled): Don't derive a StoreCipher twice if we're reusing the db
2022-04-26 18:46:55 +02:00
Kévin Commaille
189ae93e90
fix(sdk): Export RumaApiError
2022-04-26 18:17:04 +02:00
Benjamin Kampmann
4431a2d48a
fix(room name): check for proper type
2022-04-26 17:40:04 +02:00
Benjamin Kampmann
3cdee30fc1
fixing docs
2022-04-26 17:33:17 +02:00
Benjamin Kampmann
592a9338eb
style, and other fixes
2022-04-26 17:27:18 +02:00
Benjamin Kampmann
55b7fd617c
fix(indexeddb-store): implement merge room members
2022-04-26 17:04:46 +02:00
Benjamin Kampmann
ca2f598d9e
fix(sled-store): implement merge room members
2022-04-26 16:23:22 +02:00
Benjamin Kampmann
8cdfd43863
test(store): additional intergration test for stripped members
2022-04-26 15:38:58 +02:00
Benjamin Kampmann
e9e21c1b25
rename computed -> calculated
2022-04-26 15:34:49 +02:00
Benjamin Kampmann
61ea1c9003
Merge remote-tracking branch 'origin/main' into gnunicorn/issue133
2022-04-26 15:24:13 +02:00
Damir Jelić
39ef1d550d
chore(crypto): Improve a log line
2022-04-26 14:46:07 +02:00
Damir Jelić
a425ddf97f
fix(crypto): Don't try to encrypt a room key for our own device
2022-04-26 14:46:07 +02:00
Damir Jelić
d38995b3f9
fix(crypto): Add our own device to the store when we create a new account
2022-04-26 14:46:07 +02:00
Damir Jelić
3490a9f726
chore(crypto): Remove a useless compile_error! call
2022-04-26 13:56:45 +02:00
Damir Jelić
610e3ffc5f
fix(crypto): Be more restrictive around Megolm session rotation periods
2022-04-26 13:56:45 +02:00
Benjamin Kampmann
cfeda54fc6
fix(store): combine stripped and regular membership and allow fetching that
2022-04-26 13:35:06 +02:00
Jonas Platte
2a11df01c7
chore(indexeddb): Remove unneeded matrix-sdk-common dependency
2022-04-26 11:40:54 +02:00
Jonas Platte
08fd85ea09
chore: Upgrade Ruma
2022-04-26 11:40:54 +02:00
Jonas Platte
32d1997dfc
feat(crypto): Accept borrowed identifiers in some public functions
2022-04-26 11:40:54 +02:00
Jonas Platte
00249ab96e
fix: Fix a typo
2022-04-26 11:40:54 +02:00
Damir Jelić
7710b0b14f
Merge branch 'poljar/encrypted-reactions-fix'
2022-04-26 11:22:39 +02:00
Damir Jelić
cc6e5b868e
chore(sdk): Use the % sigil to record room ids
2022-04-26 09:58:25 +02:00
Damir Jelić
5f83184512
fix(sdk): Don't encrypt reactions
2022-04-26 09:41:50 +02:00
Jonas Platte
16a35081ed
feat(sdk): Merge HttpError::{Api, ClientApi}
2022-04-25 19:55:56 +02:00
Jonas Platte
ddb6d6af90
chore: Fix typos
2022-04-25 19:42:06 +02:00
Damir Jelić
1f8f7c853b
docs(crypto-ffi): Slight docs improvements
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-04-25 14:22:01 +02:00
Damir Jelić
a25a88bd25
refactor(crypto-ffi): Use the anyhow Result type for the migration function
2022-04-25 14:22:01 +02:00
Damir Jelić
94832d1a8b
fix(crypto-ffi): Allow the machine to be opened with a passphrase
2022-04-25 14:22:01 +02:00
Damir Jelić
2552c0f393
docs(crypto-ffi): Add docs to the migrate method
2022-04-25 14:22:01 +02:00
Damir Jelić
797fbb2fda
feat(crypto-ffi): Add a progress listener to the migrate method
2022-04-25 14:22:01 +02:00
Damir Jelić
35d4749ba7
feat(crypto-ffi): Add support to migrate from a libolm based setup
2022-04-25 14:22:01 +02:00
Damir Jelić
c5ddca3bc4
feat(sled): Add a method to save tracked users in a batched way
2022-04-25 14:22:01 +02:00
Damir Jelić
a6b7c98002
feat(crypto): Add a public method to import private cross signing keys
2022-04-25 14:22:01 +02:00
Benjamin Kampmann
84b721abb0
Merge pull request #599 from zecakeh/pr-cov
...
ci: Run code coverage for pull requests
2022-04-25 14:07:27 +02:00
Benjamin Kampmann
7ea6cb3e95
rename Calculated -> Computed
2022-04-25 13:31:45 +02:00
Benjamin Kampmann
15e76b90b1
adding display name integration tests for DM invite
2022-04-25 13:29:59 +02:00
Kévin Commaille
5c41b992b7
ci: Add newline at end of codecov.yaml
...
Co-authored-by: Benjamin Kampmann <ben.kampmann@gmail.com >
2022-04-25 12:53:42 +02:00
Kévin Commaille
5ce6c07d9c
ci: Update codecov github action to v3
2022-04-25 12:44:33 +02:00
Kévin Commaille
8090220963
ci: Add codecov config file
...
Be tolerant for coverage of new PRs
2022-04-25 12:43:22 +02:00
Kévin Commaille
314a9dec6c
ci: Run code coverage for pull requests
2022-04-25 12:08:58 +02:00
Benjamin Kampmann
48fc26a35b
tests for broken room name
2022-04-22 17:45:27 +02:00
Benjamin Kampmann
b420d7022a
typed display name for i18n
2022-04-22 15:35:38 +02:00
Benjamin Kampmann
79e543eceb
fix(state-stores): ensure counter consistency
2022-04-21 16:20:24 +02:00
Benjamin Kampmann
375e976289
formatting
2022-04-21 13:02:55 +02:00
Benjamin Kampmann
071d440567
fix(indexeddb-store): always pad counter with u64 padding size to ensure order consistency
2022-04-21 12:56:32 +02:00
Benjamin Kampmann
d4053e2c54
fix(sled-store): save index as i64 to ensure portability
2022-04-21 12:53:10 +02:00
Benjamin Kampmann
a0ba610e0b
fixing wasm example
2022-04-20 16:35:55 +02:00
Benjamin Kampmann
c995331f57
fixing typo
2022-04-20 16:22:32 +02:00
Benjamin Kampmann
577b45f8ce
activate encryption on base if crypto-store is activated, handle non_exhaustive errors raised
2022-04-20 16:19:55 +02:00
Jonas Platte
0c7e0167c7
Merge pull request #592 from zecakeh/login-sso
2022-04-20 15:45:43 +02:00
Benjamin Kampmann
9761934bf5
fixing features in ci jobs
2022-04-20 15:43:57 +02:00
Kévin Commaille
04d62bbe1e
Apply suggestions to docs
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-04-20 15:35:54 +02:00
Benjamin Kampmann
115300fa5e
Addressing review comments
2022-04-20 15:27:41 +02:00
Benjamin Kampmann
ae8943e050
fixing style
2022-04-20 15:25:56 +02:00
Kévin Commaille
11292b5e5a
fix(sdk): Don't convert SSO login URL parse error to IoError.
2022-04-20 15:21:23 +02:00
Kévin Commaille
559fe35e1b
fix(sdk): Bind SSO login server to 127.0.0.1 instead of localhost
...
Avoid name resolution failure in some devices
2022-04-20 15:21:23 +02:00
Kévin Commaille
32b5e5d48b
feat(sdk): Improve docs for SSO login server's random ports
2022-04-20 15:21:14 +02:00
Benjamin Kampmann
3de9c54552
more feature related fixups
2022-04-20 14:39:42 +02:00
Benjamin Kampmann
b29a50bed5
moving make_store_config features back to sled, fxies #562
2022-04-20 14:36:11 +02:00
Benjamin Kampmann
d36220ed7c
e2e-encrypted weak feature dependency
2022-04-20 14:26:54 +02:00
Benjamin Kampmann
117fd1612b
explain in readme
2022-04-20 14:10:24 +02:00
Benjamin Kampmann
2c506717c8
setting rust-version
2022-04-20 14:08:27 +02:00
Damir Jelić
e57721be09
Merge branch 'poljar/session-timestamp-improvements'
2022-04-20 12:11:53 +02:00
Damir Jelić
954bba6fdf
fix(crypto): Don't put the session timestamps behind an Arc
2022-04-20 10:49:32 +02:00
Damir Jelić
edbf831a0f
fix(crypto): Make sure to sort the sessions by timestamp before encrypting
...
This ensures that we're using the correct Session even if our store
doesn't provide those in the correct order. The set is small anyways, so
this shouldn't have any performance impact.
2022-04-20 10:49:22 +02:00
Damir Jelić
c0172c4858
fix(crypto): Fix an error message
2022-04-20 10:49:22 +02:00
Benjamin Kampmann
06f5b67b23
feat(state_store): Store keys and values encrypted, too
...
Merge pull request #586 from matrix-org/ben-remove-store-key
This removes the store_key and replaces it with the new key cipher for both sled and indexeddb state stores. If they are given a passphrase, we are now encrypted/hashing all keys and values stored in the store, no leaking of metadata in any key or value anymore.
2022-04-19 16:46:11 +02:00
Benjamin Kampmann
07c5f625d4
fixing encryption examples
2022-04-19 16:30:20 +02:00
Benjamin Kampmann
805044ed41
Merge branch 'ben-remove-store-key' of github.com:matrix-org/matrix-rust-sdk into ben-remove-store-key
2022-04-19 16:23:29 +02:00
Benjamin Kampmann
4da7d31770
fixing unnecessary lifetimes
2022-04-19 16:22:25 +02:00
Benjamin Kampmann
cdab735ce5
Apply suggestions from code review
...
Co-authored-by: Jonas Platte <jplatte@element.io >
2022-04-19 16:19:30 +02:00
Benjamin Kampmann
e989b9aff7
merge sledstore's EncodeKey and SecureEncodeKey into one
2022-04-19 16:01:18 +02:00
Damir Jelić
a8466f5069
refactor(crypto): Use the ruma time types for group sessions as well
2022-04-19 14:07:44 +02:00
Damir Jelić
95a3fe136d
refactor(crypto): Use the ruma time types for the Session timestamps
2022-04-19 14:03:31 +02:00
Benjamin Kampmann
88d1aa615c
remove unnecessary reference making
2022-04-19 12:42:39 +02:00
Benjamin Kampmann
ac8500759c
newline
2022-04-19 12:27:11 +02:00
Benjamin Kampmann
07f01eb985
typos
2022-04-19 12:26:27 +02:00
Benjamin Kampmann
953d759238
sort and typo
2022-04-19 12:21:26 +02:00
Benjamin Kampmann
9d09401ede
.into instead of ::from
2022-04-19 12:20:41 +02:00
Benjamin Kampmann
872f32a7e0
sorting line order
2022-04-19 12:08:26 +02:00
Benjamin Kampmann
05b3077a7a
fixing lints again
2022-04-19 11:00:13 +02:00
Benjamin Kampmann
8fdd8648c7
Merge remote-tracking branch 'origin/main' into ben-remove-store-key
2022-04-19 10:41:40 +02:00
Benjamin Kampmann
4e8383ea4f
fixing clippy lints
2022-04-19 09:26:28 +02:00
Benjamin Kampmann
80791860fe
fixing style and typos
2022-04-19 09:23:29 +02:00
Benjamin Kampmann
9698a50ad8
fixing timeline for encrypted indexeddb store
2022-04-13 15:52:57 +02:00
Benjamin Kampmann
a390c3b40b
more explicit naming
2022-04-13 15:52:10 +02:00
Benjamin Kampmann
70a5517c5c
make room timeline test more debuggable
2022-04-13 15:23:50 +02:00
Benjamin Kampmann
262bee51b1
also implement room timeline in encrypted fashion on sled store
2022-04-13 15:23:14 +02:00
Benjamin Kampmann
897bb5aed2
new db for every encrypted test
2022-04-12 20:00:11 +02:00
Benjamin Kampmann
24266fe254
fixing ranges
2022-04-12 19:59:55 +02:00
Benjamin Kampmann
5d6c4852b1
fix media content test
2022-04-12 19:37:43 +02:00
Benjamin Kampmann
64e0356756
implementing encrypted keys
2022-04-12 19:17:49 +02:00
Benjamin Kampmann
b611aa2503
remove store key feature and references
2022-04-12 16:58:56 +02:00
Benjamin Kampmann
1cdde23bc4
replace storeky with storecipher in wasm
2022-04-12 16:50:58 +02:00
Benjamin Kampmann
b3c8f80b6e
expose internal functionality for wasm-based storage
2022-04-12 16:50:44 +02:00
Jonas Platte
35f598a095
fix(sdk): Change the default guest_access state to Forbidden
2022-04-12 14:39:30 +02:00
Jonas Platte
ad538f3f28
Upgrade Ruma
2022-04-12 14:39:30 +02:00
Jonas Platte
073d9db29f
chore(crypto): Remove redundant match arms
2022-04-12 14:39:30 +02:00
Benjamin Kampmann
cebe7bee92
adding encrypted tests for indexeddb store
2022-04-12 13:11:59 +02:00
Damir Jelić
7bd0f2c50c
chore(sled): Fix a clippy warning
2022-04-12 13:06:17 +02:00
Benjamin Kampmann
fb8f123616
fixing remaining key lookup
2022-04-12 12:44:34 +02:00
Damir Jelić
87632e7ead
chore(crypto): Update vodozemac
2022-04-12 12:37:56 +02:00
Benjamin Kampmann
88be0ee9c1
fix user id streams
2022-04-12 12:24:11 +02:00
Benjamin Kampmann
000be73e80
making tests more explicit
2022-04-11 23:47:20 +02:00
Benjamin Kampmann
551711261d
integration tests for encrypted version
2022-04-11 22:49:09 +02:00
Benjamin Kampmann
918d95a672
first batch of data for testing encrypted sled store
2022-04-11 22:11:14 +02:00
Benjamin Kampmann
f79e6b87e2
use result
2022-04-11 20:42:35 +02:00
Benjamin Kampmann
529d1e0117
removing store key from sled store - for values
2022-04-11 13:52:08 +02:00
Jonas Platte
0dafd8cd65
chore: Update all unit test module names to the conventional 'tests'
2022-04-08 12:35:54 +00:00
Jonas Platte
1dbb0226ad
feat(sdk): Check server versions after creating the Client
2022-04-08 14:16:55 +02:00
Damir Jelić
05826de639
fix(crypto): Box the RecoveryKey array so moves don't copy the key
2022-04-06 10:02:00 +02:00
Damir Jelić
4e05fe9f4a
refactor(crypto): Simplify the Signing struct
2022-04-06 09:24:57 +02:00
Damir Jelić
26172ded49
ci: Test the WASM example in the CI run
2022-04-05 14:57:13 +02:00
Damir Jelić
814d4dcb8b
chore(xtask): Check the wasm example when running the wasm tests
2022-04-05 14:47:24 +02:00
Damir Jelić
b9f415e81e
chore(sdk): Fix some clippy lints in the wasm example
2022-04-05 14:47:01 +02:00
Damir Jelić
124efe6f67
ci(wasm): Emscripten isn't needed anymore
2022-04-05 14:02:07 +02:00
Damir Jelić
f2e2976496
fix(sdk): Make the wasm_command_bot example compile and work
...
This patch does a couple of things:
1. Fix the compilation of the example, Message -> MessageLike
2. Update Webpack and friends for the example
3. Remove futures-timer's Delay method and use equivalent methods from
Tokio and wasm-timers.
The last point was needed because futures-timer would end up triggering
this error:
ReferenceError: can't access lexical declaration '__wbg_clearTimeout_d8b36ad8fa330187' before initialization
2022-04-05 14:02:07 +02:00
Benjamin Kampmann
44be0cf12a
chore(base): Make fields of RoomInfo and BaseRoomInfo private
...
Merge pull request #569 from matrix-org/jplatte/room-info-privacy
2022-04-05 11:20:12 +02:00
Benjamin Kampmann
64d9a1f633
docs: Add example to print the room history
...
Merge pull request #566 from jsparber/add_timeline_example
2022-04-04 17:21:14 +02:00
Jonas Platte
6f9664c9f4
chore(base): Make fields of RoomInfo and BaseRoomInfo private
2022-04-04 16:35:07 +02:00
Julian Sparber
f1c1b3d319
example: Require sled-state-store for timeline example
2022-04-04 15:33:04 +02:00
Damir Jelić
6007aa7056
fix(crypto): Add some missing zeroization calls in the key export logic
2022-04-04 13:34:13 +02:00
Kévin Commaille
acd8ecbd22
feat(sdk): Retrieve account data from room::Common
2022-04-04 12:15:12 +02:00
Jonas Platte
eab68131e7
chore: Split auxiliary tools into separate crates
2022-03-31 14:37:52 +02:00
Julian Sparber
8807a2abaf
Add example to print the room history
2022-03-31 14:37:38 +02:00
Jonas Platte
e2aab504fb
Move sled state inspector into a separate crate
2022-03-31 14:26:32 +02:00
Jonas Platte
9567f8f28f
Move the crypto benchmarks into a separate crate
...
Avoids issues from circular dev-dependency.
2022-03-31 14:26:32 +02:00
Damir Jelić
1e09577a8a
chore: Make the Verification and OpenStoreError enums non exhaustive
2022-03-30 13:47:56 +02:00
Damir Jelić
155abb262b
chore(crypto-ffi): Add a wildcard pattern to the store opening
...
This is only useful in our workspace, the workspace enables the
state-store in the matrix-sdk-sled crate, which turns an additional enum
variant on.
2022-03-30 13:47:56 +02:00
Damir Jelić
8782e0068f
chore(sdk): Add a wildcard match for the verifcation enum conversion
...
This is needed because we now have multiple consumers of the
matrix-sdk-crypto crate in the workspace. The different consumers
might enable different feature sets.
Compilation of the workspace might fail if the qrcode feature is enabled
on the `matrix-sdk-crypto` crate but disabled on the `matrix-sdk` crate.
This patch adds a wildcard pattern to the Verification enum so we handle
the case where the matrix-sdk qrcode feature remains disabled.
2022-03-30 13:47:56 +02:00
Damir Jelić
66e4ea979c
refactor(crypto-ffi): Use a type alias for the encrypted event type
2022-03-30 13:47:56 +02:00
Damir Jelić
a957a02d5d
refactor(crypto-ffi): Use the parse methods to parse identifiers
2022-03-30 11:10:46 +02:00
Damir Jelić
8079da7b0a
chore(crypto-ffi): Use the the latest matrix-sdk-crypto crate.
2022-03-30 10:44:39 +02:00
Damir Jelić
8793efebc7
chore(crypto): Expose the types module publicly
2022-03-30 10:44:39 +02:00
Damir Jelić
f5d2ea0efa
fix(sdk): Use a consistent naming scheme for our features
2022-03-30 10:26:38 +02:00
Damir Jelić
e720b4d5e3
chore(sdk): Fix a clippy warning for the sso_login feature
2022-03-30 10:26:38 +02:00
Damir Jelić
d3f4db258f
chore(crypto): Remove some dead code mentioning the sled_cryptostore feature
2022-03-30 10:26:38 +02:00
Damir Jelić
13d1048d7e
fix(sled): Allow the crypto-store to be used without the state-store
2022-03-30 10:26:38 +02:00
Jonas Platte
d9001409a2
chore(sdk): Remove qrcode from default features
...
Breaking change: If you need QR code support, you now need to enable the
qrcode feature on the matrix-sdk crate.
2022-03-30 10:03:29 +02:00
Jonas Platte
890c191884
Clean up toml formatting
2022-03-30 10:03:29 +02:00
Jonas Platte
8d3441b51b
Deduplicate / clean up EncodeKey trait
2022-03-30 10:03:29 +02:00
Jonas Platte
1912a63f17
chore(indexeddb): Implement SafeEncode for RoomAccountDataEventType
2022-03-30 10:03:29 +02:00
Jonas Platte
e4c6040de4
Generalize SafeEncode tuple implementations
2022-03-30 10:03:29 +02:00
Jonas Platte
b8c7ab9867
fix(indexeddb): Add missing as_encoded_string call
2022-03-30 10:03:29 +02:00
Jonas Platte
d56d50e96f
Use field shorthands in tracing macros
...
Automated using search `\b(\w+) = \?\1` => replace `?$1`.
2022-03-30 10:03:29 +02:00
Jonas Platte
f375d8c141
Move ? in tracing macros away from =
...
To make it obvious that it's more like a modifier to the field value,
rather than a single `=?` operator.
2022-03-30 10:03:29 +02:00
Jonas Platte
7f9e1c8799
Remove unnecessary uses of event content enums
2022-03-30 10:03:29 +02:00
Jonas Platte
ed52cfc43c
fix(base): Propagate push rules deserialization errors
...
… from BaseClient::get_push_rules.
2022-03-30 10:03:29 +02:00
Jonas Platte
09893651a4
Remove unnecessary allocations
2022-03-30 10:03:29 +02:00
Benjamin Kampmann
7e48034cc8
Merge pull request #555 from jsparber/fix_timeline
...
store: Make sure that event position in store is contiguous
2022-03-29 12:26:27 +02:00
Jonas Platte
8815e77576
chore: Upgrade Ruma
2022-03-28 18:21:32 +02:00
Jonas Platte
db9b3febd3
Upgrade Ruma
2022-03-28 17:54:06 +02:00
Damir Jelić
36d1ba34a9
chore(crypto): Rename the Other key enum variant into Unknown
2022-03-28 17:05:00 +02:00
Damir Jelić
105961a78d
chore(crypto): Change the expect message for device key serialization
...
Co-authored-by: Benjamin Kampmann <ben.kampmann@gmail.com >
2022-03-28 17:05:00 +02:00
Damir Jelić
23040a1bf7
refactor(crypto): Use vodozemac types for the cross signing and device keys
2022-03-28 17:05:00 +02:00
Julian Sparber
07066e1c1f
store: Make sure that event position in store is contiguous
...
This fixes the breaking gap in the timeline when reading the events from
store.
2022-03-28 15:50:48 +02:00
Damir Jelić
4b58017951
chore(crypto): Add umlauts to a copyright holder
...
Co-authored-by: Jonas Platte <jplatte@element.io >
2022-03-28 14:24:38 +02:00
Damir Jelić
5db5341974
chore(crypto): Use a specialized CrossSigning type
2022-03-28 13:53:01 +02:00
Damir Jelić
9a3d097331
chore(crypto): Use a specialized DeviceKeys type
2022-03-28 13:53:01 +02:00
Damir Jelić
c50b369d72
fix(crypto): Remove some unwraps when creating inbound sessions
2022-03-28 13:48:18 +02:00
Julian Sparber
28893ec388
fix(store): Fix sync message order
2022-03-25 14:47:55 +01:00
Damir Jelić
6968edd704
feat(crypto): Start uploading fallback keys to the server
2022-03-25 13:11:53 +01:00
Damir Jelić
f4010b597f
feat(crypto): Use a specialized SignedKey type instead of the Ruma type
2022-03-25 13:11:53 +01:00
Damir Jelić
2bacbf1b53
feat(crypto): Add a store error variant for breaking database format changes
2022-03-25 11:15:29 +01:00
Damir Jelić
0ce74b956c
fix(sled): Throw an error if we can't upgrade our database
2022-03-25 11:15:29 +01:00
Damir Jelić
e2725483e4
refactor(crypto): Make it clear that olm decryption failures are normal
2022-03-25 11:15:29 +01:00
Damir Jelić
03990ab19e
test(crypto): Improve the device saving test
...
The test didn't check if we can actually save/restore multiple devices,
this patch fixes this.
2022-03-25 11:15:29 +01:00
Damir Jelić
8b89023aff
feat(indxeddb): Use the new store-cipher to encrypt our values
2022-03-25 11:15:29 +01:00
Damir Jelić
75de41bb2e
feat(sled): Use the new store cipher to encrypt our keys and values
2022-03-25 11:15:29 +01:00
Damir Jelić
54e555f295
refactor(crypto): Don't use getrandom directly, we already use the rand crate
2022-03-25 11:15:29 +01:00
Damir Jelić
dbb500c4b8
feat(crypto): Switch to vodozemac for the olm/megolm support
2022-03-25 11:15:29 +01:00
Damir Jelić
61ca5c7aab
fix(base): Make room invitations for previously-left rooms work
2022-03-24 12:35:08 +01:00
Jonas Platte
ae3b4f6640
Add a failing test for room invitations putting a left room back into invited
2022-03-24 12:21:21 +01:00
Jonas Platte
9ff6c1bc16
chore(base): Simplify BaseRoomInfo::handle_state_event
2022-03-23 14:25:14 +01:00
Jonas Platte
68a6655cb4
chore(base): Get rid of confusing double-as_ref
2022-03-23 14:25:14 +01:00
Alexandra
ec97c354e2
feat(sdk): Detect invalid .well-known endpoint response
2022-03-23 11:57:13 +01:00
Jonas Platte
db079065e4
refactor(sdk): Some cleanup of the HTTP code
2022-03-23 11:29:12 +01:00
Jonas Platte
cbebf8c4fe
Don't import reqwest::Client
...
… to avoid confusion with the SDKs Client type.
2022-03-23 11:04:28 +01:00
Jonas Platte
92a532a4ba
Inline single-use method HttpClient::send_request
2022-03-23 10:50:15 +01:00
Jonas Platte
4601b43651
Remove unnecessary specialized send-request method from HttpClient
2022-03-23 10:43:14 +01:00
Benjamin Kampmann
9ebabf818d
Chore: Add tracing span to request sending
2022-03-21 20:45:22 +01:00
Jonas Platte
68385f0ff7
Add tracing span to request sending
2022-03-18 14:40:26 +01:00
Jonas Platte
3b1400b6f8
Merge pull request #539 from matrix-org/jplatte/cleanup
2022-03-17 14:44:30 +01:00
Jonas Platte
5b5e13fe2c
Remove request field from Client::keys_upload tracing span
...
It results in a lot of log noise for initial syncs.
2022-03-17 14:26:28 +01:00
Jonas Platte
7b8568f5c8
Simplify get_or_upload_filter example
2022-03-17 14:24:50 +01:00
Jonas Platte
ea3ca1a8ca
Remove unnecessary semicolons after if-let expressions
2022-03-17 14:23:55 +01:00
Jonas Platte
baa869552f
Implement Default for SyncSettings in terms of SyncSettings::new
...
… rather than the other way around.
2022-03-17 14:23:11 +01:00
Jonas Platte
c9c31fa1c2
Simplify SyncSettings::default()
2022-03-17 14:22:40 +01:00
Jonas Platte
5ff38eff00
Activate tracing-subscriber's env-filter feature
...
This allows the log level of examples to be controlled using the
RUST_LOG environment variable.
2022-03-17 14:22:12 +01:00
Jonas Platte
f9420acdfd
Remove unhelpful Client self fields from tracing spans
...
Client's Debug implementation just returns "Client".
2022-03-17 14:21:41 +01:00
Jonas Platte
c83f8f2a45
feat(sdk): Add convenience methods for getting state events of statically-known type
2022-03-16 14:26:18 +01:00
Damir Jelić
4741df627d
feat(sdk): Add a method to check if the other side has scanned a qr verification
2022-03-16 14:23:35 +01:00
Julian Sparber
04e5434c9a
QrVerification: Use consistent name for re-exported method
2022-03-16 14:06:26 +01:00
Julian Sparber
adf463a4be
QrVerification: expose whether the QrCode was scanned by the other device
2022-03-16 13:05:15 +01:00
Damir Jelić
a455f23520
docs(store-cipher): Make the docs about the way the StoreCipher works clearer
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-03-16 12:48:16 +01:00
Damir Jelić
3af08059da
fix(store-cipher): Use the MacKeySeed type alias in more places
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-03-16 12:48:16 +01:00
Damir Jelić
bf3d2ebea3
chore(store-cipher): Rename the store-key crate and it's main type
2022-03-16 12:48:16 +01:00
Damir Jelić
8ab7bfd5fa
fix(store-key): Zeroize the derived MacKeys
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-03-16 12:48:16 +01:00
Damir Jelić
d03eefc49a
docs(store-key): Improve the docs a bit
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-03-16 12:48:16 +01:00
Damir Jelić
5766b65eeb
feat(store-key): Add a feature flag to enable WASM support
2022-03-16 12:48:16 +01:00
Damir Jelić
11d27007fc
fix(store-key): Add some missing zeroize calls
2022-03-16 12:48:16 +01:00
Damir Jelić
4ed06be10d
chore(store-key): Add more crate metadata
...
Co-authored-by: Benjamin Kampmann <ben.kampmann@gmail.com >
2022-03-16 12:48:16 +01:00
Damir Jelić
6a0bda47ae
chore(store-key): Rename the crate
...
Co-authored-by: Benjamin Kampmann <ben.kampmann@gmail.com >
2022-03-16 12:48:16 +01:00
Damir Jelić
41466eae66
feat(store-key): Add a dedicated store key crate
...
This crate can be used to add at-rest encryption support for a
matrix-sdk state store or crypto store.
2022-03-16 12:48:16 +01:00
Damir Jelić
440b49ce5c
feat(sdk): Add store specific errors to the ClientBuildError
...
This makes it easier to handle store specific errors while building a
Client as long as the user is using one of our main stores.
2022-03-16 12:29:10 +01:00
Kévin Commaille
7b8c52b043
indexeddb: Move attribute below docs
2022-03-16 10:30:56 +01:00
Kévin Commaille
3a94c2115f
sdk: Add store opening errors to ClientBuildError
2022-03-15 14:43:02 +01:00
Kévin Commaille
6785c07793
indexeddb: Make store opening error more specific
2022-03-15 14:43:02 +01:00
Kévin Commaille
e23b22857f
sled: Make store opening error more specific
2022-03-15 14:42:54 +01:00
Jonas Platte
3bf5388da0
feat(sdk): Fetch supported matrix versions from server in initialization
2022-03-14 15:23:13 +01:00
Jonas Platte
15df8fef95
Fix broken tests
2022-03-14 15:08:54 +01:00
Jonas Platte
8df7e1cc8b
Fix hanging tests
2022-03-14 15:08:48 +01:00
Jonas Platte
7b2dfa39cf
Remove Client::get_supported_versions
...
This is now always done as part of constructing the Client, unless the
user actively opted out.
2022-03-14 12:57:58 +01:00
Jonas Platte
fdc8f79728
Merge branch 'main' into jplatte/server-versions
2022-03-14 12:56:57 +01:00
Benjamin Kampmann
f76bcda64f
feat(client): Replacing ClientConfig with a ClientBuilder to configure how the client will be set up
...
Merge pull request #533 from matrix-org/jplatte/client-builder
2022-03-14 12:43:38 +01:00
Jonas Platte
718fa18e7f
Merge branch 'main' into jplatte/client-builder
2022-03-14 11:26:45 +01:00
Damir Jelić
b8b61ce214
refactor(sdk): Scope the encryption specific Client methods behind a struct
2022-03-14 10:16:19 +01:00
Jonas Platte
a2ad774112
Add ClientBuilder::server_name
2022-03-14 10:02:31 +01:00
Jonas Platte
d94ba8c64f
Remove Client::for_user_id
2022-03-14 10:02:31 +01:00
Jonas Platte
81d07d886c
Rename Client::{new_from_user_id => for_user_id}
2022-03-13 19:56:26 +01:00
Jonas Platte
147e948fe6
Replace ClientConfig with ClientBuilder
...
This includes a few not-strictly-related changes that made sense to do at the
same time:
* Check for a functioning homeserver via get_supported_versions regardless of
whether a homeserver URL or user ID was supplied
* Rename use_discovery_response to respect_login_well_known
* Small appservice documentation improvement because those docs had to be
touched anyways
* Some test refactorings in tests that had to be touched anyways
2022-03-13 19:56:26 +01:00
Kévin Commaille
d8c7fbd9dc
sdk: Create Encryption struct
...
Lower the API surface of Client
2022-03-12 13:30:55 +01:00
Jonas Platte
bd7fbea155
Fix intra-doc link
2022-03-11 18:04:32 +01:00
Jonas Platte
628e2fb716
Allow configuring assert_identity on the client level only
...
Completely removing it from RequestConfig is left up to a future refactoring.
2022-03-11 15:31:11 +01:00
Jonas Platte
503f4d73a0
Merge pull request #532 from matrix-org/jplatte/ctors
2022-03-11 13:05:20 +01:00
Jonas Platte
8a927df2b3
Rename PrivateCrossSigningIdentity::{new_with_account => with_account}
2022-03-11 12:48:30 +01:00
Jonas Platte
14ddcfb06e
Remove new_ prefix from ToDeviceRequest ctors
2022-03-11 12:48:30 +01:00
Jonas Platte
932ef6270b
Remove new_ prefix from OlmMachine ctors
2022-03-11 12:48:30 +01:00
Jonas Platte
1be68f57a5
Merge BaseClient impl blocks
2022-03-11 12:36:08 +01:00
Jonas Platte
cfdf4a032e
Rename BaseClient::{new_with_store_config => with_store_config}
2022-03-11 12:36:08 +01:00
Jonas Platte
f5a7a1bcf0
Rename AppService::{new_with_config => with_config}
2022-03-11 12:36:08 +01:00
Jonas Platte
e60b07336d
Rename Client::{new_with_config => with_config}
2022-03-11 12:36:08 +01:00
Jonas Platte
48660c482f
Use regular builder pattern for ClientConfig::store_config
2022-03-11 12:36:00 +01:00
Jonas Platte
27ee7c32ca
Remove new_with_* constructors for StoreConfig
...
The regular builder pattern works just fine for the stores.
2022-03-11 11:49:01 +01:00
Benjamin Kampmann
88f1552a70
feat(stores): Improve Store initialisation to allow for reusing the same instance
...
Merge pull request #523 from zecakeh/stores
2022-03-11 11:40:12 +01:00
Kévin Commaille
faa5cf54eb
indexeddb: Make make_store_config public
2022-03-10 17:42:37 +01:00
Kévin Commaille
2bdc754140
ci: Lint matrix-sdk-crypto with a separate command
2022-03-10 17:29:20 +01:00
Kévin Commaille
597999acba
sdk-base: Add constructors with stores for StoreConfig
2022-03-10 17:29:19 +01:00
Kévin Commaille
81605b731d
sdk-base: Fix wording on StoreConfig docs
2022-03-10 17:29:19 +01:00
Kévin Commaille
d7673257b4
stores: Rename make_config to make_store_config
2022-03-10 17:29:19 +01:00
Kévin Commaille
54c8b4f8bb
sdk-base: Remove BaseClientConfig
2022-03-10 17:29:15 +01:00
Kévin Commaille
ad31540b10
sdk: Don't enable store encryption by default
2022-03-10 17:28:34 +01:00
Kévin Commaille
8c7bbb0e07
sdk: Update store setup instructions for encryption.
2022-03-10 17:22:36 +01:00
Kévin Commaille
0f60dfcfc5
sdk: Re-export stores and store config
2022-03-10 17:15:18 +01:00
Kévin Commaille
0327b4f8fc
indexeddb: Add methods to create a StoreConfig
2022-03-10 17:15:18 +01:00
Kévin Commaille
4b7f05e913
sled: Add a method to create a StoreConfig
2022-03-10 17:15:18 +01:00
Kévin Commaille
0ea12b3b4a
base: Separate store config from the client config
2022-03-10 17:15:18 +01:00
Kévin Commaille
28a83da421
sdk: Remove default store constructors
2022-03-10 17:15:14 +01:00
Kévin Commaille
4d41f94199
sled: Add helper to open stores for encryption
2022-03-10 17:14:01 +01:00
Kévin Commaille
692f95da79
sled: Add method to create CryptoStore from StateStore
...
Allow to use the same database for both stores
2022-03-10 17:14:00 +01:00
Jonas Platte
872c35efd2
Fix a typo
2022-03-10 16:52:01 +01:00
Jonas Platte
65e7688a3f
Don't require discovery to be mocked in tests
2022-03-10 16:05:51 +01:00
Jonas Platte
b1f2adf9c0
Ensure random request with Request: Send gets a Send future as well
2022-03-10 15:01:10 +01:00
Jonas Platte
81cea84a37
Fetch supported matrix versions from server in initialization
2022-03-10 15:00:40 +01:00
Jonas Platte
5f8d3dec82
Merge pull request #529 from matrix-org/jplatte/event-type
...
Use fine-grained *EventType types
2022-03-10 14:49:31 +01:00
poljar
e5359826e1
Merge pull request #528 from matrix-org/backup-fix
...
Fix the room key backup support in the crypto crate
2022-03-10 14:10:18 +01:00
Jonas Platte
1dec224210
Use fine-grained *EventType types
2022-03-10 13:54:00 +01:00
Damir Jelić
691ea2d138
ci(crypto): Test the crypto crate features when we run the CI
2022-03-10 13:52:31 +01:00
Damir Jelić
4af4faacef
feat(xtask): Add a task to check the crypto crate features
2022-03-10 13:52:31 +01:00
Damir Jelić
54a253c0bf
fix(crypto): Make our backup feature compile again
2022-03-10 13:50:29 +01:00
Jonas Platte
89ff804333
Remove extraneous newline
2022-03-10 13:49:40 +01:00
Jonas Platte
4d16370dba
Merge pull request #527 from matrix-org/jplatte/wasm-ci
2022-03-10 13:49:16 +01:00
Jonas Platte
30b3bd1c3d
Delete complicated and partially broken wasm tests
2022-03-10 13:18:59 +01:00
Jonas Platte
ff15ccaf28
Merge pull request #525 from matrix-org/jplatte/refactor
2022-03-10 12:56:05 +01:00
Jonas Platte
6af9285874
Don't use Raw::from_json where it's not needed
2022-03-10 11:59:31 +01:00
Jonas Platte
9154e93089
Allow other tests to continue when indexeddb test fails
2022-03-10 11:41:01 +01:00
Jonas Platte
ea2c9a2986
ci: Use clippy instead of check for wasm checks
2022-03-10 11:28:55 +01:00
Jonas Platte
c01475701d
Move some wasm CI logic into xtask
2022-03-10 11:02:16 +01:00
Jonas Platte
0721c7ddb2
Add missing ci subcommand description
2022-03-10 10:30:56 +01:00
Jonas Platte
36e4836c06
Merge pull request #522 from matrix-org/jplatte/send-req-refactor
2022-03-10 10:25:50 +01:00
Jonas Platte
b777617515
Replace matches! with ==
2022-03-10 10:12:53 +01:00
Jonas Platte
8a60154882
Use only #[warn], not #[deny] for lints
...
CI passes `-D warnings` to clippy, so there it will be an error either way.
For local development it is nice not to block compilation of dependent
crates on lints though.
2022-03-09 18:13:04 +01:00
Jonas Platte
d2e70c16b4
Deduplicate lint configuration
2022-03-09 18:09:02 +01:00
Jonas Platte
e6d20265bf
Allow rustfmt to format the encryption module again
2022-03-09 18:01:48 +01:00
Jonas Platte
5602deb226
Move encryption module docs into a separate markdown file
2022-03-09 18:00:57 +01:00
Jonas Platte
e4289405f5
Stop importing Result as StdResult
...
The SDK's Result aliases can optionally take the error parameter, so
there is no need to disambiguate this way.
2022-03-09 17:56:26 +01:00
Jonas Platte
76973fdc30
Improve consistency across sending requests with/out identity assertion
2022-03-09 16:48:28 +01:00
Jonas Platte
d5d6b80e08
Inline single-callsite request serialization functions
2022-03-09 15:13:06 +01:00
Jonas Platte
1ed2b8841d
Simplify HTTP request serialization logic
...
… the removed AuthenticationRequired branch was not necessary, Ruma's
`try_into_http_request` will take care of reporting the error.
2022-03-09 15:13:06 +01:00
Jonas Platte
a33898847b
Reduce duration of holding session lock
...
… by cloning the access token out.
2022-03-09 15:13:06 +01:00
Jonas Platte
bc1eb9a792
Merge pull request #521 from matrix-org/jplatte/appservice-refactor
2022-03-09 13:15:59 +01:00
Jonas Platte
3b3fede756
Merge pull request #520 from matrix-org/jplatte/clippy
2022-03-09 12:55:27 +01:00
Jonas Platte
9f72eb9490
Enable more default-off clippy lints
2022-03-09 12:41:57 +01:00
Jonas Platte
2c181bca4f
Consistently use .to_owned() instead of .to_string() for &str => String
2022-03-09 12:41:57 +01:00
Jonas Platte
b67c51c267
Remove unnecessary double reference
2022-03-09 12:41:57 +01:00
Jonas Platte
7fee5b59e8
crypto: Use Box<UserId> instead of String in SignatureError
...
… to make the field's meaning more obvious.
2022-03-09 12:41:56 +01:00
Jonas Platte
5d6f66be54
appservice: Make warp a regular dependency
...
It was optional but always required to be activated.
2022-03-09 10:35:39 +01:00
Jonas Platte
5075c2730c
Move appservice CI logic into xtask
2022-03-09 10:35:11 +01:00
Jonas Platte
1d5ba87b72
ci: Simplify test command by using -p instead of --manifest-path
2022-03-09 10:35:11 +01:00
Damir Jelić
4fa44f90bb
Merge branch 'appservice/fix-user-room-query'
2022-03-09 09:08:04 +01:00
Johannes Becker
a86da98cc2
fix(appservice): urldecode ids for user/room queries
2022-03-07 16:51:06 +01:00
Damir Jelić
6dff06579c
fix(sdk): Ensure that our login_with_sso() Client method is Send
2022-03-07 14:43:42 +01:00
Julian Sparber
38cbf24e8e
Add back homeserver logging for sso login
...
We can't use `.await` inside `info!()` because of
https://github.com/rust-lang/rust/issues/93274
2022-03-07 14:12:00 +01:00
Julian Sparber
642c4f5cfc
Ensure Client::login_with_sso() to be send
...
This removes the `info!()` log because of
https://github.com/rust-lang/rust/issues/93274
2022-03-07 13:11:52 +01:00
Damir Jelić
89e4d47ee1
chore: Bump the dashmap version across our crates
2022-03-07 09:58:00 +01:00
Jonas Platte
896d451c47
Merge pull request #515 from matrix-org/jplatte/ci
2022-03-04 12:10:47 +01:00
Jonas Platte
abe0bf0a29
Enable some useful non-default rustc lints
2022-03-04 11:35:24 +01:00
Jonas Platte
804c8e6c43
ci: Add test and test-features xtask commands
2022-03-04 10:59:17 +01:00
Jonas Platte
b64d855b25
ci: Fix inconsistent formatting
2022-03-04 10:59:17 +01:00
Jonas Platte
beb4ecb581
ci: Remove mentions of non-existant matrix variables
2022-03-04 10:59:17 +01:00
Jonas Platte
ed7667dc8d
ci: Remove unnecessary ${{ }}
2022-03-04 10:59:17 +01:00
Jonas Platte
e136199bfd
ci: Don't run check / build before test
...
It is redundant.
2022-03-04 10:59:17 +01:00
Damir Jelić
95665c8bc0
Merge branch 'poljar/matrix-crypto-ffi'
2022-03-04 10:27:12 +01:00
Damir Jelić
6bb8fd7853
feat: Import the Uniffi based matrix-sdk-crypto bindings
2022-03-04 09:45:50 +01:00
Benjamin Kampmann
b3038545f5
feat(stores): Splitting Sled and Indexeddb Store into separate crates
...
More details in pull request #498 .
2022-03-03 16:32:31 +01:00
Benjamin Kampmann
44fe3a62a1
remove unneeded helper function
2022-03-03 15:38:22 +01:00
Benjamin Kampmann
ba1b3e0c7c
fix the indexeddb tests, that clippy tried to fix
2022-03-03 15:27:21 +01:00
Benjamin Kampmann
6435ea655b
fix testing function wrongly exposed
2022-03-03 13:47:25 +01:00
Benjamin Kampmann
193a5ed3c9
fixing if syntax
2022-03-03 13:07:09 +01:00
Benjamin Kampmann
4e6b80d7df
fix docs
2022-03-03 13:05:32 +01:00
Benjamin Kampmann
e7fb512ae6
adding another encryption wasm tests
2022-03-03 12:59:23 +01:00
Benjamin Kampmann
ab57fb329f
Addressing review remark
2022-03-03 12:57:15 +01:00
Benjamin Kampmann
fd6f4385d4
Merge remote-tracking branch 'origin/main' into ben-splitting-out-store-impls
2022-03-03 12:57:00 +01:00
Jonas Platte
e03ee913f8
Merge pull request #513 from matrix-org/jplatte/xtask
2022-03-03 12:10:02 +01:00
Benjamin Kampmann
8aed72a085
Update crates/matrix-sdk-crypto/src/olm/account.rs
...
Co-authored-by: poljar <poljar@termina.org.uk >
2022-03-03 11:35:02 +01:00
Jonas Platte
2182ebdd16
ci: Fix toolchain installation job name inconsistencies
2022-03-03 11:10:30 +01:00
Jonas Platte
e575c27601
ci: Use uppercase for docs workflow / job name
2022-03-03 11:10:29 +01:00
Jonas Platte
439081e1db
ci: Move wasm and appservice into separate workflows
...
… to reduce the size of `ci.yml` and to allow more fine-grained retries.
2022-03-03 11:10:29 +01:00
Jonas Platte
1968ae60aa
ci: Fix inconsistencies in workflow yml formatting
2022-03-03 11:10:29 +01:00
Jonas Platte
b7a4ca4cff
Create an xtask crate for workspace task automation
...
Initially covering:
* Building docs
* Nightly CI jobs
2022-03-03 11:10:28 +01:00
Jonas Platte
b276087969
ci: Fail if rustdoc raises warnings
2022-03-03 11:10:13 +01:00
Jonas Platte
6e091dd5b8
ci: Use Swatinem/rust-cache@v1 instead of actions/cache@v2
...
Simplifies the cache configuration and could also improve build times by
disabling incremental compilation and potentially caching fewer things
or using a better cache key.
2022-03-03 11:04:07 +01:00
Jonas Platte
ea5478c61c
Merge pull request #510 from matrix-org/jplatte/up-ruma
2022-03-03 09:29:26 +01:00
Jonas Platte
1f2fd380b2
Upgrade Ruma to 0.5.0
2022-03-03 08:59:44 +01:00
Jonas Platte
012954e7f4
ci: Remove --all flag from cargo fmt arguments
...
It is only relevant for non-workspace path dependencies.
2022-03-02 14:34:22 +01:00
Jonas Platte
bc0c8d529e
Simplify Cargo workspace configuration
2022-03-02 14:34:22 +01:00
Jonas Platte
ba3ccc7d3d
Remove explicit 'static lifetimes from constants
2022-03-02 14:34:22 +01:00
Jonas Platte
b3f6d1cf63
Fix inconsistent indentation
2022-03-02 14:32:37 +01:00
Jonas Platte
af0375ca99
Remove unnecessary serialize / deserialize roundtrips
2022-03-02 14:26:49 +01:00
Jonas Platte
a1a0ae62ba
base: Use Option::get_or_insert_with to get rid of an unwrap() call
2022-03-02 14:26:48 +01:00
Damir Jelić
dec4772740
Merge branch 'gnunicorn-limited-ci-runs'
2022-03-02 14:21:54 +01:00
Benjamin Kampmann
85dd7a03e2
fix(MemoryStore): undeadlock timeline saving
...
Merge pull request #509 from matrix-org/gnunicorn/issue508
2022-03-02 13:44:47 +01:00
Benjamin Kampmann
cf674b6a46
Update crates/matrix-sdk-base/src/store/memory_store.rs
2022-03-02 13:14:38 +01:00
Benjamin Kampmann
102f960d25
chore(ci): limit CI to pull-requests & push main
...
Running CI on every push means running it twice for any PR as well as commit on branches that aren't PRs. This limits the CI run to pull-requests against main and pushes to main directly, removing unnecessary workload for the CI and making PRs CI faster.
2022-03-02 13:01:18 +01:00
Benjamin Kampmann
7e2e43c51c
Addressing review
...
Co-authored-by: Jonas Platte <jplatte+git@posteo.de >
2022-03-02 12:34:04 +01:00
Benjamin Kampmann
161d79eaa1
fixing typo
2022-03-02 12:22:47 +01:00
Benjamin Kampmann
eacffb5126
creating better tests, ensure sled and memory store act consistently
2022-03-02 12:13:07 +01:00
Benjamin Kampmann
40fa17f5b7
fixing timeline test
2022-03-02 08:36:10 +01:00
Benjamin Kampmann
9eee50da66
fixing clippy warnings
2022-03-01 15:32:23 +01:00
Benjamin Kampmann
2b9bb422cf
fix(MemoryStore): undeadlock timeline saving
2022-03-01 14:39:27 +01:00
Benjamin Kampmann
ca18fca20b
make Sled store benchmarks use SledStore again
2022-03-01 11:52:52 +01:00
Benjamin Kampmann
33be17d5d0
review requests
2022-03-01 11:52:38 +01:00
Benjamin Kampmann
c2bb1b9ad1
remove unneded braces in ci
2022-03-01 11:20:04 +01:00
Damir Jelić
70490277eb
fix(sdk): Use a short request retry for login/register/get_version methods
2022-02-28 15:26:30 +01:00
Damir Jelić
48fff04ffd
Merge branch 'enable_ruma_unstable_pre_spec'
2022-02-28 14:20:52 +01:00
Manuel Schmidbauer
6bf7b212cf
Changed register to really use short_retry()
2022-02-26 15:19:38 +01:00
Manuel Schmidbauer
01e080842a
Implemented short_retry for intial methods
...
Implemented RequestConfig::short_retry()
Changed few client methods to use it
Adjusted and added tests for it
2022-02-26 15:13:04 +01:00
Benjamin Kampmann
25e98db5aa
missing .to_string
2022-02-25 17:24:50 +01:00
Benjamin Kampmann
fce78ea84e
fixing style
2022-02-25 17:16:19 +01:00
Benjamin Kampmann
e414c88347
fixing integration test example
2022-02-25 17:14:45 +01:00
Benjamin Kampmann
56b3b2cec6
minor fix in ci
2022-02-25 16:11:32 +01:00
Benjamin Kampmann
13c39dbeab
fixing crypto bench
2022-02-25 15:53:36 +01:00
Benjamin Kampmann
5e05411036
fixing typos
2022-02-25 15:40:35 +01:00
Benjamin Kampmann
a6514b0cff
indexeddb formatting
2022-02-25 15:32:59 +01:00
Benjamin Kampmann
2e9ca5642a
more clippy for indexeddb
2022-02-25 15:31:39 +01:00
Benjamin Kampmann
06c9b1abe3
fixing proepr cargo build call
2022-02-25 15:23:04 +01:00
Benjamin Kampmann
c97f7e9ed0
clippy
2022-02-25 15:19:57 +01:00
Benjamin Kampmann
e1f898e6a5
fixing clippy and docs for base and crypto
2022-02-25 13:05:48 +01:00
Benjamin Kampmann
75953d6022
fixing machine doc builds
2022-02-24 17:29:08 +01:00
Benjamin Kampmann
6c90af1bd7
fixing indexeddb test
2022-02-24 17:16:10 +01:00
Benjamin Kampmann
8706ab68f8
fixing formatting
2022-02-24 16:57:39 +01:00
Benjamin Kampmann
9386e9df51
fixing name path
2022-02-24 16:56:14 +01:00
Benjamin Kampmann
418fac8574
fixing missing import for tests
2022-02-24 16:56:06 +01:00
Benjamin Kampmann
4c1e3ac03a
fix missing import
2022-02-24 16:50:57 +01:00
Benjamin Kampmann
4d6d13b9c8
fixing some clippies and wrong package naming
2022-02-24 15:40:24 +01:00
Benjamin Kampmann
cccad6104c
fixing formatting
2022-02-24 15:18:16 +01:00
Benjamin Kampmann
259ba3b794
refactor CI tests
2022-02-24 15:14:54 +01:00
Benjamin Kampmann
9c5cb08ac0
fixing crypto testing problems
2022-02-24 15:14:42 +01:00
Benjamin Kampmann
d7f30167a0
moving safe encode, making regular build work again
2022-02-24 13:02:35 +01:00
Benjamin Kampmann
e20bdfa2b5
cleaning up more cryptocrate
2022-02-23 21:33:31 +01:00
Benjamin Kampmann
12cf187e51
indexeddb store and passphrase opening
2022-02-23 21:07:39 +01:00
Benjamin Kampmann
ed0974eba3
re-integrate sled and indexeddb stores into base
2022-02-23 19:38:35 +01:00
Benjamin Kampmann
692f9d893a
chore(CI): also skip docs making on draft PRs
2022-02-23 16:07:16 +01:00
Benjamin Kampmann
21887877da
chore(CI): limit CI runs to non-draft PRs and manual dispatching
2022-02-23 16:04:05 +01:00
Julian Sparber
0dd623970b
Enable 'unstable-pre-spec' ruma feature
2022-02-23 15:52:19 +01:00
Benjamin Kampmann
73227623e6
one more fmt
2022-02-23 15:46:44 +01:00
Benjamin Kampmann
eeea757719
clippy and formatting
2022-02-23 15:44:36 +01:00
Benjamin Kampmann
f6a3c765e9
Merge remote-tracking branch 'origin/main' into ben-splitting-out-store-impls
2022-02-23 15:33:38 +01:00
Benjamin Kampmann
8414718371
feat(StateStore): Adding forward and backwards streams for room timelines
...
Merge pull request #486 from jsparber/timeline_stream
2022-02-23 14:38:14 +01:00
Benjamin Kampmann
78af96dab3
Clippy and Cargo fmt
2022-02-23 12:50:57 +01:00
Benjamin Kampmann
2598001c8f
room version simplification
2022-02-23 12:40:37 +01:00
Benjamin Kampmann
c22b4fcfb2
minor refactor for simplicity
2022-02-23 12:37:10 +01:00
Damir Jelić
2b20055eb5
Merge branch 'test-refactor'
2022-02-23 10:30:23 +01:00
Damir Jelić
e846fedc3f
feat(sdk): Support logging in using SSO with an identity provider
2022-02-23 10:27:07 +01:00
Julian Sparber
980076fd73
Merge remote-tracking branch 'origin/main' into timeline_stream
2022-02-22 17:30:51 +01:00
Julian Sparber
3378d18ca8
store: Add comment why we can ignore unexpected TimelineSlices
2022-02-22 16:49:42 +01:00
Julian Sparber
70e826ff25
Fix style issue
2022-02-22 15:48:56 +01:00
Julian Sparber
890a8675c9
store: Use BoxStream type without explicit lifetime
2022-02-22 15:43:26 +01:00
Julian Sparber
7627c142c4
Add method to optain timeline stream in one direction
2022-02-22 15:42:39 +01:00
Julian Sparber
84c46affa3
Fix example for Room::Common::timeline()
2022-02-22 12:51:44 +01:00
Benjamin Kampmann
5b1746e451
Merge pull request #503 from ShadowJonathan/labs-folder
...
Add `labs/` folder
2022-02-22 12:01:47 +01:00
Julian Sparber
d7592cce29
Merge remote-tracking branch 'origin/main' into timeline_stream
2022-02-22 11:47:17 +01:00
Julian Sparber
088086715f
store: Save timeline to IndexedDbStore
2022-02-22 11:43:12 +01:00
Jonathan de Jong
7c9d139031
Apply suggestions from code review
...
Co-authored-by: Benjamin Kampmann <ben.kampmann@gmail.com >
2022-02-21 22:08:41 +01:00
Jonathan de Jong
28ac6f9f52
add labs folder
2022-02-21 21:37:56 +01:00
Jonas Platte
b39a72ceac
matrix-sdk-test: Stop relying on event enum Serialize impls
...
In the latest version of Ruma, the event enums no longer implement
`Serialize` because it was somewhat of a footgun when custom /
unrecognized events were involved.
2022-02-21 14:50:41 +01:00
Benjamin Kampmann
6aeb382706
move state inspector for sled store into corresponding crate
2022-02-21 12:08:45 +01:00
Benjamin Kampmann
87cd9a3afc
clean up base
2022-02-18 20:41:42 +01:00
Benjamin Kampmann
95384f0f33
make encryption in new crates optional
2022-02-18 18:50:35 +01:00
Benjamin Kampmann
00ea5d9cad
moving sled cryptostore, too
2022-02-18 18:46:59 +01:00
Benjamin Kampmann
1563ecdf1a
Merge pull request #499 from matrix-org/ben-docs-for-custom-http-client
...
Minor improvements on ClientConfig
2022-02-17 20:37:47 +01:00
Benjamin Kampmann
7ab8872dd5
fix(Version): removing (crate only) VERSION const
2022-02-17 19:25:09 +01:00
Benjamin Kampmann
5d812d4aa7
fixing style
2022-02-17 19:09:10 +01:00
Benjamin Kampmann
0ca6ec1377
moving sled state store into separate crate
2022-02-17 19:02:17 +01:00
Benjamin Kampmann
1d0d32858b
fix(ClientConfig): Do not expose crate version in user agent anymore
2022-02-17 18:53:32 +01:00
Julian Sparber
8e80e02a78
Add test for matrix_sdk::room::Common::timeline()
...
The test is only run when the `sled_state_store` feature is enabled.
This also changes the test_json::MORE_SYNC and test_json::MORE_SYNC_2 to
not responsed with a limited timeline.
2022-02-17 18:32:44 +01:00
Julian Sparber
9e7bee89c8
Add test for timeline cache
2022-02-17 18:32:44 +01:00
Julian Sparber
fb3edeb206
store: Save timeline to MemoryStore
2022-02-17 18:32:36 +01:00
Julian Sparber
516aa26589
store: Save timeline to SledStore
...
This writes slices from StateChanges::timeline to the SledStore.
The cache is removed when ever a limited sync response is received or
when an event already known to the store is received.
Stored events are redacted when a redaction event is received.
2022-02-17 16:15:17 +01:00
Julian Sparber
7d19e9aa34
test: Add mocked responses need for timeline storage
2022-02-17 16:15:17 +01:00
Julian Sparber
64c49cd137
Add stream to obtain the timeline of a room
2022-02-17 16:15:17 +01:00
Julian Sparber
c5950ac929
common: add TimelineSlice
...
The TimelineSlice is a slice of the timeline of a room and contains the
start and end of the slice.
2022-02-17 16:13:04 +01:00
Benjamin Kampmann
ea92bc676c
Merge remote-tracking branch 'origin/main' into ben-splitting-out-store-impls
2022-02-17 16:03:07 +01:00
Benjamin Kampmann
839136118f
fixing style
2022-02-17 13:06:44 +01:00
Benjamin Kampmann
6751413673
Merge remote-tracking branch 'origin/main' into ben-docs-for-custom-http-client
2022-02-17 13:01:57 +01:00
Benjamin Kampmann
094fb176b6
chore: remove unused lifetime found by clippy
2022-02-17 12:13:56 +01:00
Benjamin Kampmann
75f45c8df6
chore: Update clippy, removes deprecations to make clippy happy
2022-02-17 12:12:19 +01:00
Benjamin Kampmann
e9e0ba216b
chore: fixing formatting
2022-02-17 11:49:49 +01:00
Benjamin Kampmann
bbc92d912f
docs(ClientConfig): Add example for customn reqwest::ClientBuilder
2022-02-17 11:43:20 +01:00
Benjamin Kampmann
81e90c5699
chore(ClientConfig): Simplify user agent storing
2022-02-17 11:40:59 +01:00
Benjamin Kampmann
54303a03bf
feat(sdk): Move Account related functions from Client into a new separated Account struct
...
Create Account struct
2022-02-16 19:51:16 +01:00
Benjamin Kampmann
78ea330d3a
Merge remote-tracking branch 'origin/main' into pr/zecakeh/487
2022-02-16 18:30:24 +01:00
Benjamin Kampmann
93c46280ab
feat(sdk): Add method to get homeserver capabilities
...
Merge pull request #495 from zecakeh/capabilities
2022-02-16 18:27:04 +01:00
JCWasmx86
c119d71d8b
Added support for logging in with specific SSO-Provider
2022-02-16 16:46:08 +01:00
Pass Automated Testing Suite
1e0a240701
feat(sdk): Support to autogenerate thumbnails for image attachments
2022-02-16 16:04:46 +01:00
Kévin Commaille
2f7d271c16
fix(sdk): Add license to attachment.rs
2022-02-15 19:15:06 +01:00
Kévin Commaille
9e545c34ba
fix(sdk): Fix clippy warning
2022-02-15 19:00:39 +01:00
Kévin Commaille
69b0b04e70
fix(sdk): Add ruma feature for blurhash support
2022-02-15 18:43:56 +01:00
Kévin Commaille
de8aa7b4f7
fix(sdk): Simplify code in room::Joined::send_attachment
2022-02-15 18:15:59 +01:00
Kévin Commaille
ebd913f50f
fix(sdk): Fix dead links in AttachmentConfig docs
2022-02-15 18:15:59 +01:00
Kévin Commaille
409afc6684
feat(sdk): Create AttachmentConfig struct
2022-02-15 18:15:59 +01:00
Kévin Commaille
c2c9d5ecc0
fix(sdk): Enable image_proc with image_rayon
2022-02-15 18:15:59 +01:00
Kévin Commaille
e926d7e928
chore: Update image dependency
2022-02-15 18:15:59 +01:00
Kévin Commaille
78489391d2
feat(sdk): Add method to send attachments with generated thumbnails
2022-02-15 18:15:59 +01:00
Kévin Commaille
5dc7dfd4c8
feat(sdk): Add method to generate thumbnails from images
2022-02-15 18:15:58 +01:00
Kévin Commaille
0436780292
feat(sdk): Allow to add info and thumbnail to attachments
2022-02-15 18:15:58 +01:00
Kévin Commaille
6389749931
fix(sdk): Return whole responses in Account
2022-02-15 18:15:05 +01:00
Kévin Commaille
abed1e2986
fix(sdk): Fix Account docs
...
Add a license and fix the dead links.
2022-02-15 18:15:05 +01:00
Kévin Commaille
9449b3ef23
feat(sdk): Add more methods to Account
...
- get_profile
- change_password
- deactivate
- get_3pids
- request_3pid_email_token
- request_3pid_msisdn_token
- add_3pid
- delete_3pid
2022-02-15 18:15:05 +01:00
Kévin Commaille
30d3cafa0c
feat(sdk): Make upload_avatar return an MXC URI
2022-02-15 18:15:05 +01:00
Kévin Commaille
467005b603
feat(sdk): Move account-related methods to Account struct
...
Methods moved from Client to Account:
- display_name renamed to get_display_name
- set_display_name
- avatar_url renamed to get_avatar_url
- set_avatar_url
- avatar renamed to get_avatar
- upload_avatar
2022-02-15 18:15:05 +01:00
Kévin Commaille
c67d5afaf4
feat(sdk): Add method to get homeserver capabilities
2022-02-15 17:42:12 +01:00
Benjamin Kampmann
393cfb1851
move indexeddb cryptostore into new crate
2022-02-15 15:09:31 +01:00
Damir Jelić
a4ccbf0386
Merge branch 'up-ruma'
2022-02-15 14:46:18 +01:00
Damir Jelić
f220f2e743
fix(crypto): Remove an unused lifetime
2022-02-15 12:32:53 +01:00
Benjamin Kampmann
5cae4e08af
making tests pass again
2022-02-14 17:38:58 +01:00
Benjamin Kampmann
e928d02c6f
Move indexeddb out into a separate crate
2022-02-14 17:00:55 +01:00
Benjamin Kampmann
95e06ec732
Merge pull request #492 from zecakeh/fix-docs
...
fix(doc): Build nightly docs with correct features
2022-02-14 12:03:21 +01:00
Kévin Commaille
0570cd9439
fix(doc): Build nightly docs with correct features
2022-02-13 10:22:05 +01:00
Jonas Platte
c3d9c73d00
Make identifier parsing easier to read
...
… by using `Id::parse` instead of `Box::<Id>::try_from`.
2022-02-12 04:20:37 +01:00
Jonas Platte
a7dcd26588
Remove unused variable from test
2022-02-12 04:15:50 +01:00
Jonas Platte
735d9e5894
Use user_id! macro in more tests
2022-02-12 04:15:48 +01:00
Jonas Platte
8e41bccf8b
Upgrade Ruma
2022-02-11 20:45:22 +01:00
Daniel García Moreno
4b5aae1123
Do not fail when no session if force_auth
...
It looks like the force_auth is working correctly when restoring the
session, but it's not working with the call to client.login, so it
cannot be used.
The access_token is not available in the login query, so if the option
force_auth is set, this call will fail always. This patch just ignores
the force_auth if there's no session, so any query will work when
force_auth is true.
Fix https://github.com/matrix-org/matrix-rust-sdk/issues/488
2022-02-11 15:22:39 +01:00
Benjamin Kampmann
8538bdcce2
fix[state store]: Persist stripped rooms in the right bucket
...
fixes #467 as well as persistence problems with the indexeddb store
2022-02-07 11:53:31 +01:00
Benjamin Kampmann
7aa99448c3
fix style
2022-02-04 18:02:00 +01:00
Benjamin Kampmann
29c851f463
fixing indexeddb store
2022-02-04 18:01:37 +01:00
Benjamin Kampmann
d20abe05ed
lookup sync-token in proper bucket
2022-02-04 17:47:01 +01:00
Benjamin Kampmann
560ef86747
fixing style
2022-02-04 14:20:51 +01:00
Benjamin Kampmann
e68c75451e
fixing failing test and naming convention
2022-02-04 14:18:26 +01:00
Benjamin Kampmann
355bb0a091
fixing style
2022-02-04 12:21:31 +01:00
Benjamin Kampmann
2a8c6dabaf
Re-add population test
2022-02-04 12:20:10 +01:00
Benjamin Kampmann
772a585b80
stick to naming convention, clarify name
2022-02-04 12:10:53 +01:00
Benjamin Kampmann
51bf07fc34
fixing #467
2022-02-04 12:10:22 +01:00
Erik Johnston
59d21d9683
Replace uses of Vec::drain(..) with into_iter
...
`drain` is designed to be used when you want to reuse the `Vec` or only
move out a subset range. Using `.into_iter()` is more efficient and
idiomatic, and can be dropped entirely when used in `for` loops.
2022-02-03 14:43:14 +00:00
Benjamin Kampmann
1286357bcf
Merge pull request #414 from gnunicorn/ben-wasm-store
...
IndexedDB support for wasm/browser environments
2022-02-03 09:14:54 +01:00
Benjamin Kampmann
fa60881e2d
disable broken test
2022-02-02 20:34:52 +01:00
Benjamin Kampmann
990b897e94
switch tokio:test to async_test
2022-02-02 15:10:24 +01:00
Benjamin Kampmann
64709f1d6b
fixing style
2022-02-02 14:54:29 +01:00
Benjamin Kampmann
b8d93d0179
implementing room removal for indexeddb
2022-02-02 14:53:21 +01:00
Benjamin Kampmann
666bec48bc
fixing indexeddb types merge
2022-02-02 14:25:34 +01:00
Benjamin Kampmann
7e008d00e4
fixing linux tests
2022-02-02 14:10:04 +01:00
Benjamin Kampmann
c07c284c5e
fixing docs for await
2022-02-02 14:03:07 +01:00
Benjamin Kampmann
b4d5ad95cf
fixing style
2022-02-02 13:15:54 +01:00
Benjamin Kampmann
ea959a17e2
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2022-02-02 13:05:52 +01:00
Benjamin Kampmann
e2c6dc33fb
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2022-02-02 12:16:49 +01:00
Damir Jelić
261772c4e2
chore: Upgrade our deps
2022-02-02 10:27:03 +01:00
Damir Jelić
27eed9d9bd
refactor(matrix-sdk): Use the ruma cancel code for mismatched sas
2022-02-01 16:10:06 +01:00
Jonas Platte
8a97936228
Fix one more clippy warning
2022-02-01 15:44:22 +01:00
Jonas Platte
0df1f6007b
Silence invalid clippy warnings
2022-02-01 15:44:16 +01:00
Benjamin Kampmann
8270304485
Fix build warnings and clippy lints
2022-02-01 15:30:09 +01:00
Benjamin Kampmann
93c75c1e4d
fixing build warnings and clippy lints
2022-02-01 15:09:58 +01:00
Jonas Platte
2f67b62509
Unbreak wasm_command_bot compilation
2022-02-01 15:08:02 +01:00
Jonas Platte
74172dac32
Activate ruma's rand feature unconditionally in matrix-sdk, matrix-sdk-crypto
...
… because it is required for `TransactionId::new()`.
2022-02-01 15:08:02 +01:00
Jonas Platte
96d9fd80eb
Silence new clippy lint occurrence
2022-02-01 15:08:02 +01:00
Jonas Platte
8dec390258
Upgrade Ruma
2022-02-01 15:08:01 +01:00
Jonas Platte
6baffc4b0b
Refactor EncodeKey implementations
2022-02-01 15:05:10 +01:00
Jonas Platte
c6594edc92
Use faster sorting algorithm
...
… because Clippy complained.
2022-02-01 15:05:10 +01:00
Jonas Platte
80e8d4fbd5
Remove unnecessary copying
2022-02-01 15:05:10 +01:00
Jonas Platte
aa4a31d81b
crypto: Refactor some test code
2022-02-01 15:05:10 +01:00
Jonas Platte
df93cfde8b
Remove unnecessary Result from private function return type
2022-02-01 15:05:10 +01:00
Jonas Platte
f56f27a2e1
Remove unnecessary parentheses
2022-02-01 15:05:10 +01:00
Jonas Platte
3e496dba50
Remove unnecessary .iter() calls
2022-02-01 15:05:10 +01:00
Damir Jelić
b55362a35b
Merge branch 'forget'
2022-02-01 14:36:23 +01:00
Damir Jelić
88b64950dc
Merge branch 'not_match_sas'
2022-02-01 14:05:54 +01:00
Benjamin Kampmann
a0f2e38b89
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2022-02-01 14:04:26 +01:00
Damir Jelić
fe2323cd33
Merge branch 'doc-store-path-feature'
2022-02-01 13:53:31 +01:00
Damir Jelić
d09792e402
docs(matrix-sdk): Clarify that an in-memory store will be used
2022-02-01 13:47:16 +01:00
Damir Jelić
ac7f2c94fb
Merge branch 'fix-verification-done-wait'
2022-02-01 13:43:58 +01:00
Damir Jelić
906dcfe423
Merge branch 'messages-param'
2022-02-01 12:34:40 +01:00
Damir Jelić
b5ce7e7bd0
Merge branch 'tags'
2022-02-01 12:01:17 +01:00
Damir Jelić
c9c03fd9b1
Merge branch 'encrypt-custom-events'
2022-02-01 11:48:31 +01:00
Julian Sparber
960c90cdff
Add method to mismatch SAS verifications
...
The method sets the proper CancelCode for the case when SAS doesn't
match on both devices.
2022-01-13 10:26:53 +01:00
Kévin Commaille
e1d78c01f0
test(base): Add store test for room removal
2022-01-12 18:41:26 +01:00
Kévin Commaille
76d1b6e4d2
test(base): Add test to populate a store
2022-01-12 18:40:57 +01:00
Kévin Commaille
94e5ee71c7
fix(sdk): Remove a room from the store on forget
2022-01-12 16:53:47 +01:00
Kévin Commaille
d455b0d318
test(base): Use common data for store tests
2022-01-12 16:42:04 +01:00
Kévin Commaille
535d1ec30f
feat(sdk): Use TagName in set/remove tag methods
2022-01-11 12:25:27 +01:00
Kévin Commaille
52deff1db2
fix(sdk): Move set/remove tag methods to room::Common
2022-01-11 12:24:46 +01:00
Jonas Platte
4603ee136d
Remove unnecessary string copies
2022-01-10 16:30:45 +01:00
Jonas Platte
da657b8643
Allow custom events in OlmMachine::encrypt
2022-01-10 16:29:49 +01:00
Jonas Platte
c2888e56a4
Use a custom options type for room::Common::messages
...
With the previous API, one would have to supply the room's ID manually,
despite the method already being called on a room.
2022-01-09 01:54:38 +01:00
Benjamin Kampmann
92044cedb9
fixing style again
2022-01-07 12:03:19 +01:00
Benjamin Kampmann
fb81ebf301
fixing style again
2022-01-07 12:00:12 +01:00
Benjamin Kampmann
278d934973
fix broken merge
2022-01-07 11:49:51 +01:00
Benjamin Kampmann
0937c2e6f6
[fix ci] remove unused import
2022-01-07 10:46:46 +01:00
Benjamin Kampmann
e1ad8fe8e0
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2022-01-07 10:42:52 +01:00
Antoine Martin
27f2cd3db0
docs(sdk): document features needed for store_path
...
If default features `sled_state_store` and `sled_cryptostore` aren't
enabled, then passing a store path to the Client does nothing.
2022-01-06 16:09:24 +01:00
Amanda Graven
038adea6d7
appservice: Examples for query handler registry fns
...
Add examples for functions for registering handlers for room and user
queries. Also remove a needless mut requirement for these functions.
2022-01-05 14:33:46 +01:00
ftilde
b1501fcb1d
Add test for verification started from a request
2022-01-04 21:27:06 +01:00
ftilde
b877d15616
Do not send Done message after receiving a Done
...
Done messages are supposed to indicate that the verification was
successful and _can be_ finalized. The correct time to send Done events
is after the user has confirmed the verification (after checking the
emoji or similar) and after receiving and checking a mac from the other
party (whatever happens later). Waiting for the other side to send Done
before sending it ourselves does not make sense.
2022-01-04 21:27:06 +01:00
ftilde
1c72472706
Send Done message when confirming in MacReceived state
...
Being in MacReceived state means that the other party has confirmed that
emojis/numbers match and the sent mac messages has been successfully
checked. When now confirming ourselves this means that the verification
was successful and thus the Done message can be sent to the other party.
2022-01-04 21:27:06 +01:00
ftilde
0e4057f3a3
Do not drop requests after receiving mac if sas is not complete
...
When during verification we are the first party to complete the
verification workflow and then receive a (correct) MAC from the other
party, we need to send out the Done message even if we have not received
the Done message from the other party ourselves and are thus still
"WaitingForDone".
2022-01-04 21:27:06 +01:00
Damir Jelić
c79e62d80e
Merge branch 'fix-verification-double-start'
2022-01-04 14:59:52 +01:00
ftilde
f4249c591a
Return RoomEvents from decryption methods
...
Previously, these methods returned `SyncRoomEvent`s instead, even though
the decrypted events are required to contain a room_id field (in order
for the server to not to be able to change these). As a side effect,
glue code which adds a room_id to the `SyncRoomEvent` to convert it to a
`RoomEvent` is be removed in some places.
When a `SyncRoomEvent` is required (such as in code handling sync
responses), the `From` implementation of `SyncRoomEvent` can be used.
2022-01-03 22:48:51 +01:00
ftilde
37cadc7c29
Add From<RoomEvent> for SyncRoomEvent
...
Since SyncRoomEvents are just RoomEvents without a room_id, it is safe
to just discard the information that this field exists in the underlying
json.
2022-01-03 22:48:30 +01:00
ftilde
a1cf8b613d
Drop start requests from lower precedence parties if sas has already been started.
...
According to the guide for implementing verification started from
a verification request, both parties should (or at least allowed to)
send a start request when the verification is ready. However, only the
start request from the party with lexicographically smaller user id (or
device id, for device verification, and thus equal user id) is supposed
to be accepted, and the other one ignored.
2022-01-03 21:04:07 +01:00
ftilde
798464b68e
Verification: Handle Accept after Start on both sides
...
Previously, when a sas-workflow was started by the other party (e.g.
from a verification request), but the own start request was answered with
an "accept" this accept would be ignored. However, this is incorrect
since the official guide on implementing verification actually states
that both parties are expected to send start-requests, where of those
only one request is actually accepted (depending on user id and possibly
the device id).
2022-01-03 21:02:53 +01:00
ftilde
87de0b5883
Return broken messages unchanged from messages()
...
Without this change, a batch with a message that cannot be deserialized
(for whatever reason) means that the batch cannot be processed at all by
the caller. Now, those messages are returned unchanged in the batch so
that the caller can handle them.
2022-01-03 19:49:19 +01:00
Damir Jelić
5003ed1493
docs: Enable all features for some of our crates when building docs
2022-01-03 13:14:36 +01:00
Damir Jelić
f12f03b8da
docs: Switch to the doc_auto_cfg feature
2022-01-03 12:33:24 +01:00
Damir Jelić
9856270e75
fix(crypto): Don't enable the backup feature by default
2022-01-03 12:27:03 +01:00
Damir Jelić
c22fa4e3fd
fix(base): Fix a new clippy warning
2022-01-03 10:23:38 +01:00
Julien Merzoug
f7f30f1636
docs(sdk): Fix a typo
2022-01-03 13:05:35 +08:00
Damir Jelić
ae9a554808
Merge branch 'supported-versions'
2021-12-31 14:00:11 +01:00
Kévin Commaille
5ecd74b2e4
feat(sdk): Make get_supported_versions public
2021-12-31 13:02:15 +01:00
Damir Jelić
dd29e2087c
Merge branch 'common-fixes'
2021-12-31 12:54:49 +01:00
Jonas Platte
99ce9419aa
Fix futures-util dependency
...
Turn on alloc feature that is required for `future::join_all`.
2021-12-31 11:00:51 +01:00
Kévin Commaille
0d771565f9
feat(sdk): Simplify the API of Common::event
2021-12-31 02:34:16 +01:00
Kévin Commaille
c35f8c55ac
fix(sdk): Fix docs of Common::active_members_no_sync
2021-12-31 02:16:20 +01:00
ftilde
703e965172
Decrypt messages from room::Common::messages()
...
Due to additional error possibilities and encryption info for messages,
the return type of the method was changed accordingly and a wrapper
struct `Messages` was introduced.
2021-12-29 15:26:45 +01:00
ftilde
046bfa9dad
Fix typo in comment
2021-12-29 15:26:39 +01:00
Damir Jelić
035d319122
Merge branch 'travis/misc'
2021-12-28 11:52:23 +01:00
Damir Jelić
81b730d8c3
Merge branch 'request-config-expose-force_auth'
2021-12-28 11:31:08 +01:00
Damir Jelić
6170be95e1
Merge branch 'membership'
2021-12-28 10:59:34 +01:00
Benjamin Kampmann
34687733e5
create sync token store
2021-12-27 23:54:51 +01:00
Benjamin Kampmann
8ce622d11e
fixin style
2021-12-27 23:37:45 +01:00
Benjamin Kampmann
9ff4609f3d
testing emcc versions
2021-12-27 23:35:21 +01:00
Benjamin Kampmann
15cdaead50
fix broken now call
2021-12-27 23:27:11 +01:00
Benjamin Kampmann
3cde28a438
trying older emscripten
2021-12-27 21:37:37 +01:00
Jonas Platte
d92d7771d9
Add must_use attribute to config constructors and methods
...
These all don't have side effects so discarding the result wouldn't make
sense.
2021-12-27 17:21:21 +01:00
Jonas Platte
f6d7933601
Simplify filter closure
2021-12-27 14:56:31 +01:00
Jonas Platte
abf525390e
Fix clippy warning (remove unnecessary clone)
2021-12-27 14:56:19 +01:00
Jonas Platte
fea80843eb
Remove redundant calls to .into_iter()
2021-12-27 14:21:46 +01:00
Jonas Platte
1a7baf631e
Avoid enormous type name in GroupSessionManager::encrypt_session_for
2021-12-27 14:20:16 +01:00
Benjamin Kampmann
cbd4aa0a37
disable test failing on macosx
2021-12-22 13:58:54 +01:00
Benjamin Kampmann
98beff4455
resolve clippy complaints
2021-12-22 12:36:07 +01:00
Benjamin Kampmann
574893368b
refine wasm tests
2021-12-22 12:32:59 +01:00
Benjamin Kampmann
1f5a084ccf
don't fail fast
2021-12-22 11:38:52 +01:00
Benjamin Kampmann
8dda7ea8fa
please consider all includes
2021-12-22 11:19:39 +01:00
Benjamin Kampmann
e619cc1eb7
don't combine
2021-12-22 10:59:17 +01:00
Benjamin Kampmann
1a206ff36c
let them all run out
2021-12-16 18:46:00 +01:00
Benjamin Kampmann
afe7d055a1
[ci] fix syntax
2021-12-16 18:24:31 +01:00
Benjamin Kampmann
9d4d8667ff
latest and node
2021-12-16 17:14:03 +01:00
Benjamin Kampmann
8feab722f8
[CI] dynamic node version
2021-12-16 11:35:24 +01:00
Benjamin Kampmann
7ad5bc7dee
version listing
2021-12-16 11:15:10 +01:00
Benjamin Kampmann
71bc043d19
extended testing for wasm example
2021-12-16 10:52:15 +01:00
Travis Ralston
171c334cb1
Add .idea directory to gitignore
2021-12-14 18:59:23 -07:00
Benjamin Kampmann
4f93e739f5
fixing typo
2021-12-13 23:25:26 +01:00
Benjamin Kampmann
fa00cba8bb
fixing style
2021-12-13 22:37:12 +01:00
Benjamin Kampmann
678527e1e6
libolm is fixed, so should our code be
2021-12-13 22:35:56 +01:00
Benjamin Kampmann
7fc040d86c
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2021-12-13 22:34:33 +01:00
Marc 'risson' Schmitt
ba05dd5b8c
feat(RequestConfig): expose force_auth setting
...
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space >
2021-12-13 20:45:51 +01:00
Kévin Commaille
b697bcb4fd
feat(base): Add RoomMember::membership accessor
2021-12-13 16:20:46 +01:00
Benjamin Kampmann
2982741dd1
minor style fix
2021-12-10 16:32:09 +01:00
Benjamin Kampmann
3f9b5511d1
activate IdbKeyRange feature on web-sys dependency
2021-12-10 14:02:02 +01:00
Benjamin Kampmann
35f2a004e1
style and docs fixes
2021-12-10 13:58:02 +01:00
Benjamin Kampmann
e02407ef37
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2021-12-10 13:30:46 +01:00
Benjamin Kampmann
bf9ad7a5c0
fix typo
2021-12-10 13:28:28 +01:00
Benjamin Kampmann
186bd975c1
reuse SafeEncode for indexeddb_cryptostore
2021-12-10 13:28:16 +01:00
Benjamin Kampmann
007b7e2403
outsource SafeEncode helper
2021-12-10 12:53:57 +01:00
Benjamin Kampmann
a6dbd6bcbb
escaped characters for indexeddb keys
2021-12-10 11:47:35 +01:00
Damir Jelić
009ead2eea
chore: Bump Ruma.
2021-12-08 16:50:25 +01:00
Benjamin Kampmann
3de6f60f90
remove unneccessary imports and compiler flags
2021-12-08 13:42:44 +01:00
Benjamin Kampmann
2ccb1d2813
don't pickle
2021-12-08 12:39:50 +01:00
Benjamin Kampmann
89523241fd
fixing main sdk wasm testing
2021-12-02 14:37:59 +01:00
Benjamin Kampmann
5734afc7ab
[CI] fixing test syntax
2021-12-02 12:45:29 +01:00
Benjamin Kampmann
4e18286c1c
remove another dependency
2021-12-01 23:53:07 +01:00
Benjamin Kampmann
10e27536ba
fix CI format
2021-12-01 23:51:22 +01:00
Benjamin Kampmann
9883ca0d84
[CI] parallel and the correct crates
2021-12-01 23:46:05 +01:00
Benjamin Kampmann
aab1fd2147
fixing ci job
2021-12-01 21:03:26 +01:00
Benjamin Kampmann
652ef6e160
sled store needs tokio
2021-12-01 20:48:27 +01:00
Benjamin Kampmann
53ad5810ef
typo fixes
2021-12-01 20:36:44 +01:00
Benjamin Kampmann
d0838d6784
fixing style
2021-12-01 20:34:27 +01:00
Benjamin Kampmann
1bbe38e376
compiling matrix-sdk for wasm
2021-12-01 20:32:26 +01:00
Benjamin Kampmann
d155f9a020
can work on wasm32
2021-12-01 20:06:25 +01:00
Benjamin Kampmann
7e6ac4222f
cleaning up store
2021-12-01 20:03:47 +01:00
Benjamin Kampmann
d0395906ab
activate available tests for wasm32
2021-12-01 19:32:34 +01:00
Benjamin Kampmann
ac2771b997
add docs
2021-12-01 19:00:06 +01:00
Benjamin Kampmann
470c81b8ad
be specific with dead_code
2021-12-01 18:58:22 +01:00
Benjamin Kampmann
f5485088a0
limit test execution to platforms that support it
2021-12-01 18:55:34 +01:00
Benjamin Kampmann
2ee7a95fc4
(now really) ensure Instant::now is working properly
2021-12-01 18:03:43 +01:00
Benjamin Kampmann
6b3f008b32
ensure Instant::now is working properly
2021-12-01 18:01:00 +01:00
Benjamin Kampmann
8ab5df490a
remove appservice, as it won't support wasm for a while
2021-12-01 15:39:41 +01:00
Benjamin Kampmann
787f8265d3
fixing CI
2021-12-01 15:15:26 +01:00
Benjamin Kampmann
293700ce69
checking all crates for wasm32
2021-12-01 14:53:21 +01:00
Damir Jelić
f97aed0e41
Merge branch 'MTRNord-wasm-fix'
2021-12-01 14:51:28 +01:00
Benjamin Kampmann
afaeae8e6b
unify indexeddb-features and improve example build
2021-12-01 12:57:09 +01:00
Benjamin Kampmann
b150dea329
fix style
2021-12-01 11:58:22 +01:00
Benjamin Kampmann
4b12260af3
move store implementations into files
2021-12-01 11:56:33 +01:00
Benjamin Kampmann
9d5c1fc14c
move store tests into separate reusable macro, too
2021-12-01 11:52:29 +01:00
Benjamin Kampmann
c7a9fc6c8e
syntax fix
2021-12-01 11:48:30 +01:00
Benjamin Kampmann
a1b62a1f4b
allow helper to be unused
2021-11-30 19:21:16 +01:00
Benjamin Kampmann
1a20e62de7
remove trouble causing unnecessary ref-clone
2021-11-30 18:54:12 +01:00
Benjamin Kampmann
4fdada55b8
fixing typo
2021-11-30 18:50:50 +01:00
Benjamin Kampmann
c5e7ca0c5e
undo my olm-sys-hack
2021-11-30 18:45:40 +01:00
Benjamin Kampmann
97d675f216
fix formatting
2021-11-30 18:45:00 +01:00
Benjamin Kampmann
9a0cf2b507
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2021-11-30 18:43:20 +01:00
Benjamin Kampmann
9b7c1d7c4d
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2021-11-30 18:40:14 +01:00
Benjamin Kampmann
968f80cc1b
minor fix
2021-11-30 18:00:20 +01:00
Benjamin Kampmann
f185aa2eae
reuse cryptostore for sled
2021-11-30 17:58:14 +01:00
Jonas Platte
6519aaff4d
crypto: Fix docs for SledStore
2021-11-30 17:48:49 +01:00
Benjamin Kampmann
9f0fe18dfc
fix async_test for non-wasm32 envs
2021-11-30 17:46:50 +01:00
Benjamin Kampmann
954cce463e
make cryptostore tests reusable
2021-11-30 16:01:42 +01:00
Benjamin Kampmann
e3c62825b6
test and impl for outbound
2021-11-30 14:49:00 +01:00
Benjamin Kampmann
1e654acc29
backup and reset for inbound_groups
2021-11-30 13:20:49 +01:00
Benjamin Kampmann
59e3baf819
cover more inbound_group_session functions
2021-11-30 13:01:49 +01:00
Damir Jelić
8494f10583
Merge branch 'up-ruma'
2021-11-30 09:56:01 +01:00
Benjamin Kampmann
d509eaa959
implement tracked user
2021-11-29 21:23:01 +01:00
Benjamin Kampmann
85dde94dd5
implement sessions
2021-11-29 20:57:30 +01:00
Benjamin Kampmann
c9a10353f2
implement olm_hashes
2021-11-29 20:47:18 +01:00
Benjamin Kampmann
41faa59121
implement keyrequests
2021-11-29 19:43:20 +01:00
Benjamin Kampmann
833802677b
implement devices saving and deleting
2021-11-29 15:04:20 +01:00
Jonas Platte
5824cb649e
Update tests
2021-11-29 14:30:45 +01:00
Benjamin Kampmann
fe257effce
properly open encrypted state db
2021-11-29 14:05:48 +01:00
Benjamin Kampmann
47168ca3da
implement saving user
2021-11-29 14:05:22 +01:00
Jonas Platte
dfd59f42a9
Fix warp build error
2021-11-29 13:36:05 +01:00
Jonas Platte
557e038869
Minimal style improvements
2021-11-29 13:27:38 +01:00
Damir Jelić
a628e84b63
fix(crypto): Fix a copy paste error preventing us from verifying users
2021-11-29 09:31:05 +01:00
Jonas Platte
36db5e47dd
Upgrade Ruma
2021-11-26 19:22:54 +01:00
Damir Jelić
56d80b91c9
fix(sdk): Send the crypto requests out before a sync as well
2021-11-26 16:52:32 +01:00
Damir Jelić
b0f48c9660
fix(crypto): Let users fetch our own device out of the store
2021-11-26 16:52:31 +01:00
Damir Jelić
68a2020516
fix(crypto): Check if the device we get from the server matches our own
2021-11-26 16:26:40 +01:00
Damir Jelić
13db642143
fix(cyrpto): Log database upgrades using the debug log level
2021-11-26 16:26:40 +01:00
Damir Jelić
f2c344b39a
fix(crypto): Use the DeviceKeys as the inner type for a ReadOnlyDevice
2021-11-26 16:26:40 +01:00
Benjamin Kampmann
b42b04e887
account loading and saving
2021-11-26 14:36:14 +01:00
Benjamin Kampmann
229a81bfd6
Implement saving
2021-11-26 12:37:57 +01:00
Benjamin Kampmann
6d9920c239
various minor cleanups of unused imports
2021-11-25 16:44:20 +01:00
Damir Jelić
7b6132b71e
feat(crypto): Return the list of room keys we imported
...
Clients might want to retry decryption after they import room keys, for
this to be efficient they'll need to know which room keys got imported.
This patch extends the return value of the room key import result to
include the map of room keys that got imported.
2021-11-25 16:41:28 +01:00
Benjamin Kampmann
47dff21eda
update trait impl of indexeddb
2021-11-25 15:52:57 +01:00
Benjamin Kampmann
32a8ec7782
minor wasm32 fixes
2021-11-25 15:52:27 +01:00
Benjamin Kampmann
4c60db94a2
Implement helper for wasm32 MilliSecondsSinceUnixEpoch
2021-11-25 15:52:03 +01:00
Benjamin Kampmann
42680164ea
fix up CI test
2021-11-25 15:49:20 +01:00
Benjamin Kampmann
5cf56adce7
Adding result-signature support for wasm32 async-test-macro
2021-11-25 15:46:17 +01:00
Damir Jelić
10173b990d
fix(sdk): Degrade some logs that show user ids to the debug log level
2021-11-25 14:49:07 +01:00
Damir Jelić
fc74526699
fix(crypto): Add the ability to mark room keys as backed up when importing
2021-11-25 11:18:09 +01:00
Damir Jelić
55973b5bf1
fix(crypto): Make ExportedRoomKey deserialization laxer
...
Some clients might have skipped the serialization of an empty
sender_claimed_keys and the forwarding_curve25519_key_chain, while these
fields are required there's really no upside in requiring them if they
are empty.
So create defaults if they are missing.
2021-11-25 10:20:09 +01:00
Marcel
406aaa0b50
Make sure to also include the uuid create serde feature with wasm
2021-11-24 20:50:36 +01:00
Damir Jelić
33b198d505
fix(crypto): Make sure we remove the unsigned object before signing
2021-11-24 15:56:32 +01:00
Damir Jelić
be70d38e2a
fix(crypto): Use the from constructor for some maps with known values
2021-11-24 15:56:05 +01:00
Damir Jelić
1e70b4f804
fix(crypto): Automatically track your own user if the caller doesn't do so
...
Users of the crypto crate should mark all members that are part of an
E2EE room for tracking, this will of course mark your own user for
tracking.
If the crypto crate user doesn't have any E2EE rooms he may not add any
members to be tracked. The user might still want to inspect their own
E2EE devices and identities. This patch makes sure that our member is
tracked.
2021-11-24 15:21:50 +01:00
Benjamin Kampmann
4c0bbebb07
Merge remote-tracking branch 'upstream/main' into ben-wasm-store
2021-11-24 11:48:45 +01:00
Benjamin Kampmann
9835c4ad92
Update to webpack5
2021-11-24 11:00:52 +01:00
Damir Jelić
a49a7fe1f9
fix(crypto): Clear the master key signatures when we verify our own user
2021-11-22 18:00:52 +01:00
Damir Jelić
fa42373cf8
Merge branch 'client-arc'
2021-11-22 16:27:27 +01:00
Damir Jelić
a8c36b4041
Merge branch 'fix-session-doc-example'
2021-11-22 16:24:31 +01:00
Damir Jelić
b91773a276
Merge branch 'store-upgrade-fix'
2021-11-22 16:23:53 +01:00
Damir Jelić
fbc01f015d
fix(sdk): Use the correct restore method in an example
2021-11-22 15:44:35 +01:00
Damir Jelić
5d26e36e1f
fix(crypto): Make sure we store the store version using the right key
2021-11-22 15:28:21 +01:00
Damir Jelić
c4f60dd163
fix(crypto): Only upload our own signature when verifying user identities
2021-11-22 12:33:18 +01:00
Jonas Platte
b4220bd824
Reduce the size of Client
...
… by moving all of its fields into an inner reference-counted type
rather than using reference counting for all fields individually.
Some fields are still refcounted individually and thus go through an
extra layer of indirection, but the size and clone simplification should
still make this change worthwhile.
2021-11-20 02:01:07 +01:00
Jonas Platte
73c5bfed28
Switch from futures-locks to async-lock
2021-11-20 02:01:07 +01:00
Jonas Platte
2456beaf88
Make Result alias more flexible
2021-11-20 00:00:08 +01:00
Jonas Platte
cc6f97bee9
Fix missing word
2021-11-20 00:00:08 +01:00
Jonas Platte
8f47e6ffe9
Remove copy-pasted module documentation
...
It doesn't seem right that both room and room_member have the same
description. Also room_member is private and doesn't usually show up in
docs.
2021-11-20 00:00:08 +01:00
Jonas Platte
544b24b0ef
Move some code out of client.rs
...
It is by far the biggest module of the matrix-sdk crate.
2021-11-20 00:00:08 +01:00
Benjamin Kampmann
94d3ffa18d
infrastructure for indexeddb cryptostore
2021-11-19 21:26:33 +01:00
Jonas Platte
1e13e06e34
Make event-handling related Client fields private
2021-11-19 20:48:27 +01:00
Benjamin Kampmann
9e83bcb6ce
fixing browser test
2021-11-19 14:52:11 +01:00
Benjamin Kampmann
917e9016cd
clean up API and corresponding docs
2021-11-19 13:52:03 +01:00
Damir Jelić
5a4aa71f6a
feat(base): Add a From login response implementation for the Session
2021-11-19 09:41:48 +01:00
Damir Jelić
6606703001
docs(base): Remove anyhow from an example since it isn't used
2021-11-19 09:12:51 +01:00
Andy Balaam
0c35d8890d
Improve Session docs example
2021-11-18 17:14:34 +00:00
Benjamin Kampmann
76454e6b8b
style fix
2021-11-18 17:40:56 +01:00
Andy Balaam
7d7bd97812
Document how to create a Session
2021-11-18 14:18:16 +00:00
Benjamin Kampmann
10d4fe53f2
clarify API
2021-11-18 15:01:07 +01:00
Benjamin Kampmann
3fcfe98de2
minor clippy fixes
2021-11-18 13:54:24 +01:00
Benjamin Kampmann
b16c660258
fixing typo
2021-11-18 13:48:56 +01:00
Benjamin Kampmann
7df36e3d49
first attempt at creating a CI job for wasm tests
2021-11-18 13:37:11 +01:00
Benjamin Kampmann
3e11e0dbb4
fixing style
2021-11-18 13:36:45 +01:00
Benjamin Kampmann
a2b80f03d3
move and unify usage of store_key
2021-11-18 12:58:17 +01:00
Benjamin Kampmann
e60349604d
implement custom value
2021-11-18 12:40:45 +01:00
Andy Balaam
f5ba9a5eea
Update BackupMachine documentaton to refer to enable_backup_v1
2021-11-18 10:28:03 +00:00
Benjamin Kampmann
e7ec86140b
generic tests passing'
2021-11-17 21:30:12 +01:00
Benjamin Kampmann
5bba24ce77
activating browser tests
2021-11-17 18:18:20 +01:00
Benjamin Kampmann
b8af613aef
big batch
2021-11-17 13:08:58 +01:00
Damir Jelić
2e4d5f25cb
feat(crypto): Add a method to get the algorithm of the public backup key
2021-11-17 13:02:23 +01:00
Damir Jelić
534e50da57
fix(crypto): Rename the enable_backup method so we can add a v2 one
2021-11-17 13:02:23 +01:00
Damir Jelić
1ffa06884a
fix(crypto): Rename the decrypt method on the RecoveryKey struct
...
The new backup algorithm reuses the same key but uses a different
construct to encrypt/decrypt room keys. This reflects that our decrypt
method uses the v1 algorithm.
2021-11-17 13:02:23 +01:00
Damir Jelić
670e212d9b
docs(crypto): Fill out the docs for the backup related types
2021-11-17 13:02:23 +01:00
Damir Jelić
6fc703b4a3
fix(crypto): Fix a bunch of clippy warnings
2021-11-17 13:02:23 +01:00
Damir Jelić
33b7062515
fix(crypto): Fix a bunch of typos
2021-11-17 13:01:58 +01:00
Damir Jelić
a7bbeb7ef5
improvement(crypto): Add tests for the recovery key
2021-11-17 13:01:58 +01:00
Damir Jelić
34ec4ac3c9
improvement(crypto): Add tests for the backup machine
2021-11-17 13:01:58 +01:00
Damir Jelić
3f227de023
fix(crypto): Fix the backed up room key count in the memory store
2021-11-17 13:01:58 +01:00
Damir Jelić
a417aa23fa
fix(crypto): Load the recovery key from the sled store
2021-11-17 13:01:58 +01:00
Damir Jelić
f8fdfd1613
fix(crypto): Add a proper exception when creating the Pk decryption object
2021-11-17 13:01:58 +01:00
Damir Jelić
1fdd560ff0
fix(crypto): Remove a unneeded clippy attribute
2021-11-17 13:01:58 +01:00
Damir Jelić
878969a5c4
docs(crypto): Add some docs for the backup related types
2021-11-17 13:01:58 +01:00
Damir Jelić
c6d073ebd7
fix(crypto): Remove some dead code
2021-11-17 13:01:58 +01:00
Damir Jelić
2b5ae869cd
feat(crypto): Gossip the backup recovery key if requested
2021-11-17 13:01:58 +01:00
Damir Jelić
2db52eed7c
feat(crypto): Request the recovery key when we request secrets
2021-11-17 13:01:58 +01:00
Damir Jelić
656edce75a
improvement(crypto): Make the backup logging prettier
2021-11-17 13:01:58 +01:00
Damir Jelić
4c021dea5e
fix(crypto): Correctly reset the backup state of room keys
2021-11-17 13:01:58 +01:00
Damir Jelić
bbd76dafa0
fix(crypto): Fix a bunch of clippy warnings
2021-11-17 13:01:58 +01:00
Damir Jelić
4f2c91d848
feat(crypto): Add a method to decrypt messages using the recovery key
2021-11-17 13:01:58 +01:00
Damir Jelić
6f5b6900d6
fix(crypto): Flush when we ugprade the DB
2021-11-17 13:01:58 +01:00
Damir Jelić
eddc7bd6af
feat(crypto): Add a method to check the signature of a backup version
2021-11-17 13:01:58 +01:00
Damir Jelić
dfef6370b6
feat(crypto): Add a method to verify uploaded backups
2021-11-17 13:01:58 +01:00
Damir Jelić
b5babdb6c4
fix(crypto): Don't load all room keys when backing up
2021-11-17 13:01:58 +01:00
Damir Jelić
df53eb00ab
fix(crypto): Fix a deadlock when generating the backup request
2021-11-17 13:01:58 +01:00
Damir Jelić
63915171fc
feat(crypto): Add a method to check if backups are enabled
2021-11-17 13:01:58 +01:00
Damir Jelić
4873914d4d
feat(crypto): Initial support for server-side backups of room keys
2021-11-17 13:01:44 +01:00
Benjamin Kampmann
8a2732ab5d
first steps
2021-11-15 20:05:43 +01:00
Damir Jelić
f069387d58
docs(sdk): Add an example to the restore_login method
2021-11-15 16:15:05 +01:00
ftilde
8815c05108
Refactor Joined::send_attachment
...
Instead of manually modifying *EventContent structs, the ruma
constructors *::encrypted and *::plain are used now depending on whether
encryption should be used for the attachment or not.
2021-11-13 01:39:00 +01:00
ftilde
dfc2ed7a33
Prefer MediaType::Encrypted if url and file are present
...
Some clients (including those using matrix-rust-sdk currently) may add
encrypted file info as well as the url to the encrypted blob to the
*EventContent. Interpreting the presence of an url as an indicator of
unencrypted message (like was done before) would result in access to the
encrypted blob in `get_media_content`.
Fixes #406 .
2021-11-13 01:39:00 +01:00
Jonas Platte
38a8253aa8
Turn register_event_handler(_context)? examples into proper doctests
...
Previously, they didn't actually run the methods they were showing the
use of.
2021-11-12 12:39:07 +01:00
Jonas Platte
5fed5cdeed
Allow adding custom event handler context
2021-11-12 12:39:07 +01:00
Jonas Platte
df50d59de2
Update signature of AppService::register_event_handler
...
It no longer requires a mutable `AppService` and can also be chained,
like `Client::register_event_handler`.
2021-11-11 19:28:40 +01:00
Damir Jelić
1651952903
docs(sdk): Remove a bunch of unwraps from some doc examples
2021-11-11 16:58:43 +01:00
Damir Jelić
33a43af20e
improvement(crypto): Use a type for the result of the room key import method
2021-11-11 16:57:31 +01:00
Damir Jelić
6a66a67454
fix(crypto): Fix the importing of exported room keys
2021-11-11 16:05:14 +01:00
Jonas Platte
83b908754e
Remove unused dependencies
...
Found by cargo-udeps.
2021-11-10 21:43:56 +01:00
Jonas Platte
02b0ed2b42
Reduce dependencies on futures-* crates
2021-11-10 20:39:35 +01:00
Jonas Platte
c124cf5b62
Remove unnecessary use of future::ready
2021-11-10 20:39:03 +01:00
Jonas Platte
dfdf794199
Remove unnecessary use of TryFutureExt
2021-11-10 20:12:56 +01:00
Damir Jelić
df2c0bd6e9
docs(sdk): Fix a typo in the enable_encryption method
2021-11-09 19:52:46 +01:00
Damir Jelić
2e04a3753d
Merge branch 'one-time-key-generationf-fix'
2021-11-09 13:50:08 +01:00
Damir Jelić
e1e864c606
fix(crypto): Save the account if we created a new key upload request
2021-11-09 12:30:48 +01:00
Damir Jelić
7f3067553b
fix(crypto): Don't generate new one-time keys unless the existing ones are uploaded
...
This is helpful if the caller doesn't have propper request retrying.
Calling the outgoing_requests() method without actually uploading
all the requests would end up generating too many one-time keys and
removing some one-time keys that weren't used yet.
This would manifest itself down the line as undecryptable to-device
messages.
2021-11-09 11:45:20 +01:00
Julian Sparber
253d6c9af8
matrix-qrcode: Use GenericImage and GenericImageView trait
...
This changes `QrVerificationData::from_luma()` to accept any struct that
implements GenericImage and GenericImageView.
This way we don't force a specific container for the ImageBufffer, hence
the developer doesn't necessarily need to copy the image data into a
Vec<u8>.
2021-11-09 11:33:38 +01:00
Damir Jelić
1f1ae0059e
docs: Remove the now unneeded doc cfg attributes
2021-11-09 10:43:42 +01:00
Damir Jelić
05a190ee5a
docs(sdk): Add an example that prints out the SAS emojis
2021-11-08 17:17:42 +01:00
Damir Jelić
ed561f7b9e
improvement(crypto): Use a struct for the SAS emoji/description pairs
2021-11-08 17:17:14 +01:00
Damir Jelić
fba12b3926
docs(sdk): Explain how room keys work in the encryption module
2021-11-08 15:32:51 +01:00
Damir Jelić
1b2ef50ded
docs(sdk): Explain why it may be problematic to manually verify devices
2021-11-08 15:32:51 +01:00
Damir Jelić
c79481c6fa
docs(sdk): Clarify what it means for a device to be verified
2021-11-08 15:32:51 +01:00
Damir Jelić
f5b98a62ab
docs(sdk): Describe the ways we can restore a client
2021-11-08 15:32:51 +01:00
Damir Jelić
f5a6972feb
improvement(crypto): Rename the EncryptionInfo struct for attachments
2021-11-08 15:32:51 +01:00
Damir Jelić
1faaba39c7
docs(sdk): Explain how cross signing helps a bit better
2021-11-08 15:32:51 +01:00
Damir Jelić
e58eb70924
chore: Switch to the 2021 edition
2021-11-08 15:32:51 +01:00
Damir Jelić
4bfc1041cc
docs(sdk): Improve an entry in the e2ee failure table
2021-11-08 15:32:51 +01:00
Damir Jelić
b6f7e85964
feat(sdk): Add a method to enable encryption for a room
2021-11-08 15:32:51 +01:00
Damir Jelić
b9b02ff167
docs(sdk): Add another entry to the failure table
2021-11-08 15:32:51 +01:00
Damir Jelić
1aba90cd0b
docs(sdk): Consistent headings
2021-11-08 15:32:51 +01:00
Damir Jelić
3f689e9c74
docs(sdk): Introduce a failure table for the encryption module
2021-11-08 15:32:51 +01:00
Damir Jelić
d744948a27
docs(sdk): Fix a typo
2021-11-08 15:32:51 +01:00
Damir Jelić
ccc3a005cb
docs(sdk): A couple small clarifications
2021-11-08 15:32:51 +01:00
Damir Jelić
605c3b056f
docs(sdk): Use a table to describe our features
2021-11-08 15:32:51 +01:00
Damir Jelić
387d25c438
docs(sdk): Explain a bit more how devices are backed by device keys
2021-11-08 15:32:51 +01:00
Damir Jelić
050f62baa7
docs(sdk): Clarify the manual verification a bit more
2021-11-08 15:32:51 +01:00
Damir Jelić
afe4f628c3
docs(sdk): Improve the UserIdentity docs
2021-11-08 15:32:51 +01:00
Damir Jelić
3964eea2e2
docs(sdk): Add some more E2EE related docs
2021-11-08 15:32:51 +01:00
Damir Jelić
687ebabca9
Merge branch 'reciprocate_qr_scanning'
2021-11-05 19:35:57 +01:00
Julian Sparber
635ee5f130
matrix-sdk: Send reciprocate to other side when scanning a Qr Code
...
We need to tell the other side that we scanned there Qr Code.
2021-11-05 19:05:43 +01:00
Jonas Platte
b27795c0d1
Upgrade ruma
2021-11-05 16:05:25 +01:00
Jonas Platte
f21faa9e2e
Remove unused imports in doctests
2021-11-05 15:39:02 +01:00
Jonas Platte
77de8383fe
Fix clippy warning
2021-11-05 15:25:16 +01:00
Jonas Platte
cdfd5f9f0c
Remove unnecessary use of Ruma event content enums
2021-11-05 15:16:17 +01:00
Kévin Commaille
5eb7029568
matrix-sdk: Allow to reconfigure client with login response discovery info
...
Fixes #219
2021-11-02 16:45:03 +01:00
Kévin Commaille
52910d50b4
matrix-sdk: Remove unecessary mut for client
...
Client does not need to be mutable to set the homeserver
2021-11-02 11:59:44 +01:00
Julian Sparber
8dcfd1176f
matrix-sdk-crypto: Drop MutexGuard in VerificationRequest::scan_qr_code()
...
We can't move MutexGuards across threads and therefore we need to drop
it before awaitng on a future since a task may be moved between threads.
2021-10-29 16:33:25 +02:00
Damir Jelić
a85f29d904
feat(sdk): Expose the method and types to scan QR codes
2021-10-28 11:54:28 +02:00
Damir Jelić
292425fd80
fix(crypto): Make sure we don't treat our own device as a new one every time
2021-10-28 11:24:02 +02:00
Damir Jelić
19266f643c
improvement(crypto): Improve the logs for the keys/query handling
2021-10-28 11:24:02 +02:00
Damir Jelić
3853d0c9d7
improvement(crypto): Log the mismatched user/key if checking fails
2021-10-27 16:23:34 +02:00
Damir Jelić
3c59e186d9
improvement(crypto): Improve the logging when we decrypt room events
2021-10-27 15:00:04 +02:00
Damir Jelić
e448a76484
improvement(crypto): Improve the to-device decryption logs
2021-10-27 14:57:07 +02:00
Damir Jelić
0ee8d2733a
fix(crypto): Improve the log lines for the room key encryption flow
2021-10-27 14:44:27 +02:00
Damir Jelić
38ae79ba3c
Merge branch 'room-is-space'
2021-10-27 11:08:33 +02:00
Amanda Graven
d06371d458
Add convenience function to check if a room is a space
2021-10-27 10:39:19 +02:00
Damir Jelić
8b200c8200
Merge branch 'appservice-user-store'
2021-10-26 12:00:27 +02:00
Damir Jelić
2a285de1b0
Merge branch 'appservice-event-handler'
2021-10-26 11:30:30 +02:00
Amanda Graven
093588d5a3
Event handlers for room and user queries
...
Add a member to AppService which can store closures that will be invoked
when the homeserver invokes query endpoints.
2021-10-26 10:50:23 +02:00
Amanda Graven
a9e990142a
appservice: Store which users have been registered
2021-10-26 09:51:51 +02:00
Damir Jelić
42bec97b68
Merge branch 'blocking'
2021-10-25 14:25:59 +02:00
Damir Jelić
bc8641666c
fix(sdk): Only import the crypto store type if encryption is enabled
2021-10-25 13:30:33 +02:00
Damir Jelić
74342a8775
Merge branch 'event-handling'
2021-10-25 13:02:27 +02:00
Damir Jelić
bc92c02772
Merge branch 'erikj/add_crypto_store_setting'
2021-10-25 13:00:55 +02:00
Damir Jelić
f434b4d970
Merge branch 'erikj/export_gossip_request'
2021-10-25 13:00:07 +02:00
Damir Jelić
86657736e8
chore: Fix some new clippy warnings.
2021-10-25 12:40:34 +02:00
Erik Johnston
a037e6b1a7
Add Config::crypto_store
...
This allows setting of the crypto store in the high level client, in the
same way you can in the base client.
2021-10-25 10:38:28 +01:00
Jonas Platte
4570d7194e
Add SyncEvent impls for SyncRedactionEvent
2021-10-22 22:11:01 +02:00
Erik Johnston
a7c97e731d
Document types correctly
2021-10-22 11:57:21 +01:00
Erik Johnston
c093b68078
Also export SecretInfo
2021-10-22 11:33:34 +01:00
Erik Johnston
c824278565
Export GossipRequest
...
The `matrix-sdk-store::CryptoStore` uses the type in its definition,
so we export it to allow third party implementations.
2021-10-22 11:29:15 +01:00
Julian Sparber
8ee3b6f909
sled_store: Run read operations on blocking thread
2021-10-21 14:59:33 +02:00
Denis Kasak
9e1024f4b5
refactor: Use structured logging field for room_id.
2021-10-14 12:22:13 +02:00
Denis Kasak
8cab5b811f
docs: Doc tweaks.
2021-10-14 10:22:25 +02:00
Denis Kasak
1c36e62e2c
fix: Unbreak encryption.
...
And add some docs and logging statements.
cb8a42a529 broke encryption because it
elided the call to `send_raw` from `send` and instead did a direct HTTP
request. Since event encryption is only called from `send_raw`, this
made all events cleartext.
2021-10-14 10:22:25 +02:00
Julian Sparber
0a92f7161a
client: make sync_stream() return an infallible stream
...
This way the developer can decide what to do on an error
2021-10-11 18:33:06 +02:00
Damir Jelić
8af768bf30
chore(base): Remove the non-exhaustive patterns lint
...
The lint is only available on nightly, but requires to be enabled via a
feature, which is only available for nightly.
2021-10-11 11:06:32 +02:00
Damir Jelić
61375a6245
chore: Add a github action to check for typos
2021-10-11 09:49:27 +02:00
Damir Jelić
3c08b5cf09
chore: Fix a bunch of typos
2021-10-11 09:49:25 +02:00
Damir Jelić
498d7b4666
Merge branch 'dkasak/doc-improvements'
2021-10-11 09:47:21 +02:00
Damir Jelić
7cfa9dbf58
Merge branch 'dkasak/key-sharing-algorithm-rendering'
2021-10-11 09:46:43 +02:00
Damir Jelić
5aa6aeac16
Merge branch 'flow_id'
2021-10-05 20:47:33 +02:00
Jonas Platte
b6261d014c
Add custom event examples for Joined::{send,send_state_event}
2021-10-05 18:42:21 +02:00
Jonas Platte
8455164a69
Simplify command_bot example
2021-10-05 18:20:07 +02:00
Jonas Platte
b959d4be29
Use new event type aliases
2021-10-05 18:20:07 +02:00
Jonas Platte
39d6ebdd53
Don't panic if serialization of user-provided events fails
2021-10-05 18:20:07 +02:00
Jonas Platte
0f52cd8039
Stop relying on enum deserialization for adding room_id
2021-10-05 18:20:07 +02:00
Jonas Platte
4a50561867
crypto: Simplify Account::parse_decrypted_to_device_event
2021-10-05 18:20:07 +02:00
Jonas Platte
cb8a42a529
Upgrade to latest Ruma git main
2021-10-05 18:20:07 +02:00
Jonas Platte
d16d21c54f
crypto: Refactor ToDeviceRequest construction
2021-10-05 18:20:07 +02:00
Jonas Platte
339dfefb53
Replace qualified path with use (style consistency)
2021-10-05 18:20:07 +02:00
Jonas Platte
b8e8cfd149
Fix clippy warnings
2021-10-05 18:20:07 +02:00
Jonas Platte
a40cf26aa7
Fix formatting
2021-10-05 17:40:50 +02:00
Damir Jelić
fe8ecbbeb8
Merge branch 'fix_lock_on_await'
2021-10-05 10:36:02 +02:00
Damir Jelić
2686e987a6
Merge branch 'dkasak/share-all-indices-with-own-trusted-devices'
2021-10-05 10:13:49 +02:00
Julian Sparber
a3f078cb96
encryption: Expose FlowId on VerificationRequest
...
Fixes: https://github.com/matrix-org/matrix-rust-sdk/issues/367
2021-10-04 22:42:39 +02:00
Julian Sparber
82659142c5
crypto: Fix VerificationRequest::generate_qr_code()
...
We can't keep a lock on the `inner` therefore clone it. It's not pretty
but we do the same in `start_sas()`.
2021-10-04 17:04:09 +02:00
Denis Kasak
3c03c64778
docs(crypto): Reword.
...
- Bring the wording in line with the wording on the matrix_sdk crate.
- Style fixes.
- Formatting.
2021-10-04 14:53:30 +02:00
Denis Kasak
fdbed7fbf8
docs(crypto): Add room key sharing decision tree to the docs.
2021-10-04 14:48:12 +02:00
Denis Kasak
759bc76f04
docs: More typo/style fixes.
2021-10-04 14:36:37 +02:00
Denis Kasak
ab1657b811
docs: Flesh out intro section a bit.
...
- Mention subcrates.
- Point out `Client` as the central component.
2021-10-04 14:34:18 +02:00
Denis Kasak
b219a347f6
Reword opening paragraph.
2021-10-04 13:15:22 +02:00
Denis Kasak
bd82738630
Fix typo.
2021-10-04 13:06:50 +02:00
Amanda Graven
9829b45ce8
Specifiy edition in rustfmt.toml
2021-10-04 12:56:49 +02:00
Denis Kasak
f2c0abeb58
Add decision tree rendering of the algorithm.
2021-10-04 12:51:16 +02:00
Denis Kasak
55731922e8
Add decision tree model of the key sharing algorithm.
...
And a tool to render it.
Signed-off-by: Denis Kasak <dkasak@termina.org.uk >
2021-10-04 12:49:16 +02:00
Denis Kasak
671efb2313
Await result.
2021-10-04 11:13:02 +02:00
Denis Kasak
da052ed9aa
clippy fix
2021-10-04 11:12:46 +02:00
Denis Kasak
49e722ffbf
cargo fmt
2021-10-04 10:57:11 +02:00
Denis Kasak
de2e2539b7
Write a test.
...
Signed-off-by: Denis Kasak <dkasak@termina.org.uk >
2021-10-04 10:51:31 +02:00
Denis Kasak
5f87ccdcd9
Explain return value in the docstring.
...
Signed-off-by: Denis Kasak <dkasak@termina.org.uk >
2021-10-04 10:51:31 +02:00
Denis Kasak
bf2195b999
crypto: Share all indices with own trusted devices.
...
This fixes an edge case in the key sharing decision algorithm in which
your own trusted devices could be getting a limited session upon a
reshare. It also simplifies the algorithm a bit by bringing the check
for an own and trusted device to the start.
If the requesting device is a trusted/verified device of our own, we
share the session in full, regardless of whether we've previously shared
with that device and at which index. Otherwise, we do the "have we
shared previously" check via the outbound session and only share from
the index it was originally shared at, as before.
Signed-off-by: Denis Kasak <dkasak@termina.org.uk >
2021-10-04 10:45:25 +02:00
Damir Jelić
3042209cf6
crypto: Check that the event was encrypted for the right room
2021-09-21 17:27:31 +02:00
Damir Jelić
87728268e2
crypto: Don't borrow the plaintext to later clone it
2021-09-21 16:48:42 +02:00
Jonas Platte
bbbd5648e0
Fix comment typos
2021-09-21 15:36:04 +02:00
Jonas Platte
b813735dd2
Remove unused dev-dependency
2021-09-21 15:24:55 +02:00
Jonas Platte
871a245702
crypto: Avoid unnecessary event serialization
2021-09-21 15:20:02 +02:00
Jonas Platte
f783fb9830
Fix typo: Missmatched => Mismatched
2021-09-21 15:19:21 +02:00
Damir Jelić
fa5aea2ca1
Merge branch 'fix-anyhow-feature'
2021-09-21 14:54:40 +02:00
Jonas Platte
2128d0bfcc
CI: Use Nightly Clippy
2021-09-21 13:12:46 +02:00
Jonas Platte
42061c9bf5
CI: Run clippy on more (Cargo) targets
2021-09-21 13:12:34 +02:00
Jonas Platte
d0851c8a9e
Fix new (Nightly) Clippy warnings
2021-09-21 13:11:53 +02:00
Jonas Platte
0817bc490e
Add missing required-features for examples
2021-09-21 13:11:31 +02:00
Jonas Platte
3621b62418
Fix Client::register future not being Send under warp feature
...
Caused by https://github.com/tokio-rs/tracing/issues/1487 .
2021-09-21 13:07:40 +02:00
Jonas Platte
cbc0739041
Re-export anyhow and eyre features from matrix-sdk-appservice
2021-09-21 11:59:47 +02:00
Jonas Platte
f752bded4b
Add eyre feature to matrix-sdk
2021-09-21 11:59:47 +02:00
Jonas Platte
6cbb07bc2d
Fix broken anyhow feature
2021-09-21 11:59:15 +02:00
Damir Jelić
4d048934e6
Merge branch 'master-rename'
2021-09-20 11:18:17 +02:00
Damir Jelić
544a66fa34
chore: Rename the master branch
2021-09-20 10:09:40 +02:00
Jonas Platte
533c86d285
Run event / notification handler callbacks in order
2021-09-17 20:46:32 +02:00
Damir Jelić
15e9d03c2c
fix(sdk): Don't retry requests in the tests
...
Since now sync_once() sends out E2EE requests after the sync and our
tests only set up the `/sync` endpoint using mockito we're going to be
stuck in a retry loop trying to send out the mentioned requests.
It's fine to disable request retrying and let those requests fail.
2021-09-17 20:19:13 +02:00
Damir Jelić
ef3f827769
docs(sdk): Fix a typo
2021-09-17 20:18:42 +02:00
Damir Jelić
d34b83851f
feat(sdk): Add a getter for the Session
2021-09-17 20:18:17 +02:00
Damir Jelić
61eefbbadd
docs(sdk): Fix some doc links.
2021-09-17 11:10:18 +02:00
Damir Jelić
544d15c574
docs(sdk): Improve a bunch of Client docs
2021-09-17 11:10:18 +02:00
Damir Jelić
8ed06883f6
fix(sdk): Don't take ownership of the user id when logging in using SSO
2021-09-17 11:10:18 +02:00
Damir Jelić
39edd32072
feat(sdk): Add a method to sync as an async stream
2021-09-17 10:54:20 +02:00
Damir Jelić
051d935b28
docs(sdk): Add better docs and examples to the sync methods
2021-09-17 10:54:20 +02:00
Damir Jelić
37904007bb
feat(sdk): Send the outgoing E2EE requests out concurrently
2021-09-16 15:43:50 +02:00
Damir Jelić
3dc9f78051
fix(sdk): Move the crypto plumbing in the sync to the sync_once method
...
This would allow people to avoid the `sync()` method and let them drive
their own syncs.
Until now using `sync()` only would mean that the crypto requests would
never have been sent out.
2021-09-16 14:36:16 +02:00
Damir Jelić
729a29352b
chore(sdk): Move the crypto plumbing of the sync into a separate method
2021-09-16 14:14:37 +02:00
Damir Jelić
626f4b92b5
chore(sdk): Remove some unwraps
2021-09-16 14:06:44 +02:00
Damir Jelić
fa6230a08a
fix(sdk): Use a better variable name for the file when uploading
2021-09-15 22:08:45 +02:00
Damir Jelić
866ab33c45
chore: Remove some unneeded clippy silences
2021-09-15 20:48:15 +02:00
Damir Jelić
7764f01b59
fix(crypto): Only send cancellations if there were multiple request recipients
2021-09-15 20:28:16 +02:00
Damir Jelić
ff9bb94ab4
docs(sdk): Simplify the event sending examples
2021-09-15 20:27:36 +02:00
Damir Jelić
28412344d5
docs(sdk): Fix the link to the examples dir
2021-09-15 14:20:14 +02:00
Damir Jelić
bae6b33497
feat(sdk): Add the ability to send out custom message events
2021-09-15 14:20:14 +02:00
Damir Jelić
7a21bdd573
docs(sdk): Fix a small typo
2021-09-15 10:36:58 +02:00
Damir Jelić
43011261a8
fix(sdk): Remove the room_send method from the Client
...
This method is a bit dangerous if the room is encrypted, e.g. people can
send events before the room state has been fetched and thus accidentally
send out unencrypted events in an encrypted room.
2021-09-15 10:36:58 +02:00
Damir Jelić
d8b60dfe55
feat(sdk): Add support to send out custom state events
2021-09-14 23:36:09 +02:00
Damir Jelić
70ab0f446d
chore: Sort the deps in our Cargo.toml files
2021-09-14 16:38:33 +02:00
Damir Jelić
af74988a83
chore: Rename the crate folders to use dashes instead of underscores
2021-09-14 16:38:33 +02:00
Damir Jelić
31b7063e68
docs(sdk): Remove unwraps from the joined room doc examples
2021-09-14 16:38:33 +02:00
Damir Jelić
f42883eaad
docs(sdk): Remove some unwraps from the encryption doc examples
2021-09-14 16:38:33 +02:00
Damir Jelić
7de782d3a2
chore(sdk): Move the various config structs into its own module
2021-09-14 16:38:33 +02:00
Damir Jelić
cf26557cc2
chore(sdk): Move the sso related imports into the sso login method
2021-09-14 13:20:03 +02:00
Damir Jelić
29d11db73a
chore(sdk): Move the e2ee related client methods to the encryption module
2021-09-14 13:10:22 +02:00
Damir Jelić
e8c5b0766e
chore(sdk): Move all the crypto related module under an encryption module
2021-09-14 12:32:59 +02:00
Damir Jelić
041ef66c01
chore: Move the crates into a subfolder
2021-09-14 11:59:21 +02:00
Damir Jelić
b3bbcd1729
chore: Set a rust version in our crates
2021-09-14 10:25:04 +02:00
Damir Jelić
69ccc5a9f9
chore(sdk): Bump the version
CI / Run clippy (push) Has been skipped
CI / linux / WASM (push) Has been skipped
CI / linux / appservice / stable / warp (push) Has been skipped
CI / macOS / appservice / stable / warp (push) Has been skipped
CI / linux / features-markdown (push) Has been skipped
CI / linux / features-socks (push) Has been skipped
CI / linux / features-sso_login (push) Has been skipped
CI / linux / features-no-sled (push) Has been skipped
CI / linux / features-sled_cryptostore (push) Has been skipped
CI / linux / features-no-encryption-and-sled (push) Has been skipped
CI / linux / features-require_auth_for_profile_requests (push) Has been skipped
CI / linux / features-no-encryption (push) Has been skipped
CI / linux / features-rustls-tls (push) Has been skipped
CI / linux / beta (push) Has been skipped
CI / linux / stable (push) Has been skipped
CI / macOS / stable (push) Has been skipped
CI / Check style (push) Failing after 38s
2021-09-13 11:49:39 +02:00
Damir Jelić
f9f83eaa39
chore(base): Bump the version
2021-09-13 11:49:39 +02:00
Damir Jelić
f243a684d4
chore(crypto): Bump the version
2021-09-13 11:49:39 +02:00
Damir Jelić
a82de88963
chore(common): Bump the version
2021-09-13 11:49:39 +02:00
Damir Jelić
97e15feb0d
Merge branch 'fix-sdk-common-dep-feature'
2021-09-13 11:47:20 +02:00
Antoine Martin
51072a5dab
fix(common): wasm_bindgen dependency feature
...
instant doesn't need wasm_bindgen on non wasm targets
2021-09-13 11:01:05 +02:00
Damir Jelić
500bb6e940
fix(sdk): Test that invited member events get emitted
2021-09-13 11:00:24 +02:00
Jonas Platte
140630745f
Fix confusion between initial / stripped state events
...
InviteState contains stripped state events, and initial state events are
not used anywhere in the sync response.
2021-09-13 11:00:24 +02:00
Damir Jelić
1ea9c9a915
fix(base): Allow the presence of a room member to be dead for now
2021-09-13 10:18:45 +02:00
Damir Jelić
b8001b78b4
fix(crypto): Fix some clippy warnings
2021-09-13 10:18:23 +02:00
Damir Jelić
a6916dd9dd
chore(sdk): Bump the version
CI / Check style (push) Failing after 38s
CI / Run clippy (push) Has been skipped
CI / linux / WASM (push) Has been skipped
CI / linux / appservice / stable / warp (push) Has been skipped
CI / macOS / appservice / stable / warp (push) Has been skipped
CI / linux / features-markdown (push) Has been skipped
CI / linux / features-socks (push) Has been skipped
CI / linux / features-sso_login (push) Has been skipped
CI / linux / features-no-sled (push) Has been skipped
CI / linux / features-sled_cryptostore (push) Has been skipped
CI / linux / features-no-encryption-and-sled (push) Has been skipped
CI / linux / features-require_auth_for_profile_requests (push) Has been skipped
CI / linux / features-no-encryption (push) Has been skipped
CI / linux / features-rustls-tls (push) Has been skipped
CI / linux / beta (push) Has been skipped
CI / linux / stable (push) Has been skipped
CI / macOS / stable (push) Has been skipped
2021-09-10 21:41:37 +02:00
Damir Jelić
b96624890e
Merge branch 'event-handler-encryption-info'
2021-09-10 21:36:16 +02:00
Jonas Platte
d6d51ef4b1
Show Option<EncryptionInfo> event handler context in doc example
2021-09-10 17:12:17 +02:00
Jonas Platte
24253128ae
Add support for Option<EncryptionInfo> as event handler context
2021-09-09 21:03:01 +02:00
Jonas Platte
8f46a87f52
Inline handle_sync_events_wrapped
...
It was only used in one place.
2021-09-09 20:44:25 +02:00