## Description
>
```
const isOnCanvas = matchBuilderPath(window.location.pathname);
if (isOnCanvas) {
dispatch(showDebuggerAction(!showDebugger));
}}
```
The condition check to verify if we are on canvas was removed as we are
opening debugger throughout all pages.
> Now debugger is accessible from all pages in Appsmith. (Earlier it was
not present in Datasources pages.)
Fixes #19567
#21935
#21934
#21907
#21223
Media
> [Video](https://www.loom.com/share/ff5eebb5e0a74e0bad6ead26050b5833)
## Type of change
> Please delete options that are not relevant.
- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
- Manual
- Jest
- Cypress
### Test Plan
> Add Testsmith test cases links that relate to this PR
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
import { put, select } from "redux-saga/effects";
|
|
import { getAppStoreName } from "constants/AppConstants";
|
|
import localStorage from "utils/localStorage";
|
|
import { updateAppStore } from "actions/pageActions";
|
|
import AppsmithConsole from "utils/AppsmithConsole";
|
|
import { getAppStoreData } from "selectors/entitiesSelector";
|
|
import { getCurrentGitBranch } from "selectors/gitSyncSelectors";
|
|
import { getCurrentApplicationId } from "selectors/editorSelectors";
|
|
import type { AppStoreState } from "reducers/entityReducers/appReducer";
|
|
import { Severity, LOG_CATEGORY } from "entities/AppsmithConsole";
|
|
import moment from "moment";
|
|
import type {
|
|
TClearStoreDescription,
|
|
TRemoveValueDescription,
|
|
TStoreValueDescription,
|
|
} from "workers/Evaluation/fns/storeFns";
|
|
|
|
type StoreOperation =
|
|
| TStoreValueDescription
|
|
| TClearStoreDescription
|
|
| TRemoveValueDescription;
|
|
|
|
export function* handleStoreOperations(triggers: StoreOperation[]) {
|
|
const applicationId: string = yield select(getCurrentApplicationId);
|
|
const branch: string | undefined = yield select(getCurrentGitBranch);
|
|
const appStoreName = getAppStoreName(applicationId, branch);
|
|
const existingLocalStore = localStorage.getItem(appStoreName) || "{}";
|
|
let parsedLocalStore = JSON.parse(existingLocalStore);
|
|
let currentStore: AppStoreState = yield select(getAppStoreData);
|
|
const logs: string[] = [];
|
|
for (const t of triggers) {
|
|
const { type } = t;
|
|
if (type === "STORE_VALUE") {
|
|
const { key, persist, value } = t.payload;
|
|
if (persist) {
|
|
parsedLocalStore[key] = value;
|
|
}
|
|
currentStore[key] = value;
|
|
logs.push(`storeValue('${key}', '${value}', ${persist})`);
|
|
} else if (type === "REMOVE_VALUE") {
|
|
const { key } = t.payload;
|
|
delete parsedLocalStore[key];
|
|
delete currentStore[key];
|
|
logs.push(`removeValue('${key}')`);
|
|
} else if (type === "CLEAR_STORE") {
|
|
parsedLocalStore = {};
|
|
currentStore = {};
|
|
logs.push(`clearStore()`);
|
|
}
|
|
}
|
|
yield put(updateAppStore(currentStore));
|
|
const storeString = JSON.stringify(parsedLocalStore);
|
|
localStorage.setItem(appStoreName, storeString);
|
|
AppsmithConsole.addLogs(
|
|
logs.map((text) => ({
|
|
text,
|
|
severity: Severity.INFO,
|
|
category: LOG_CATEGORY.USER_GENERATED,
|
|
timestamp: moment().format("hh:mm:ss"),
|
|
isExpanded: false,
|
|
})),
|
|
);
|
|
}
|