Do not use disabled or non-existing languages from language cookie

This commit is contained in:
Alexandre Vryghem
2023-02-26 21:00:03 +01:00
parent e4f483c308
commit 92f5c6f427
3 changed files with 27 additions and 15 deletions

View File

@@ -62,25 +62,33 @@ describe('LocaleService test suite', () => {
}); });
describe('getCurrentLanguageCode', () => { describe('getCurrentLanguageCode', () => {
it('should return language saved on cookie', () => { beforeEach(() => {
spyOn(translateService, 'getLangs').and.returnValue(langList);
});
it('should return the language saved on cookie if it\'s a valid & active language', () => {
spyOnGet.and.returnValue('de'); spyOnGet.and.returnValue('de');
expect(service.getCurrentLanguageCode()).toBe('de'); expect(service.getCurrentLanguageCode()).toBe('de');
}); });
describe('', () => { it('should return the default language if the cookie language is disabled', () => {
beforeEach(() => { spyOnGet.and.returnValue('disabled');
spyOn(translateService, 'getLangs').and.returnValue(langList); expect(service.getCurrentLanguageCode()).toBe('en');
}); });
it('should return language from browser setting', () => { it('should return the default language if the cookie language does not exist', () => {
spyOn(translateService, 'getBrowserLang').and.returnValue('it'); spyOnGet.and.returnValue('does-not-exist');
expect(service.getCurrentLanguageCode()).toBe('it'); expect(service.getCurrentLanguageCode()).toBe('en');
}); });
it('should return default language from config', () => { it('should return language from browser setting', () => {
spyOn(translateService, 'getBrowserLang').and.returnValue('fr'); spyOn(translateService, 'getBrowserLang').and.returnValue('it');
expect(service.getCurrentLanguageCode()).toBe('en'); expect(service.getCurrentLanguageCode()).toBe('it');
}); });
it('should return default language from config', () => {
spyOn(translateService, 'getBrowserLang').and.returnValue('fr');
expect(service.getCurrentLanguageCode()).toBe('en');
}); });
}); });

View File

@@ -11,6 +11,7 @@ import { map, mergeMap, take } from 'rxjs/operators';
import { NativeWindowRef, NativeWindowService } from '../services/window.service'; import { NativeWindowRef, NativeWindowService } from '../services/window.service';
import { RouteService } from '../services/route.service'; import { RouteService } from '../services/route.service';
import { DOCUMENT } from '@angular/common'; import { DOCUMENT } from '@angular/common';
import { LangConfig } from '../../../config/lang-config.interface';
export const LANG_COOKIE = 'dsLanguage'; export const LANG_COOKIE = 'dsLanguage';
@@ -52,8 +53,7 @@ export class LocaleService {
getCurrentLanguageCode(): string { getCurrentLanguageCode(): string {
// Attempt to get the language from a cookie // Attempt to get the language from a cookie
let lang = this.getLanguageCodeFromCookie(); let lang = this.getLanguageCodeFromCookie();
if (isEmpty(lang)) { if (isEmpty(lang) || environment.languages.find((langConfig: LangConfig) => langConfig.code === lang && langConfig.active) === undefined) {
// Cookie not found
// Attempt to get the browser language from the user // Attempt to get the browser language from the user
if (this.translate.getLangs().includes(this.translate.getBrowserLang())) { if (this.translate.getLangs().includes(this.translate.getBrowserLang())) {
lang = this.translate.getBrowserLang(); lang = this.translate.getBrowserLang();

View File

@@ -178,6 +178,10 @@ export const environment: AppConfig = {
code: 'lv', code: 'lv',
label: 'Latviešu', label: 'Latviešu',
active: true, active: true,
}, {
code: 'disabled',
label: 'Disabled',
active: false,
}], }],
// Browse-By Pages // Browse-By Pages