@@ -10,12 +10,14 @@ export class CrowdinConfigHolder {
10
10
private configurationToWorkspace : Map < ConfigModel , vscode . WorkspaceFolder > = new Map ( ) ;
11
11
private sourceStrings : Map < vscode . WorkspaceFolder , crowdin . SourceStringsModel . String [ ] > = new Map ( ) ;
12
12
private listeners : { ( ) : void } [ ] = [ ] ;
13
+ private initializer : Promise < void > = Promise . resolve ( ) ;
13
14
14
15
addListener ( listener : ( ) => void ) {
15
16
this . listeners . push ( listener ) ;
16
17
}
17
18
18
- get configurations ( ) : Map < ConfigModel , vscode . WorkspaceFolder > {
19
+ async configurations ( ) : Promise < Map < ConfigModel , vscode . WorkspaceFolder > > {
20
+ await this . initializer ;
19
21
return this . configurationToWorkspace ;
20
22
}
21
23
@@ -27,6 +29,10 @@ export class CrowdinConfigHolder {
27
29
this . configurationToWorkspace . forEach ( ( workspace , config ) => this . loadStrings ( config , workspace ) ) ;
28
30
}
29
31
32
+ initialize ( ) {
33
+ this . initializer = this . load ( ) ;
34
+ }
35
+
30
36
async load ( ) {
31
37
const workspaceFolders = vscode . workspace . workspaceFolders || [ ] ;
32
38
let configFiles : string [ ] = [ ] ;
@@ -79,14 +85,8 @@ export class CrowdinConfigHolder {
79
85
} ) ;
80
86
watchersToAdd . forEach ( ( file ) => {
81
87
const wather = vscode . workspace . createFileSystemWatcher ( file ) ;
82
- wather . onDidChange ( async ( ) => {
83
- await this . load ( ) ;
84
- this . listeners . forEach ( ( l ) => l ( ) ) ;
85
- } ) ;
86
- wather . onDidDelete ( async ( ) => {
87
- await this . load ( ) ;
88
- this . listeners . forEach ( ( l ) => l ( ) ) ;
89
- } ) ;
88
+ wather . onDidChange ( this . reload ) ;
89
+ wather . onDidDelete ( this . reload ) ;
90
90
this . configWatchers . set ( file , wather ) ;
91
91
} ) ;
92
92
}
0 commit comments