aboutsummaryrefslogtreecommitdiff
path: root/ui/src
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src')
-rw-r--r--ui/src/error.rs27
-rw-r--r--ui/src/home.rs4
-rw-r--r--ui/src/lib.rs13
-rw-r--r--ui/src/node_page.rs7
4 files changed, 48 insertions, 3 deletions
diff --git a/ui/src/error.rs b/ui/src/error.rs
new file mode 100644
index 0000000..ddf05bb
--- /dev/null
+++ b/ui/src/error.rs
@@ -0,0 +1,27 @@
+/*
+ This file is part of jellything (https://codeberg.org/metamuffin/jellything)
+ which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
+ Copyright (C) 2025 metamuffin <metamuffin.org>
+*/
+
+use crate::Page;
+use jellycommon::routes::u_account_login;
+
+impl Page for ErrorPage {
+ fn title(&self) -> String {
+ "Error".to_string()
+ }
+ fn to_render(&self) -> markup::DynRender {
+ markup::new!(@self)
+ }
+}
+
+markup::define! {
+ ErrorPage(status: String) {
+ h2 { "Error" }
+ p { @status }
+ // @if status == Status::NotFound {
+ p { "You might need to " a[href=u_account_login()] { "log in" } ", to see this page" }
+ // }
+ }
+}
diff --git a/ui/src/home.rs b/ui/src/home.rs
index 53055e8..21ce740 100644
--- a/ui/src/home.rs
+++ b/ui/src/home.rs
@@ -4,7 +4,7 @@
Copyright (C) 2025 metamuffin <metamuffin.org>
*/
use crate::{
- Page,
+ CONF, Page,
locale::{Language, tr, trs},
node_card::NodeCard,
};
@@ -13,7 +13,7 @@ use markup::DynRender;
markup::define! {
HomePage<'a>(lang: &'a Language, r: ApiHomeResponse) {
- h2 { @trs(lang, "home.bin.root") } //.replace("{title}", &CONF.brand) }
+ h2 { @tr(**lang, &"home.bin.root").replace("{title}", &CONF.brand) }
ul.children.hlist {@for (node, udata) in &r.toplevel {
li { @NodeCard { node, udata, lang: &lang } }
}}
diff --git a/ui/src/lib.rs b/ui/src/lib.rs
index cbfc298..0e7547e 100644
--- a/ui/src/lib.rs
+++ b/ui/src/lib.rs
@@ -16,7 +16,9 @@ pub mod props;
pub mod scaffold;
pub mod search;
pub mod stats;
+pub mod error;
+use jellycommon::user::Theme;
use locale::Language;
use markup::DynRender;
use scaffold::{RenderInfo, Scaffold};
@@ -64,8 +66,17 @@ pub trait Page {
pub fn render_page(page: &dyn Page, renderinfo: RenderInfo, lang: Language) -> String {
Scaffold {
lang,
+ class: &format!(
+ "{} theme-{}",
+ page.class().unwrap_or("custom-page"),
+ renderinfo
+ .session
+ .as_ref()
+ .map(|s| s.user.theme)
+ .unwrap_or(Theme::Dark)
+ .to_str()
+ ),
renderinfo,
- class: page.class().unwrap_or("aaaa"),
title: page.title(),
main: page.to_render(),
}
diff --git a/ui/src/node_page.rs b/ui/src/node_page.rs
index 7fb299f..45cf18c 100644
--- a/ui/src/node_page.rs
+++ b/ui/src/node_page.rs
@@ -28,6 +28,13 @@ impl Page for NodePage<'_> {
fn title(&self) -> String {
self.node.title.clone().unwrap_or_default()
}
+ fn class(&self) -> Option<&'static str> {
+ if self.player {
+ Some("player")
+ } else {
+ Some("node-page")
+ }
+ }
fn to_render(&self) -> markup::DynRender {
markup::new!(@self)
}