From c37e9d0fde94698a53187ae9a21a77810dcd1bd0 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Wed, 19 Aug 2026 03:10:35 +0200 Subject: [PATCH] Channelsc --- src/config.rs | 15 ++++++++++++++- src/main.rs | 1 + src/protocol/mod.rs | 11 ++--------- src/server.rs | 3 ++- src/types.rs | 29 +++++++++++++++++++++++++++++ 5 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 src/types.rs diff --git a/src/config.rs b/src/config.rs index 5e4793b..ea4141b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,7 +2,7 @@ use std::{collections::HashSet, path::PathBuf}; use serde::{Deserialize, Serialize}; -use crate::protocol::ServerMeta; +use crate::types::{Channel, ChannelKind, ServerMeta}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Config { @@ -18,6 +18,19 @@ impl Config { meta: ServerMeta { name: "New Server".to_string(), description: String::new(), + + channels: vec![Channel { + id: "text-channels".to_string(), + name: "Text Channels".to_string(), + + data: ChannelKind::Category { + channels: vec![Channel { + id: "general".to_string(), + name: "General".to_string(), + data: ChannelKind::Text, + }], + }, + }], }, port: 3415, diff --git a/src/main.rs b/src/main.rs index 8897bfd..25696ca 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ pub mod config; pub mod protocol; pub mod server; pub mod signature; +pub mod types; use std::{ net::{IpAddr, Ipv4Addr, SocketAddr}, diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index 0503573..a8ee7c5 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -4,17 +4,10 @@ use axum::extract::ws::{Message, Utf8Bytes, WebSocket}; use serde::{Deserialize, Serialize}; use tokio::sync::Mutex; +use crate::types::ClientMeta; + pub mod initialize; -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct ClientMeta {} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct ServerMeta { - pub name: String, - pub description: String, -} - #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "method")] pub enum ClientMethod { diff --git a/src/server.rs b/src/server.rs index 426d1da..41365e0 100644 --- a/src/server.rs +++ b/src/server.rs @@ -12,7 +12,8 @@ use tokio::sync::Mutex; use crate::{ config::Config, - protocol::{ClientMeta, ClientMethod, read_loop, send_socket}, + protocol::{ClientMethod, read_loop, send_socket}, + types::ClientMeta, }; pub struct UserConnections { diff --git a/src/types.rs b/src/types.rs new file mode 100644 index 0000000..98fde83 --- /dev/null +++ b/src/types.rs @@ -0,0 +1,29 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ClientMeta {} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ServerMeta { + pub name: String, + pub description: String, + pub channels: Vec, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "kind")] +#[serde(rename_all = "camelCase")] +pub enum ChannelKind { + Text, + Category { channels: Vec }, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Channel { + pub id: String, + pub name: String, + + #[serde(flatten)] + pub data: ChannelKind, +}