From 451e9f26a8f7a7c03b0f3ba37a0aaaa3af3eb467 Mon Sep 17 00:00:00 2001 From: CenTdemeern1 Date: Thu, 13 Feb 2025 06:06:15 +0100 Subject: [PATCH] Almost finished about dialog --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/api/{nekomata_avatars.rs => about.rs} | 9 +++- src/api/mod.rs | 7 +-- static/about.mts | 10 +++- static/crossroad.html | 24 ++++++---- static/main.css | 56 +++++++++++++++++++++-- 7 files changed, 87 insertions(+), 23 deletions(-) rename src/api/{nekomata_avatars.rs => about.rs} (88%) diff --git a/Cargo.lock b/Cargo.lock index a7c10a0..7760ec8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -346,7 +346,7 @@ dependencies = [ [[package]] name = "fedirect" -version = "0.1.0" +version = "0.1.0-alpha" dependencies = [ "bytes", "favicon-scraper", diff --git a/Cargo.toml b/Cargo.toml index 8f8fb7d..ed5a0ee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fedirect" -version = "0.1.0" +version = "0.1.0-alpha" edition = "2021" [dependencies] diff --git a/src/api/nekomata_avatars.rs b/src/api/about.rs similarity index 88% rename from src/api/nekomata_avatars.rs rename to src/api/about.rs index 6dfb8f7..657aa5b 100644 --- a/src/api/nekomata_avatars.rs +++ b/src/api/about.rs @@ -4,6 +4,12 @@ use serde::{Deserialize, Serialize}; use serde_json::json; use std::sync::OnceLock; +/// Gets the FeDirect version +#[get("/about/version")] +pub async fn version() -> &'static str { + env!("CARGO_PKG_VERSION") +} + #[derive(Debug, Serialize)] pub struct Avatars { charlotte: Option, @@ -21,7 +27,6 @@ fn get_avatar(client: &Client, origin: &str, user_id: &str) -> Option { "userId": user_id }) .to_string(); - println!("{body}"); let user: MisskeyUser = client .post(format!("https://{origin}/api/users/show")) .header("content-type", "application/json") @@ -43,7 +48,7 @@ pub fn init() { } /// Gets (relatively) up-to-date Nekomata avatars -#[get("/nekomata_avatars")] +#[get("/about/nekomata_avatars")] pub async fn nekomata_avatars() -> Json<&'static Avatars> { Json(AVATARS.get().unwrap()) } diff --git a/src/api/mod.rs b/src/api/mod.rs index 6417434..a3e775a 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -1,17 +1,18 @@ use rocket::Route; +pub mod about; pub mod instance_info; -pub mod nekomata_avatars; pub mod proxy; pub fn init() { - nekomata_avatars::init(); + about::init(); } pub fn get_routes() -> Vec { routes![ instance_info::instance_info, - nekomata_avatars::nekomata_avatars, + about::version, + about::nekomata_avatars, // Proxy is temporarily disabled as it's not needed // proxy::proxy ] diff --git a/static/about.mts b/static/about.mts index 741170c..4d96b26 100644 --- a/static/about.mts +++ b/static/about.mts @@ -1,11 +1,17 @@ -import { findImageOrFail } from "./dom.mjs"; +import { findImageOrFail, findSpanOrFail } from "./dom.mjs"; + +async function populateVersion(versionSelector: string) { + const versionParagraph = findSpanOrFail(document.body, versionSelector); + versionParagraph.innerText = await fetch("/api/about/version").then(r => r.text()); +} async function populateUsers(charlotteSelector: string, kioSelector: string) { const charlotteImage = findImageOrFail(document.body, charlotteSelector); const kioImage = findImageOrFail(document.body, kioSelector); - const { charlotte, kio } = await fetch("/api/nekomata_avatars").then(r => r.json()); + const { charlotte, kio } = await fetch("/api/about/nekomata_avatars").then(r => r.json()); if (charlotte) charlotteImage.src = charlotte; if (kio) kioImage.src = kio; } +populateVersion("#version"); populateUsers("#charlotteAvatar", "#kioAvatar"); diff --git a/static/crossroad.html b/static/crossroad.html index b769c4d..3047ebd 100644 --- a/static/crossroad.html +++ b/static/crossroad.html @@ -121,28 +121,32 @@ Unchecking this is not recommended, and this option only exists for exceptional - +

About FeDirect

-

  (v0.1-alpha)

+

  (v)

FeDirect links the Fediverse together by allowing you to create generic links that link people to their native instance!

+ Source code

About Nekomata

-
- Charlotte's avatar - Charlotte - @CenTdemeern1@eepy.moe +
+ Charlotte's avatar +

Charlotte

+ @CenTdemeern1@eepy.moe +

Programming, design

-
- Charlotte's avatar - Kio - @Kio@kitsunes.club +
+ Charlotte's avatar +

Kio

+ @Kio@kitsunes.club +

Funding, hosting, design

+ Nekomata Logo
diff --git a/static/main.css b/static/main.css index 4781220..1441b99 100644 --- a/static/main.css +++ b/static/main.css @@ -147,10 +147,6 @@ abbr[title] { max-width: 50%; } -.half-height-max { - max-height: 50%; -} - .full-width { min-width: 100%; } @@ -163,6 +159,16 @@ abbr[title] { height: var(--medium); } +.xl-size { + width: var(--xl); + height: var(--xl); +} + +.xl-size-max { + max-width: var(--xl); + max-height: var(--xl); +} + .separator-bottom { border-bottom: solid 1px var(--transparent-black); } @@ -191,6 +197,13 @@ abbr[title] { aspect-ratio: 1; } +.absolute-centered { + position: absolute; + top: 50%; + left: 50%; + translate: -50% -50%; +} + /* Specialized elements */ .iconContainer { @@ -222,6 +235,31 @@ abbr[title] { margin-top: min(var(--xl), 6vh); } +.circlingMembers { + position: relative; + width: 24em; + height: 24em; + animation-play-state: running; + transition: animation-play-state 1s; +} + +.circlingMembers:hover { + animation-play-state: paused; +} + +.member { + animation: 8s infinite linear orbit; + animation-play-state: inherit; +} + +.member.charlotte { + --orbit-translate-x: 8em; +} + +.member.kio { + --orbit-translate-x: -8em; +} + /* Animations */ .pulse-red { @@ -236,4 +274,14 @@ abbr[title] { 100% { box-shadow: 0px 0px 20px var(--red); } +} + +@keyframes orbit { + 0% { + transform: rotate(0deg) translateX(var(--orbit-translate-x)) rotate(0deg); + } + + 100% { + transform: rotate(360deg) translateX(var(--orbit-translate-x)) rotate(-360deg); + } } \ No newline at end of file