1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use actix_session::Session;
use actix_web::{web, HttpRequest, HttpResponse};
use crate::forms::profile_form::ProfileForm;
use solitaire_core::profile::UserProfile;
use solitaire_service::AppConfig;
pub fn index(session: Session, cfg: web::Data<AppConfig>, req: HttpRequest) -> HttpResponse {
crate::act(&session, &cfg, req, |ctx, router| solitaire_templates::home::index(&ctx, router))
}
pub fn health() -> HttpResponse {
HttpResponse::Ok().finish()
}
pub fn profile(session: Session, cfg: web::Data<AppConfig>, req: HttpRequest) -> HttpResponse {
crate::act(&session, &cfg, req, |ctx, router| {
solitaire_templates::profile::profile(&ctx, router)
})
}
pub fn profile_post(session: Session, cfg: web::Data<AppConfig>, req: HttpRequest, form: Option<web::Form<ProfileForm>>) -> HttpResponse {
match form {
Some(f) => crate::redir(&session, &cfg, req, |ctx, router| {
let profile = UserProfile::new(
String::from(f.username()),
f.theme(),
f.navbar_color().into(),
f.link_color().into()
);
solitaire_service::profile::save(&cfg.files(), &ctx.user_id(), &profile)?;
router.route_simple("profile")
}),
None => crate::redir(&session, &cfg, req, |_ctx, router| router.route_simple("profile"))
}
}