tetratto/crates/app/src/routes/pages/mod.rs

55 lines
1.5 KiB
Rust
Raw Normal View History

pub mod auth;
pub mod communities;
pub mod misc;
pub mod profile;
use axum::{Router, routing::get};
use axum_extra::extract::CookieJar;
use serde::Deserialize;
use tetratto_core::{
DataManager,
model::{Error, auth::User},
};
use crate::{assets::initial_context, get_lang};
pub fn routes() -> Router {
Router::new()
// misc
.route("/", get(misc::index_request))
2025-03-30 22:26:20 -04:00
.route("/notifs", get(misc::notifications_request))
2025-03-31 11:45:34 -04:00
.fallback_service(get(misc::not_found))
// auth
.route("/auth/register", get(auth::register_request))
.route("/auth/login", get(auth::login_request))
// profile
2025-03-31 11:45:34 -04:00
.route("/settings", get(profile::settings_request))
.route("/user/{username}", get(profile::posts_request))
// communities
.route("/communities", get(communities::list_request))
.route("/community/{title}", get(communities::feed_request))
2025-03-31 11:45:34 -04:00
.route(
"/community/{title}/manage",
get(communities::settings_request),
)
.route("/post/{id}", get(communities::post_request))
}
pub async fn render_error(
e: Error,
jar: &CookieJar,
data: &(DataManager, tera::Tera),
user: &Option<User>,
) -> String {
let lang = get_lang!(jar, data.0);
let mut context = initial_context(&data.0.0, lang, &user).await;
context.insert("error_text", &e.to_string());
data.1.render("misc/error.html", &mut context).unwrap()
}
#[derive(Deserialize)]
pub struct PaginatedQuery {
#[serde(default)]
pub page: usize,
}