24 lines
632 B
TypeScript
24 lines
632 B
TypeScript
import type { RelativePath } from "../persistence/database";
|
|
|
|
export class FileChangeNotifier {
|
|
private readonly listeners: ((filePath: RelativePath) => unknown)[] = [];
|
|
|
|
public addFileChangeListener(
|
|
listener: (filePath: RelativePath) => unknown
|
|
): void {
|
|
this.listeners.push(listener);
|
|
}
|
|
|
|
public removeFileChangeListener(
|
|
listener: (filePath: RelativePath) => unknown
|
|
): void {
|
|
const index = this.listeners.indexOf(listener);
|
|
if (index !== -1) {
|
|
this.listeners.splice(index, 1);
|
|
}
|
|
}
|
|
|
|
public notifyOfFileChange(filePath: RelativePath): void {
|
|
this.listeners.forEach((listener) => listener(filePath));
|
|
}
|
|
}
|