Merge branch 'master' into new-state-store

master
Damir Jelić 2021-01-04 17:34:33 +01:00
commit c6a80dc921
24 changed files with 104 additions and 160 deletions

View File

@ -6,5 +6,4 @@ members = [
"matrix_sdk_test_macros", "matrix_sdk_test_macros",
"matrix_sdk_crypto", "matrix_sdk_crypto",
"matrix_sdk_common", "matrix_sdk_common",
"matrix_sdk_common_macros",
] ]

View File

@ -28,18 +28,16 @@ socks = ["reqwest/socks"]
docs = ["encryption", "sqlite_cryptostore", "messages"] docs = ["encryption", "sqlite_cryptostore", "messages"]
[dependencies] [dependencies]
async-trait = "0.1.41" dashmap = { version = "4.0.1", optional = true }
dashmap = { version = "3.11.10", optional = true } futures = "0.3.8"
futures = "0.3.6" http = "0.2.2"
http = "0.2.1" serde_json = "1.0.61"
serde_json = "1.0.59" thiserror = "1.0.23"
thiserror = "1.0.21" tracing = "0.1.22"
tracing = "0.1.21" url = "2.2.0"
url = "2.1.1" zeroize = "1.2.0"
zeroize = "1.1.1"
mime = "0.3.16" mime = "0.3.16"
matrix-sdk-common-macros = { version = "0.1.0", path = "../matrix_sdk_common_macros" }
matrix-sdk-common = { version = "0.1.0", path = "../matrix_sdk_common" } matrix-sdk-common = { version = "0.1.0", path = "../matrix_sdk_common" }
[dependencies.matrix-sdk-base] [dependencies.matrix-sdk-base]
@ -48,7 +46,7 @@ path = "../matrix_sdk_base"
default_features = false default_features = false
[dependencies.reqwest] [dependencies.reqwest]
version = "0.10.8" version = "0.10.10"
default_features = false default_features = false
[dependencies.tracing-futures] [dependencies.tracing-futures]
@ -60,7 +58,7 @@ features = ["std", "std-future"]
futures-timer = "3.0.2" futures-timer = "3.0.2"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio] [target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "0.2.22" version = "0.2.24"
default-features = false default-features = false
features = ["fs", "blocking"] features = ["fs", "blocking"]
@ -69,15 +67,14 @@ version = "3.0.2"
features = ["wasm-bindgen"] features = ["wasm-bindgen"]
[dev-dependencies] [dev-dependencies]
async-trait = "0.1.41" async-std = { version = "1.8.0", features = ["unstable"] }
async-std = { version = "1.6.5", features = ["unstable"] }
dirs = "3.0.1" dirs = "3.0.1"
matrix-sdk-test = { version = "0.1.0", path = "../matrix_sdk_test" } matrix-sdk-test = { version = "0.1.0", path = "../matrix_sdk_test" }
tokio = { version = "0.2.22", default-features = false, features = ["rt-threaded", "macros"] } tokio = { version = "0.2.24", default-features = false, features = ["rt-threaded", "macros"] }
serde_json = "1.0.59" serde_json = "1.0.61"
tracing-subscriber = "0.2.13" tracing-subscriber = "0.2.15"
tempfile = "3.1.0" tempfile = "3.1.0"
mockito = "0.27.0" mockito = "0.28.0"
lazy_static = "1.4.0" lazy_static = "1.4.0"
[[example]] [[example]]

View File

@ -2,11 +2,10 @@ use std::{env, process::exit};
use tokio::time::{delay_for, Duration}; use tokio::time::{delay_for, Duration};
use matrix_sdk::{ use matrix_sdk::{
self, self, async_trait,
events::{room::member::MemberEventContent, StrippedStateEvent}, events::{room::member::MemberEventContent, StrippedStateEvent},
Client, ClientConfig, EventEmitter, RoomState, SyncSettings, Client, ClientConfig, EventEmitter, RoomState, SyncSettings,
}; };
use matrix_sdk_common_macros::async_trait;
use url::Url; use url::Url;
struct AutoJoinBot { struct AutoJoinBot {

View File

@ -1,14 +1,13 @@
use std::{env, process::exit}; use std::{env, process::exit};
use matrix_sdk::{ use matrix_sdk::{
self, self, async_trait,
events::{ events::{
room::message::{MessageEventContent, TextMessageEventContent}, room::message::{MessageEventContent, TextMessageEventContent},
AnyMessageEventContent, SyncMessageEvent, AnyMessageEventContent, SyncMessageEvent,
}, },
Client, ClientConfig, EventEmitter, RoomState, SyncSettings, Client, ClientConfig, EventEmitter, RoomState, SyncSettings,
}; };
use matrix_sdk_common_macros::async_trait;
use url::Url; use url::Url;
struct CommandBot { struct CommandBot {

View File

@ -9,14 +9,13 @@ use std::{
use tokio::sync::Mutex; use tokio::sync::Mutex;
use matrix_sdk::{ use matrix_sdk::{
self, self, async_trait,
events::{ events::{
room::message::{MessageEventContent, TextMessageEventContent}, room::message::{MessageEventContent, TextMessageEventContent},
SyncMessageEvent, SyncMessageEvent,
}, },
Client, ClientConfig, EventEmitter, RoomState, SyncSettings, Client, ClientConfig, EventEmitter, RoomState, SyncSettings,
}; };
use matrix_sdk_common_macros::async_trait;
use url::Url; use url::Url;
struct ImageBot { struct ImageBot {

View File

@ -2,14 +2,13 @@ use std::{env, process::exit};
use url::Url; use url::Url;
use matrix_sdk::{ use matrix_sdk::{
self, self, async_trait,
events::{ events::{
room::message::{MessageEventContent, TextMessageEventContent}, room::message::{MessageEventContent, TextMessageEventContent},
SyncMessageEvent, SyncMessageEvent,
}, },
Client, ClientConfig, EventEmitter, RoomState, SyncSettings, Client, ClientConfig, EventEmitter, RoomState, SyncSettings,
}; };
use matrix_sdk_common_macros::async_trait;
struct EventCallback; struct EventCallback;

View File

@ -103,10 +103,9 @@ use matrix_sdk_common::{
}, },
identifiers::{DeviceIdBox, EventId, RoomId, RoomIdOrAliasId, ServerName, UserId}, identifiers::{DeviceIdBox, EventId, RoomId, RoomIdOrAliasId, ServerName, UserId},
instant::{Duration, Instant}, instant::{Duration, Instant},
js_int::UInt,
presence::PresenceState, presence::PresenceState,
uuid::Uuid, uuid::Uuid,
FromHttpResponseError, FromHttpResponseError, UInt,
}; };
#[cfg(feature = "encryption")] #[cfg(feature = "encryption")]
@ -1025,7 +1024,6 @@ impl Client {
/// # use matrix_sdk::api::r0::filter::RoomEventFilter; /// # use matrix_sdk::api::r0::filter::RoomEventFilter;
/// # use matrix_sdk::api::r0::message::get_message_events::Request as MessagesRequest; /// # use matrix_sdk::api::r0::message::get_message_events::Request as MessagesRequest;
/// # use url::Url; /// # use url::Url;
/// # use matrix_sdk::js_int::UInt;
/// ///
/// # let homeserver = Url::parse("http://example.com").unwrap(); /// # let homeserver = Url::parse("http://example.com").unwrap();
/// let room_id = room_id!("!roomid:example.com"); /// let room_id = room_id!("!roomid:example.com");

View File

@ -20,9 +20,8 @@ use tracing::trace;
use url::Url; use url::Url;
use matrix_sdk_common::{ use matrix_sdk_common::{
api::r0::media::create_content, locks::RwLock, AuthScheme, FromHttpResponseError, api::r0::media::create_content, async_trait, locks::RwLock, AuthScheme, FromHttpResponseError,
}; };
use matrix_sdk_common_macros::async_trait;
use crate::{ClientConfig, Error, OutgoingRequest, Result, Session}; use crate::{ClientConfig, Error, OutgoingRequest, Result, Session};
@ -42,8 +41,7 @@ pub trait HttpSend: Sync + Send + Debug {
/// ///
/// ``` /// ```
/// use std::convert::TryFrom; /// use std::convert::TryFrom;
/// use matrix_sdk::{HttpSend, Result}; /// use matrix_sdk::{HttpSend, Result, async_trait};
/// use matrix_sdk_common_macros::async_trait;
/// ///
/// #[derive(Debug)] /// #[derive(Debug)]
/// struct Client(reqwest::Client); /// struct Client(reqwest::Client);

View File

@ -24,33 +24,31 @@ unstable-synapse-quirks = ["matrix-sdk-common/unstable-synapse-quirks"]
docs = ["encryption", "sqlite_cryptostore", "messages"] docs = ["encryption", "sqlite_cryptostore", "messages"]
[dependencies] [dependencies]
async-trait = "0.1.41" dashmap= "4.0.1"
serde = { version = "1.0.117", features = ["rc"]} serde = { version = "1.0.118", features = ["rc"]}
dashmap= "*" serde_json = "1.0.61"
serde_json = "1.0.59" zeroize = "1.2.0"
zeroize = "1.1.1" tracing = "0.1.22"
tracing = "0.1.21"
matrix-sdk-common-macros = { version = "0.1.0", path = "../matrix_sdk_common_macros" }
matrix-sdk-common = { version = "0.1.0", path = "../matrix_sdk_common" } matrix-sdk-common = { version = "0.1.0", path = "../matrix_sdk_common" }
matrix-sdk-crypto = { version = "0.1.0", path = "../matrix_sdk_crypto", optional = true } matrix-sdk-crypto = { version = "0.1.0", path = "../matrix_sdk_crypto", optional = true }
# Misc dependencies # Misc dependencies
thiserror = "1.0.21" thiserror = "1.0.23"
sled = "0.34.4" sled = "0.34.6"
futures = "0.3.6" futures = "0.3.8"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio] [target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "0.2.22" version = "0.2.24"
default-features = false default-features = false
features = ["sync", "fs"] features = ["sync", "fs"]
[dev-dependencies] [dev-dependencies]
matrix-sdk-test = { version = "0.1.0", path = "../matrix_sdk_test" } matrix-sdk-test = { version = "0.1.0", path = "../matrix_sdk_test" }
http = "0.2.1" http = "0.2.2"
tracing-subscriber = "0.2.13" tracing-subscriber = "0.2.15"
tempfile = "3.1.0" tempfile = "3.1.0"
mockito = "0.27.0" mockito = "0.28.0"
rustyline = "7.0.0" rustyline = "7.0.0"
rustyline-derive = "0.4.0" rustyline-derive = "0.4.0"
atty = "0.2" atty = "0.2"
@ -58,7 +56,7 @@ clap = "2.33.3"
syntect = "4.4.0" syntect = "4.4.0"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
tokio = { version = "0.2.22", default-features = false, features = ["rt-threaded", "macros"] } tokio = { version = "0.2.24", default-features = false, features = ["rt-threaded", "macros"] }
[target.'cfg(target_arch = "wasm32")'.dev-dependencies] [target.'cfg(target_arch = "wasm32")'.dev-dependencies]
wasm-bindgen-test = "0.3.18" wasm-bindgen-test = "0.3.19"

View File

@ -50,7 +50,7 @@ use crate::{
rooms::RoomState, rooms::RoomState,
Store, Store,
}; };
use matrix_sdk_common_macros::async_trait; use matrix_sdk_common::async_trait;
pub(crate) struct Emitter { pub(crate) struct Emitter {
pub(crate) inner: Box<dyn EventEmitter>, pub(crate) inner: Box<dyn EventEmitter>,
@ -278,8 +278,7 @@ pub enum CustomEvent<'c> {
/// # }, /// # },
/// # EventEmitter, RoomState /// # EventEmitter, RoomState
/// # }; /// # };
/// # use matrix_sdk_common::locks::RwLock; /// # use matrix_sdk_common::{async_trait, locks::RwLock};
/// # use matrix_sdk_common_macros::async_trait;
/// ///
/// struct EventCallback; /// struct EventCallback;
/// ///
@ -303,7 +302,8 @@ pub enum CustomEvent<'c> {
/// } /// }
/// } /// }
/// ``` /// ```
#[async_trait] #[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
pub trait EventEmitter: Send + Sync { pub trait EventEmitter: Send + Sync {
// ROOM EVENTS from `IncomingTimeline` // ROOM EVENTS from `IncomingTimeline`
/// Fires when `Client` receives a `RoomEvent::RoomMember` event. /// Fires when `Client` receives a `RoomEvent::RoomMember` event.
@ -488,8 +488,7 @@ pub trait EventEmitter: Send + Sync {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
use matrix_sdk_common::locks::Mutex; use matrix_sdk_common::{async_trait, locks::Mutex};
use matrix_sdk_common_macros::async_trait;
use matrix_sdk_test::{async_test, sync_response, SyncResponseFile}; use matrix_sdk_test::{async_test, sync_response, SyncResponseFile};
use std::sync::Arc; use std::sync::Arc;
@ -499,7 +498,8 @@ mod test {
#[derive(Clone)] #[derive(Clone)]
pub struct EvEmitterTest(Arc<Mutex<Vec<String>>>); pub struct EvEmitterTest(Arc<Mutex<Vec<String>>>);
#[async_trait] #[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
impl EventEmitter for EvEmitterTest { impl EventEmitter for EvEmitterTest {
async fn on_room_member(&self, _: RoomState, _: &SyncStateEvent<MemberEventContent>) { async fn on_room_member(&self, _: RoomState, _: &SyncStateEvent<MemberEventContent>) {
self.0.lock().await.push("member".to_string()) self.0.lock().await.push("member".to_string())

View File

@ -8,7 +8,7 @@ use std::{
}, },
}; };
use matrix_sdk_common::{identifiers::RoomId, locks::RwLock}; use matrix_sdk_common::{async_trait, identifiers::RoomId, locks::RwLock};
use tokio::{fs as async_fs, io::AsyncWriteExt}; use tokio::{fs as async_fs, io::AsyncWriteExt};
use super::{AllRooms, ClientState, StateStore}; use super::{AllRooms, ClientState, StateStore};
@ -78,7 +78,7 @@ impl fmt::Debug for JsonStore {
} }
} }
#[async_trait::async_trait] #[async_trait]
impl StateStore for JsonStore { impl StateStore for JsonStore {
async fn load_client_state(&self, sess: &Session) -> Result<Option<ClientState>> { async fn load_client_state(&self, sess: &Session) -> Result<Option<ClientState>> {
if !self.user_path_set.load(Ordering::SeqCst) { if !self.user_path_set.load(Ordering::SeqCst) {

View File

@ -16,8 +16,10 @@
use std::collections::HashMap; use std::collections::HashMap;
use matrix_sdk_common::{ use matrix_sdk_common::{
async_trait,
identifiers::{RoomId, UserId}, identifiers::{RoomId, UserId},
push::Ruleset, push::Ruleset,
AsyncTraitDeps,
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@ -31,9 +33,6 @@ use crate::{
Result, Room, RoomState, Session, Result, Room, RoomState, Session,
}; };
#[cfg(not(target_arch = "wasm32"))]
use matrix_sdk_common_macros::send_sync;
/// `ClientState` holds all the information to restore a `BaseClient` /// `ClientState` holds all the information to restore a `BaseClient`
/// except the `access_token` as the default store is not secure. /// except the `access_token` as the default store is not secure.
/// ///
@ -70,9 +69,9 @@ pub struct AllRooms {
} }
/// Abstraction around the data store to avoid unnecessary request on client initialization. /// Abstraction around the data store to avoid unnecessary request on client initialization.
#[async_trait::async_trait] #[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
#[cfg_attr(not(target_arch = "wasm32"), send_sync)] #[cfg_attr(not(target_arch = "wasm32"), async_trait)]
pub trait StateStore { pub trait StateStore: AsyncTraitDeps {
/// Loads the state of `BaseClient` through `ClientState` type. /// Loads the state of `BaseClient` through `ClientState` type.
/// ///
/// An `Option::None` should be returned only if the `StateStore` tries to /// An `Option::None` should be returned only if the `StateStore` tries to

View File

@ -14,9 +14,8 @@ version = "0.1.0"
unstable-synapse-quirks = ["ruma/unstable-synapse-quirks"] unstable-synapse-quirks = ["ruma/unstable-synapse-quirks"]
[dependencies] [dependencies]
assign = "1.1.0" instant = { version = "0.1.9", features = ["wasm-bindgen", "now"] }
instant = { version = "0.1.7", features = ["wasm-bindgen", "now"] } async-trait = "0.1.42"
js_int = "0.1.9"
[dependencies.ruma] [dependencies.ruma]
version = "0.0.2" version = "0.0.2"
@ -26,7 +25,7 @@ features = ["client-api", "unstable-pre-spec"]
uuid = { version = "0.8.1", default-features = false, features = ["v4", "serde"] } uuid = { version = "0.8.1", default-features = false, features = ["v4", "serde"] }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio] [target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "0.2.22" version = "0.2.24"
default-features = false default-features = false
features = ["sync"] features = ["sync"]

View File

@ -1,4 +1,4 @@
pub use assign::assign; pub use async_trait::async_trait;
pub use instant; pub use instant;
pub use ruma::{ pub use ruma::{
api::{ api::{
@ -6,13 +6,27 @@ pub use ruma::{
error::{FromHttpRequestError, FromHttpResponseError, IntoHttpError, ServerError}, error::{FromHttpRequestError, FromHttpResponseError, IntoHttpError, ServerError},
AuthScheme, EndpointError, OutgoingRequest, AuthScheme, EndpointError, OutgoingRequest,
}, },
directory, encryption, events, assign, directory, encryption, events, identifiers, int, presence, push,
events::exports::js_int,
identifiers, presence, push,
serde::{CanonicalJsonValue, Raw}, serde::{CanonicalJsonValue, Raw},
thirdparty, Outgoing, thirdparty, uint, Int, Outgoing, UInt,
}; };
pub use uuid; pub use uuid;
pub mod locks; pub mod locks;
/// Super trait that is used for our store traits, this trait will differ if
/// it's used on WASM. WASM targets will not require `Send` and `Sync` to have
/// implemented, while other targets will.
#[cfg(not(target_arch = "wasm32"))]
pub trait AsyncTraitDeps: std::fmt::Debug + Send + Sync {}
#[cfg(not(target_arch = "wasm32"))]
impl<T: std::fmt::Debug + Send + Sync> AsyncTraitDeps for T {}
/// Super trait that is used for our store traits, this trait will differ if
/// it's used on WASM. WASM targets will not require `Send` and `Sync` to have
/// implemented, while other targets will.
#[cfg(target_arch = "wasm32")]
pub trait AsyncTraitDeps: std::fmt::Debug + Send + Sync {}
#[cfg(target_arch = "wasm32")]
impl<T: std::fmt::Debug + Send + Sync> AsyncTraitDeps for T {}

View File

@ -1,18 +0,0 @@
[package]
description = "Helper macros for the Matrix SDK"
authors = ["MTRnord <mtrnord1@gmail.com>"]
edition = "2018"
homepage = "https://github.com/matrix-org/matrix-rust-sdk"
keywords = ["matrix", "chat", "messaging", "ruma"]
license = "Apache-2.0"
name = "matrix-sdk-common-macros"
readme = "README.md"
repository = "https://github.com/matrix-org/matrix-rust-sdk"
version = "0.1.0"
[lib]
proc-macro = true
[dependencies]
syn = { version = "1.0.45", features = ["proc-macro"], default-features = false }
quote = "1.0.7"

View File

@ -1,30 +0,0 @@
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, parse_quote, ItemTrait};
/// Attribute to use `Send + Sync` for everything but wasm32
#[proc_macro_attribute]
pub fn send_sync(_attr: TokenStream, input: TokenStream) -> TokenStream {
// Parse the input tokens into a syntax tree
let mut input = parse_macro_input!(input as ItemTrait);
let send_trait_bound = parse_quote!(std::marker::Send);
let sync_trait_bound = parse_quote!(std::marker::Sync);
input.supertraits.push(send_trait_bound);
input.supertraits.push(sync_trait_bound);
TokenStream::from(quote!(#input))
}
/// A wasm32 compatible wrapper for the async_trait::async_trait macro
#[proc_macro_attribute]
pub fn async_trait(_attr: TokenStream, item: TokenStream) -> TokenStream {
let attrs = r#"
#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
"#;
let mut out: TokenStream = attrs.parse().unwrap();
out.extend(item);
out
}

View File

@ -20,24 +20,21 @@ sqlite_cryptostore = ["sqlx"]
docs = ["sqlite_cryptostore"] docs = ["sqlite_cryptostore"]
[dependencies] [dependencies]
async-trait = "0.1.41"
matrix-sdk-common-macros = { version = "0.1.0", path = "../matrix_sdk_common_macros" }
matrix-sdk-common = { version = "0.1.0", path = "../matrix_sdk_common" } matrix-sdk-common = { version = "0.1.0", path = "../matrix_sdk_common" }
olm-rs = { version = "1.0.0", features = ["serde"] } olm-rs = { version = "1.0.0", features = ["serde"] }
getrandom = "0.2.0" getrandom = "0.2.1"
serde = { version = "1.0.117", features = ["derive", "rc"] } serde = { version = "1.0.118", features = ["derive", "rc"] }
serde_json = "1.0.59" serde_json = "1.0.61"
zeroize = { version = "1.1.1", features = ["zeroize_derive"] } zeroize = { version = "1.2.0", features = ["zeroize_derive"] }
# Misc dependencies # Misc dependencies
thiserror = "1.0.21" thiserror = "1.0.23"
tracing = "0.1.21" tracing = "0.1.22"
atomic = "0.5.0" atomic = "0.5.0"
dashmap = "3.11.10" dashmap = "4.0.1"
sha2 = "0.9.1" sha2 = "0.9.2"
aes-gcm = "0.7.0" aes-gcm = "0.8.0"
aes-ctr = "0.6.0" aes-ctr = "0.6.0"
pbkdf2 = { version = "0.6.0", default-features = false } pbkdf2 = { version = "0.6.0", default-features = false }
hmac = "0.10.1" hmac = "0.10.1"
@ -45,17 +42,17 @@ base64 = "0.13.0"
byteorder = "1.3.4" byteorder = "1.3.4"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.sqlx] [target.'cfg(not(target_arch = "wasm32"))'.dependencies.sqlx]
version = "0.4.1" version = "0.4.2"
optional = true optional = true
default-features = false default-features = false
features = ["runtime-tokio-native-tls", "sqlite", "macros"] features = ["runtime-tokio-native-tls", "sqlite", "macros"]
[dev-dependencies] [dev-dependencies]
tokio = { version = "0.2.22", default-features = false, features = ["rt-threaded", "macros"] } tokio = { version = "0.2.24", default-features = false, features = ["rt-threaded", "macros"] }
futures = "0.3.6" futures = "0.3.8"
proptest = "0.10.1" proptest = "0.10.1"
serde_json = "1.0.59" serde_json = "1.0.61"
tempfile = "3.1.0" tempfile = "3.1.0"
http = "0.2.1" http = "0.2.2"
matrix-sdk-test = { version = "0.1.0", path = "../matrix_sdk_test" } matrix-sdk-test = { version = "0.1.0", path = "../matrix_sdk_test" }
indoc = "1.0.3" indoc = "1.0.3"

View File

@ -39,10 +39,9 @@ use matrix_sdk_common::{
DeviceId, DeviceIdBox, DeviceKeyAlgorithm, EventEncryptionAlgorithm, EventId, RoomId, DeviceId, DeviceIdBox, DeviceKeyAlgorithm, EventEncryptionAlgorithm, EventId, RoomId,
UserId, UserId,
}, },
js_int::UInt,
locks::Mutex, locks::Mutex,
uuid::Uuid, uuid::Uuid,
Raw, Raw, UInt,
}; };
use crate::{ use crate::{
@ -1202,7 +1201,7 @@ pub(crate) mod test {
/// These keys need to be periodically uploaded to the server. /// These keys need to be periodically uploaded to the server.
type OneTimeKeys = BTreeMap<DeviceKeyId, OneTimeKey>; type OneTimeKeys = BTreeMap<DeviceKeyId, OneTimeKey>;
use matrix_sdk_common::js_int::uint; use matrix_sdk_common::uint;
fn alice_id() -> UserId { fn alice_id() -> UserId {
user_id!("@alice:example.org") user_id!("@alice:example.org")

View File

@ -41,9 +41,8 @@ use matrix_sdk_common::{
UserId, UserId,
}, },
instant::Instant, instant::Instant,
js_int::UInt,
locks::Mutex, locks::Mutex,
CanonicalJsonValue, Raw, CanonicalJsonValue, Raw, UInt,
}; };
use olm_rs::{ use olm_rs::{
account::{IdentityKeys, OlmAccount, OneTimeKeys}, account::{IdentityKeys, OlmAccount, OneTimeKeys},

View File

@ -418,7 +418,7 @@ mod test {
use matrix_sdk_common::{ use matrix_sdk_common::{
events::room::encryption::EncryptionEventContent, identifiers::EventEncryptionAlgorithm, events::room::encryption::EncryptionEventContent, identifiers::EventEncryptionAlgorithm,
js_int::uint, uint,
}; };
use super::{EncryptionSettings, ROTATION_MESSAGES, ROTATION_PERIOD}; use super::{EncryptionSettings, ROTATION_MESSAGES, ROTATION_PERIOD};

View File

@ -19,10 +19,10 @@ use std::{
use dashmap::{DashMap, DashSet}; use dashmap::{DashMap, DashSet};
use matrix_sdk_common::{ use matrix_sdk_common::{
async_trait,
identifiers::{DeviceId, DeviceIdBox, RoomId, UserId}, identifiers::{DeviceId, DeviceIdBox, RoomId, UserId},
locks::Mutex, locks::Mutex,
}; };
use matrix_sdk_common_macros::async_trait;
use super::{ use super::{
caches::{DeviceStore, GroupSessionStore, SessionStore}, caches::{DeviceStore, GroupSessionStore, SessionStore},
@ -92,7 +92,8 @@ impl MemoryStore {
} }
} }
#[async_trait] #[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
impl CryptoStore for MemoryStore { impl CryptoStore for MemoryStore {
async fn load_account(&self) -> Result<Option<ReadOnlyAccount>> { async fn load_account(&self) -> Result<Option<ReadOnlyAccount>> {
Ok(None) Ok(None)

View File

@ -44,7 +44,6 @@ mod pickle_key;
#[cfg(feature = "sqlite_cryptostore")] #[cfg(feature = "sqlite_cryptostore")]
pub(crate) mod sqlite; pub(crate) mod sqlite;
use matrix_sdk_common::identifiers::DeviceIdBox;
pub use memorystore::MemoryStore; pub use memorystore::MemoryStore;
pub use pickle_key::{EncryptedPickleKey, PickleKey}; pub use pickle_key::{EncryptedPickleKey, PickleKey};
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
@ -70,14 +69,14 @@ use thiserror::Error;
use sqlx::Error as SqlxError; use sqlx::Error as SqlxError;
use matrix_sdk_common::{ use matrix_sdk_common::{
async_trait,
identifiers::{ identifiers::{
DeviceId, DeviceKeyAlgorithm, Error as IdentifierValidationError, RoomId, UserId, DeviceId, DeviceIdBox, DeviceKeyAlgorithm, Error as IdentifierValidationError, RoomId,
UserId,
}, },
locks::Mutex, locks::Mutex,
AsyncTraitDeps,
}; };
use matrix_sdk_common_macros::async_trait;
#[cfg(not(target_arch = "wasm32"))]
use matrix_sdk_common_macros::send_sync;
use crate::{ use crate::{
error::SessionUnpicklingError, error::SessionUnpicklingError,
@ -332,10 +331,9 @@ pub enum CryptoStoreError {
/// Trait abstracting a store that the `OlmMachine` uses to store cryptographic /// Trait abstracting a store that the `OlmMachine` uses to store cryptographic
/// keys. /// keys.
#[async_trait] #[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
#[allow(clippy::type_complexity)] #[cfg_attr(not(target_arch = "wasm32"), async_trait)]
#[cfg_attr(not(target_arch = "wasm32"), send_sync)] pub trait CryptoStore: AsyncTraitDeps {
pub trait CryptoStore: Debug {
/// Load an account that was previously stored. /// Load an account that was previously stored.
async fn load_account(&self) -> Result<Option<ReadOnlyAccount>>; async fn load_account(&self) -> Result<Option<ReadOnlyAccount>>;

View File

@ -20,10 +20,10 @@ use std::{
sync::{Arc, Mutex as SyncMutex}, sync::{Arc, Mutex as SyncMutex},
}; };
use async_trait::async_trait;
use dashmap::DashSet; use dashmap::DashSet;
use matrix_sdk_common::{ use matrix_sdk_common::{
api::r0::keys::{CrossSigningKey, KeyUsage}, api::r0::keys::{CrossSigningKey, KeyUsage},
async_trait,
identifiers::{ identifiers::{
DeviceId, DeviceIdBox, DeviceKeyAlgorithm, DeviceKeyId, EventEncryptionAlgorithm, RoomId, DeviceId, DeviceIdBox, DeviceKeyAlgorithm, DeviceKeyId, EventEncryptionAlgorithm, RoomId,
UserId, UserId,

View File

@ -11,9 +11,9 @@ repository = "https://github.com/matrix-org/matrix-rust-sdk"
version = "0.1.0" version = "0.1.0"
[dependencies] [dependencies]
serde_json = "1.0.59" serde_json = "1.0.61"
http = "0.2.1" http = "0.2.2"
matrix-sdk-common = { version = "0.1.0", path = "../matrix_sdk_common" } matrix-sdk-common = { version = "0.1.0", path = "../matrix_sdk_common" }
matrix-sdk-test-macros = { version = "0.1.0", path = "../matrix_sdk_test_macros" } matrix-sdk-test-macros = { version = "0.1.0", path = "../matrix_sdk_test_macros" }
lazy_static = "1.4.0" lazy_static = "1.4.0"
serde = "1.0.117" serde = "1.0.118"