All files / localization si-locale-store.ts

80% Statements 8/10
66.66% Branches 4/6
100% Functions 3/3
80% Lines 8/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                      1x     14x 14x       13x 13x             1x 1x 1x            
/**
 * Copyright (c) Siemens 2016 - 2025
 * SPDX-License-Identifier: MIT
 */
import { Observable, of } from 'rxjs';
 
export abstract class SiLocaleStore {
  abstract get locale(): string | undefined;
  abstract saveLocale(locale: string): Observable<boolean>;
}
 
export const SI_LOCALE_LOCAL_STORAGE_KEY = 'lang';
 
export class SiDefaultLocaleStore extends SiLocaleStore {
  constructor(private isBrowser: boolean) {
    super();
  }
 
  get locale(): string | undefined {
    if (this.isBrowser) {
      return localStorage.getItem(SI_LOCALE_LOCAL_STORAGE_KEY) ?? undefined;
    } else E{
      return undefined;
    }
  }
 
  saveLocale(locale: string): Observable<boolean> {
    if (this.isBrowser) {
      localStorage.setItem(SI_LOCALE_LOCAL_STORAGE_KEY, locale);
      return of(true);
    } else E{
      return of(false);
    }
  }
}