From cfe7e5072091c144e2fab7a0bd8092e5dc8f262d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C5=BEe=20Fortun?= Date: Tue, 7 Feb 2023 16:23:00 +0100 Subject: [PATCH] Fix integration gateway filters not being fettched in rare cases --- .../src/components/Apigw/CFiltersStepper.vue | 5 ++++ .../src/components/Apigw/CFiltersTable.vue | 27 ++++++++++++++----- .../admin/src/views/System/Apigw/Editor.vue | 26 +++++++++++------- 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/client/web/admin/src/components/Apigw/CFiltersStepper.vue b/client/web/admin/src/components/Apigw/CFiltersStepper.vue index b25ee0ec6..c5fb1f25a 100644 --- a/client/web/admin/src/components/Apigw/CFiltersStepper.vue +++ b/client/web/admin/src/components/Apigw/CFiltersStepper.vue @@ -41,6 +41,7 @@ :filters="getSelectedFiltersByStep" :selected-row="step.selectedRow" :step="index" + :fetching="fetching" @filterSelect="onFilterSelect" @removeFilter="onRemoveFilter" @sortFilters="onSortFilters" @@ -83,6 +84,10 @@ export default { CFiltersDropdown, }, props: { + fetching: { + type: Boolean, + value: false, + }, processing: { type: Boolean, value: false, diff --git a/client/web/admin/src/components/Apigw/CFiltersTable.vue b/client/web/admin/src/components/Apigw/CFiltersTable.vue index a4b8886b1..3a2147daf 100644 --- a/client/web/admin/src/components/Apigw/CFiltersTable.vue +++ b/client/web/admin/src/components/Apigw/CFiltersTable.vue @@ -13,6 +13,7 @@ @@ -42,13 +43,23 @@ -
- {{ $t('filters.list.noFilters') }} -
+ + +

+ {{ $t('filters.list.noFilters') }} +

+ @@ -67,6 +78,10 @@ export default { type: Number, default: () => 0, }, + fetching: { + type: Boolean, + value: false, + }, }, data () { diff --git a/client/web/admin/src/views/System/Apigw/Editor.vue b/client/web/admin/src/views/System/Apigw/Editor.vue index cb8502868..12722ae7c 100644 --- a/client/web/admin/src/views/System/Apigw/Editor.vue +++ b/client/web/admin/src/views/System/Apigw/Editor.vue @@ -36,6 +36,7 @@ { - this.setRouteFilters(set) + return this.setRouteFilters(set) }) .catch(this.toastErrorHandler(this.$t('notification:gateway.filter.fetch.error'))) .finally(() => { this.decLoader() + this.stepper.fetching = false }) }, setRouteFilters (routeFilters = []) { - this.filters = (routeFilters || []).map(filter => { - const f = { ...this.availableFilters.find((af) => af.ref === filter.ref) } - f.params = this.decodeParams(f, { ...filter.params }) - f.weight = parseInt(filter.weight) - f.filterID = filter.filterID - f.enabled = !!filter.enabled - return { ...f } + return this.fetchAllAvailableFilters().then(() => { + this.filters = (routeFilters || []).map(filter => { + const f = { ...this.availableFilters.find((af) => af.ref === filter.ref) } + f.params = this.decodeParams(f, { ...filter.params }) + f.weight = parseInt(filter.weight) + f.filterID = filter.filterID + f.enabled = !!filter.enabled + return { ...f } + }) }) }, @@ -303,7 +310,8 @@ export default { fetchAllAvailableFilters () { this.incLoader() - this.$SystemAPI.apigwFilterDefFilter() + + return this.$SystemAPI.apigwFilterDefFilter() .then((api) => { this.availableFilters = api.map((f) => { return { name, ...f, ref: f.name, enabled: true, options: { checked: false } }