This commit is contained in:
sxyazi 2024-04-13 10:32:34 +08:00
parent aa0db9af57
commit 2979efb98e
No known key found for this signature in database
4 changed files with 12 additions and 5 deletions

View file

@ -157,7 +157,11 @@ impl Files {
self.sizes.extend(sizes); 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<File>) { pub fn update_creating(&mut self, files: Vec<File>) {
if files.is_empty() { if files.is_empty() {

View file

@ -28,7 +28,7 @@ impl From<&Url> for Folder {
impl Folder { impl Folder {
pub fn update(&mut self, op: FilesOp) -> bool { pub fn update(&mut self, op: FilesOp) -> bool {
let revision = self.files.revision; let (stage, revision) = (self.stage, self.files.revision);
match op { match op {
FilesOp::Full(_, _, mtime) => { FilesOp::Full(_, _, mtime) => {
(self.mtime, self.stage) = (mtime, FolderStage::Loaded); (self.mtime, self.stage) = (mtime, FolderStage::Loaded);
@ -39,6 +39,9 @@ impl Folder {
FilesOp::Done(_, mtime, ticket) if ticket == self.files.ticket() => { FilesOp::Done(_, mtime, ticket) if ticket == self.files.ticket() => {
(self.mtime, self.stage) = (mtime, FolderStage::Loaded); (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.arrow(0);
self.files.revision != revision (stage, revision) != (self.stage, self.files.revision)
} }
pub fn arrow(&mut self, step: impl Into<Step>) -> bool { pub fn arrow(&mut self, step: impl Into<Step>) -> bool {

View file

@ -3,5 +3,5 @@ pub enum FolderStage {
#[default] #[default]
Loading, Loading,
Loaded, Loaded,
Failed, Failed(std::io::ErrorKind),
} }

View file

@ -56,7 +56,7 @@ impl Folder {
lua.create_string(match me { lua.create_string(match me {
Loading => "loading", Loading => "loading",
Loaded => "loaded", Loaded => "loaded",
Failed => "failed", Failed(_) => "failed",
}) })
}); });
})?; })?;