Made plan loading touch the file to sort on last modified for the previous plan view

main 1.5.2
isark 1 year ago
parent b1550d68e5
commit fda12b2f90

@ -1,10 +1,10 @@
use std::error::Error; use std::error::Error;
use std::fs::DirEntry;
use std::path::PathBuf; use std::path::PathBuf;
use directories::ProjectDirs; use directories::ProjectDirs;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::config::Config; use crate::config::Config;
use crate::plan::{convert_old, Plan, PlanMetadata}; 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<Plan> { pub fn load_plan_at_path(path: PathBuf, save_local: bool) -> Option<Plan> {
log::trace!("Loading plan: {path:?}");
let plan: Plan = match serde_json::from_str(&std::fs::read_to_string(&path).ok()?).ok() { let plan: Plan = match serde_json::from_str(&std::fs::read_to_string(&path).ok()?).ok() {
Some(plan) => plan, Some(plan) => plan,
None => convert_old(path.clone())?, 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) Some(plan)
} }
pub fn save_plan_at_store_path(file_name: &str, mut plan: Plan, allow_overwrite: bool) -> Result<PathBuf, Box<dyn Error>> { pub fn save_plan_at_store_path(
file_name: &str,
mut plan: Plan,
allow_overwrite: bool,
) -> Result<PathBuf, Box<dyn Error>> {
let plan_dir = match Self::plan_dir() { let plan_dir = match Self::plan_dir() {
Some(dir) => dir, Some(dir) => dir,
None => return Err("No plan dir".into()), None => return Err("No plan dir".into()),
@ -133,14 +144,18 @@ impl Storage {
None => return vec![], None => return vec![],
}; };
let read_dir = match plan_dir.read_dir() { let mut read_dir: Vec<DirEntry> = match plan_dir.read_dir() {
Ok(read_dir) => read_dir, Ok(read_dir) => read_dir.filter_map(|v| v.ok()).collect(),
Err(_) => return vec![], Err(_) => return vec![],
}; };
read_dir.sort_by_key(|v| v.metadata().ok()?.modified().ok());
read_dir.reverse();
read_dir read_dir
.iter()
.filter_map(|entry| { .filter_map(|entry| {
let path = entry.ok()?.path(); let path = entry.path();
if path.extension()? != "json" { if path.extension()? != "json" {
return None; return None;

@ -8,7 +8,7 @@
}, },
"package": { "package": {
"productName": "Nothing", "productName": "Nothing",
"version": "1.5.1" "version": "1.5.2"
}, },
"tauri": { "tauri": {
"systemTray": { "systemTray": {

@ -96,19 +96,15 @@ export class PlanService {
this.validateResponse(response); this.validateResponse(response);
if (response.headers['etag'] === plan.latest_server_etag) { if (response.headers['etag'] === plan.latest_server_etag) {
console.log("Same ETag, no update needed.")
return EMPTY; return EMPTY;
} }
console.log("Got new ETAG, updating plan.", response, plan);
return this._loadFromUrl(plan.update_url!, plan.name!, false); return this._loadFromUrl(plan.update_url!, plan.name!, false);
})); }));
} }
public savePlanAtStore(name: string, plan: Plan, allowOverwrite: boolean = false) { public savePlanAtStore(name: string, plan: Plan, allowOverwrite: boolean = false) {
console.log("save at store: ", plan);
return from(invoke<string>('save_plan_at_store', { name, plan: plan.toInterface(), allowOverwrite })).pipe(tap(() => { return from(invoke<string>('save_plan_at_store', { name, plan: plan.toInterface(), allowOverwrite })).pipe(tap(() => {
console.log("saved plan at store pipe tap");
this.loadStoredPlans(); this.loadStoredPlans();
})); }));
} }
@ -138,6 +134,8 @@ export class PlanService {
if (save_local) { if (save_local) {
this.savePlanAtStore(name, plan).subscribe(); this.savePlanAtStore(name, plan).subscribe();
} }
this.loadStoredPlans();
})); }));
} }
@ -156,7 +154,6 @@ export class PlanService {
private loadStoredPlans() { private loadStoredPlans() {
from(invoke<PlanMetadata[]>('enumerate_stored_plans')).subscribe(plans => { from(invoke<PlanMetadata[]>('enumerate_stored_plans')).subscribe(plans => {
console.log("updating stored plans");
this._storedPlansSubject.next(plans); this._storedPlansSubject.next(plans);
}) })
} }

Loading…
Cancel
Save