Add image listing and asset management
Show images in asset directories with preview, rename, replacement, and trash recovery. Update local Markdown references when images move and restore original files if related metadata cannot be committed. Refresh image previews after replacement and compare actual contents when deduplicating subsequent uploads.
This commit is contained in:
1 parent
8b54ccba18
commit
d253536009
25 files changed
+801
-103
No files matched your search
@@ -203,6 +203,11 @@ func diff(prev, next map[string]fileState) []events.Event {
|
||||
}
|
||||
case old.dir != cur.dir:
|
||||
structural = true
|
||||
case !cur.dir && cur.rev == "" && (old.size != cur.size || old.mtime != cur.mtime || !os.SameFile(old.info, cur.info)):
|
||||
// 图片没有正文版本号;替换后仍需刷新列表元数据与预览。
|
||||
if vault.IsImage(p) {
|
||||
structural = true
|
||||
}
|
||||
case !cur.dir && old.rev != cur.rev:
|
||||
evs = append(evs, events.Event{Type: "changed", Path: p, Rev: cur.rev})
|
||||
}
|
||||
|
||||
@@ -170,3 +170,21 @@ func TestNotesExcludeResourceContents(t *testing.T) {
|
||||
t.Fatalf("跟踪普通文件移动不能改变笔记索引范围: %v", indexed)
|
||||
}
|
||||
}
|
||||
|
||||
func TestImageReplacementRefreshesTree(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
p := filepath.Join(root, "a.png")
|
||||
if err := os.WriteFile(p, []byte("image"), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
info, err := os.Stat(p)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
old := fileState{info: info, size: 5, mtime: 1}
|
||||
updated := fileState{info: info, size: 5, mtime: 2}
|
||||
evs := diff(map[string]fileState{"a.png": old}, map[string]fileState{"a.png": updated})
|
||||
if len(evs) != 1 || evs[0].Type != "tree" {
|
||||
t.Fatalf("同路径同大小替换须刷新预览:%v", evs)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user