diff options
author | metamuffin <metamuffin@disroot.org> | 2023-12-25 21:06:47 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-12-25 21:06:47 +0100 |
commit | 2ff2d07b5ed265d0f4ce095002484fe771e51dae (patch) | |
tree | c1ec7370f0df772a5fafd2bf33b7481036c06f65 /server/src/routes/progress.rs | |
parent | e2c62c34b4c2983b8ceef034347bc62b28a88122 (diff) | |
download | jellything-2ff2d07b5ed265d0f4ce095002484fe771e51dae.tar jellything-2ff2d07b5ed265d0f4ce095002484fe771e51dae.tar.bz2 jellything-2ff2d07b5ed265d0f4ce095002484fe771e51dae.tar.zst |
watchlist and some small fixes
Diffstat (limited to 'server/src/routes/progress.rs')
-rw-r--r-- | server/src/routes/progress.rs | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/server/src/routes/progress.rs b/server/src/routes/progress.rs index c4eb182..fa6f844 100644 --- a/server/src/routes/progress.rs +++ b/server/src/routes/progress.rs @@ -8,14 +8,21 @@ use crate::routes::ui::node::rocket_uri_macro_r_library_node; use anyhow::anyhow; use jellybase::database::Database; use jellycommon::user::WatchedState; -use rocket::{post, response::Redirect, State}; +use rocket::{post, response::Redirect, FromFormField, State, UriDisplayQuery}; + +#[derive(Debug, FromFormField, UriDisplayQuery)] +pub enum UrlWatchedState { + None, + Watched, + Pending, +} #[post("/n/<id>/watched?<state>")] pub async fn r_player_watched( session: Session, db: &State<Database>, id: &str, - state: bool, + state: UrlWatchedState, ) -> MyResult<Redirect> { db.node .get(&id.to_string())? @@ -25,11 +32,11 @@ pub async fn r_player_watched( db.user_node.fetch_and_update(&key, |t| { let mut t = t.unwrap_or_default(); - if state { - t.watched = WatchedState::Watched - } else { - t.watched = WatchedState::None - } + t.watched = match state { + UrlWatchedState::None => WatchedState::None, + UrlWatchedState::Watched => WatchedState::Watched, + UrlWatchedState::Pending => WatchedState::Pending, + }; Some(t) })?; @@ -51,26 +58,12 @@ pub async fn r_player_progress( db.user_node.fetch_and_update(&key, |d| { let mut d = d.unwrap_or_default(); d.watched = match d.watched { - WatchedState::None | WatchedState::Progress(_) => WatchedState::Progress(t), + WatchedState::None | WatchedState::Pending | WatchedState::Progress(_) => { + WatchedState::Progress(t) + } WatchedState::Watched => WatchedState::Watched, }; Some(d) })?; - - // db.user_progess.fetch_and_update(&session.user.name, |p| { - // let mut m = p.unwrap_or_else(|| HashMap::new()); - // if let Some(t) = t { - // if m.len() < 16 { - // m.insert(id.to_string(), t); - // } - // } else { - // m.remove(&id.to_string()); - // } - // if m.is_empty() { - // None - // } else { - // Some(m) - // } - // })?; Ok(()) } |