diff options
Diffstat (limited to 'common/src/user.rs')
-rw-r--r-- | common/src/user.rs | 70 |
1 files changed, 33 insertions, 37 deletions
diff --git a/common/src/user.rs b/common/src/user.rs index e0e7a0d..c6da166 100644 --- a/common/src/user.rs +++ b/common/src/user.rs @@ -4,14 +4,14 @@ Copyright (C) 2025 metamuffin <metamuffin.org> */ use bincode::{Decode, Encode}; -#[cfg(feature = "rocket")] -use rocket::{FromFormField, UriDisplayQuery}; use serde::{Deserialize, Serialize}; use std::{ collections::{HashMap, HashSet}, fmt::Display, }; +use crate::url_enum; + #[rustfmt::skip] #[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode, Default)] pub struct User { @@ -41,6 +41,16 @@ pub enum WatchedState { Pending, } +url_enum!( + #[derive(Debug, Clone, Serialize, Deserialize)] + #[serde(rename_all = "snake_case")] + enum ApiWatchedState { + None = "none", + Watched = "watched", + Pending = "pending", + } +); + #[derive(Debug, Serialize, Deserialize)] pub struct CreateSessionParams { pub username: String, @@ -49,42 +59,28 @@ pub struct CreateSessionParams { pub drop_permissions: Option<HashSet<UserPermission>>, } -#[derive(Debug, Clone, Copy, Serialize, Default, Deserialize, PartialEq, Encode, Decode)] -#[cfg_attr(feature = "rocket", derive(FromFormField, UriDisplayQuery))] -#[serde(rename_all = "snake_case")] -pub enum Theme { - #[default] - Dark, - Light, - Purple, - Black, -} - -#[derive(Debug, Clone, Copy, Serialize, Default, Deserialize, PartialEq, Encode, Decode)] -#[cfg_attr(feature = "rocket", derive(FromFormField, UriDisplayQuery))] -#[serde(rename_all = "snake_case")] -pub enum PlayerKind { - #[default] - Browser, - Native, - NativeFullscreen, -} +url_enum!( + #[derive(Debug, Clone, Copy, Serialize, Default, Deserialize, PartialEq, Encode, Decode)] + #[serde(rename_all = "snake_case")] + enum Theme { + #[default] + Dark = "dark", + Light = "light", + Purple = "purple", + Black = "black", + } +); -impl Theme { - pub const LIST: &'static [(Theme, &'static str)] = &[ - (Theme::Dark, "Dark"), - (Theme::Light, "Light"), - (Theme::Purple, "Purple"), - (Theme::Black, "Black"), - ]; -} -impl PlayerKind { - pub const LIST: &'static [(PlayerKind, &'static str)] = &[ - (PlayerKind::Browser, "In-Browser"), - (PlayerKind::Native, "Native"), - (PlayerKind::NativeFullscreen, "Native (Fullscreen)"), - ]; -} +url_enum!( + #[derive(Debug, Clone, Copy, Serialize, Default, Deserialize, PartialEq, Encode, Decode)] + #[serde(rename_all = "snake_case")] + enum PlayerKind { + #[default] + Browser = "browser", + Native = "native", + NativeFullscreen = "native_fullscreen", + } +); #[derive(Debug, Clone, Serialize, Deserialize, Default, Encode, Decode)] pub struct PermissionSet(pub HashMap<UserPermission, bool>); |