From de53eec0e84cb00e4b94081c3a5543a1a3306117 Mon Sep 17 00:00:00 2001 From: trisua Date: Mon, 31 Mar 2025 19:31:36 -0400 Subject: [PATCH] add: timelines, homepage --- crates/app/src/assets.rs | 6 ++ crates/app/src/langs/en-US.toml | 2 + crates/app/src/public/css/style.css | 22 ++++- .../app/src/public/html/communities/base.html | 9 +- crates/app/src/public/html/components.html | 29 +++++- crates/app/src/public/html/macros.html | 32 +++++++ crates/app/src/public/html/misc/index.html | 28 ++++-- crates/app/src/public/html/profile/base.html | 4 +- .../app/src/public/html/profile/settings.html | 17 ++++ crates/app/src/public/html/root.html | 6 +- .../app/src/public/html/timelines/home.html | 27 ++++++ .../src/public/html/timelines/popular.html | 14 +++ crates/app/src/public/js/atto.js | 18 ++++ crates/app/src/routes/pages/misc.rs | 61 +++++++++++-- crates/app/src/routes/pages/mod.rs | 1 + crates/app/src/routes/pages/profile.rs | 20 +++++ crates/core/src/database/auth.rs | 2 +- crates/core/src/database/common.rs | 4 +- crates/core/src/database/memberships.rs | 4 +- crates/core/src/database/notifications.rs | 2 +- crates/core/src/database/posts.rs | 90 ++++++++++++++++++- crates/core/src/database/reactions.rs | 2 +- crates/core/src/database/userblocks.rs | 4 +- crates/core/src/database/userfollows.rs | 76 +++++++++++++++- 24 files changed, 440 insertions(+), 40 deletions(-) create mode 100644 crates/app/src/public/html/timelines/home.html create mode 100644 crates/app/src/public/html/timelines/popular.html diff --git a/crates/app/src/assets.rs b/crates/app/src/assets.rs index 36b86ec..02458f0 100644 --- a/crates/app/src/assets.rs +++ b/crates/app/src/assets.rs @@ -49,6 +49,9 @@ pub const COMMUNITIES_FEED: &str = include_str!("./public/html/communities/feed. pub const COMMUNITIES_POST: &str = include_str!("./public/html/communities/post.html"); pub const COMMUNITIES_SETTINGS: &str = include_str!("./public/html/communities/settings.html"); +pub const TIMELINES_HOME: &str = include_str!("./public/html/timelines/home.html"); +pub const TIMELINES_POPULAR: &str = include_str!("./public/html/timelines/popular.html"); + // langs pub const LANG_EN_US: &str = include_str!("./langs/en-US.toml"); @@ -163,6 +166,9 @@ pub(crate) async fn write_assets(config: &Config) -> PathBufD { write_template!(html_path->"communities/post.html"(crate::assets::COMMUNITIES_POST) --config=config); write_template!(html_path->"communities/settings.html"(crate::assets::COMMUNITIES_SETTINGS) --config=config); + write_template!(html_path->"timelines/home.html"(crate::assets::TIMELINES_HOME) -d "timelines" --config=config); + write_template!(html_path->"timelines/popular.html"(crate::assets::TIMELINES_POPULAR) --config=config); + html_path } diff --git a/crates/app/src/langs/en-US.toml b/crates/app/src/langs/en-US.toml index 3ec9cc4..48bb07f 100644 --- a/crates/app/src/langs/en-US.toml +++ b/crates/app/src/langs/en-US.toml @@ -3,6 +3,7 @@ version = "1.0.0" [data] "general:link.home" = "Home" +"general:link.popular" = "Popular" "general:link.communities" = "Communities" "general:action.save" = "Save" "general:action.delete" = "Delete" @@ -15,6 +16,7 @@ version = "1.0.0" "dialog:action.no" = "No" "dialog:action.save_and_close" = "Save and close" + "auth:action.login" = "Login" "auth:action.register" = "Register" "auth:action.logout" = "Logout" diff --git a/crates/app/src/public/css/style.css b/crates/app/src/public/css/style.css index a87d218..41e9f50 100644 --- a/crates/app/src/public/css/style.css +++ b/crates/app/src/public/css/style.css @@ -136,6 +136,16 @@ article { } /* typo */ +pre { + font-family: monospace; + width: 100%; + max-width: 100%; + overflow: auto; + background: var(--color-lowered); + border-radius: var(--radius); + padding: 1rem; +} + svg.icon { stroke: currentColor; width: 18px; @@ -242,7 +252,7 @@ img.contain { object-fit: contain; } -/* avatar */ +/* avatar/banner */ .avatar { --size: 50px; border-radius: calc(var(--radius) / 2); @@ -255,6 +265,11 @@ img.contain { object-fit: cover; } +.banner { + border-radius: var(--radius); + max-height: 350px; +} + /* table */ table { border-collapse: collapse; @@ -375,12 +390,13 @@ button, justify-content: center; align-items: center; gap: 0.25rem; + font-size: 0.9rem; + text-decoration: none !important; + user-select: none; /* personality */ background: var(--color-primary); color: var(--color-text-primary); font-weight: 600; - font-size: 0.9rem; - text-decoration: none !important; } button.small, diff --git a/crates/app/src/public/html/communities/base.html b/crates/app/src/public/html/communities/base.html index 31b9d33..87d89f2 100644 --- a/crates/app/src/public/html/communities/base.html +++ b/crates/app/src/public/html/communities/base.html @@ -2,7 +2,9 @@ {{ community.context.display_name }} - {{ config.name }} {% endblock %} {% block body %} {{ macros::nav() }}
-
+
+ {{ components::community_banner(id=community.id, community=community) }} +
- {{ - components::community_avatar(id=community.id,size="72px") - }} + {{ components::community_avatar(id=community.id, + community=community, size="72px") }}

diff --git a/crates/app/src/public/html/components.html b/crates/app/src/public/html/components.html index 3816ee4..91271ac 100644 --- a/crates/app/src/public/html/components.html +++ b/crates/app/src/public/html/components.html @@ -11,7 +11,7 @@ {% if community %} {{ community.title }} +{% endif %} {%- endmacro %} {% macro banner(username) -%} + +{%- endmacro %} {% macro community_banner(id, community=false) -%} {% if +community %} + +{% else %} + {% endif %} {%- endmacro %} {% macro community_listing_card(community) -%} + {% else %} +
{% endif %}

{% else %} @@ -93,10 +107,28 @@ show_lhs=true) -%} {{ icon "user-plus" }} {{ text "auth:action.register" }} + +
+ + {{ icon "code" }} + View source +
{% endif %}
+{%- endmacro %} {% macro timelines_nav(selected="") -%} + {%- endmacro %} diff --git a/crates/app/src/public/html/misc/index.html b/crates/app/src/public/html/misc/index.html index 7bc5ead..b469775 100644 --- a/crates/app/src/public/html/misc/index.html +++ b/crates/app/src/public/html/misc/index.html @@ -1,12 +1,26 @@ -{% import "macros.html" as macros %} {% extends "root.html" %} {% block body %} -{{ macros::nav(selected="home") }} -
-
-
- ✨ Welcome to {{ config.name }}! +{% import "macros.html" as macros %} {% extends "root.html" %} {% block head %} +{{ config.name }} +{% endblock %} {% block body %} +
+
{% endblock %} diff --git a/crates/app/src/public/html/profile/base.html b/crates/app/src/public/html/profile/base.html index 2f2de46..56aa060 100644 --- a/crates/app/src/public/html/profile/base.html +++ b/crates/app/src/public/html/profile/base.html @@ -2,7 +2,9 @@ {{ profile.username }} - {{ config.name }} {% endblock %} {% block body %} {{ macros::nav() }}
-
+
+ {{ components::banner(username=profile.username) }} +
+ +
diff --git a/crates/app/src/public/html/root.html b/crates/app/src/public/html/root.html index a32ed39..dd44b7a 100644 --- a/crates/app/src/public/html/root.html +++ b/crates/app/src/public/html/root.html @@ -87,10 +87,10 @@

Are sure you want to go there?

-
+