diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-10-11 22:40:03 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-10-11 22:40:03 -0400 |
| commit | 812f1cafe3f8a68bf45b677fade7417c30d92eac (patch) | |
| tree | e2633472a31bd86bf08bcc16ddb4296df89064b4 /src/ui.rs | |
| parent | a0abed5ea08b2fc5b9ac4abdade1199f62cd5da7 (diff) | |
Create APIs for inviting users.
Diffstat (limited to 'src/ui.rs')
| -rw-r--r-- | src/ui.rs | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -9,7 +9,7 @@ use axum::{ use mime_guess::Mime; use rust_embed::EmbeddedFile; -use crate::{app::App, channel, error::Internal, login::Login}; +use crate::{app::App, channel, error::Internal, invite, login::Login}; #[derive(rust_embed::Embed)] #[folder = "target/ui"] @@ -41,6 +41,7 @@ pub fn router(app: &App) -> Router<App> { .route("/", get(root)) .route("/login", get(login)) .route("/ch/:channel", get(channel)) + .route("/invite/:invite", get(invite)) .route_layer(middleware::from_fn_with_state(app.clone(), setup_required)), ] .into_iter() @@ -85,6 +86,17 @@ async fn channel( } } +async fn invite( + State(app): State<App>, + Path(invite): Path<invite::Id>, +) -> Result<impl IntoResponse, Internal> { + match app.invites().get(&invite).await { + Ok(_) => Ok(Assets::index()?.into_response()), + Err(invite::app::Error::NotFound(_)) => Ok(NotFound(Assets::index()?).into_response()), + Err(other) => Err(Internal::from(other)), + } +} + struct Asset(Mime, EmbeddedFile); impl IntoResponse for Asset { |
