diff options
author | Jeff Zhao <jeff.no.zhao@gmail.com> | 2022-07-01 10:56:48 -0400 |
---|---|---|
committer | Jeff Zhao <jeff.no.zhao@gmail.com> | 2022-07-01 10:56:48 -0400 |
commit | 18e13c98d364964df6bb481bb103e262f6e8f0a5 (patch) | |
tree | 487dd98305b83b7886be28cce58eb0807452da86 /src/preview | |
parent | 27d624c536f4ef9de2ddedc2be8dab330858afdc (diff) |
add ability to check whether a preview is outdated
Diffstat (limited to 'src/preview')
-rw-r--r-- | src/preview/preview_default.rs | 7 | ||||
-rw-r--r-- | src/preview/preview_file.rs | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/preview/preview_default.rs b/src/preview/preview_default.rs index 8a216c9..bb5ea64 100644 --- a/src/preview/preview_default.rs +++ b/src/preview/preview_default.rs @@ -23,7 +23,12 @@ pub fn load_preview_path(context: &mut AppContext, p: path::PathBuf, metadata: J let need_to_load = context .preview_context_ref() .get_preview_ref(p.as_path()) - .is_none(); + .map(|p| { + p.as_ref() + .map(|p| p.modified < metadata.modified()) + .unwrap_or(true) + }) + .unwrap_or(true); if need_to_load { preview_file::Background::preview_path_with_script(context, p); diff --git a/src/preview/preview_file.rs b/src/preview/preview_file.rs index dac3ad2..f929b2e 100644 --- a/src/preview/preview_file.rs +++ b/src/preview/preview_file.rs @@ -1,6 +1,7 @@ use std::path; use std::process::{Command, Output}; use std::thread; +use std::time; use crate::context::AppContext; use crate::event::AppEvent; @@ -10,6 +11,7 @@ pub struct FilePreview { pub status: std::process::ExitStatus, pub output: String, pub index: usize, + pub modified: time::SystemTime, } impl std::convert::From<Output> for FilePreview { @@ -17,9 +19,11 @@ impl std::convert::From<Output> for FilePreview { let s = String::from_utf8_lossy(&output.stdout).to_string(); let s2 = s.replace('\t', " "); let status = output.status; + let modified = time::SystemTime::now(); Self { status, output: s2, + modified, index: 0, } } |