From 2ff2d07b5ed265d0f4ce095002484fe771e51dae Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 25 Dec 2023 21:06:47 +0100 Subject: watchlist and some small fixes --- server/src/routes/progress.rs | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) (limited to 'server/src/routes/progress.rs') 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//watched?")] pub async fn r_player_watched( session: Session, db: &State, id: &str, - state: bool, + state: UrlWatchedState, ) -> MyResult { 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(()) } -- cgit v1.2.3-70-g09d2