From daa402a6e760a74b73363bd0e9ab50049a06adbf Mon Sep 17 00:00:00 2001 From: Rudraprasad Das Date: Mon, 13 Jan 2025 13:24:58 +0100 Subject: [PATCH 1/5] chore: fixing initial loading state for git initialization --- .../QuickActions/QuickActionsView.test.tsx | 1 + .../components/QuickActions/QuickActionsView.tsx | 6 ++++++ .../src/git/components/QuickActions/index.tsx | 3 +++ app/client/src/git/hooks/useInit.ts | 16 ++++++++++++++++ app/client/src/git/sagas/initGitSaga.ts | 2 ++ .../src/git/store/actions/initGitActions.ts | 10 ++++++++++ app/client/src/git/store/gitArtifactSlice.ts | 6 +++++- app/client/src/git/store/helpers/initialState.ts | 2 ++ .../git/store/selectors/gitArtifactSelectors.ts | 11 +++++++++++ app/client/src/git/store/types.ts | 2 ++ 10 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 app/client/src/git/hooks/useInit.ts diff --git a/app/client/src/git/components/QuickActions/QuickActionsView.test.tsx b/app/client/src/git/components/QuickActions/QuickActionsView.test.tsx index bb47195dab76..cbffaa28d547 100644 --- a/app/client/src/git/components/QuickActions/QuickActionsView.test.tsx +++ b/app/client/src/git/components/QuickActions/QuickActionsView.test.tsx @@ -30,6 +30,7 @@ describe("QuickActionsView Component", () => { isDiscardLoading: false, isFetchStatusLoading: false, isConnected: false, + isInitialized: true, isProtectedMode: false, isPullFailing: false, isPullLoading: false, diff --git a/app/client/src/git/components/QuickActions/QuickActionsView.tsx b/app/client/src/git/components/QuickActions/QuickActionsView.tsx index 9a11ca5de4b2..671609629245 100644 --- a/app/client/src/git/components/QuickActions/QuickActionsView.tsx +++ b/app/client/src/git/components/QuickActions/QuickActionsView.tsx @@ -33,6 +33,7 @@ interface QuickActionsViewProps { isConnectPermitted: boolean; isDiscardLoading: boolean; isFetchStatusLoading: boolean; + isInitialized: boolean; isConnected: boolean; isProtectedMode: boolean; isPullFailing: boolean; @@ -61,6 +62,7 @@ function QuickActionsView({ isConnectPermitted = false, isDiscardLoading = false, isFetchStatusLoading = false, + isInitialized = false, isProtectedMode = false, isPullFailing = false, isPullLoading = false, @@ -131,6 +133,10 @@ function QuickActionsView({ toggleConnectModal(true); }, [toggleConnectModal]); + if (!isInitialized) { + return null; + } + return isConnected ? ( ((state) => { + state.ui.initializing = true; + state.ui.initialized = false; + return state; }); + +export const initGitForEditorSuccessAction = createArtifactAction((state) => { + state.ui.initializing = false; + state.ui.initialized = true; + + return state; +}); diff --git a/app/client/src/git/store/gitArtifactSlice.ts b/app/client/src/git/store/gitArtifactSlice.ts index bcb70f89aa60..7109bcfbfee8 100644 --- a/app/client/src/git/store/gitArtifactSlice.ts +++ b/app/client/src/git/store/gitArtifactSlice.ts @@ -108,7 +108,10 @@ import { updateProtectedBranchesInitAction, updateProtectedBranchesSuccessAction, } from "./actions/updateProtectedBranchesActions"; -import { initGitForEditorAction } from "./actions/initGitActions"; +import { + initGitForEditorAction, + initGitForEditorSuccessAction, +} from "./actions/initGitActions"; import { fetchAutocommitProgressErrorAction, fetchAutocommitProgressInitAction, @@ -142,6 +145,7 @@ export const gitArtifactSlice = createSlice({ reducers: { // init initGitForEditor: initGitForEditorAction, + initGitForEditorSuccess: initGitForEditorSuccessAction, mount: mountAction, unmount: unmountAction, fetchMetadataInit: fetchMetadataInitAction, diff --git a/app/client/src/git/store/helpers/initialState.ts b/app/client/src/git/store/helpers/initialState.ts index 18b6e58ca826..f2927621539d 100644 --- a/app/client/src/git/store/helpers/initialState.ts +++ b/app/client/src/git/store/helpers/initialState.ts @@ -11,6 +11,8 @@ import type { } from "../types"; const gitArtifactInitialUIState: GitArtifactUIReduxState = { + initializing: false, + initialized: false, connectModalOpen: false, connectSuccessModalOpen: false, disconnectBaseArtifactId: null, diff --git a/app/client/src/git/store/selectors/gitArtifactSelectors.ts b/app/client/src/git/store/selectors/gitArtifactSelectors.ts index 4f5346559367..7b3145908998 100644 --- a/app/client/src/git/store/selectors/gitArtifactSelectors.ts +++ b/app/client/src/git/store/selectors/gitArtifactSelectors.ts @@ -9,6 +9,17 @@ export const selectGitArtifact = ( ]; }; +// init +export const selectInitializing = ( + state: GitRootState, + artifactDef: GitArtifactDef, +) => selectGitArtifact(state, artifactDef)?.ui?.initializing ?? false; + +export const selectInitialized = ( + state: GitRootState, + artifactDef: GitArtifactDef, +) => selectGitArtifact(state, artifactDef)?.ui?.initialized ?? false; + // metadata export const selectMetadataState = ( state: GitRootState, diff --git a/app/client/src/git/store/types.ts b/app/client/src/git/store/types.ts index c23f4d431af1..bcf59c07599f 100644 --- a/app/client/src/git/store/types.ts +++ b/app/client/src/git/store/types.ts @@ -63,6 +63,8 @@ export interface GitArtifactAPIResponsesReduxState export interface GitArtifactUIReduxState extends GitArtifactUIReduxStateExtended { + initializing: boolean; + initialized: boolean; connectModalOpen: boolean; connectSuccessModalOpen: boolean; disconnectBaseArtifactId: string | null; From 4f451a6df5f5770ccfd1890bd57670544a4fe935 Mon Sep 17 00:00:00 2001 From: Rudraprasad Das Date: Mon, 13 Jan 2025 14:34:16 +0100 Subject: [PATCH 2/5] chore: fixing autcommmit-ing message --- .../src/git/components/QuickActions/QuickActionsView.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/client/src/git/components/QuickActions/QuickActionsView.tsx b/app/client/src/git/components/QuickActions/QuickActionsView.tsx index 671609629245..c5b49fb39ca5 100644 --- a/app/client/src/git/components/QuickActions/QuickActionsView.tsx +++ b/app/client/src/git/components/QuickActions/QuickActionsView.tsx @@ -2,6 +2,7 @@ import React, { useCallback } from "react"; import styled from "styled-components"; import { + AUTOCOMMIT_IN_PROGRESS_MESSAGE, COMMIT_CHANGES, createMessage, GIT_SETTINGS, @@ -13,7 +14,7 @@ import { GitOpsTab } from "../../constants/enums"; import { GitSettingsTab } from "../../constants/enums"; import ConnectButton from "./ConnectButton"; import QuickActionButton from "./QuickActionButton"; -import AutocommitStatusbar from "../Statusbar"; +import Statusbar from "../Statusbar"; import getPullBtnStatus from "./helpers/getPullButtonStatus"; import noop from "lodash/noop"; import BranchButton from "./BranchButton"; @@ -151,7 +152,10 @@ function QuickActionsView({ {isAutocommitEnabled && isAutocommitPolling ? (
- +
) : ( <> From e537db50f093979bfc2ec5aec50bc9bf4b1a1c07 Mon Sep 17 00:00:00 2001 From: Rudraprasad Das Date: Mon, 13 Jan 2025 14:44:44 +0100 Subject: [PATCH 3/5] chore: fixing unselectable merge dropdown --- .../src/git/components/OpsModal/TabMerge/TabMergeView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/client/src/git/components/OpsModal/TabMerge/TabMergeView.tsx b/app/client/src/git/components/OpsModal/TabMerge/TabMergeView.tsx index acfc7d50e250..337aa18e7406 100644 --- a/app/client/src/git/components/OpsModal/TabMerge/TabMergeView.tsx +++ b/app/client/src/git/components/OpsModal/TabMerge/TabMergeView.tsx @@ -112,7 +112,7 @@ export default function TabMergeView({ let status = MergeStatusState.NONE; - if (isFetchStatusLoading) { + if (isFetchStatusLoading || isFetchBranchesLoading) { status = MergeStatusState.FETCHING; message = createMessage(FETCH_GIT_STATUS); } else if (!isStatusClean) { From 8e2b3ef2decfcd1d9abba582c1fd030f121b675c Mon Sep 17 00:00:00 2001 From: Rudraprasad Das Date: Mon, 13 Jan 2025 14:49:11 +0100 Subject: [PATCH 4/5] chore: adds test for isInitialized --- .../QuickActions/QuickActionsView.test.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/client/src/git/components/QuickActions/QuickActionsView.test.tsx b/app/client/src/git/components/QuickActions/QuickActionsView.test.tsx index cbffaa28d547..aa3ee90cb7d8 100644 --- a/app/client/src/git/components/QuickActions/QuickActionsView.test.tsx +++ b/app/client/src/git/components/QuickActions/QuickActionsView.test.tsx @@ -49,6 +49,24 @@ describe("QuickActionsView Component", () => { jest.clearAllMocks(); }); + it("should not render QuickActionsView when isInitialized is false", () => { + const props = { + ...defaultProps, + isInitialized: false, + }; + + render( + + + , + ); + + expect(screen.queryByTestId("connect-button")).not.toBeInTheDocument(); + expect( + screen.queryByTestId("t--git-quick-actions-commit"), + ).not.toBeInTheDocument(); + }); + it("should render ConnectButton when isConnected is false", () => { render( From bd7a5814bd094717bc6bffb746418c3bbe682d55 Mon Sep 17 00:00:00 2001 From: Rudraprasad Das Date: Mon, 13 Jan 2025 19:21:18 +0100 Subject: [PATCH 5/5] chore: fixes for immer --- app/client/src/git/store/actions/initGitActions.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/client/src/git/store/actions/initGitActions.ts b/app/client/src/git/store/actions/initGitActions.ts index 268c7df00117..e7bcdfeeb0ab 100644 --- a/app/client/src/git/store/actions/initGitActions.ts +++ b/app/client/src/git/store/actions/initGitActions.ts @@ -7,10 +7,14 @@ export interface InitGitForEditorPayload { export const initGitForEditorAction = createArtifactAction((state) => { - state.ui.initializing = true; - state.ui.initialized = false; + // need to do this to avoid mutation, bug with redux-toolkit immer + const ui = { + ...state.ui, + initializing: true, + initialized: false, + }; - return state; + return { ...state, ui }; }); export const initGitForEditorSuccessAction = createArtifactAction((state) => {