aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/progress.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-12-25 21:06:47 +0100
committermetamuffin <metamuffin@disroot.org>2023-12-25 21:06:47 +0100
commit2ff2d07b5ed265d0f4ce095002484fe771e51dae (patch)
treec1ec7370f0df772a5fafd2bf33b7481036c06f65 /server/src/routes/progress.rs
parente2c62c34b4c2983b8ceef034347bc62b28a88122 (diff)
downloadjellything-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.rs41
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(())
}