From 15f77f5b8b41ec2feed29b49989cddc8ee1fa5fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20G=C3=B3is?= Date: Fri, 10 Nov 2023 09:57:20 +0000 Subject: [PATCH] fix: project settings flag limit not properly set (#5317) https://linear.app/unleash/issue/SR-169/ticket-1107-project-feature-flag-limit-is-not-correctly-updated Fixes #5315, an issue where it would not be possible to set an empty flag limit. This also fixes the UI behavior: Before, when the flag limit field was emptied, it would disappear from the UI. I'm a bit unsure of the original intent of the `(data.defaultStickiness !== undefined || data.featureLimit !== undefined)` condition. We're in an update method, triggered by a PUT endpoint - I think it's safe to assume that we'll always want to set these values to whatever they come as, we just need to convert them to `null` in case they are not present (i.e. `undefined`). --- .../Project/ProjectForm/ProjectForm.tsx | 26 +++++++++---------- .../project/Project/hooks/useProjectForm.ts | 2 +- src/lib/db/project-store.ts | 4 ++- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/frontend/src/component/project/Project/ProjectForm/ProjectForm.tsx b/frontend/src/component/project/Project/ProjectForm/ProjectForm.tsx index c30ed7d292..3e1f513894 100644 --- a/frontend/src/component/project/Project/ProjectForm/ProjectForm.tsx +++ b/frontend/src/component/project/Project/ProjectForm/ProjectForm.tsx @@ -184,8 +184,8 @@ const ProjectForm: React.FC = ({ } /> ( <> = ({ Leave it empty if you don’t want to add a limit - {featureLimit && setFeatureLimit && ( - - setFeatureLimit(e.target.value) - } - /> - )} + + setFeatureLimit!(e.target.value) + } + /> = ({ /> - } + )} /> { if (featureLimit === '') { - return undefined; + return null; } return Number(featureLimit); }; diff --git a/src/lib/db/project-store.ts b/src/lib/db/project-store.ts index c419307c09..fdf01d431f 100644 --- a/src/lib/db/project-store.ts +++ b/src/lib/db/project-store.ts @@ -244,8 +244,9 @@ class ProjectStore implements IProjectStore { const settingsRow = await this.db(SETTINGS_TABLE) .insert({ project: project.id, - project_mode: project.mode, default_stickiness: project.defaultStickiness, + feature_limit: project.featureLimit, + project_mode: project.mode, }) .returning('*'); return this.mapRow({ ...row[0], ...settingsRow[0] }); @@ -265,6 +266,7 @@ class ProjectStore implements IProjectStore { await this.db(TABLE) .where({ id: data.id }) .update(this.fieldToRow(data)); + if ( data.defaultStickiness !== undefined || data.featureLimit !== undefined