diff --git a/frontend/src/services/configService.ts b/frontend/src/services/configService.ts index 5ec9442..883e344 100644 --- a/frontend/src/services/configService.ts +++ b/frontend/src/services/configService.ts @@ -32,7 +32,12 @@ export default class ConfigService { return new Promise((resolve, reject) => { if (storageType.getItem(StorageKey.CONFIG) === null) { axios - .get('/config') + .get('/config', { + headers: { + 'Cache-Control': 'no-cache', + 'Pragma': 'no-cache' + } + }) .then(({ data }) => { storageType.setItem(StorageKey.CONFIG, JSON.stringify(data)); resolve(new ConfigService()); @@ -54,11 +59,30 @@ export default class ConfigService { */ public getConfig(): any | undefined { try { - const cfgString = storageType.getItem(StorageKey.CONFIG); - return cfgString ? JSON.parse(cfgString) : undefined; + let cfgString = storageType.getItem(StorageKey.CONFIG); + if (cfgString === null) { + // eslint-disable-next-line no-console + console.warn('Configuration missing. Attempting to reacquire...'); + axios + .get('/config', { + headers: { + 'Cache-Control': 'no-cache', + 'Pragma': 'no-cache' + } + }) + .then(({ data }) => { + storageType.setItem(StorageKey.CONFIG, JSON.stringify(data)); + cfgString = data; + }) + .catch((err) => { + // eslint-disable-next-line no-console + console.error(`Failed to reacquire configuration: ${err}`); + }); + } + return JSON.parse(cfgString as string); } catch (err: unknown) { // eslint-disable-next-line no-console - console.error(`Missing configuration: ${err}`); + console.error(`Unparseable configuration: ${err}`); return undefined; } }