From 2979efb98e0ee288f53ca333189ddf7678879348 Mon Sep 17 00:00:00 2001 From: sxyazi Date: Sat, 13 Apr 2024 10:32:34 +0800 Subject: [PATCH] .. --- yazi-core/src/folder/files.rs | 6 +++++- yazi-core/src/folder/folder.rs | 7 +++++-- yazi-core/src/folder/stage.rs | 2 +- yazi-fm/src/lives/folder.rs | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/yazi-core/src/folder/files.rs b/yazi-core/src/folder/files.rs index 3f5c03ea..9558fa6c 100644 --- a/yazi-core/src/folder/files.rs +++ b/yazi-core/src/folder/files.rs @@ -157,7 +157,11 @@ impl Files { self.sizes.extend(sizes); } - pub fn update_ioerr(&mut self) { todo!() } + pub fn update_ioerr(&mut self) { + self.ticket = FILES_TICKET.fetch_add(1, Ordering::Relaxed); + self.hidden.clear(); + self.items.clear(); + } pub fn update_creating(&mut self, files: Vec) { if files.is_empty() { diff --git a/yazi-core/src/folder/folder.rs b/yazi-core/src/folder/folder.rs index 9dc4f6db..16178886 100644 --- a/yazi-core/src/folder/folder.rs +++ b/yazi-core/src/folder/folder.rs @@ -28,7 +28,7 @@ impl From<&Url> for Folder { impl Folder { pub fn update(&mut self, op: FilesOp) -> bool { - let revision = self.files.revision; + let (stage, revision) = (self.stage, self.files.revision); match op { FilesOp::Full(_, _, mtime) => { (self.mtime, self.stage) = (mtime, FolderStage::Loaded); @@ -39,6 +39,9 @@ impl Folder { FilesOp::Done(_, mtime, ticket) if ticket == self.files.ticket() => { (self.mtime, self.stage) = (mtime, FolderStage::Loaded); } + FilesOp::IOErr(_, kind) => { + (self.mtime, self.stage) = (None, FolderStage::Failed(kind)); + } _ => {} } @@ -56,7 +59,7 @@ impl Folder { } self.arrow(0); - self.files.revision != revision + (stage, revision) != (self.stage, self.files.revision) } pub fn arrow(&mut self, step: impl Into) -> bool { diff --git a/yazi-core/src/folder/stage.rs b/yazi-core/src/folder/stage.rs index bd8a3674..89f3ac50 100644 --- a/yazi-core/src/folder/stage.rs +++ b/yazi-core/src/folder/stage.rs @@ -3,5 +3,5 @@ pub enum FolderStage { #[default] Loading, Loaded, - Failed, + Failed(std::io::ErrorKind), } diff --git a/yazi-fm/src/lives/folder.rs b/yazi-fm/src/lives/folder.rs index 4c430f53..95e3754e 100644 --- a/yazi-fm/src/lives/folder.rs +++ b/yazi-fm/src/lives/folder.rs @@ -56,7 +56,7 @@ impl Folder { lua.create_string(match me { Loading => "loading", Loaded => "loaded", - Failed => "failed", + Failed(_) => "failed", }) }); })?;