Browse Source

Add common variables to context in render_response

master
Dylan Baker 3 years ago
parent
commit
1a8c0a86a7
1 changed files with 9 additions and 14 deletions
  1. 9
    14
      src/routes.rs

+ 9
- 14
src/routes.rs View File

19
     let posts: Vec<Post> = fs::get_all_posts().await?;
19
     let posts: Vec<Post> = fs::get_all_posts().await?;
20
     let mut context = Context::new();
20
     let mut context = Context::new();
21
     context.insert("posts", &posts);
21
     context.insert("posts", &posts);
22
-    let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
23
-    context.insert("logged_in", &logged_in);
24
-    render_response("index.html", &context)
22
+    render_response("index.html", &context, &req)
25
 }
23
 }
26
 
24
 
27
 pub async fn single_post(req: Request<()>) -> Result {
25
 pub async fn single_post(req: Request<()>) -> Result {
28
     let mut context = Context::new();
26
     let mut context = Context::new();
29
-    let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
30
-    context.insert("logged_in", &logged_in);
31
     let post_id = req.param("id")?;
27
     let post_id = req.param("id")?;
32
     let post = fs::get_one_post(post_id).await?;
28
     let post = fs::get_one_post(post_id).await?;
33
     context.insert("post", &post);
29
     context.insert("post", &post);
34
-    render_response("single.html", &context)
30
+    render_response("single.html", &context, &req)
35
 }
31
 }
36
 
32
 
37
 pub async fn edit_post(req: Request<()>) -> Result {
33
 pub async fn edit_post(req: Request<()>) -> Result {
38
-    let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
39
     let mut context = Context::new();
34
     let mut context = Context::new();
40
-    context.insert("logged_in", &logged_in);
41
     let post_id = req.param("id")?;
35
     let post_id = req.param("id")?;
42
     let mut post = fs::get_one_post(post_id).await?;
36
     let mut post = fs::get_one_post(post_id).await?;
43
     post.body = post.body.replace("<br>", "\n");
37
     post.body = post.body.replace("<br>", "\n");
44
     context.insert("post", &post);
38
     context.insert("post", &post);
45
-    render_response("edit.html", &context)
39
+    render_response("edit.html", &context, &req)
46
 }
40
 }
47
 
41
 
48
 pub async fn create_post(mut req: Request<()>) -> Result {
42
 pub async fn create_post(mut req: Request<()>) -> Result {
71
 
65
 
72
 pub async fn login_page(mut req: Request<()>) -> Result {
66
 pub async fn login_page(mut req: Request<()>) -> Result {
73
     let mut context = Context::new();
67
     let mut context = Context::new();
74
-    let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
75
-    context.insert("logged_in", &logged_in);
76
     match req.session_mut().get::<String>("flash_error") {
68
     match req.session_mut().get::<String>("flash_error") {
77
         Some(error) => {
69
         Some(error) => {
78
             req.session_mut().remove("flash_error");
70
             req.session_mut().remove("flash_error");
80
         }
72
         }
81
         None => {}
73
         None => {}
82
     }
74
     }
83
-    render_response("login.html", &context)
75
+    render_response("login.html", &context, &req)
84
 }
76
 }
85
 
77
 
86
 pub async fn login(mut req: Request<()>) -> Result {
78
 pub async fn login(mut req: Request<()>) -> Result {
110
     Ok(Redirect::new("/").into())
102
     Ok(Redirect::new("/").into())
111
 }
103
 }
112
 
104
 
113
-pub fn render_response(template: &str, context: &Context) -> Result<Response> {
114
-    let html = render_template(template, context)?;
105
+pub fn render_response(template: &str, context: &Context, req: &Request<()>) -> Result<Response> {
106
+    let mut context = context.clone();
107
+    let logged_in: bool = req.session().get("logged_in").unwrap_or(false);
108
+    context.insert("logged_in", &logged_in);
109
+    let html = render_template(template, &context)?;
115
     let mut res = Response::new(StatusCode::Ok);
110
     let mut res = Response::new(StatusCode::Ok);
116
     res.set_body(html);
111
     res.set_body(html);
117
     res.set_content_type(mime::HTML);
112
     res.set_content_type(mime::HTML);

Loading…
Cancel
Save