diff options
Diffstat (limited to 'server/src/routes/ui/assets.rs')
-rw-r--r-- | server/src/routes/ui/assets.rs | 71 |
1 files changed, 30 insertions, 41 deletions
diff --git a/server/src/routes/ui/assets.rs b/server/src/routes/ui/assets.rs index 7eb8e98..689c7f1 100644 --- a/server/src/routes/ui/assets.rs +++ b/server/src/routes/ui/assets.rs @@ -7,12 +7,7 @@ use crate::routes::ui::{account::session::Session, error::MyResult, CacheControl use anyhow::{anyhow, Context}; use base64::Engine; use jellybase::{ - assetfed::AssetInner, - cache::async_cache_file, - database::{DataAcid, TableExt, T_NODE}, - federation::Federation, - permission::NodePermissionExt, - CONF, + assetfed::AssetInner, cache::async_cache_file, database::Database, federation::Federation, CONF, }; use jellycommon::{LocalTrack, PeopleGroup, SourceTrackKind, TrackSource}; use log::info; @@ -67,23 +62,21 @@ pub async fn resolve_asset(asset: AssetInner) -> anyhow::Result<PathBuf> { #[get("/n/<id>/poster?<width>")] pub async fn r_item_poster( - session: Session, - db: &State<DataAcid>, + _session: Session, + db: &State<Database>, id: &str, width: Option<usize>, ) -> MyResult<Redirect> { - let node = T_NODE - .get(db, id)? - .only_if_permitted(&session.user.permissions) + // TODO perm + let node = db + .get_node_slug(id)? .ok_or(anyhow!("node does not exist"))?; - let mut asset = node.poster; + let mut asset = node.poster.clone(); if asset.is_none() { - if let Some(parent) = &node.parents.last() { - let parent = T_NODE - .get(db, parent.as_str())? - .ok_or(anyhow!("node does not exist"))?; - asset = parent.poster; + if let Some(parent) = node.parents.last().copied() { + let parent = db.get_node(parent)?.ok_or(anyhow!("node does not exist"))?; + asset = parent.poster.clone(); } }; let asset = asset.unwrap_or_else(|| { @@ -94,23 +87,21 @@ pub async fn r_item_poster( } #[get("/n/<id>/backdrop?<width>")] pub async fn r_item_backdrop( - session: Session, - db: &State<DataAcid>, + _session: Session, + db: &State<Database>, id: &str, width: Option<usize>, ) -> MyResult<Redirect> { - let node = T_NODE - .get(db, id)? - .only_if_permitted(&session.user.permissions) + // TODO perm + let node = db + .get_node_slug(id)? .ok_or(anyhow!("node does not exist"))?; - let mut asset = node.poster; + let mut asset = node.backdrop.clone(); if asset.is_none() { - if let Some(parent) = &node.parents.last() { - let parent = T_NODE - .get(db, parent.as_str())? - .ok_or(anyhow!("node does not exist"))?; - asset = parent.poster; + if let Some(parent) = node.parents.last().copied() { + let parent = db.get_node(parent)?.ok_or(anyhow!("node does not exist"))?; + asset = parent.backdrop.clone(); } }; let asset = asset.unwrap_or_else(|| { @@ -122,19 +113,18 @@ pub async fn r_item_backdrop( #[get("/n/<id>/person/<index>/asset?<group>&<width>")] pub async fn r_person_asset( - session: Session, - db: &State<DataAcid>, + _session: Session, + db: &State<Database>, id: &str, index: usize, group: String, width: Option<usize>, ) -> MyResult<Redirect> { - T_NODE - .get(db, id)? - .only_if_permitted(&session.user.permissions) - .ok_or(anyhow!("node does not exist"))?; + // TODO perm - let node = T_NODE.get(db, id)?.unwrap_or_default(); + let node = db + .get_node_slug(id)? + .ok_or(anyhow!("node does not exist"))?; let app = node .people .get(&PeopleGroup::from_str(&group).map_err(|()| anyhow!("unknown people group"))?) @@ -155,19 +145,18 @@ pub async fn r_person_asset( #[get("/n/<id>/thumbnail?<t>&<width>")] pub async fn r_node_thumbnail( - session: Session, - db: &State<DataAcid>, + _session: Session, + db: &State<Database>, fed: &State<Federation>, id: &str, t: f64, width: Option<usize>, ) -> MyResult<Redirect> { - let node = T_NODE - .get(db, id)? - .only_if_permitted(&session.user.permissions) + let node = db + .get_node_slug(id)? .ok_or(anyhow!("node does not exist"))?; - let media = node.media.ok_or(anyhow!("no media"))?; + let media = node.media.as_ref().ok_or(anyhow!("no media"))?; let (thumb_track_index, thumb_track) = media .tracks .iter() |