pub use opentalk_types_common::shared_folders::SharedFolderAccess;
use opentalk_types_common::{modules::ModuleId, shared_folders::SharedFolder};
use opentalk_types_signaling::SignalingModuleFrontendData;
use crate::SHARED_FOLDER_MODULE_ID;
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct SharedFolderState {
pub read: SharedFolderAccess,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub read_write: Option<SharedFolderAccess>,
}
impl SharedFolderState {
pub fn without_write_access(self) -> Self {
Self {
read_write: None,
..self
}
}
pub fn with_write_access(self, write_access: SharedFolderAccess) -> Self {
Self {
read_write: Some(write_access),
..self
}
}
}
impl From<SharedFolder> for SharedFolderState {
fn from(value: SharedFolder) -> Self {
Self {
read: value.read,
read_write: value.read_write,
}
}
}
impl From<SharedFolderState> for SharedFolder {
fn from(value: SharedFolderState) -> Self {
Self {
read: value.read,
read_write: value.read_write,
}
}
}
impl SignalingModuleFrontendData for SharedFolderState {
const NAMESPACE: Option<ModuleId> = Some(SHARED_FOLDER_MODULE_ID);
}