aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/home.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/ui/home.rs')
-rw-r--r--server/src/ui/home.rs97
1 files changed, 35 insertions, 62 deletions
diff --git a/server/src/ui/home.rs b/server/src/ui/home.rs
index 1a7da36..6cb6a77 100644
--- a/server/src/ui/home.rs
+++ b/server/src/ui/home.rs
@@ -4,77 +4,50 @@
Copyright (C) 2026 metamuffin <metamuffin.org>
*/
-use std::str::FromStr;
-
use super::error::MyResult;
-use crate::{request_info::RequestInfo, ui_responder::UiResponse};
+use crate::request_info::RequestInfo;
use anyhow::{Context, Result};
-use jellycommon::{
- jellyobject::{Object, ObjectBuffer, ObjectBufferBuilder},
- *,
-};
+use jellycommon::jellyobject::{Object, ObjectBuffer};
use jellydb::Query;
-use jellyui::tr;
-use rocket::get;
+use jellyui::components::home::HomeRow;
+use rocket::{get, response::content::RawHtml};
+use std::str::FromStr;
#[get("/home")]
-pub fn r_home(ri: RequestInfo<'_>) -> MyResult<UiResponse> {
+pub fn r_home(ri: RequestInfo<'_>) -> MyResult<RawHtml<String>> {
ri.require_user()?;
- let mut page = ObjectBufferBuilder::default();
-
- page.push(VIEW_TITLE, &&*tr(ri.lang, "home"));
-
- page.push(
- VIEW_NODE_LIST,
- home_row(
- &ri,
- "home.bin.latest_video",
- "FILTER (visi = visi AND kind = vide) SORT DESCENDING BY FIRST rldt",
- )?
- .as_object(),
- );
- page.push(
- VIEW_NODE_LIST,
- home_row(
- &ri,
- "home.bin.latest_music",
- "FILTER (visi = visi AND kind = musi) SORT DESCENDING BY FIRST rldt",
- )?
- .as_object(),
- );
- page.push(
- VIEW_NODE_LIST,
- home_row_highlight(
- &ri,
- "home.bin.daily_random",
- "FILTER (visi = visi AND kind = movi) SORT RANDOM",
- )?
- .as_object(),
- );
- page.push(
- VIEW_NODE_LIST,
- home_row(
- &ri,
- "home.bin.max_rating",
- "SORT DESCENDING BY FIRST rtng.imdb",
- )?
- .as_object(),
- );
- page.push(
- VIEW_NODE_LIST,
- home_row_highlight(
- &ri,
- "home.bin.daily_random",
- "FILTER (visi = visi AND kind = show) SORT RANDOM",
- )?
- .as_object(),
- );
+ let mut rows = Vec::new();
+ rows.push(home_row(
+ &ri,
+ "home.bin.latest_video",
+ "FILTER (visi = visi AND kind = vide) SORT DESCENDING BY FIRST rldt",
+ )?);
+ rows.push(home_row(
+ &ri,
+ "home.bin.latest_music",
+ "FILTER (visi = visi AND kind = musi) SORT DESCENDING BY FIRST rldt",
+ )?);
+ rows.push(home_row_highlight(
+ &ri,
+ "home.bin.daily_random",
+ "FILTER (visi = visi AND kind = movi) SORT RANDOM",
+ )?);
+ rows.push(home_row(
+ &ri,
+ "home.bin.max_rating",
+ "SORT DESCENDING BY FIRST rtng.imdb",
+ )?);
+ rows.push(home_row_highlight(
+ &ri,
+ "home.bin.daily_random",
+ "FILTER (visi = visi AND kind = show) SORT RANDOM",
+ )?);
- Ok(ri.respond_ui(page))
+ Ok(ri.respond_ui(rows))
}
-fn home_row(ri: &RequestInfo<'_>, title: &str, query: &str) -> Result<ObjectBuffer> {
+fn home_row(ri: &RequestInfo<'_>, title: &str, query: &str) -> Result<HomeRow> {
let q = Query::from_str(query).context("parse query")?;
let mut res = ObjectBuffer::empty();
ri.state.database.transaction(&mut |txn| {
@@ -96,7 +69,7 @@ fn home_row(ri: &RequestInfo<'_>, title: &str, query: &str) -> Result<ObjectBuff
Ok(res)
}
-fn home_row_highlight(ri: &RequestInfo<'_>, title: &str, query: &str) -> Result<ObjectBuffer> {
+fn home_row_highlight(ri: &RequestInfo<'_>, title: &str, query: &str) -> Result<HomeRow> {
let q = Query::from_str(query).context("parse query")?;
let mut res = ObjectBuffer::empty();
ri.state.database.transaction(&mut |txn| {