aboutsummaryrefslogtreecommitdiff
path: root/common/src/user.rs
diff options
context:
space:
mode:
Diffstat (limited to 'common/src/user.rs')
-rw-r--r--common/src/user.rs70
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>);