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

Loading…
Cancel
Save