From 728c0925e8073b6e2a1bb8119e2eae976df40ba4 Mon Sep 17 00:00:00 2001 From: johnsoncherian Date: Mon, 14 Apr 2025 17:02:48 +0530 Subject: [PATCH] fix: check of env details are loaded before allowing env upgrade --- .../PromoteVersionButton.jsx | 63 ------------------- .../PromoteVersionButton.jsx | 11 ++-- .../PromoteConfirmationModal.jsx | 6 +- 3 files changed, 9 insertions(+), 71 deletions(-) delete mode 100644 frontend/src/AppBuilder/Header/RightTopHeaderButtons/PromoteVersionButton.jsx diff --git a/frontend/src/AppBuilder/Header/RightTopHeaderButtons/PromoteVersionButton.jsx b/frontend/src/AppBuilder/Header/RightTopHeaderButtons/PromoteVersionButton.jsx deleted file mode 100644 index f8902157bc..0000000000 --- a/frontend/src/AppBuilder/Header/RightTopHeaderButtons/PromoteVersionButton.jsx +++ /dev/null @@ -1,63 +0,0 @@ -import React, { useState } from 'react'; -import { ButtonSolid } from '@/_ui/AppButton/AppButton'; -import { shallow } from 'zustand/shallow'; -import { ToolTip } from '@/_components/ToolTip'; -import PromoteConfirmationModal from './PromoteConfirmationModal'; -import useStore from '@/AppBuilder/_stores/store'; - -const PromoteVersionButton = () => { - const [promoteModalData, setPromoteModalData] = useState(null); - const { isSaving, editingVersion, appVersionEnvironment, environments, selectedEnvironment } = useStore( - (state) => ({ - isSaving: state.app.isSaving, - editingVersion: state.currentVersionId, - selectedEnvironment: state.selectedEnvironment, - environments: state.environments, - appVersionEnvironment: state.appVersionEnvironment, - }), - shallow - ); - - const shouldDisablePromote = isSaving || selectedEnvironment?.priority < appVersionEnvironment?.priority; - - const handlePromote = () => { - const curentEnvIndex = environments.findIndex((env) => env.id === appVersionEnvironment.id); - setPromoteModalData({ - current: appVersionEnvironment, - target: environments[curentEnvIndex + 1], - }); - }; - - return ( - <> - - -
Promote
-
- - - -
- - setPromoteModalData(null)} - fetchEnvironments={() => {}} - /> - - ); -}; - -export default PromoteVersionButton; diff --git a/frontend/src/modules/common/components/BasePromoteReleaseButton/components/PromoteVersionButton/PromoteVersionButton.jsx b/frontend/src/modules/common/components/BasePromoteReleaseButton/components/PromoteVersionButton/PromoteVersionButton.jsx index b75a1a8e32..a0e14f7bb2 100644 --- a/frontend/src/modules/common/components/BasePromoteReleaseButton/components/PromoteVersionButton/PromoteVersionButton.jsx +++ b/frontend/src/modules/common/components/BasePromoteReleaseButton/components/PromoteVersionButton/PromoteVersionButton.jsx @@ -7,24 +7,25 @@ import useStore from '@/AppBuilder/_stores/store'; const PromoteVersionButton = () => { const [promoteModalData, setPromoteModalData] = useState(null); - const { isSaving, editingVersion, appVersionEnvironment, environments, selectedEnvironment } = useStore( + const { isSaving, editingVersion, appVersionEnvironment, environments, selectedEnvironment, currentEnvIndex } = useStore( (state) => ({ isSaving: state.app.isSaving, editingVersion: state.currentVersionId, selectedEnvironment: state.selectedEnvironment, environments: state.environments, appVersionEnvironment: state.appVersionEnvironment, + currentEnvIndex: state.environments?.findIndex((env) => env?.id === state.appVersionEnvironment?.id), }), shallow ); - const shouldDisablePromote = isSaving || selectedEnvironment?.priority < appVersionEnvironment?.priority; + // enable only after the environment details are loaded + const shouldDisablePromote = isSaving || selectedEnvironment?.priority < appVersionEnvironment?.priority || !appVersionEnvironment || !environments?.[currentEnvIndex + 1]; const handlePromote = () => { - const curentEnvIndex = environments.findIndex((env) => env.id === appVersionEnvironment.id); setPromoteModalData({ current: appVersionEnvironment, - target: environments[curentEnvIndex + 1], + target: environments[currentEnvIndex + 1], }); }; @@ -54,7 +55,7 @@ const PromoteVersionButton = () => { data={promoteModalData} editingVersion={editingVersion} onClose={() => setPromoteModalData(null)} - fetchEnvironments={() => {}} + fetchEnvironments={() => { }} /> ); diff --git a/frontend/src/modules/common/components/BasePromoteReleaseButton/components/PromoteVersionButton/components/PromoteConfirmationModal/PromoteConfirmationModal.jsx b/frontend/src/modules/common/components/BasePromoteReleaseButton/components/PromoteVersionButton/components/PromoteConfirmationModal/PromoteConfirmationModal.jsx index 40abc2cf2d..cae938d130 100644 --- a/frontend/src/modules/common/components/BasePromoteReleaseButton/components/PromoteVersionButton/components/PromoteConfirmationModal/PromoteConfirmationModal.jsx +++ b/frontend/src/modules/common/components/BasePromoteReleaseButton/components/PromoteVersionButton/components/PromoteConfirmationModal/PromoteConfirmationModal.jsx @@ -126,7 +126,7 @@ const PromoteConfirmationModal = React.memo(({ data, onClose }) => { FROM
- {capitalize(data?.current.name)} + {capitalize(data?.current?.name)}
@@ -144,11 +144,11 @@ const PromoteConfirmationModal = React.memo(({ data, onClose }) => { TO
- {capitalize(data?.target.name)} + {capitalize(data?.target?.name)}
- {data?.current.name === 'development' && ( + {data?.current?.name === 'development' && (
You won't be able to edit this version after promotion. Are you sure you want to continue?