fido_types/
enums.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4#[serde(rename_all = "lowercase")]
5pub enum VoteDirection {
6    Up,
7    Down,
8}
9
10impl VoteDirection {
11    pub fn as_str(&self) -> &'static str {
12        match self {
13            VoteDirection::Up => "up",
14            VoteDirection::Down => "down",
15        }
16    }
17
18    pub fn parse(s: &str) -> Option<Self> {
19        match s.to_lowercase().as_str() {
20            "up" => Some(VoteDirection::Up),
21            "down" => Some(VoteDirection::Down),
22            _ => None,
23        }
24    }
25}
26
27#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
28pub enum ColorScheme {
29    #[default]
30    Default,
31    Dark,
32    Light,
33    Solarized,
34}
35
36impl ColorScheme {
37    pub fn as_str(&self) -> &'static str {
38        match self {
39            ColorScheme::Default => "Default",
40            ColorScheme::Dark => "Dark",
41            ColorScheme::Light => "Light",
42            ColorScheme::Solarized => "Solarized",
43        }
44    }
45
46    pub fn parse(s: &str) -> Option<Self> {
47        match s {
48            "Default" => Some(ColorScheme::Default),
49            "Dark" => Some(ColorScheme::Dark),
50            "Light" => Some(ColorScheme::Light),
51            "Solarized" => Some(ColorScheme::Solarized),
52            _ => None,
53        }
54    }
55}
56
57#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
58pub enum SortOrder {
59    #[default]
60    Newest,
61    Popular,
62    Controversial,
63}
64
65impl SortOrder {
66    pub fn as_str(&self) -> &'static str {
67        match self {
68            SortOrder::Newest => "Newest",
69            SortOrder::Popular => "Popular",
70            SortOrder::Controversial => "Controversial",
71        }
72    }
73
74    pub fn parse(s: &str) -> Option<Self> {
75        match s {
76            "Newest" => Some(SortOrder::Newest),
77            "Popular" => Some(SortOrder::Popular),
78            "Controversial" => Some(SortOrder::Controversial),
79            _ => None,
80        }
81    }
82}