Skip to content

Commit 0934adf

Browse files
committed
feat(store): add, remove, get loaders
1 parent 399e1e1 commit 0934adf

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

projects/ngx-translate/src/lib/translate.service.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ export class TranslateService implements ITranslateService, OnDestroy {
227227
}
228228

229229
constructor() {
230-
this._addLoader();
230+
this._loaderIndex = this.store.addLoader();
231231

232232
const config: TranslateServiceConfig = {
233233
extend: false,
@@ -251,15 +251,8 @@ export class TranslateService implements ITranslateService, OnDestroy {
251251
}
252252
}
253253

254-
private _addLoader() {
255-
while (this.store.loaders.has(this._loaderIndex)) {
256-
this._loaderIndex++;
257-
}
258-
this.store.loaders.set(this._loaderIndex, this.currentLoader);
259-
}
260-
261254
ngOnDestroy() {
262-
this.store.loaders.delete(this._loaderIndex);
255+
this.store.removeLoader(this._loaderIndex);
263256
}
264257

265258
/**

projects/ngx-translate/src/lib/translate.store.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Injectable } from "@angular/core";
1+
import { inject, Injectable } from "@angular/core";
22
import { Observable, Subject } from "rxjs";
33
import { TranslateLoader } from "./translate.loader";
44
import {
@@ -31,6 +31,31 @@ export class TranslateStore {
3131

3232
loaders = new Map<number, TranslateLoader>();
3333

34+
/**
35+
* Adds a new loader to the store
36+
* @returns the index of the newly added loader
37+
*/
38+
addLoader() {
39+
let loaderIndex = 0;
40+
while (this.loaders.has(loaderIndex)) {
41+
loaderIndex++;
42+
}
43+
this.loaders.set(loaderIndex, inject(TranslateLoader));
44+
return loaderIndex;
45+
}
46+
47+
removeLoader(loaderIndex: number) {
48+
if (this.loaders.has(loaderIndex)) this.loaders.delete(loaderIndex);
49+
}
50+
51+
getLoaders() {
52+
return this.loaders;
53+
}
54+
55+
getLoader(loaderIndex: number) {
56+
return this.loaders.get(loaderIndex);
57+
}
58+
3459
public getTranslations(language: Language): DeepReadonly<InterpolatableTranslationObject> {
3560
return this.translations[language];
3661
}

0 commit comments

Comments
 (0)