Skip to main content
Glama
user.rs2.09 kB
use serde::{ Deserialize, Serialize, }; pub use si_id::{ ChangeSetId, UserPk, ViewId, WorkspacePk, }; use crate::ws_event::{ WsEvent, WsEventResult, WsPayload, }; #[derive(Serialize, Deserialize, Debug, PartialEq, Clone, Eq)] #[serde(rename_all = "camelCase")] pub struct CursorPayload { pub x: Option<String>, pub y: Option<String>, pub container: Option<String>, pub container_key: Option<String>, pub user_pk: UserPk, pub user_name: String, pub change_set_id: Option<ChangeSetId>, pub view_id: Option<ViewId>, } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone, Eq)] #[serde(rename_all = "camelCase")] pub struct OnlinePayload { pub user_pk: UserPk, pub name: String, pub picture_url: Option<String>, pub change_set_id: Option<ChangeSetId>, pub view_id: Option<ViewId>, pub idle: bool, } #[derive(Clone, Deserialize, Serialize, Debug, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct UserWorkspaceFlagsPayload { user_pk: UserPk, flags: serde_json::Value, } impl WsEvent { pub async fn cursor( workspace_pk: WorkspacePk, change_set_id: Option<ChangeSetId>, cursor: CursorPayload, ) -> WsEventResult<Self> { WsEvent::new_raw( workspace_pk, change_set_id, None, None, WsPayload::Cursor(cursor), ) .await } pub async fn online(workspace_pk: WorkspacePk, online: OnlinePayload) -> WsEventResult<Self> { WsEvent::new_raw(workspace_pk, None, None, None, WsPayload::Online(online)).await } pub async fn user_workspace_flags_update( workspace_pk: WorkspacePk, user_pk: UserPk, flags: serde_json::Value, ) -> WsEventResult<Self> { let payload = UserWorkspaceFlagsPayload { user_pk, flags }; WsEvent::new_raw( workspace_pk, None, None, None, WsPayload::UserWorkspaceFlagsUpdated(payload), ) .await } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server