summaryrefslogtreecommitdiff
path: root/src/index.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/index.rs')
-rw-r--r--src/index.rs120
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" }
- }
- }
- }
-}