* Changes to add js plugin * routes+reducer+create template * added debugger to js editor page * entity explorer changes * create js function * added copy, move and delete action * added js plugin * added existing js functions to data tree * removed actionconfig for js collection * new js function added to data tree and entity as well * parsing flow added * changes to data tree * parse and update js functions * small changes for def creator for js action * create delete modified * small changes for update * update flow change * entity properties added * removed linting errors * small changes in entity explorer * changes for update * move, copy implementation * conflict resolved * changes for dependecy map creation * Only make the variables the binding paths * Basic eval sync working * Minor fixes * removed unwanted code * entity props and autocomplete * saving in progress show * redirection fix after delete js action * removed unnecessary line * Fixing merge conflict * added sample body * removed dummy data and added plugin Type * few PR comments fixed * automplete fix * few more PR comments fix * PR commnets fix * move and copy api change * js colleciton name refactor & 'move to page' changes & search * view changes * autocomplete added for js collections * removing till async is implemented * small changes * separate js pane response view * Executing functions * js collection to js objects * entity explorer issue and resolve action on page switch * removed unused line * small color fix * js file icon added * added js action to property pane * Property pane changes for actions * property pane changes for js functions * showing syntax error for now * actions sorted in response tab * added js objects to slash and recent entitties * enabling this to be used inside of function * eval fix * feature flag changes for entity explorer and property pane * debugger changes * copy bug fix * small changes for eval * debugger bug fix * chnaged any to specific types * error in console fix * icons update * fixed test case * test case fix * non empty check for functions * evaluate test case fix * added new icons * text change * updated time for debounce for trial * after release mereg * changed icon * after merge * PR comments simple * fixed PR comments - redux form, settings remove * js object interface changes * name refactor * export default change * delete resolve actions chnage * after merge * adding execute fn as 3rd option and removed create new js function * issue 7054 fixed - app crash * execute function on response tab changes * refactor function name part 1 * refactor of js function name * try catch added refactor * test fix * not used line removed * test cases locator fixed Co-authored-by: Nidhi <nidhi.nair93@gmail.com> Co-authored-by: hetunandu <hetu@appsmith.com>
90 lines
2.3 KiB
TypeScript
90 lines
2.3 KiB
TypeScript
import { ReduxActionTypes, ReduxAction } from "constants/ReduxActionConstants";
|
|
import { all, put, takeLatest } from "redux-saga/effects";
|
|
import { updateRecentEntity } from "actions/globalSearchActions";
|
|
|
|
import {
|
|
matchApiPath,
|
|
matchDatasourcePath,
|
|
matchQueryPath,
|
|
matchBuilderPath,
|
|
matchJSObjectPath,
|
|
} from "constants/routes";
|
|
import { MAIN_CONTAINER_WIDGET_ID } from "constants/WidgetConstants";
|
|
|
|
const getRecentEntity = (pathName: string) => {
|
|
const builderMatch = matchBuilderPath(pathName);
|
|
if (builderMatch)
|
|
return {
|
|
type: "page",
|
|
id: builderMatch?.params?.pageId,
|
|
params: builderMatch?.params,
|
|
};
|
|
|
|
const apiMatch = matchApiPath(pathName);
|
|
if (apiMatch)
|
|
return {
|
|
type: "action",
|
|
id: apiMatch?.params?.apiId,
|
|
params: apiMatch?.params,
|
|
};
|
|
|
|
const queryMatch = matchQueryPath(pathName);
|
|
if (queryMatch)
|
|
return {
|
|
type: "action",
|
|
id: queryMatch.params?.queryId,
|
|
params: queryMatch?.params,
|
|
};
|
|
|
|
const datasourceMatch = matchDatasourcePath(pathName);
|
|
if (datasourceMatch)
|
|
return {
|
|
type: "datasource",
|
|
id: datasourceMatch?.params?.datasourceId,
|
|
params: datasourceMatch?.params,
|
|
};
|
|
|
|
const jsObjectMatch = matchJSObjectPath(pathName);
|
|
if (jsObjectMatch) {
|
|
return {
|
|
type: "jsAction",
|
|
id: jsObjectMatch?.params?.collectionId,
|
|
params: jsObjectMatch?.params,
|
|
};
|
|
}
|
|
|
|
return {};
|
|
};
|
|
|
|
function* handleSelectWidget(action: ReduxAction<{ widgetId: string }>) {
|
|
const builderMatch = matchBuilderPath(window.location.pathname);
|
|
const { payload } = action;
|
|
const selectedWidget = payload.widgetId;
|
|
if (selectedWidget && selectedWidget !== MAIN_CONTAINER_WIDGET_ID)
|
|
yield put(
|
|
updateRecentEntity({
|
|
type: "widget",
|
|
id: selectedWidget,
|
|
params: builderMatch?.params,
|
|
}),
|
|
);
|
|
}
|
|
|
|
function* handlePathUpdated(
|
|
action: ReduxAction<{ location: typeof window.location }>,
|
|
) {
|
|
const { id, params, type } = getRecentEntity(
|
|
action.payload.location.pathname,
|
|
);
|
|
if (type && id && id.indexOf(":") === -1) {
|
|
yield put(updateRecentEntity({ type, id, params }));
|
|
}
|
|
}
|
|
|
|
export default function* recentEntitiesSagas() {
|
|
yield all([
|
|
takeLatest(ReduxActionTypes.SELECT_WIDGET_INIT, handleSelectWidget),
|
|
takeLatest(ReduxActionTypes.HANDLE_PATH_UPDATED, handlePathUpdated),
|
|
]);
|
|
}
|