## Description - Changed store operation logs from user logs to system generated logs. - Replaced left icon button in debugger with ADS Icon component. - Prevents the log from expanding when the click is on the link. - Makes the entire log clickable when there is additional collapsed information > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes #24882 #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change - Bug fix (non-breaking change which fixes an issue) > > ## Testing > #### How Has This Been Tested? - [x] Manual - [x] 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 - [ ] 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: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
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 "@appsmith/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.PLATFORM_GENERATED,
|
|
timestamp: moment().format("HH:mm:ss"),
|
|
isExpanded: false,
|
|
})),
|
|
);
|
|
}
|