use iroh_blobs::Hash;
use iroh_docs::NamespaceId;
use crate::{Result, net::NetworkManager, storage::node_db::NodeDatabase};
#[derive(Clone, Debug)]
pub struct NetworkContext {
database: NodeDatabase,
local_node: String,
}
impl NetworkContext {
#[must_use]
pub fn from_manager(manager: &NetworkManager) -> Self {
let local_node = manager.local_node().to_string();
Self {
database: manager.database().clone(),
local_node,
}
}
#[must_use]
pub fn new(database: NodeDatabase, local_node: &str) -> Self {
Self {
database,
local_node: local_node.to_owned(),
}
}
pub fn can_access_folder(&self, namespace_id: &NamespaceId) -> Result<bool> {
self.database
.can_access_folder(&namespace_id.to_string(), &self.local_node)
}
pub fn can_access_blob(&self, hash: &Hash) -> Result<bool> {
self.database.can_access_blob(hash, &self.local_node)
}
pub fn networks_for_folder(&self, namespace_id: &NamespaceId) -> Result<Vec<String>> {
self.database.networks_for_folder(&namespace_id.to_string())
}
}