From 58c572d77a90d6233f63271ab03360557da0641d Mon Sep 17 00:00:00 2001 From: Arijit Basu Date: Sun, 11 Sep 2022 08:02:43 +0530 Subject: [PATCH] Fix directory explore scheduling Fixes https://github.com/sayanarijit/xplr/issues/503 --- Cargo.lock | 2 +- Cargo.toml | 2 +- docs/en/src/upgrade-guide.md | 4 ++-- src/app.rs | 9 +++++++++ src/directory_buffer.rs | 5 +++++ src/lua.rs | 12 ++++++------ 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f993a17..12e235f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1203,7 +1203,7 @@ checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] name = "xplr" -version = "0.19.2" +version = "0.19.3" dependencies = [ "ansi-to-tui", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 3d1db9e..eb2a06d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ path = './benches/criterion.rs' [package] name = 'xplr' -version = '0.19.2' +version = '0.19.3' authors = ['Arijit Basu '] edition = '2021' description = 'A hackable, minimal, fast TUI file explorer' diff --git a/docs/en/src/upgrade-guide.md b/docs/en/src/upgrade-guide.md index 0b4b189..61126a8 100644 --- a/docs/en/src/upgrade-guide.md +++ b/docs/en/src/upgrade-guide.md @@ -45,7 +45,7 @@ compatibility. ### Instructions -#### [v0.18.0][46] -> [v0.19.2][47] +#### [v0.18.0][46] -> [v0.19.3][47] - BREAKING: The builtin modes cannot be accessed using space separated names anymore. Use underscore separated mode names. For e.g. @@ -387,4 +387,4 @@ Else do the following: [44]: https://github.com/sayanarijit/xplr/releases/tag/v0.16.4 [45]: https://github.com/sayanarijit/xplr/releases/tag/v0.17.6 [46]: https://github.com/sayanarijit/xplr/releases/tag/v0.18.0 -[47]: https://github.com/sayanarijit/xplr/releases/tag/v0.19.2 +[47]: https://github.com/sayanarijit/xplr/releases/tag/v0.19.3 diff --git a/src/app.rs b/src/app.rs index ec906a4..669b3c1 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1109,6 +1109,15 @@ impl App { } pub fn set_directory(mut self, dir: DirectoryBuffer) -> Result { + if self + .directory_buffer + .as_ref() + .map(|d| d.explored_at >= dir.explored_at) + .unwrap_or(false) + { + return Ok(self); + }; + self = self.add_last_focus( dir.parent.clone(), dir.focused_node().map(|n| n.relative_path.clone()), diff --git a/src/directory_buffer.rs b/src/directory_buffer.rs index 4d617c5..d6b7a42 100644 --- a/src/directory_buffer.rs +++ b/src/directory_buffer.rs @@ -1,4 +1,5 @@ use crate::node::Node; +use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)] @@ -7,6 +8,9 @@ pub struct DirectoryBuffer { pub nodes: Vec, pub total: usize, pub focus: usize, + + #[serde(skip)] + pub explored_at: DateTime, } impl DirectoryBuffer { @@ -17,6 +21,7 @@ impl DirectoryBuffer { nodes, total, focus, + explored_at: Utc::now(), } } diff --git a/src/lua.rs b/src/lua.rs index ca652ae..306604b 100644 --- a/src/lua.rs +++ b/src/lua.rs @@ -146,24 +146,24 @@ mod tests { assert!(check_version(VERSION, "foo path").is_ok()); // Current release if OK - assert!(check_version("0.19.2", "foo path").is_ok()); + assert!(check_version("0.19.3", "foo path").is_ok()); // Prev major release is ERR // - Not yet // Prev minor release is ERR (Change when we get to v1) - assert!(check_version("0.18.2", "foo path").is_err()); + assert!(check_version("0.18.3", "foo path").is_err()); // Prev bugfix release is OK - assert!(check_version("0.19.1", "foo path").is_ok()); + assert!(check_version("0.19.2", "foo path").is_ok()); // Next major release is ERR - assert!(check_version("1.19.2", "foo path").is_err()); + assert!(check_version("1.19.3", "foo path").is_err()); // Next minor release is ERR - assert!(check_version("0.20.2", "foo path").is_err()); + assert!(check_version("0.20.3", "foo path").is_err()); // Next bugfix release is ERR (Change when we get to v1) - assert!(check_version("0.19.3", "foo path").is_err()); + assert!(check_version("0.19.4", "foo path").is_err()); } }