PromucFlow_constructor/app/client/src/selectors/gitModSelectors.ts
Rudraprasad Das f6d7ce626f
chore: git mod - test fixes (#38357)
## Description
- Locator fixes for cy tests
- Missing saga for discard and merge
- New component for hot keys


Fixes https://github.com/appsmithorg/appsmith/issues/37821
Fixes https://github.com/appsmithorg/appsmith/issues/37822
Fixes https://github.com/appsmithorg/appsmith/issues/37824

## 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/12649057943>
> Commit: 94c57d0a2398fca8e6cbb4be573586aa98dffbe1
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=12649057943&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Git`
> Spec:
> <hr>Tue, 07 Jan 2025 10:42:55 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

## Release Notes

- **New Features**
- Added repository limit error modal to handle scenarios when repository
limits are reached.
  - Introduced Git hot keys for quick access to Git operations.
- Enhanced Git synchronization functionality with new merge and discard
change capabilities.
- Integrated feature flag handling in test suites for Git-related
functionalities.

- **Improvements**
  - Standardized test identifiers across Git-related components.
  - Refined Git modal interactions and state management.
  - Updated locator references for more consistent testing.
- Improved user feedback with success notifications for branch
deletions.

- **Bug Fixes**
  - Resolved issues with branch switching and URL handling.
  - Improved error handling in Git synchronization processes.

- **Testing**
  - Updated Cypress test suites with new feature flag interceptors.
  - Enhanced test coverage for Git operations and modal interactions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-01-07 12:30:42 +01:00

77 lines
2.5 KiB
TypeScript

// temp file will be removed after git mod is fully rolled out
import { selectFeatureFlags } from "ee/selectors/featureFlagsSelectors";
import { createSelector } from "reselect";
import {
getCurrentGitBranch,
getIsGitSyncModalOpen,
protectedModeSelector,
} from "./gitSyncSelectors";
import {
selectGitCurrentBranch as selectGitCurrentBranchNew,
selectGitProtectedMode as selectGitProtectedModeNew,
selectGitOpsModalOpen as selectGitOpsModalOpenNew,
selectGitConnectModalOpen as selectGitConnectModalOpenNew,
} from "git";
import {
getCurrentBaseApplicationId,
previewModeSelector,
} from "./editorSelectors";
import { applicationArtifact } from "git/artifact-helpers/application";
export const selectGitModEnabled = createSelector(
selectFeatureFlags,
(featureFlags) => featureFlags.release_git_modularisation_enabled ?? false,
);
export const selectGitApplicationArtifactDef = createSelector(
getCurrentBaseApplicationId,
(baseApplicationId) => applicationArtifact(baseApplicationId),
);
export const selectGitApplicationCurrentBranch = createSelector(
selectGitModEnabled,
getCurrentGitBranch,
(state) =>
selectGitCurrentBranchNew(state, selectGitApplicationArtifactDef(state)),
(isGitModEnabled, currentBranchOld, currentBranchNew) => {
return isGitModEnabled ? currentBranchNew : currentBranchOld;
},
);
export const selectGitApplicationProtectedMode = createSelector(
selectGitModEnabled,
protectedModeSelector,
(state) =>
selectGitProtectedModeNew(state, selectGitApplicationArtifactDef(state)),
(isGitModEnabled, protectedModeOld, protectedModeNew) => {
return isGitModEnabled ? protectedModeNew : protectedModeOld;
},
);
export const selectCombinedPreviewMode = createSelector(
previewModeSelector,
selectGitApplicationProtectedMode,
(isPreviewMode, isProtectedMode) => isPreviewMode || isProtectedMode,
);
export const selectGitOpsModalOpen = createSelector(
selectGitModEnabled,
getIsGitSyncModalOpen,
(state) =>
selectGitOpsModalOpenNew(state, selectGitApplicationArtifactDef(state)),
(isGitModEnabled, isOldModalOpen, isNewModalOpen) => {
return isGitModEnabled ? isNewModalOpen : isOldModalOpen;
},
);
export const selectGitConnectModalOpen = createSelector(
selectGitModEnabled,
getIsGitSyncModalOpen,
(state) =>
selectGitConnectModalOpenNew(state, selectGitApplicationArtifactDef(state)),
(isGitModEnabled, isOldModalOpen, isNewModalOpen) => {
return isGitModEnabled ? isNewModalOpen : isOldModalOpen;
},
);