fix(app): update tab file contents on change

This commit is contained in:
Adam
2026-02-09 07:22:40 -06:00
parent 03f3029dc6
commit 30f0d3b394
3 changed files with 37 additions and 1 deletions

View File

@@ -27,6 +27,37 @@ describe("file watcher invalidation", () => {
expect(refresh).toEqual(["src"])
})
test("reloads files that are open in tabs", () => {
const loads: string[] = []
invalidateFromWatcher(
{
type: "file.watcher.updated",
properties: {
file: "src/open.ts",
event: "change",
},
},
{
normalize: (input) => input,
hasFile: () => false,
isOpen: (path) => path === "src/open.ts",
loadFile: (path) => loads.push(path),
node: () => ({
path: "src/open.ts",
type: "file",
name: "open.ts",
absolute: "/repo/src/open.ts",
ignored: false,
}),
isDirLoaded: () => false,
refreshDir: () => {},
},
)
expect(loads).toEqual(["src/open.ts"])
})
test("refreshes only changed loaded directory nodes", () => {
const refresh: string[] = []

View File

@@ -8,6 +8,7 @@ type WatcherEvent = {
type WatcherOps = {
normalize: (input: string) => string
hasFile: (path: string) => boolean
isOpen?: (path: string) => boolean
loadFile: (path: string) => void
node: (path: string) => FileNode | undefined
isDirLoaded: (path: string) => boolean
@@ -27,7 +28,7 @@ export function invalidateFromWatcher(event: WatcherEvent, ops: WatcherOps) {
if (!path) return
if (path.startsWith(".git/")) return
if (ops.hasFile(path)) {
if (ops.hasFile(path) || ops.isOpen?.(path)) {
ops.loadFile(path)
}