1- import { Vault , TAbstractFile , TFolder } from "obsidian" ;
1+ import { Vault , TAbstractFile , TFolder , EventRef } from "obsidian" ;
22import MetadataStore , { MANIFEST_FILE_NAME } from "./metadata-store" ;
33import { GitHubSyncSettings } from "./settings/settings" ;
44import Logger from "./logger" ;
5+ import GitHubSyncPlugin from "./main" ;
56
67/**
78 * Tracks changes to local sync directory and updates files metadata.
@@ -14,11 +15,14 @@ export default class EventsListener {
1415 private logger : Logger ,
1516 ) { }
1617
17- start ( ) {
18- this . vault . on ( "create" , this . onCreate . bind ( this ) ) ;
19- this . vault . on ( "delete" , this . onDelete . bind ( this ) ) ;
20- this . vault . on ( "modify" , this . onModify . bind ( this ) ) ;
21- this . vault . on ( "rename" , this . onRename . bind ( this ) ) ;
18+ start ( plugin : GitHubSyncPlugin ) {
19+ // We need to register all the events we subscribe to so they can
20+ // be correctly detached when the plugin is unloaded too.
21+ // If we don't they might be left hanging and cause issues.
22+ plugin . registerEvent ( this . vault . on ( "create" , this . onCreate . bind ( this ) ) ) ;
23+ plugin . registerEvent ( this . vault . on ( "delete" , this . onDelete . bind ( this ) ) ) ;
24+ plugin . registerEvent ( this . vault . on ( "modify" , this . onModify . bind ( this ) ) ) ;
25+ plugin . registerEvent ( this . vault . on ( "rename" , this . onRename . bind ( this ) ) ) ;
2226 }
2327
2428 private async onCreate ( file : TAbstractFile ) {
0 commit comments