chore: git mod - fixes toast issues (#39140)

## 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"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/13216997415>
> Commit: 95ccaedc4583492a5a6c7b88c6ca8215b2a55807
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=13216997415&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Sat, 08 Feb 2025 17:43:52 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## 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.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Rudraprasad Das 2025-02-10 09:59:55 +01:00 committed by GitHub
parent 3fb7555962
commit d199546f1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 38 additions and 14 deletions

View File

@ -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);

View File

@ -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();
}

View File

@ -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) {

View File

@ -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<DiscardInitPayload>,
) {
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 =

View File

@ -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<PullInitPayload>,
@ -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) {

View File

@ -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) {

View File

@ -6,6 +6,7 @@ import type {
export interface DiscardInitPayload extends GitArtifactBasePayload {
artifactId: string;
successMessage?: string;
}
export const discardInitAction = createArtifactAction<DiscardInitPayload>(