bitwarden_wasm_internal/platform/
mod.rs

1use bitwarden_core::Client;
2use bitwarden_vault::{Cipher, Folder};
3use wasm_bindgen::prelude::wasm_bindgen;
4
5mod repository;
6pub mod token_provider;
7
8#[wasm_bindgen]
9pub struct PlatformClient(Client);
10
11impl PlatformClient {
12    pub fn new(client: Client) -> Self {
13        Self(client)
14    }
15}
16
17#[wasm_bindgen]
18impl PlatformClient {
19    pub fn state(&self) -> StateClient {
20        StateClient::new(self.0.clone())
21    }
22}
23
24#[wasm_bindgen]
25pub struct StateClient(Client);
26
27impl StateClient {
28    pub fn new(client: Client) -> Self {
29        Self(client)
30    }
31}
32
33repository::create_wasm_repository!(CipherRepository, Cipher, "Repository<Cipher>");
34repository::create_wasm_repository!(FolderRepository, Folder, "Repository<Folder>");
35
36#[wasm_bindgen]
37impl StateClient {
38    pub fn register_cipher_repository(&self, store: CipherRepository) {
39        let store = store.into_channel_impl();
40        self.0.platform().state().register_client_managed(store)
41    }
42
43    pub fn register_folder_repository(&self, store: FolderRepository) {
44        let store = store.into_channel_impl();
45        self.0.platform().state().register_client_managed(store)
46    }
47}