use axum::{Router, response::Redirect, routing::get}; use crate::app::App; mod ch; mod get; mod invite; mod login; mod me; mod path; mod setup; pub fn router(app: &App) -> Router { [ Router::new() .route("/{*path}", get(path::get::handler)) .route("/setup", get(setup::get::handler)), Router::new() .route("/", get(get::handler)) .route("/me", get(me::get::handler)) .route("/login", get(login::get::handler)) .route("/ch/{channel}", get(ch::channel::get::handler)) .route("/invite/{invite}", get(invite::invite::get::handler)) .route_layer(crate::setup::Required::with_fallback( app.clone(), Redirect::to("/setup"), )), ] .into_iter() .fold(Router::default(), Router::merge) }