mirror of
https://github.com/hexedtech/codemp.git
synced 2025-03-27 21:51:33 +01:00
34 lines
1.1 KiB
Rust
34 lines
1.1 KiB
Rust
//! # Event
|
|
//! Real time notification of changes in a workspace, to either users or buffers.
|
|
use codemp_proto::workspace::workspace_event::Event as WorkspaceEventInner;
|
|
|
|
/// Event in a [crate::Workspace].
|
|
#[derive(Debug, Clone)]
|
|
#[cfg_attr(feature = "python", pyo3::pyclass)]
|
|
pub enum Event {
|
|
/// Fired when the file tree changes.
|
|
/// Contains the modified buffer path (deleted, created or renamed).
|
|
FileTreeUpdated(String),
|
|
/// Fired when an user joins the current workspace.
|
|
UserJoin(String),
|
|
/// Fired when an user leaves the current workspace.
|
|
UserLeave(String),
|
|
}
|
|
|
|
impl From<WorkspaceEventInner> for Event {
|
|
fn from(event: WorkspaceEventInner) -> Self {
|
|
match event {
|
|
WorkspaceEventInner::Join(e) => Self::UserJoin(e.user.name),
|
|
WorkspaceEventInner::Leave(e) => Self::UserLeave(e.user.name),
|
|
WorkspaceEventInner::Create(e) => Self::FileTreeUpdated(e.path),
|
|
WorkspaceEventInner::Delete(e) => Self::FileTreeUpdated(e.path),
|
|
WorkspaceEventInner::Rename(e) => Self::FileTreeUpdated(e.after),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl From<&WorkspaceEventInner> for Event {
|
|
fn from(event: &WorkspaceEventInner) -> Self {
|
|
Self::from(event.clone())
|
|
}
|
|
}
|