bitwarden_wasm_internal/platform/
mod.rs1use 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}