use std::ops::Deref; use rocket::{http::CookieJar, State}; use rocket_dyn_templates::{context, Template}; use crate::{ cookies::LANG_COOKIE, i18n::DEFAULT as DEFAULT_LANG, models::{Settings, SessionUser, Database}, utils::AcceptLanguage, }; #[get("/users/")] pub async fn get_user( user: String, cookies: &CookieJar<'_>, settings: &State, database: &State, accept_language: AcceptLanguage, ) -> Template { Template::render( "user", context! { profile_user: database.get_user_by_name(&user).unwrap(), submissions: database.get_submissions_by_user_name(&user).unwrap(), settings: settings.deref(), lang: cookies .get(LANG_COOKIE) .map(|cookie| vec![cookie.value().to_owned()]) .or(accept_language.0) .unwrap_or_else(|| vec![DEFAULT_LANG.to_owned()]), user: SessionUser::get(cookies).await.unwrap(), }, ) }