From b2df4ff0efc23db419e9ae4baef4eb5a54c006e0 Mon Sep 17 00:00:00 2001 From: Jez Cope Date: Sat, 3 Jul 2021 16:08:11 +0100 Subject: [PATCH] Move session info file to cache dir --- src/session.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/session.rs b/src/session.rs index 6705dfd..4df994b 100644 --- a/src/session.rs +++ b/src/session.rs @@ -1,26 +1,30 @@ +use directories::ProjectDirs; use matrix_sdk::{Client, ClientConfig, Session}; use serde_lexpr; -use std::fs::File; -use directories::ProjectDirs; +use std::fs::{create_dir_all, File}; -static SESSION_FILE: &str = "session_info"; lazy_static! { - static ref PROJECT_DIRS: ProjectDirs = ProjectDirs::from("me", "petrichor", "mxadm").unwrap(); + static ref PROJECT_DIRS: ProjectDirs = ProjectDirs::from("me", "petrichor", "mxadm") + .expect("Project directories should be available on all platforms"); } +static SESSION_FILE: &str = "session_info"; pub fn build_client_config() -> ClientConfig { - ClientConfig::new() - .store_path(PROJECT_DIRS.cache_dir().join("store")) + ClientConfig::new().store_path(PROJECT_DIRS.cache_dir().join("store")) } pub fn save_session(session: Session) -> Result<(), Box> { - let mut session_file = File::create(SESSION_FILE)?; + let cache_dir = PROJECT_DIRS.cache_dir(); + if !cache_dir.exists() { + create_dir_all(cache_dir)?; + } + let mut session_file = File::create(cache_dir.join(SESSION_FILE))?; serde_lexpr::to_writer(&mut session_file, &session)?; Ok(()) } pub async fn restore_session() -> Result> { - let session_file = File::open(SESSION_FILE)?; + let session_file = File::open(PROJECT_DIRS.cache_dir().join(SESSION_FILE))?; let session_info: Session = serde_lexpr::from_reader(session_file)?; let client =