From 6c551f0d334bb5411fe303141f88476c2d54130c Mon Sep 17 00:00:00 2001 From: David Hamilton Date: Mon, 21 Mar 2022 16:34:15 -0700 Subject: [PATCH] Add saved posts to restore settings link --- src/saved.rs | 4 ++-- src/settings.rs | 7 +++++-- src/utils.rs | 2 +- templates/settings.html | 4 ++-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/saved.rs b/src/saved.rs index 0eb925e..3309bc2 100644 --- a/src/saved.rs +++ b/src/saved.rs @@ -57,7 +57,7 @@ pub async fn save(req: Request) -> Result, String> { Some(id) => { saved_posts.push(id); response.insert_cookie( - Cookie::build(String::from("saved_posts"), saved_posts.join(",")) + Cookie::build(String::from("saved_posts"), saved_posts.join("+")) .path("/") .http_only(true) .expires(OffsetDateTime::now_utc() + Duration::weeks(52)) @@ -89,7 +89,7 @@ pub async fn unsave(req: Request) -> Result, String> { saved_posts.remove(index); } response.insert_cookie( - Cookie::build(String::from("saved_posts"), saved_posts.join(",")) + Cookie::build(String::from("saved_posts"), saved_posts.join("+")) .path("/") .http_only(true) .expires(OffsetDateTime::now_utc() + Duration::weeks(52)) diff --git a/src/settings.rs b/src/settings.rs index 9cdd266..c6a16d3 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; // CRATES use crate::server::ResponseExt; -use crate::utils::{redirect, template, Preferences}; +use crate::utils::{get_saved_posts, redirect, template, Preferences}; use askama::Template; use cookie::Cookie; use futures_lite::StreamExt; @@ -14,6 +14,7 @@ use time::{Duration, OffsetDateTime}; #[template(path = "settings.html")] struct SettingsTemplate { prefs: Preferences, + saved_posts: Vec, url: String, } @@ -36,9 +37,11 @@ const PREFS: [&str; 10] = [ // Retrieve cookies from request "Cookie" header pub async fn get(req: Request) -> Result, String> { + let saved_posts = get_saved_posts(&req); let url = req.uri().to_string(); template(SettingsTemplate { prefs: Preferences::new(req), + saved_posts, url, }) } @@ -109,7 +112,7 @@ fn set_cookies_method(req: Request, remove_cookies: bool) -> Response response.insert_cookie( Cookie::build(name.to_owned(), value.clone()) diff --git a/src/utils.rs b/src/utils.rs index 8c56191..e40399f 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -713,7 +713,7 @@ pub async fn error(req: Request, msg: String) -> Result, St pub fn get_saved_posts(req: &Request) -> Vec { match req.cookie("saved_posts") { - Some(cookie) => cookie.value().split(',').map(String::from).collect(), + Some(cookie) => cookie.value().split('+').map(String::from).collect(), None => Vec::new(), } } diff --git a/templates/settings.html b/templates/settings.html index 8a70912..fc99ceb 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -109,8 +109,8 @@ {% endif %}
-

Note: settings and subscriptions are saved in browser cookies. Clearing your cookies will reset them.


-

You can restore your current settings and subscriptions after clearing your cookies using this link.

+

Note: settings, subscriptions and saved posts are saved in browser cookies. Clearing your cookies will reset them.


+

You can restore your current settings, subscriptions and saved posts after clearing your cookies using this link.