fix(localize): don't fire localeChanged event if set to the same locale

This commit is contained in:
Mikhail Bashkirov 2019-07-09 09:23:47 +02:00
parent 5452ae6fca
commit 3115c50d59
2 changed files with 13 additions and 0 deletions

View file

@ -181,6 +181,9 @@ export class LocalizeManager extends LionSingleton {
} }
_onLocaleChanged(newLocale, oldLocale) { _onLocaleChanged(newLocale, oldLocale) {
if (newLocale === oldLocale) {
return;
}
this.dispatchEvent(new CustomEvent('localeChanged', { detail: { newLocale, oldLocale } })); this.dispatchEvent(new CustomEvent('localeChanged', { detail: { newLocale, oldLocale } }));
if (this._autoLoadOnLocaleChange) { if (this._autoLoadOnLocaleChange) {
this._loadAllMissing(newLocale, oldLocale); this._loadAllMissing(newLocale, oldLocale);

View file

@ -1,4 +1,5 @@
import { expect, oneEvent } from '@open-wc/testing'; import { expect, oneEvent } from '@open-wc/testing';
import sinon from 'sinon';
import { fetchMock } from '@bundled-es-modules/fetch-mock'; import { fetchMock } from '@bundled-es-modules/fetch-mock';
import { setupFakeImport, resetFakeImport, fakeImport } from './test-utils.js'; import { setupFakeImport, resetFakeImport, fakeImport } from './test-utils.js';
@ -48,6 +49,15 @@ describe('LocalizeManager', () => {
expect(event.detail.oldLocale).to.equal('en-GB'); expect(event.detail.oldLocale).to.equal('en-GB');
}); });
it('does not fire "localeChanged" event if it was set to the same locale', () => {
const manager = new LocalizeManager();
const eventSpy = sinon.spy();
manager.addEventListener('localeChanged', eventSpy);
manager.locale = 'en-US';
manager.locale = 'en-US';
expect(eventSpy.callCount).to.equal(1);
});
describe('addData()', () => { describe('addData()', () => {
it('allows to provide inline data', () => { it('allows to provide inline data', () => {
const manager = new LocalizeManager(); const manager = new LocalizeManager();