@@ -21,7 +21,7 @@ import { isCancellationError } from '../../../../../../base/common/errors.js';
21
21
import { TPromptsStorage } from '../service/types.js' ;
22
22
import { IUserDataProfileService } from '../../../../../services/userDataProfile/common/userDataProfile.js' ;
23
23
import { Emitter , Event } from '../../../../../../base/common/event.js' ;
24
- import { Disposable } from '../../../../../../base/common/lifecycle.js' ;
24
+ import { Disposable , DisposableStore } from '../../../../../../base/common/lifecycle.js' ;
25
25
26
26
/**
27
27
* Utility class to locate prompt files.
@@ -57,18 +57,21 @@ export class PromptFilesLocator extends Disposable {
57
57
return files . filter ( file => getPromptFileType ( file ) === type ) ;
58
58
}
59
59
60
- public getFilesUpdatedEvent ( type : PromptsType ) : Event < void > {
61
- const eventEmitter = this . _register ( new Emitter < void > ( ) ) ;
60
+ public createFilesUpdatedEvent ( type : PromptsType ) : { readonly event : Event < void > ; dispose : ( ) => void } {
61
+ const disoposables = new DisposableStore ( ) ;
62
+ const eventEmitter = disoposables . add ( new Emitter < void > ( ) ) ;
62
63
const key = getPromptFileLocationsConfigKey ( type ) ;
64
+ const userDataFolder = this . userDataService . currentProfile . promptsHome ;
65
+
63
66
let parentFolders = this . getLocalParentFolders ( type ) . map ( folder => folder . parent ) ;
64
- this . _register ( this . configService . onDidChangeConfiguration ( e => {
67
+ disoposables . add ( this . configService . onDidChangeConfiguration ( e => {
65
68
if ( e . affectsConfiguration ( key ) ) {
66
69
parentFolders = this . getLocalParentFolders ( type ) . map ( folder => folder . parent ) ;
67
70
eventEmitter . fire ( ) ;
68
71
}
69
72
} ) ) ;
70
- this . _register ( this . fileService . onDidFilesChange ( e => {
71
- if ( e . affects ( this . userDataService . currentProfile . promptsHome ) ) {
73
+ disoposables . add ( this . fileService . onDidFilesChange ( e => {
74
+ if ( e . contains ( userDataFolder ) ) {
72
75
eventEmitter . fire ( ) ;
73
76
return ;
74
77
}
@@ -77,7 +80,8 @@ export class PromptFilesLocator extends Disposable {
77
80
return ;
78
81
}
79
82
} ) ) ;
80
- return eventEmitter . event ;
83
+ disoposables . add ( this . fileService . watch ( userDataFolder ) ) ;
84
+ return { event : eventEmitter . event , dispose : ( ) => disoposables . dispose ( ) } ;
81
85
}
82
86
83
87
/**
0 commit comments