simple-web-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

settings.rs (996B)


      1 use askama::Template;
      2 use axum::{
      3     extract::Query,
      4     response::{Html, Response},
      5 };
      6 use serde::Deserialize;
      7 
      8 use crate::error::AppError;
      9 use crate::sse;
     10 use crate::templates::{ApplicationTemplate, SettingsTabTemplate, SettingsTemplate};
     11 
     12 #[derive(Debug, Deserialize)]
     13 pub struct SettingsQuery {
     14     #[serde(default = "default_tab")]
     15     pub tab: String,
     16 }
     17 
     18 fn default_tab() -> String {
     19     "general".to_string()
     20 }
     21 
     22 pub async fn open_settings(Query(query): Query<SettingsQuery>) -> Result<Html<String>, AppError> {
     23     let settings_template = SettingsTemplate { tab: query.tab };
     24     let settings_content = settings_template.render()?;
     25     let template = ApplicationTemplate {
     26         content: settings_content,
     27     };
     28     Ok(Html(template.render()?))
     29 }
     30 
     31 pub async fn open_settings_tab(
     32     Query(query): Query<SettingsQuery>,
     33 ) -> Result<Response, AppError> {
     34     let template = SettingsTabTemplate { tab: query.tab };
     35     let html = template.render()?;
     36     Ok(sse::patch_elements(&html))
     37 }