diff --git a/mls-rs-uniffi/Cargo.toml b/mls-rs-uniffi/Cargo.toml index 45005ad8..f1320637 100644 --- a/mls-rs-uniffi/Cargo.toml +++ b/mls-rs-uniffi/Cargo.toml @@ -15,6 +15,7 @@ crate-type = ["lib", "cdylib"] name = "mls_rs_uniffi" [dependencies] +async-trait = "0.1.77" maybe-async = "0.2.10" mls-rs = { path = "../mls-rs" } mls-rs-core = { path = "../mls-rs-core" } diff --git a/mls-rs-uniffi/src/config/group_state.rs b/mls-rs-uniffi/src/config/group_state.rs index 322610a8..8b69ecf2 100644 --- a/mls-rs-uniffi/src/config/group_state.rs +++ b/mls-rs-uniffi/src/config/group_state.rs @@ -30,12 +30,12 @@ impl mls_rs_core::group::EpochRecord for EpochRecord { #[cfg_attr(not(mls_build_async), maybe_async::must_be_sync)] #[cfg_attr(mls_build_async, maybe_async::must_be_async)] -#[uniffi::export] +#[uniffi::export(with_foreign)] pub trait GroupStateStorage: Send + Sync + Debug { - async fn state(&self, group_id: &[u8]) -> Result>, FFICallbackError>; + async fn state(&self, group_id: Vec) -> Result>, FFICallbackError>; async fn epoch( &self, - group_id: &[u8], + group_id: Vec, epoch_id: u64, ) -> Result>, FFICallbackError>; @@ -46,7 +46,7 @@ pub trait GroupStateStorage: Send + Sync + Debug { epoch_updates: Vec>, ) -> Result<(), FFICallbackError>; - async fn max_epoch_id(&self, group_id: &[u8]) -> Result, FFICallbackError>; + async fn max_epoch_id(&self, group_id: Vec) -> Result, FFICallbackError>; } #[derive(Debug, Clone)] @@ -67,7 +67,7 @@ impl mls_rs_core::group::GroupStateStorage for GroupStateStorageWrapper { where T: mls_rs_core::group::GroupState + MlsEncode + MlsDecode, { - let state_data = self.0.state(group_id)?; + let state_data = self.0.state(group_id.to_vec())?; state_data .as_deref() @@ -80,7 +80,7 @@ impl mls_rs_core::group::GroupStateStorage for GroupStateStorageWrapper { where T: mls_rs_core::group::EpochRecord + MlsEncode + MlsDecode, { - let epoch_data = self.0.epoch(group_id, epoch_id)?; + let epoch_data = self.0.epoch(group_id.to_vec(), epoch_id)?; epoch_data .as_deref() @@ -118,6 +118,6 @@ impl mls_rs_core::group::GroupStateStorage for GroupStateStorageWrapper { } async fn max_epoch_id(&self, group_id: &[u8]) -> Result, Self::Error> { - self.0.max_epoch_id(group_id) + self.0.max_epoch_id(group_id.to_vec()) } } diff --git a/mls-rs-uniffi/src/lib.rs b/mls-rs-uniffi/src/lib.rs index eaa3888f..fc1070c4 100644 --- a/mls-rs-uniffi/src/lib.rs +++ b/mls-rs-uniffi/src/lib.rs @@ -17,9 +17,9 @@ //! //! [UniFFI]: https://mozilla.github.io/uniffi-rs/ +mod config; #[cfg(test)] pub mod test_utils; -mod config; use std::sync::Arc;