aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-01-16 15:55:15 +0100
committermetamuffin <metamuffin@disroot.org>2024-01-16 15:55:15 +0100
commit0fa9a389d894e6cbf6a0b30a126d7e57686d0e38 (patch)
tree649a5524effe2795104f89c5ec61871d5944e03e /server/src
parent80ce9014a8893952c1534c0aeb1ebb4d9d76e4fb (diff)
downloadjellything-0fa9a389d894e6cbf6a0b30a126d7e57686d0e38.tar
jellything-0fa9a389d894e6cbf6a0b30a126d7e57686d0e38.tar.bz2
jellything-0fa9a389d894e6cbf6a0b30a126d7e57686d0e38.tar.zst
resume player correctly when progress
Diffstat (limited to 'server/src')
-rw-r--r--server/src/routes/mod.rs7
-rw-r--r--server/src/routes/ui/node.rs2
-rw-r--r--server/src/routes/userdata.rs (renamed from server/src/routes/progress.rs)19
3 files changed, 22 insertions, 6 deletions
diff --git a/server/src/routes/mod.rs b/server/src/routes/mod.rs
index 4c7838d..c3299d3 100644
--- a/server/src/routes/mod.rs
+++ b/server/src/routes/mod.rs
@@ -6,9 +6,8 @@
use crate::{database::Database, routes::ui::error::MyResult};
use api::{r_api_account_login, r_api_node_raw, r_api_root, r_api_version};
use base64::Engine;
-use jellybase::{CONF, federation::Federation};
+use jellybase::{federation::Federation, CONF};
use log::warn;
-use progress::{r_player_progress, r_player_watched};
use rand::random;
use rocket::{
catchers, config::SecretKey, fairing::AdHoc, fs::FileServer, get, http::Header, routes, Build,
@@ -36,11 +35,12 @@ use ui::{
player::r_player,
style::{r_assets_font, r_assets_js, r_assets_js_map, r_assets_style},
};
+use userdata::{r_node_userdata, r_player_progress, r_player_watched};
pub mod api;
-pub mod progress;
pub mod stream;
pub mod ui;
+pub mod userdata;
#[macro_export]
macro_rules! uri {
@@ -93,6 +93,7 @@ pub fn build_rocket(database: Database, federation: Federation) -> Rocket<Build>
r_assets_js,
r_assets_js_map,
r_stream,
+ r_node_userdata,
r_player,
r_player_progress,
r_player_watched,
diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs
index 795effa..adbe5b1 100644
--- a/server/src/routes/ui/node.rs
+++ b/server/src/routes/ui/node.rs
@@ -12,7 +12,7 @@ use crate::{
database::Database,
routes::{
api::AcceptJson,
- progress::{rocket_uri_macro_r_player_watched, UrlWatchedState},
+ userdata::{rocket_uri_macro_r_player_watched, UrlWatchedState},
ui::{
account::session::Session,
assets::AssetRole,
diff --git a/server/src/routes/progress.rs b/server/src/routes/userdata.rs
index fa6f844..2ded24a 100644
--- a/server/src/routes/progress.rs
+++ b/server/src/routes/userdata.rs
@@ -7,8 +7,10 @@ use super::ui::{account::session::Session, error::MyResult};
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, FromFormField, State, UriDisplayQuery};
+use jellycommon::user::{NodeUserData, WatchedState};
+use rocket::{
+ get, post, response::Redirect, serde::json::Json, FromFormField, State, UriDisplayQuery,
+};
#[derive(Debug, FromFormField, UriDisplayQuery)]
pub enum UrlWatchedState {
@@ -17,6 +19,19 @@ pub enum UrlWatchedState {
Pending,
}
+#[get("/n/<id>/userdata")]
+pub fn r_node_userdata(
+ session: Session,
+ db: &State<Database>,
+ id: &str,
+) -> MyResult<Json<NodeUserData>> {
+ db.node
+ .get(&id.to_string())?
+ .ok_or(anyhow!("node does not exist"))?;
+ let key = (session.user.name.clone(), id.to_owned());
+ Ok(Json(db.user_node.get(&key)?.unwrap_or_default()))
+}
+
#[post("/n/<id>/watched?<state>")]
pub async fn r_player_watched(
session: Session,