From c86f622195284991aeb61dcd6fe08acafec60896 Mon Sep 17 00:00:00 2001 From: Nicolas Boisteault Date: Fri, 3 Nov 2023 16:01:24 +0100 Subject: [PATCH] Don't block the map when there is a wrong layer name in URL parameters (#3955) Fix gl224 --- assets/src/legacy/map.js | 32 +++++++++++++++++++++----------- assets/src/modules/WFS.js | 4 ++-- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/assets/src/legacy/map.js b/assets/src/legacy/map.js index 58b6740a79..aeae6ae525 100644 --- a/assets/src/legacy/map.js +++ b/assets/src/legacy/map.js @@ -4661,13 +4661,23 @@ window.lizMap = function() { } // Request config and capabilities in parallel - Promise.all([configRequest, keyValueConfigRequest, WMSRequest, WMTSRequest, WFSRequest, featureExtentRequest, getFeatureInfoRequest]).then(responses => { - // config is defined globally - config = responses[0]; - keyValueConfig = responses[1]; - const wmsCapaData = responses[2]; - const wmtsCapaData = responses[3]; - const wfsCapaData = responses[4]; + Promise.allSettled([configRequest, keyValueConfigRequest, WMSRequest, WMTSRequest, WFSRequest, featureExtentRequest, getFeatureInfoRequest]).then(responses => { + // Raise an error when one those required requests fails + // Other requests can fail silently + const requiredRequests = [responses[0], responses[2], responses[3], responses[4]]; + + for (const request of requiredRequests) { + if (request.status === "rejected") { + throw new Error(request.reason); + } + } + + // `config` is defined globally + config = responses[0].value; + keyValueConfig = responses[1].value; + const wmsCapaData = responses[2].value; + const wmtsCapaData = responses[3].value; + const wfsCapaData = responses[4].value; self.events.triggerEvent("configsloaded", { initialConfig: config, @@ -4676,16 +4686,16 @@ window.lizMap = function() { wfsCapabilities: wfsCapaData, }); - let featuresExtent = responses[5]?.features?.[0]?.bbox; - let features = responses[5]?.features; + let featuresExtent = responses[5].value?.features?.[0]?.bbox; + let features = responses[5].value?.features; if(featuresExtent){ - for (const feature of responses[5].features) { + for (const feature of features) { featuresExtent = extend(featuresExtent, feature.bbox); } } - getFeatureInfo = responses[6]; + getFeatureInfo = responses[6].value; const domparser = new DOMParser(); diff --git a/assets/src/modules/WFS.js b/assets/src/modules/WFS.js index f4cf57729b..b6b09421b8 100644 --- a/assets/src/modules/WFS.js +++ b/assets/src/modules/WFS.js @@ -33,7 +33,7 @@ export default class WFS { ...options }) }); - return await response.json(); + return response.json(); } /** @@ -49,6 +49,6 @@ export default class WFS { ...options }) }); - return await response.json(); + return response.json(); } }