diff --git a/src-tauri/src/storage.rs b/src-tauri/src/storage.rs index 2c3cade..37c380f 100644 --- a/src-tauri/src/storage.rs +++ b/src-tauri/src/storage.rs @@ -1,10 +1,10 @@ use std::error::Error; +use std::fs::DirEntry; use std::path::PathBuf; use directories::ProjectDirs; use serde::{Deserialize, Serialize}; - use crate::config::Config; use crate::plan::{convert_old, Plan, PlanMetadata}; @@ -84,7 +84,6 @@ impl Storage { } pub fn load_plan_at_path(path: PathBuf, save_local: bool) -> Option { - log::trace!("Loading plan: {path:?}"); let plan: Plan = match serde_json::from_str(&std::fs::read_to_string(&path).ok()?).ok() { Some(plan) => plan, None => convert_old(path.clone())?, @@ -99,10 +98,22 @@ impl Storage { } } + //QoL touch file to put recent plans at top! :D + match std::fs::File::open(&path) { + Ok(file) => { + file.set_modified(std::time::SystemTime::now()).ok(); + } + Err(_) => (), + } + Some(plan) } - pub fn save_plan_at_store_path(file_name: &str, mut plan: Plan, allow_overwrite: bool) -> Result> { + pub fn save_plan_at_store_path( + file_name: &str, + mut plan: Plan, + allow_overwrite: bool, + ) -> Result> { let plan_dir = match Self::plan_dir() { Some(dir) => dir, None => return Err("No plan dir".into()), @@ -133,14 +144,18 @@ impl Storage { None => return vec![], }; - let read_dir = match plan_dir.read_dir() { - Ok(read_dir) => read_dir, + let mut read_dir: Vec = match plan_dir.read_dir() { + Ok(read_dir) => read_dir.filter_map(|v| v.ok()).collect(), Err(_) => return vec![], }; + read_dir.sort_by_key(|v| v.metadata().ok()?.modified().ok()); + read_dir.reverse(); + read_dir + .iter() .filter_map(|entry| { - let path = entry.ok()?.path(); + let path = entry.path(); if path.extension()? != "json" { return None; diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 58ff993..d18d07d 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "Nothing", - "version": "1.5.1" + "version": "1.5.2" }, "tauri": { "systemTray": { diff --git a/src/app/_services/plan.service.ts b/src/app/_services/plan.service.ts index 6f88c6e..7b9fe0e 100644 --- a/src/app/_services/plan.service.ts +++ b/src/app/_services/plan.service.ts @@ -96,19 +96,15 @@ export class PlanService { this.validateResponse(response); if (response.headers['etag'] === plan.latest_server_etag) { - console.log("Same ETag, no update needed.") return EMPTY; } - console.log("Got new ETAG, updating plan.", response, plan); return this._loadFromUrl(plan.update_url!, plan.name!, false); })); } public savePlanAtStore(name: string, plan: Plan, allowOverwrite: boolean = false) { - console.log("save at store: ", plan); return from(invoke('save_plan_at_store', { name, plan: plan.toInterface(), allowOverwrite })).pipe(tap(() => { - console.log("saved plan at store pipe tap"); this.loadStoredPlans(); })); } @@ -138,6 +134,8 @@ export class PlanService { if (save_local) { this.savePlanAtStore(name, plan).subscribe(); } + + this.loadStoredPlans(); })); } @@ -156,7 +154,6 @@ export class PlanService { private loadStoredPlans() { from(invoke('enumerate_stored_plans')).subscribe(plans => { - console.log("updating stored plans"); this._storedPlansSubject.next(plans); }) }