You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.0 KiB
35 lines
1.0 KiB
2 years ago
|
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/<user>")]
|
||
|
pub async fn get_user(
|
||
|
user: String,
|
||
|
cookies: &CookieJar<'_>,
|
||
|
settings: &State<Settings>,
|
||
|
database: &State<Database>,
|
||
|
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(),
|
||
|
},
|
||
|
)
|
||
|
}
|