bitwarden_core/platform/
state_client.rs

1use std::sync::Arc;
2
3use bitwarden_state::{
4    registry::RepositoryNotFoundError,
5    repository::{Repository, RepositoryItem},
6};
7
8use crate::Client;
9
10/// Wrapper for state specific functionality.
11pub struct StateClient {
12    pub(crate) client: Client,
13}
14
15impl StateClient {
16    /// Register a client managed state repository for a specific type.
17    pub fn register_client_managed<T: 'static + Repository<V>, V: RepositoryItem>(
18        &self,
19        store: Arc<T>,
20    ) {
21        self.client
22            .internal
23            .repository_map
24            .register_client_managed(store)
25    }
26
27    /// Get a client managed state repository for a specific type, if it exists.
28    pub fn get_client_managed<T: RepositoryItem>(
29        &self,
30    ) -> Result<Arc<dyn Repository<T>>, RepositoryNotFoundError> {
31        self.client.internal.repository_map.get_client_managed()
32    }
33}