mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-05-25 14:32:12 +00:00
69 lines
1.8 KiB
Rust
69 lines
1.8 KiB
Rust
#![allow(unexpected_cfgs)]
|
|
pub mod callbacks;
|
|
pub mod wrapper;
|
|
|
|
use std::sync::Arc;
|
|
|
|
use crate::bridge::callbacks::user_discovery::{
|
|
UserDiscoveryStoreFlutter, UserDiscoveryUtilsFlutter,
|
|
};
|
|
use crate::context::Context;
|
|
use crate::database::Database;
|
|
use crate::error::Result;
|
|
use crate::error::TwonlyError;
|
|
use crate::keys::KeyManager;
|
|
use crate::secure_storage::SecureStorage;
|
|
use crate::utils::Shared;
|
|
use flutter_rust_bridge::frb;
|
|
use protocols::user_discovery::UserDiscovery;
|
|
|
|
pub use protocols::user_discovery::traits::AnnouncedUser;
|
|
pub use protocols::user_discovery::traits::OtherPromotion;
|
|
use tokio::sync::Mutex;
|
|
|
|
pub struct InitConfig {
|
|
pub database_dir: String,
|
|
pub data_dir: String,
|
|
}
|
|
|
|
#[frb(mirror(OtherPromotion))]
|
|
pub struct _OtherPromotion {
|
|
pub promotion_id: u32,
|
|
pub public_id: i64,
|
|
pub from_contact_id: i64,
|
|
pub threshold: u8,
|
|
pub announcement_share: Vec<u8>,
|
|
pub public_key_verified_timestamp: Option<i64>,
|
|
}
|
|
|
|
#[frb(mirror(AnnouncedUser))]
|
|
pub struct _AnnouncedUser {
|
|
pub user_id: i64,
|
|
pub public_key: Vec<u8>,
|
|
pub public_id: i64,
|
|
}
|
|
|
|
pub(crate) struct TwonlyFlutter {
|
|
#[allow(dead_code)]
|
|
pub(crate) config: InitConfig,
|
|
pub(crate) user_discovery:
|
|
Shared<UserDiscovery<UserDiscoveryStoreFlutter, UserDiscoveryUtilsFlutter>>,
|
|
#[allow(dead_code)]
|
|
pub(crate) rust_db: Arc<Database>,
|
|
pub(crate) secure_storage: SecureStorage,
|
|
pub(crate) key_manager: Arc<Mutex<KeyManager>>,
|
|
}
|
|
|
|
pub(super) fn get_twonly_flutter() -> Result<&'static TwonlyFlutter> {
|
|
let ctx = Context::get_static()?;
|
|
if let Context::Flutter(twonly) = ctx {
|
|
return Ok(twonly);
|
|
} else {
|
|
return Err(TwonlyError::Initialization);
|
|
}
|
|
}
|
|
|
|
pub async fn initialize_twonly_flutter(config: InitConfig) -> Result<()> {
|
|
Context::init_flutter(config).await?;
|
|
Ok(())
|
|
}
|