bitwarden_vault/folder/
folder_client.rs1use std::sync::Arc;
2
3use bitwarden_core::{FromClient, client::ApiConfigurations, key_management::KeySlotIds};
4use bitwarden_crypto::KeyStore;
5use bitwarden_state::repository::Repository;
6
7use crate::{
8 Folder, FolderView,
9 error::{DecryptError, EncryptError},
10};
11
12#[bitwarden_ffi::wasm_object]
14#[derive(FromClient)]
15pub struct FoldersClient {
16 pub(crate) key_store: KeyStore<KeySlotIds>,
17 pub(crate) api_configurations: Arc<ApiConfigurations>,
18 pub(crate) repository: Option<Arc<dyn Repository<Folder>>>,
19}
20
21#[bitwarden_ffi::wasm_export]
22#[deprecated(
23 note = "Use the higher level `FoldersClient` methods instead, which handle encryption and decryption for you."
24)]
25impl FoldersClient {
26 pub fn encrypt(&self, folder_view: FolderView) -> Result<Folder, EncryptError> {
28 let folder = self.key_store.encrypt(folder_view)?;
29 Ok(folder)
30 }
31
32 pub fn decrypt(&self, folder: Folder) -> Result<FolderView, DecryptError> {
34 let folder_view = self.key_store.decrypt(&folder)?;
35 Ok(folder_view)
36 }
37
38 pub fn decrypt_list(&self, folders: Vec<Folder>) -> Result<Vec<FolderView>, DecryptError> {
40 let views = self.key_store.decrypt_list(&folders)?;
41 Ok(views)
42 }
43}