aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/ui/assets.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/ui/assets.rs')
-rw-r--r--server/src/routes/ui/assets.rs71
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()