support manifests responses with missing props

This commit is contained in:
Pan Cake
2024-02-06 20:00:40 +10:00
parent 10cfc7b784
commit 05d84f16ae
+14 -2
View File
@@ -81,6 +81,16 @@ function removeAddon(idx) {
addons.value.splice(idx, 1) addons.value.splice(idx, 1)
} }
function getNestedObjectProperty(obj, path, defaultValue = null) {
try {
console.log('path', path, 'obj', obj, 'defaultValue', defaultValue)
return path.split('.').reduce((acc, part) => acc && acc[part], obj)
} catch (e) {
return defaultValue
}
}
</script> </script>
<template> <template>
@@ -102,8 +112,10 @@ function removeAddon(idx) {
@start="dragging = true" @end="dragging = false"> @start="dragging = true" @end="dragging = false">
<template #item="{ element, index }"> <template #item="{ element, index }">
<AddonItem :name="element.manifest.name" :idx="index" :manifestURL="element.transportUrl" <AddonItem :name="element.manifest.name" :idx="index" :manifestURL="element.transportUrl"
:logoURL="element.manifest.logo" :isDeletable="!element.flags.protected" :logoURL="element.manifest.logo"
:isConfigurable="element.manifest.behaviorHints.configurable" @delete-addon="removeAddon" /> :isDeletable="!getNestedObjectProperty(element, 'flags.protected', false)"
:isConfigurable="getNestedObjectProperty(element, 'manifest.behaviorHints.configurable', false)"
@delete-addon="removeAddon" />
</template> </template>
</draggable> </draggable>
</fieldset> </fieldset>