use crate::workspace::{WorkspaceFlags, WorkspaceInfo};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum ControlRequest {
ListWorkspaces,
AddWorkspace {
path: String,
flags: WorkspaceFlags,
collaborator_access_code_hash: String,
#[serde(default)]
single_file: Option<String>,
#[serde(default)]
alias: String,
},
UpdateFlags { id: String, flags: WorkspaceFlags },
SetAlias { id: String, alias: String },
RemoveWorkspace { id: String },
SetAccessCode {
id: String,
collaborator_access_code_hash: Option<String>,
},
AdminBootstrap { redirect: String },
AdminBootstrapCode { redirect: String },
Shutdown,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum ControlResponse {
Workspaces(Vec<WorkspaceInfo>),
WorkspaceId(String),
Url(String),
AdminCode { url: String, code: String },
Ok,
Err(String),
}