From f5b75382e58faa1f88d094260c6ba0dcac63cada Mon Sep 17 00:00:00 2001 From: trisua Date: Sun, 30 Mar 2025 22:26:20 -0400 Subject: [PATCH] add: notifications ui --- crates/app/src/assets.rs | 2 + crates/app/src/langs/en-US.toml | 4 ++ crates/app/src/public/css/style.css | 11 ++++ .../app/src/public/html/communities/base.html | 3 +- .../app/src/public/html/communities/list.html | 3 +- .../app/src/public/html/communities/post.html | 3 +- crates/app/src/public/html/components.html | 48 +++++++++++++++++ crates/app/src/public/html/macros.html | 4 +- .../src/public/html/misc/notifications.html | 13 +++++ crates/app/src/public/js/me.js | 53 +++++++++++++++++++ crates/app/src/routes/api/v1/mod.rs | 4 +- crates/app/src/routes/pages/misc.rs | 34 ++++++++++++ crates/app/src/routes/pages/mod.rs | 1 + crates/core/src/database/notifications.rs | 10 ++-- 14 files changed, 179 insertions(+), 14 deletions(-) create mode 100644 crates/app/src/public/html/misc/notifications.html diff --git a/crates/app/src/assets.rs b/crates/app/src/assets.rs index a2f6b77..5196916 100644 --- a/crates/app/src/assets.rs +++ b/crates/app/src/assets.rs @@ -33,6 +33,7 @@ pub const COMPONENTS: &str = include_str!("./public/html/components.html"); pub const MISC_INDEX: &str = include_str!("./public/html/misc/index.html"); pub const MISC_ERROR: &str = include_str!("./public/html/misc/error.html"); +pub const MISC_NOTIFICATIONS: &str = include_str!("./public/html/misc/notifications.html"); pub const AUTH_BASE: &str = include_str!("./public/html/auth/base.html"); pub const AUTH_LOGIN: &str = include_str!("./public/html/auth/login.html"); @@ -144,6 +145,7 @@ pub(crate) async fn write_assets(config: &Config) -> PathBufD { write_template!(html_path->"misc/index.html"(crate::assets::MISC_INDEX) -d "misc" --config=config); write_template!(html_path->"misc/error.html"(crate::assets::MISC_ERROR) --config=config); + write_template!(html_path->"misc/notifications.html"(crate::assets::MISC_NOTIFICATIONS) --config=config); write_template!(html_path->"auth/base.html"(crate::assets::AUTH_BASE) -d "auth" --config=config); write_template!(html_path->"auth/login.html"(crate::assets::AUTH_LOGIN) --config=config); diff --git a/crates/app/src/langs/en-US.toml b/crates/app/src/langs/en-US.toml index bff8a76..17080de 100644 --- a/crates/app/src/langs/en-US.toml +++ b/crates/app/src/langs/en-US.toml @@ -37,3 +37,7 @@ version = "1.0.0" "communities:label.create_reply" = "Create reply" "communities:label.replies" = "Replies" "communities:action.continue_thread" = "Continue thread" + +"notifs:action.mark_as_read" = "Mark as read" +"notifs:action.mark_as_unread" = "Mark as unread" +"notifs:action.clear" = "Clear" diff --git a/crates/app/src/public/css/style.css b/crates/app/src/public/css/style.css index c36bcb9..17c9836 100644 --- a/crates/app/src/public/css/style.css +++ b/crates/app/src/public/css/style.css @@ -402,6 +402,17 @@ button.secondary:hover, background: var(--color-secondary-lowered); } +button.tertiary, +.button.tertiary { + background: var(--color-raised); + color: var(--color-text-raised); +} + +button.tertiary:hover, +.button.tertiary:hover { + background: var(--color-super-raised); +} + button.camo, .button.camo { background: transparent; diff --git a/crates/app/src/public/html/communities/base.html b/crates/app/src/public/html/communities/base.html index 3779ff3..5a4ffc7 100644 --- a/crates/app/src/public/html/communities/base.html +++ b/crates/app/src/public/html/communities/base.html @@ -1,5 +1,4 @@ -{% import "macros.html" as macros %} {% import "components.html" as components -%} {% extends "root.html" %} {% block head %} +{% import "macros.html" as macros %} {% extends "root.html" %} {% block head %} {{ community.context.display_name }} - {{ config.name }} {% endblock %} {% block body %} {{ macros::nav() }}
diff --git a/crates/app/src/public/html/communities/list.html b/crates/app/src/public/html/communities/list.html index 5c7c8e3..20477af 100644 --- a/crates/app/src/public/html/communities/list.html +++ b/crates/app/src/public/html/communities/list.html @@ -1,5 +1,4 @@ -{% import "macros.html" as macros %} {% import "components.html" as components -%} {% extends "root.html" %} {% block head %} +{% import "macros.html" as macros %} {% extends "root.html" %} {% block head %} My communities - {{ config.name }} {% endblock %} {% block body %} {{ macros::nav(selected="communities") }}
diff --git a/crates/app/src/public/html/communities/post.html b/crates/app/src/public/html/communities/post.html index 6d782a4..050c707 100644 --- a/crates/app/src/public/html/communities/post.html +++ b/crates/app/src/public/html/communities/post.html @@ -1,5 +1,4 @@ -{% import "macros.html" as macros %} {% import "components.html" as components -%} {% extends "root.html" %} {% block head %} +{% import "macros.html" as macros %} {% extends "root.html" %} {% block head %} Post - {{ config.name }} {% endblock %} {% block body %} {{ macros::nav() }}
diff --git a/crates/app/src/public/html/components.html b/crates/app/src/public/html/components.html index c9bd5bd..b94db3b 100644 --- a/crates/app/src/public/html/components.html +++ b/crates/app/src/public/html/components.html @@ -146,4 +146,52 @@ show_community=true) -%} +{%- endmacro %} {% macro notification(notification) -%} +
+
+ {% if not notification.read %} + + + + {% endif %} + {{ notification.title|markdown|safe }} +
+ +
+ {{ notification.content|markdown|safe }} + +
+ {% if notification.read %} + + {% else %} + + {% endif %} + + +
+
+
{%- endmacro %} diff --git a/crates/app/src/public/html/macros.html b/crates/app/src/public/html/macros.html index 25b51ca..081496d 100644 --- a/crates/app/src/public/html/macros.html +++ b/crates/app/src/public/html/macros.html @@ -32,11 +32,11 @@ show_lhs=true) -%}