@elderbyte/ngx-starter 21.8.0 → 21.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9574,19 +9574,6 @@ const ELDER_LANGUAGE_OPTIONS = new InjectionToken('ELDER_LANGUAGE_OPTIONS');
9574
9574
 
9575
9575
  const LANGUAGE_STORAGE_KEY = 'language';
9576
9576
  class ElderLanguageService {
9577
- /***************************************************************************
9578
- * *
9579
- * Legacy Compatiblity *
9580
- * *
9581
- **************************************************************************/
9582
- get currentLanguage$() {
9583
- return toObservable(this.currentLang);
9584
- }
9585
- /***************************************************************************
9586
- * *
9587
- * Constructor *
9588
- * *
9589
- **************************************************************************/
9590
9577
  constructor() {
9591
9578
  this.webStorage = inject(WebLocalStorage);
9592
9579
  this.config = inject(ELDER_LANGUAGE_OPTIONS);
@@ -9599,14 +9586,13 @@ class ElderLanguageService {
9599
9586
  this._langs = signal(null, ...(ngDevMode ? [{ debugName: "_langs" }] : /* istanbul ignore next */ []));
9600
9587
  this._defaultLang = signal(null, ...(ngDevMode ? [{ debugName: "_defaultLang" }] : /* istanbul ignore next */ []));
9601
9588
  this._currentLang = signal(null, ...(ngDevMode ? [{ debugName: "_currentLang" }] : /* istanbul ignore next */ []));
9602
- this._browserLang = getBrowserPreferredLang();
9603
- this._storedPreferredLang = this.getStoredPreferredLang();
9604
9589
  /***************************************************************************
9605
9590
  * *
9606
9591
  * Computed *
9607
9592
  * *
9608
9593
  **************************************************************************/
9609
9594
  this.currentLang = this._currentLang.asReadonly();
9595
+ this.currentLanguage$ = toObservable(this.currentLang);
9610
9596
  this.defaultLang = this._defaultLang.asReadonly();
9611
9597
  this.langs = this._langs.asReadonly();
9612
9598
  }
@@ -9620,6 +9606,7 @@ class ElderLanguageService {
9620
9606
  this.logger.warn('cannot set lang', lang, 'since it is not in supported langs', this._langs());
9621
9607
  return;
9622
9608
  }
9609
+ this.logger.debug('set current language and persist to storage: ', lang);
9623
9610
  this.webStorage.setItem(LANGUAGE_STORAGE_KEY, lang);
9624
9611
  this._currentLang.set(lang);
9625
9612
  }
@@ -9630,7 +9617,7 @@ class ElderLanguageService {
9630
9617
  }
9631
9618
  this.setLangs(this.config?.langs);
9632
9619
  this.setDefaultLang(this.config?.defaultLang);
9633
- this.setInitialLang();
9620
+ this.resolveInitialLang();
9634
9621
  }
9635
9622
  /***************************************************************************
9636
9623
  * *
@@ -9649,19 +9636,57 @@ class ElderLanguageService {
9649
9636
  }
9650
9637
  this._defaultLang.set(lang);
9651
9638
  }
9652
- setInitialLang() {
9653
- if (this._storedPreferredLang && this.isSupported(this._storedPreferredLang)) {
9654
- this._currentLang.set(this._storedPreferredLang);
9639
+ resolveInitialLang() {
9640
+ this.logger.debug('resolving initial language. available langs: ', this._langs());
9641
+ if (this.trySetInitialLangFromStoredPreferredLang()) {
9655
9642
  return;
9656
9643
  }
9657
- if (this._browserLang && this.isSupported(this._browserLang)) {
9658
- this._currentLang.set(this._browserLang);
9644
+ if (this.trySetInitialLangFromBrowserLang()) {
9659
9645
  return;
9660
9646
  }
9661
- this._currentLang.set(this._defaultLang());
9647
+ this.setInitialLangFromDefaultLang();
9648
+ }
9649
+ trySetInitialLangFromStoredPreferredLang() {
9650
+ const storedPreferredLang = this.getStoredPreferredLang();
9651
+ if (!storedPreferredLang) {
9652
+ this.logger.debug('no stored preferred lang found.');
9653
+ return false;
9654
+ }
9655
+ if (!this.isSupported(storedPreferredLang)) {
9656
+ this.logger.warn('stored preferred lang is not supported: ', storedPreferredLang);
9657
+ return false;
9658
+ }
9659
+ this.logger.debug('set initial lang from stored preferred language: ', storedPreferredLang);
9660
+ this.applyInitialLang(storedPreferredLang, { persist: false });
9661
+ return true;
9662
+ }
9663
+ trySetInitialLangFromBrowserLang() {
9664
+ const browserLang = getBrowserPreferredLang();
9665
+ if (!browserLang) {
9666
+ this.logger.debug('could not determine browser preferred language.');
9667
+ return false;
9668
+ }
9669
+ if (!this.isSupported(browserLang)) {
9670
+ this.logger.debug('preferred browser language is not supported: ', browserLang);
9671
+ return false;
9672
+ }
9673
+ this.logger.debug('set initial language from preferred browser language: ', browserLang);
9674
+ this.applyInitialLang(browserLang, { persist: true });
9675
+ return true;
9676
+ }
9677
+ setInitialLangFromDefaultLang() {
9678
+ this.logger.debug('set initial language from default language: ', this._defaultLang());
9679
+ this.applyInitialLang(this._defaultLang(), { persist: true });
9680
+ }
9681
+ applyInitialLang(lang, options) {
9682
+ if (options.persist) {
9683
+ this.setCurrentLang(lang);
9684
+ return;
9685
+ }
9686
+ this._currentLang.set(lang);
9662
9687
  }
9663
9688
  isSupported(lang) {
9664
- return this._langs().includes(lang);
9689
+ return this._langs()?.includes(lang) ?? false;
9665
9690
  }
9666
9691
  getStoredPreferredLang() {
9667
9692
  return this.webStorage.getItem(LANGUAGE_STORAGE_KEY);
@@ -9674,7 +9699,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImpor
9674
9699
  args: [{
9675
9700
  providedIn: 'root',
9676
9701
  }]
9677
- }], ctorParameters: () => [] });
9702
+ }] });
9678
9703
  /***************************************************************************
9679
9704
  * *
9680
9705
  * Helper Functions *