From d199546f1e08bc0bf529fefa8c3aa8ee4105c8a2 Mon Sep 17 00:00:00 2001 From: Rudraprasad Das Date: Mon, 10 Feb 2025 09:59:55 +0100 Subject: [PATCH] chore: git mod - fixes toast issues (#39140) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description Fixes issue with missing success toast related to git Fixes https://github.com/appsmithorg/appsmith/issues/38872 Fixes https://github.com/appsmithorg/appsmith/issues/38862 ## Automation /ok-to-test tags="@tag.Git" ### :mag: Cypress test results > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: > Commit: 95ccaedc4583492a5a6c7b88c6ca8215b2a55807 > Cypress dashboard. > Tags: `@tag.Git` > Spec: >
Sat, 08 Feb 2025 17:43:52 UTC ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No ## Summary by CodeRabbit - New Features - Discard operations now display clear, contextual success messages to enhance user feedback. - Toast notifications have been added for pull actions and protected branch updates, providing real-time confirmation of successful operations. --- .../OpsModal/TabDeploy/TabDeployView.tsx | 4 ++-- .../QuickActions/QuickActionsView.tsx | 5 +++-- app/client/src/git/hooks/useDiscard.ts | 19 ++++++++++++++----- app/client/src/git/sagas/discardSaga.ts | 11 ++++++----- app/client/src/git/sagas/pullSaga.ts | 6 ++++++ .../git/sagas/updateProtectedBranchesSaga.ts | 6 ++++++ .../src/git/store/actions/discardActions.ts | 1 + 7 files changed, 38 insertions(+), 14 deletions(-) diff --git a/app/client/src/git/components/OpsModal/TabDeploy/TabDeployView.tsx b/app/client/src/git/components/OpsModal/TabDeploy/TabDeployView.tsx index b9f9de179f37..5e9fcfcfe0ba 100644 --- a/app/client/src/git/components/OpsModal/TabDeploy/TabDeployView.tsx +++ b/app/client/src/git/components/OpsModal/TabDeploy/TabDeployView.tsx @@ -75,7 +75,7 @@ interface TabDeployViewProps { commit: (commitMessage: string) => void; commitError: GitApiError | null; currentBranch: string | null; - discard: () => void; + discard: (successMessage: string) => void; discardError: GitApiError | null; isCommitLoading: boolean; isDiscardLoading: boolean; @@ -239,7 +239,7 @@ function TabDeployView({ AnalyticsUtil.logEvent("GIT_DISCARD", { source: "GIT_DISCARD_BUTTON_PRESS_2", }); - discard(); + discard(createMessage(DISCARD_CHANGES)); setShowDiscardWarning(false); setShouldDiscard(true); setIsDiscarding(true); diff --git a/app/client/src/git/components/QuickActions/QuickActionsView.tsx b/app/client/src/git/components/QuickActions/QuickActionsView.tsx index c5b49fb39ca5..80a1f3f620ff 100644 --- a/app/client/src/git/components/QuickActions/QuickActionsView.tsx +++ b/app/client/src/git/components/QuickActions/QuickActionsView.tsx @@ -5,6 +5,7 @@ import { AUTOCOMMIT_IN_PROGRESS_MESSAGE, COMMIT_CHANGES, createMessage, + DISCARD_AND_PULL_SUCCESS, GIT_SETTINGS, MERGE, } from "ee/constants/messages"; @@ -27,7 +28,7 @@ const Container = styled.div` interface QuickActionsViewProps { currentBranch: string | null; - discard: () => void; + discard: (successMessage: string) => void; isAutocommitEnabled: boolean; isAutocommitPolling: boolean; isBranchPopupOpen: boolean; @@ -105,7 +106,7 @@ function QuickActionsView({ }); if (isProtectedMode) { - discard(); + discard(createMessage(DISCARD_AND_PULL_SUCCESS)); } else { pull(); } diff --git a/app/client/src/git/hooks/useDiscard.ts b/app/client/src/git/hooks/useDiscard.ts index 23edfd3c99a7..969e2057c43b 100644 --- a/app/client/src/git/hooks/useDiscard.ts +++ b/app/client/src/git/hooks/useDiscard.ts @@ -12,11 +12,20 @@ export default function useDiscard() { const discardState = useArtifactSelector(selectDiscardState); - const discard = useCallback(() => { - if (artifactDef && artifactId) { - dispatch(gitArtifactActions.discardInit({ artifactDef, artifactId })); - } - }, [artifactDef, artifactId, dispatch]); + const discard = useCallback( + (successMessage: string) => { + if (artifactDef && artifactId) { + dispatch( + gitArtifactActions.discardInit({ + artifactDef, + artifactId, + successMessage, + }), + ); + } + }, + [artifactDef, artifactId, dispatch], + ); const clearDiscardError = useCallback(() => { if (artifactDef) { diff --git a/app/client/src/git/sagas/discardSaga.ts b/app/client/src/git/sagas/discardSaga.ts index 18dac8704167..0184e95080a3 100644 --- a/app/client/src/git/sagas/discardSaga.ts +++ b/app/client/src/git/sagas/discardSaga.ts @@ -1,7 +1,6 @@ import { toast } from "@appsmith/ads"; import { captureException } from "@sentry/react"; import { builderURL } from "ee/RouteBuilder"; -import { createMessage, DISCARD_SUCCESS } from "ee/constants/messages"; import discardRequest from "git/requests/discardRequest"; import type { DiscardResponse } from "git/requests/discardRequest.types"; import type { DiscardInitPayload } from "git/store/actions/discardActions"; @@ -15,7 +14,7 @@ import { validateResponse } from "sagas/ErrorSagas"; export default function* discardSaga( action: GitArtifactPayloadAction, ) { - const { artifactDef, artifactId } = action.payload; + const { artifactDef, artifactId, successMessage } = action.payload; let response: DiscardResponse | undefined; @@ -34,9 +33,11 @@ export default function* discardSaga( if (response && isValidResponse) { yield put(gitArtifactActions.discardSuccess({ artifactDef })); - toast.show(createMessage(DISCARD_SUCCESS), { - kind: "success", - }); + + if (successMessage) { + toast.show(successMessage, { kind: "success" }); + } + // adding delay to show toast animation before reloading yield delay(500); const basePageId: string = diff --git a/app/client/src/git/sagas/pullSaga.ts b/app/client/src/git/sagas/pullSaga.ts index c73ad7b30e37..22647236e087 100644 --- a/app/client/src/git/sagas/pullSaga.ts +++ b/app/client/src/git/sagas/pullSaga.ts @@ -14,6 +14,8 @@ import { APP_MODE } from "entities/App"; import log from "loglevel"; import { captureException } from "@sentry/react"; import { selectGitApiContractsEnabled } from "git/store/selectors/gitFeatureFlagSelectors"; +import { toast } from "@appsmith/ads"; +import { createMessage, DISCARD_AND_PULL_SUCCESS } from "ee/constants/messages"; export default function* pullSaga( action: GitArtifactPayloadAction, @@ -50,6 +52,10 @@ export default function* pullSaga( mode: APP_MODE.EDIT, }), ); + + toast.show(createMessage(DISCARD_AND_PULL_SUCCESS), { + kind: "success", + }); } } catch (e) { if (response && response.responseMeta.error) { diff --git a/app/client/src/git/sagas/updateProtectedBranchesSaga.ts b/app/client/src/git/sagas/updateProtectedBranchesSaga.ts index 1a554e1280a3..8ac24e5e420e 100644 --- a/app/client/src/git/sagas/updateProtectedBranchesSaga.ts +++ b/app/client/src/git/sagas/updateProtectedBranchesSaga.ts @@ -1,4 +1,6 @@ +import { toast } from "@appsmith/ads"; import { captureException } from "@sentry/react"; +import { createMessage, PROTECT_BRANCH_SUCCESS } from "ee/constants/messages"; import updateProtectedBranchesRequest from "git/requests/updateProtectedBranchesRequest"; import type { UpdateProtectedBranchesRequestParams, @@ -41,6 +43,10 @@ export default function* updateProtectedBranchesSaga( gitArtifactActions.updateProtectedBranchesSuccess({ artifactDef }), ); yield put(gitArtifactActions.fetchProtectedBranchesInit({ artifactDef })); + + toast.show(createMessage(PROTECT_BRANCH_SUCCESS), { + kind: "success", + }); } } catch (e) { if (response && response.responseMeta.error) { diff --git a/app/client/src/git/store/actions/discardActions.ts b/app/client/src/git/store/actions/discardActions.ts index 67d54e349d5e..aa9802b2a94c 100644 --- a/app/client/src/git/store/actions/discardActions.ts +++ b/app/client/src/git/store/actions/discardActions.ts @@ -6,6 +6,7 @@ import type { export interface DiscardInitPayload extends GitArtifactBasePayload { artifactId: string; + successMessage?: string; } export const discardInitAction = createArtifactAction(