From 2e363da4437dbe7ba7e62a6b818f1b7383014d6e Mon Sep 17 00:00:00 2001 From: nick-delirium Date: Thu, 22 Jun 2023 16:13:35 +0200 Subject: [PATCH] feat(ui): change flag activity method --- frontend/app/components/FFlags/FFlagItem/FFlagItem.tsx | 2 +- frontend/app/mstore/featureFlagsStore.ts | 8 ++++++++ frontend/app/services/FFlagsService.ts | 7 +++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/frontend/app/components/FFlags/FFlagItem/FFlagItem.tsx b/frontend/app/components/FFlags/FFlagItem/FFlagItem.tsx index 1ca99f11d..8edc02807 100644 --- a/frontend/app/components/FFlags/FFlagItem/FFlagItem.tsx +++ b/frontend/app/components/FFlags/FFlagItem/FFlagItem.tsx @@ -12,7 +12,7 @@ function FFlagItem({ flag }: { flag: FeatureFlag }) { const toggleActivity = () => { const newValue = !flag.isActive flag.setIsEnabled(newValue); - featureFlagsStore.updateFlag(flag, true).then(() => { + featureFlagsStore.updateFlagStatus(flag.featureFlagId, newValue).then(() => { toast.success('Feature flag updated.'); }) .catch(() => { diff --git a/frontend/app/mstore/featureFlagsStore.ts b/frontend/app/mstore/featureFlagsStore.ts index 2886e858a..62133d4b9 100644 --- a/frontend/app/mstore/featureFlagsStore.ts +++ b/frontend/app/mstore/featureFlagsStore.ts @@ -125,6 +125,14 @@ export default class FeatureFlagsStore { } }; + updateFlagStatus = async (flagId: number, isActive: boolean) => { + try { + await this.client.updateStatus(flagId, isActive); + } catch (e) { + console.error(e); + } + } + updateFlag = async (flag?: FeatureFlag, skipLoader?: boolean) => { const usedFlag = flag || this.currentFflag; if (usedFlag) { diff --git a/frontend/app/services/FFlagsService.ts b/frontend/app/services/FFlagsService.ts index 28fe133c4..31a58d2d2 100644 --- a/frontend/app/services/FFlagsService.ts +++ b/frontend/app/services/FFlagsService.ts @@ -68,6 +68,13 @@ export default class FFlagsService extends BaseService { .then((j) => j.data || {}); } + updateStatus(flagId: number, isActive: boolean): Promise { + return this.client + .post(`/feature-flags/${flagId}/status`, { isActive }) + .then((r) => r.json()) + .then((j) => j.data || {}); + } + deleteFlag(id: number): Promise { return this.client .delete(`/feature-flags/${id}`)