From 161da630ea59f6205ee53dece950972d4f36ada5 Mon Sep 17 00:00:00 2001 From: Sebastian Lange Date: Fri, 5 Apr 2019 08:15:28 +0200 Subject: [PATCH] fix(config): fix catch ConfigFetchError in getValue Closes #46 --- src/app/modules/config/config.provider.spec.ts | 7 +++++++ src/app/modules/config/config.provider.ts | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/app/modules/config/config.provider.spec.ts b/src/app/modules/config/config.provider.spec.ts index 759b2f6b..38fe92f5 100644 --- a/src/app/modules/config/config.provider.spec.ts +++ b/src/app/modules/config/config.provider.spec.ts @@ -153,6 +153,13 @@ describe('ConfigProvider', () => { await configProvider.init(); expect(await configProvider.getValue('name')).toEqual(sampleIndexResponse.app.name); }); + + it('should return app configuration value if only saved config is available and fetch fails', async () => { + storageProviderSpy.has.and.returnValue(true); + storageProviderSpy.get.and.returnValue(sampleIndexResponse); + spyOn(configProvider.client, 'handshake').and.throwError(''); + expect(await configProvider.getValue('name')).toEqual(sampleIndexResponse.app.name); + }); }); const sampleIndexResponse: SCIndexResponse = { diff --git a/src/app/modules/config/config.provider.ts b/src/app/modules/config/config.provider.ts index 1b868835..9929cda1 100644 --- a/src/app/modules/config/config.provider.ts +++ b/src/app/modules/config/config.provider.ts @@ -66,7 +66,14 @@ export class ConfigProvider { */ public async getValue(attribute: keyof SCAppConfiguration) { if (!this.initialised) { - await this.init(); + try { + await this.init(); + } catch (error) { + // don't throw ConfigFetchError if saved config is available + if (!(error.name === 'ConfigFetchError' && this.initialised)) { + throw error; + } + } } if (typeof this.config.app[attribute] !== 'undefined') { return this.config.app[attribute];