diff options
Diffstat (limited to 'src/index.rs')
| -rw-r--r-- | src/index.rs | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/src/index.rs b/src/index.rs deleted file mode 100644 index 843cb77..0000000 --- a/src/index.rs +++ /dev/null @@ -1,120 +0,0 @@ -use axum::{extract::State, routing::get, Router}; -use maud::Markup; - -use crate::{ - app::App, channel::repo::Provider as _, error::InternalError, login::repo::logins::Login, -}; - -async fn index(State(app): State<App>, login: Option<Login>) -> Result<Markup, InternalError> { - match login { - None => Ok(templates::unauthenticated()), - Some(login) => index_authenticated(app, login).await, - } -} - -async fn index_authenticated(app: App, login: Login) -> Result<Markup, InternalError> { - let mut tx = app.db.begin().await?; - let channels = tx.channels().all().await?; - tx.commit().await?; - - Ok(templates::authenticated(login, &channels)) -} - -pub fn router() -> Router<App> { - Router::new().route("/", get(index)) -} - -mod templates { - use maud::{html, Markup, DOCTYPE}; - - use crate::{channel::repo::Channel, login::repo::logins::Login}; - - pub fn authenticated<'c>( - login: Login, - channels: impl IntoIterator<Item = &'c Channel>, - ) -> Markup { - html! { - (DOCTYPE) - head { - title { "hi" } - } - body { - section { - (channel_list(channels)) - (create_channel()) - } - section { - (logout_form(&login.name)) - } - } - } - } - - fn channel_list<'c>(channels: impl IntoIterator<Item = &'c Channel>) -> Markup { - html! { - ul { - @for channel in channels { - (channel_list_entry(&channel)) - } - } - } - } - - fn channel_list_entry(channel: &Channel) -> Markup { - html! { - li { - (channel.name) " (" (channel.id) ")" - } - } - } - - fn create_channel() -> Markup { - html! { - form action="/create" method="post" { - label { - "name" - input name="name" type="text" {} - } - button { - "start channel" - } - } - } - } - - fn logout_form(name: &str) -> Markup { - html! { - form action="/logout" method="post" { - button { "bye, " (name) } - } - } - } - - pub fn unauthenticated() -> Markup { - html! { - (DOCTYPE) - head { - title { "hi" } - } - body { - (login_form()) - } - } - } - - fn login_form() -> Markup { - html! { - form action="/login" method="post" { - label { - "login" - input name="name" type="text" {} - } - label { - "password" - input name="password" type="password" {} - } - button { "hi" } - } - } - } -} |
