add guild list to home page
parent
b1be0d0d77
commit
a15a1820a8
47
src/page.rs
47
src/page.rs
|
@ -1,7 +1,7 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
auth::{self, User},
|
auth::{self, User},
|
||||||
htmx::{Build, HtmxBuilder, Tag},
|
htmx::{Build, HtmxBuilder, Tag},
|
||||||
settings::{ApiState, Intro, IntroFriendlyName},
|
settings::{ApiState, GuildSettings, Intro, IntroFriendlyName},
|
||||||
};
|
};
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Path, State},
|
extract::{Path, State},
|
||||||
|
@ -22,14 +22,51 @@ fn page_header(title: &str) -> HtmxBuilder {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn home(State(state): State<ApiState>, user: Option<User>) -> Redirect {
|
pub(crate) async fn home(
|
||||||
if user.is_some() {
|
State(state): State<ApiState>,
|
||||||
Redirect::to(&format!("{}/guild/588149178912473103", state.origin))
|
user: Option<User>,
|
||||||
|
) -> Result<Html<String>, Redirect> {
|
||||||
|
if let Some(user) = user {
|
||||||
|
let settings = state.settings.lock().await;
|
||||||
|
|
||||||
|
let guild = settings
|
||||||
|
.guilds
|
||||||
|
.iter()
|
||||||
|
.filter(|(_, guild_settings)| guild_settings.users.contains_key(&user.name));
|
||||||
|
|
||||||
|
Ok(Html(
|
||||||
|
page_header("MemeJoin - Home")
|
||||||
|
.builder(Tag::Div, |b| {
|
||||||
|
b.attribute("class", "container")
|
||||||
|
.builder_text(Tag::Header2, "Choose a Guild")
|
||||||
|
.push_builder(guild_list(&state.origin, guild))
|
||||||
|
})
|
||||||
|
.build(),
|
||||||
|
))
|
||||||
} else {
|
} else {
|
||||||
Redirect::to(&format!("{}/login", state.origin))
|
Err(Redirect::to(&format!("{}/login", state.origin)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn guild_list<'a>(
|
||||||
|
origin: &str,
|
||||||
|
guilds: impl Iterator<Item = (&'a u64, &'a GuildSettings)>,
|
||||||
|
) -> HtmxBuilder {
|
||||||
|
HtmxBuilder::new(Tag::Empty).ul(|b| {
|
||||||
|
let mut b = b;
|
||||||
|
for (guild_id, guild_settings) in guilds {
|
||||||
|
b = b.li(|b| {
|
||||||
|
b.link(
|
||||||
|
&format!("Guild - {}", guild_settings.name),
|
||||||
|
&format!("{}/guild/{}", origin, guild_id),
|
||||||
|
)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
b
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
fn intro_list<'a>(
|
fn intro_list<'a>(
|
||||||
intros: impl Iterator<Item = (&'a String, &'a Intro)>,
|
intros: impl Iterator<Item = (&'a String, &'a Intro)>,
|
||||||
label: &str,
|
label: &str,
|
||||||
|
|
Loading…
Reference in New Issue