summaryrefslogtreecommitdiffstats
path: root/src/preview
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2022-07-01 10:56:48 -0400
committerJeff Zhao <jeff.no.zhao@gmail.com>2022-07-01 10:56:48 -0400
commit18e13c98d364964df6bb481bb103e262f6e8f0a5 (patch)
tree487dd98305b83b7886be28cce58eb0807452da86 /src/preview
parent27d624c536f4ef9de2ddedc2be8dab330858afdc (diff)
add ability to check whether a preview is outdated
Diffstat (limited to 'src/preview')
-rw-r--r--src/preview/preview_default.rs7
-rw-r--r--src/preview/preview_file.rs4
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,
}
}