PromucFlow_constructor/app/client/src/sagas/InitSagas.ts

293 lines
8.5 KiB
TypeScript
Raw Normal View History

import { get } from "lodash";
import {
all,
call,
put,
2021-03-31 07:40:59 +00:00
race,
select,
take,
takeLatest,
} from "redux-saga/effects";
2019-11-08 11:02:00 +00:00
import {
InitializeEditorPayload,
ReduxAction,
ReduxActionErrorTypes,
ReduxActionTypes,
ReduxActionWithoutPayload,
} from "constants/ReduxActionConstants";
import { ERROR_CODES } from "constants/ApiConstants";
2020-08-24 12:09:17 +00:00
import {
fetchPage,
fetchPageList,
fetchPublishedPage,
2020-08-24 12:09:17 +00:00
setAppMode,
2021-03-24 05:09:47 +00:00
updateAppPersistentStore,
2020-08-24 12:09:17 +00:00
} from "actions/pageActions";
[Feature #4542] : simple nav unify api/datasource (#4987) * temp commit * using onsubmit to continue using action on form * added recaptcha site key to env example file * moved the recaptcha lib loading logic to signup page * removed unnecessary edit * handle the case where the recaptcha token is not provided as env var * added proper env var config for client * recaptcha config for ansible * recaptcha config for heroku * recaptcha config for k8s * updated app.json * fixed the typos * added more description for env vars * removed api key * minor typo fix * added new integration button * updated the add int default link * added active and create new tabs * added the empty components to tabs. will control the section manually. * added proper grid for integrations page * added vertical tabs * Added secondary tabs to integrations page * added separate page for new apis * classname changes * added new components for active queries, new queries etc. * added a separate component for data source list * adding screen component conditionally, to be showing upon user's choice * 1. Added grid styling to datasource home 2. Added connect buttons to em * fixed data source security banner * updated the styling for new api page * added tertiary menu for active integrations * updated styling for active connections * updated collapse component to work properly * added show more option to active data sources * removed apis/db tabs and replaced em with integrations tab * removed the unnecessary + integrations btn * Ordered the action entries under integrations * updated the getURL with proper params * updated the link of create datasource btn * updated the back btn link from data source editor * added scrollable content to create new * added on click scroll to create new page * fixed a bug, creating new datasource twice * added new action creator for integrations. * updated the query editor to match the over all theme * updated the query editor tabs * Added the run btn to empty response screens * minor fix * updated the bg color of api type drop down * updated the url being visited after delete api/query * removed log * removed unnecessary junk from integrations editor index * clean up, removed unnecessary files * removed useless routes * for debugger only checking if integrations editor * Removed all the links for api/query home pages * not routing to integrations on create query/api * removed the query/datasource/api home pages * fixed scrolling issue * will show a list of queries and apis for action picker * showing icons for each action under integrations * added a way to list data sources in action creators * cam show icons for datasources * linked integration tab movement to URL * fixed the create new query bug * removed search * added the auto redirection mode * added new mode to support showing mock data bases * on click show more works properly * removed extra padding * removed height * showing all the data sources on active tab * fixed the creation of google sheet * updated the proper routing for curl * fixed page height * removed loader * added a spinner for creating a new api * will be showing edit/add query permanantly * updated the redirection on save and delete datasource * fixed the redirection logic on delete * will not show security banner * added empty state for active data sources * updated the hover state * minor fix to redirect on delete from entity pane * fixed a cy command to create new api * fixed a command to select api/query from lightning menu * updated the navigate to data source editor * removed add btns for new int creation * updated the testSaveDeleteDatasource command * fixed bind table text pagination spec * more test case fixes for deleting a query using context menu * update curl test * updated curl post import spec * fixed click from apis to integrations * updated execute db query command + updated delete query mech * updated CreationOfUniqueAPIcheck command * updated query datasource spec * fixed an action creator bug. * fixed curl api creation bug * removed irrelavent part of the test * fixed the button colors * updated back link from datasource page * Revert url validation changes for the debugger since this is used to check whether we are on a query or an api and show its dependencies * updated a test case to open integrations option in action selectors * Update app/client/src/pages/Editor/IntegrationEditor/DatasourceCard.tsx Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com> * separated msg * styling fixes for collapse component * renamed a file * declared a new const in theme * updated border * removed a faint line from collapse card * removed unnecessary condition * updated component name * log removed * split action creator file * updated the icon usage in action creators * can properly fetch mock data sources * can show mock databases in create new * can use mock db sources * fixed the scrollbars * updated the api icon for both global search + action creator * updated integrations name in datasources * added a back to canvas ribbon * updated query and api editor to show back to canvas ribbon * added a ribbon to go back * updated button styles * updated the action creator and test commands/classes * updates to show the proper mock databases * added proper type for mock datasources * removed unnecessary log * updated a test case to work with new nav * minor updates for tests * updated a command to properly delete a datasource * minor redirection fix * made the mock db api call unblocking * fixed scroll bars all over * fixed bg colors for back ribbons * declared a constant for thin scrollbar * removed unnecessary action. Co-authored-by: Akash N <akash@codemonk.in> Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com>
2021-06-30 18:21:52 +00:00
import {
fetchDatasources,
fetchMockDatasources,
} from "actions/datasourceActions";
import { fetchPluginFormConfigs, fetchPlugins } from "actions/pluginActions";
import { fetchActions, fetchActionsForView } from "actions/actionActions";
import { fetchApplication } from "actions/applicationActions";
2020-03-06 04:59:24 +00:00
import AnalyticsUtil from "utils/AnalyticsUtil";
import { getCurrentApplication } from "selectors/applicationSelectors";
import { APP_MODE } from "reducers/entityReducers/appReducer";
2021-03-24 05:09:47 +00:00
import { getPersistentAppStore } from "constants/AppConstants";
import { getDefaultPageId } from "./selectors";
import { populatePageDSLsSaga } from "./PageSagas";
2021-01-14 14:37:21 +00:00
import log from "loglevel";
import * as Sentry from "@sentry/react";
2021-03-08 08:24:12 +00:00
import {
resetRecentEntities,
2021-03-31 07:40:59 +00:00
restoreRecentEntitiesRequest,
2021-03-08 08:24:12 +00:00
} from "actions/globalSearchActions";
import { resetEditorSuccess } from "actions/initActions";
2021-03-31 07:40:59 +00:00
import PerformanceTracker, {
PerformanceTransactionName,
} from "utils/PerformanceTracker";
import { executePageLoadActions } from "actions/widgetActions";
import { getIsEditorInitialized } from "selectors/editorSelectors";
import { getIsInitialized as getIsViewerInitialized } from "selectors/appViewSelectors";
function* failFastApiCalls(
triggerActions: Array<ReduxAction<unknown> | ReduxActionWithoutPayload>,
successActions: string[],
failureActions: string[],
) {
const triggerEffects = [];
for (const triggerAction of triggerActions) {
triggerEffects.push(put(triggerAction));
}
const successEffects = [];
for (const successAction of successActions) {
successEffects.push(take(successAction));
}
yield all(triggerEffects);
const effectRaceResult = yield race({
success: all(successEffects),
failure: take(failureActions),
});
if (effectRaceResult.failure) {
yield put({
type: ReduxActionTypes.SAFE_CRASH_APPSMITH_REQUEST,
payload: {
code: get(
effectRaceResult,
"failure.payload.error.code",
ERROR_CODES.SERVER_ERROR,
),
},
});
return false;
}
return true;
}
2019-11-01 07:11:32 +00:00
function* initializeEditorSaga(
initializeEditorAction: ReduxAction<InitializeEditorPayload>,
) {
2020-03-24 14:05:19 +00:00
const { applicationId, pageId } = initializeEditorAction.payload;
try {
2021-03-31 07:40:59 +00:00
PerformanceTracker.startAsyncTracking(
PerformanceTransactionName.INIT_EDIT_APP,
);
yield put(setAppMode(APP_MODE.EDIT));
2021-03-24 05:09:47 +00:00
yield put(updateAppPersistentStore(getPersistentAppStore(applicationId)));
yield put({ type: ReduxActionTypes.START_EVALUATION });
const applicationAndLayoutCalls = yield failFastApiCalls(
[
fetchPageList(applicationId, APP_MODE.EDIT),
fetchPage(pageId, true),
fetchApplication(applicationId, APP_MODE.EDIT),
],
[
ReduxActionTypes.FETCH_PAGE_LIST_SUCCESS,
ReduxActionTypes.FETCH_PAGE_SUCCESS,
ReduxActionTypes.FETCH_APPLICATION_SUCCESS,
],
[
ReduxActionErrorTypes.FETCH_PAGE_LIST_ERROR,
ReduxActionErrorTypes.FETCH_PAGE_ERROR,
ReduxActionErrorTypes.FETCH_APPLICATION_ERROR,
],
);
if (!applicationAndLayoutCalls) return;
const pluginsAndDatasourcesCalls = yield failFastApiCalls(
[Feature #4542] : simple nav unify api/datasource (#4987) * temp commit * using onsubmit to continue using action on form * added recaptcha site key to env example file * moved the recaptcha lib loading logic to signup page * removed unnecessary edit * handle the case where the recaptcha token is not provided as env var * added proper env var config for client * recaptcha config for ansible * recaptcha config for heroku * recaptcha config for k8s * updated app.json * fixed the typos * added more description for env vars * removed api key * minor typo fix * added new integration button * updated the add int default link * added active and create new tabs * added the empty components to tabs. will control the section manually. * added proper grid for integrations page * added vertical tabs * Added secondary tabs to integrations page * added separate page for new apis * classname changes * added new components for active queries, new queries etc. * added a separate component for data source list * adding screen component conditionally, to be showing upon user's choice * 1. Added grid styling to datasource home 2. Added connect buttons to em * fixed data source security banner * updated the styling for new api page * added tertiary menu for active integrations * updated styling for active connections * updated collapse component to work properly * added show more option to active data sources * removed apis/db tabs and replaced em with integrations tab * removed the unnecessary + integrations btn * Ordered the action entries under integrations * updated the getURL with proper params * updated the link of create datasource btn * updated the back btn link from data source editor * added scrollable content to create new * added on click scroll to create new page * fixed a bug, creating new datasource twice * added new action creator for integrations. * updated the query editor to match the over all theme * updated the query editor tabs * Added the run btn to empty response screens * minor fix * updated the bg color of api type drop down * updated the url being visited after delete api/query * removed log * removed unnecessary junk from integrations editor index * clean up, removed unnecessary files * removed useless routes * for debugger only checking if integrations editor * Removed all the links for api/query home pages * not routing to integrations on create query/api * removed the query/datasource/api home pages * fixed scrolling issue * will show a list of queries and apis for action picker * showing icons for each action under integrations * added a way to list data sources in action creators * cam show icons for datasources * linked integration tab movement to URL * fixed the create new query bug * removed search * added the auto redirection mode * added new mode to support showing mock data bases * on click show more works properly * removed extra padding * removed height * showing all the data sources on active tab * fixed the creation of google sheet * updated the proper routing for curl * fixed page height * removed loader * added a spinner for creating a new api * will be showing edit/add query permanantly * updated the redirection on save and delete datasource * fixed the redirection logic on delete * will not show security banner * added empty state for active data sources * updated the hover state * minor fix to redirect on delete from entity pane * fixed a cy command to create new api * fixed a command to select api/query from lightning menu * updated the navigate to data source editor * removed add btns for new int creation * updated the testSaveDeleteDatasource command * fixed bind table text pagination spec * more test case fixes for deleting a query using context menu * update curl test * updated curl post import spec * fixed click from apis to integrations * updated execute db query command + updated delete query mech * updated CreationOfUniqueAPIcheck command * updated query datasource spec * fixed an action creator bug. * fixed curl api creation bug * removed irrelavent part of the test * fixed the button colors * updated back link from datasource page * Revert url validation changes for the debugger since this is used to check whether we are on a query or an api and show its dependencies * updated a test case to open integrations option in action selectors * Update app/client/src/pages/Editor/IntegrationEditor/DatasourceCard.tsx Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com> * separated msg * styling fixes for collapse component * renamed a file * declared a new const in theme * updated border * removed a faint line from collapse card * removed unnecessary condition * updated component name * log removed * split action creator file * updated the icon usage in action creators * can properly fetch mock data sources * can show mock databases in create new * can use mock db sources * fixed the scrollbars * updated the api icon for both global search + action creator * updated integrations name in datasources * added a back to canvas ribbon * updated query and api editor to show back to canvas ribbon * added a ribbon to go back * updated button styles * updated the action creator and test commands/classes * updates to show the proper mock databases * added proper type for mock datasources * removed unnecessary log * updated a test case to work with new nav * minor updates for tests * updated a command to properly delete a datasource * minor redirection fix * made the mock db api call unblocking * fixed scroll bars all over * fixed bg colors for back ribbons * declared a constant for thin scrollbar * removed unnecessary action. Co-authored-by: Akash N <akash@codemonk.in> Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com>
2021-06-30 18:21:52 +00:00
[fetchPlugins(), fetchDatasources(), fetchMockDatasources()],
[
ReduxActionTypes.FETCH_PLUGINS_SUCCESS,
ReduxActionTypes.FETCH_DATASOURCES_SUCCESS,
[Feature #4542] : simple nav unify api/datasource (#4987) * temp commit * using onsubmit to continue using action on form * added recaptcha site key to env example file * moved the recaptcha lib loading logic to signup page * removed unnecessary edit * handle the case where the recaptcha token is not provided as env var * added proper env var config for client * recaptcha config for ansible * recaptcha config for heroku * recaptcha config for k8s * updated app.json * fixed the typos * added more description for env vars * removed api key * minor typo fix * added new integration button * updated the add int default link * added active and create new tabs * added the empty components to tabs. will control the section manually. * added proper grid for integrations page * added vertical tabs * Added secondary tabs to integrations page * added separate page for new apis * classname changes * added new components for active queries, new queries etc. * added a separate component for data source list * adding screen component conditionally, to be showing upon user's choice * 1. Added grid styling to datasource home 2. Added connect buttons to em * fixed data source security banner * updated the styling for new api page * added tertiary menu for active integrations * updated styling for active connections * updated collapse component to work properly * added show more option to active data sources * removed apis/db tabs and replaced em with integrations tab * removed the unnecessary + integrations btn * Ordered the action entries under integrations * updated the getURL with proper params * updated the link of create datasource btn * updated the back btn link from data source editor * added scrollable content to create new * added on click scroll to create new page * fixed a bug, creating new datasource twice * added new action creator for integrations. * updated the query editor to match the over all theme * updated the query editor tabs * Added the run btn to empty response screens * minor fix * updated the bg color of api type drop down * updated the url being visited after delete api/query * removed log * removed unnecessary junk from integrations editor index * clean up, removed unnecessary files * removed useless routes * for debugger only checking if integrations editor * Removed all the links for api/query home pages * not routing to integrations on create query/api * removed the query/datasource/api home pages * fixed scrolling issue * will show a list of queries and apis for action picker * showing icons for each action under integrations * added a way to list data sources in action creators * cam show icons for datasources * linked integration tab movement to URL * fixed the create new query bug * removed search * added the auto redirection mode * added new mode to support showing mock data bases * on click show more works properly * removed extra padding * removed height * showing all the data sources on active tab * fixed the creation of google sheet * updated the proper routing for curl * fixed page height * removed loader * added a spinner for creating a new api * will be showing edit/add query permanantly * updated the redirection on save and delete datasource * fixed the redirection logic on delete * will not show security banner * added empty state for active data sources * updated the hover state * minor fix to redirect on delete from entity pane * fixed a cy command to create new api * fixed a command to select api/query from lightning menu * updated the navigate to data source editor * removed add btns for new int creation * updated the testSaveDeleteDatasource command * fixed bind table text pagination spec * more test case fixes for deleting a query using context menu * update curl test * updated curl post import spec * fixed click from apis to integrations * updated execute db query command + updated delete query mech * updated CreationOfUniqueAPIcheck command * updated query datasource spec * fixed an action creator bug. * fixed curl api creation bug * removed irrelavent part of the test * fixed the button colors * updated back link from datasource page * Revert url validation changes for the debugger since this is used to check whether we are on a query or an api and show its dependencies * updated a test case to open integrations option in action selectors * Update app/client/src/pages/Editor/IntegrationEditor/DatasourceCard.tsx Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com> * separated msg * styling fixes for collapse component * renamed a file * declared a new const in theme * updated border * removed a faint line from collapse card * removed unnecessary condition * updated component name * log removed * split action creator file * updated the icon usage in action creators * can properly fetch mock data sources * can show mock databases in create new * can use mock db sources * fixed the scrollbars * updated the api icon for both global search + action creator * updated integrations name in datasources * added a back to canvas ribbon * updated query and api editor to show back to canvas ribbon * added a ribbon to go back * updated button styles * updated the action creator and test commands/classes * updates to show the proper mock databases * added proper type for mock datasources * removed unnecessary log * updated a test case to work with new nav * minor updates for tests * updated a command to properly delete a datasource * minor redirection fix * made the mock db api call unblocking * fixed scroll bars all over * fixed bg colors for back ribbons * declared a constant for thin scrollbar * removed unnecessary action. Co-authored-by: Akash N <akash@codemonk.in> Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com>
2021-06-30 18:21:52 +00:00
ReduxActionTypes.FETCH_MOCK_DATASOURCES_SUCCESS,
],
[
ReduxActionErrorTypes.FETCH_PLUGINS_ERROR,
ReduxActionErrorTypes.FETCH_DATASOURCES_ERROR,
[Feature #4542] : simple nav unify api/datasource (#4987) * temp commit * using onsubmit to continue using action on form * added recaptcha site key to env example file * moved the recaptcha lib loading logic to signup page * removed unnecessary edit * handle the case where the recaptcha token is not provided as env var * added proper env var config for client * recaptcha config for ansible * recaptcha config for heroku * recaptcha config for k8s * updated app.json * fixed the typos * added more description for env vars * removed api key * minor typo fix * added new integration button * updated the add int default link * added active and create new tabs * added the empty components to tabs. will control the section manually. * added proper grid for integrations page * added vertical tabs * Added secondary tabs to integrations page * added separate page for new apis * classname changes * added new components for active queries, new queries etc. * added a separate component for data source list * adding screen component conditionally, to be showing upon user's choice * 1. Added grid styling to datasource home 2. Added connect buttons to em * fixed data source security banner * updated the styling for new api page * added tertiary menu for active integrations * updated styling for active connections * updated collapse component to work properly * added show more option to active data sources * removed apis/db tabs and replaced em with integrations tab * removed the unnecessary + integrations btn * Ordered the action entries under integrations * updated the getURL with proper params * updated the link of create datasource btn * updated the back btn link from data source editor * added scrollable content to create new * added on click scroll to create new page * fixed a bug, creating new datasource twice * added new action creator for integrations. * updated the query editor to match the over all theme * updated the query editor tabs * Added the run btn to empty response screens * minor fix * updated the bg color of api type drop down * updated the url being visited after delete api/query * removed log * removed unnecessary junk from integrations editor index * clean up, removed unnecessary files * removed useless routes * for debugger only checking if integrations editor * Removed all the links for api/query home pages * not routing to integrations on create query/api * removed the query/datasource/api home pages * fixed scrolling issue * will show a list of queries and apis for action picker * showing icons for each action under integrations * added a way to list data sources in action creators * cam show icons for datasources * linked integration tab movement to URL * fixed the create new query bug * removed search * added the auto redirection mode * added new mode to support showing mock data bases * on click show more works properly * removed extra padding * removed height * showing all the data sources on active tab * fixed the creation of google sheet * updated the proper routing for curl * fixed page height * removed loader * added a spinner for creating a new api * will be showing edit/add query permanantly * updated the redirection on save and delete datasource * fixed the redirection logic on delete * will not show security banner * added empty state for active data sources * updated the hover state * minor fix to redirect on delete from entity pane * fixed a cy command to create new api * fixed a command to select api/query from lightning menu * updated the navigate to data source editor * removed add btns for new int creation * updated the testSaveDeleteDatasource command * fixed bind table text pagination spec * more test case fixes for deleting a query using context menu * update curl test * updated curl post import spec * fixed click from apis to integrations * updated execute db query command + updated delete query mech * updated CreationOfUniqueAPIcheck command * updated query datasource spec * fixed an action creator bug. * fixed curl api creation bug * removed irrelavent part of the test * fixed the button colors * updated back link from datasource page * Revert url validation changes for the debugger since this is used to check whether we are on a query or an api and show its dependencies * updated a test case to open integrations option in action selectors * Update app/client/src/pages/Editor/IntegrationEditor/DatasourceCard.tsx Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com> * separated msg * styling fixes for collapse component * renamed a file * declared a new const in theme * updated border * removed a faint line from collapse card * removed unnecessary condition * updated component name * log removed * split action creator file * updated the icon usage in action creators * can properly fetch mock data sources * can show mock databases in create new * can use mock db sources * fixed the scrollbars * updated the api icon for both global search + action creator * updated integrations name in datasources * added a back to canvas ribbon * updated query and api editor to show back to canvas ribbon * added a ribbon to go back * updated button styles * updated the action creator and test commands/classes * updates to show the proper mock databases * added proper type for mock datasources * removed unnecessary log * updated a test case to work with new nav * minor updates for tests * updated a command to properly delete a datasource * minor redirection fix * made the mock db api call unblocking * fixed scroll bars all over * fixed bg colors for back ribbons * declared a constant for thin scrollbar * removed unnecessary action. Co-authored-by: Akash N <akash@codemonk.in> Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com>
2021-06-30 18:21:52 +00:00
ReduxActionErrorTypes.FETCH_MOCK_DATASOURCES_ERROR,
],
);
if (!pluginsAndDatasourcesCalls) return;
const pluginFormCall = yield failFastApiCalls(
[fetchPluginFormConfigs()],
[ReduxActionTypes.FETCH_PLUGIN_FORM_CONFIGS_SUCCESS],
[ReduxActionErrorTypes.FETCH_PLUGIN_FORM_CONFIGS_ERROR],
);
if (!pluginFormCall) return;
const actionsCall = yield failFastApiCalls(
[fetchActions(applicationId, [executePageLoadActions()])],
[ReduxActionTypes.FETCH_ACTIONS_SUCCESS],
[ReduxActionErrorTypes.FETCH_ACTIONS_ERROR],
);
if (!actionsCall) return;
2020-03-06 04:59:24 +00:00
const currentApplication = yield select(getCurrentApplication);
2020-03-06 04:59:24 +00:00
const appName = currentApplication ? currentApplication.name : "";
const appId = currentApplication ? currentApplication.id : "";
yield put(restoreRecentEntitiesRequest(applicationId));
AnalyticsUtil.logEvent("EDITOR_OPEN", {
appId: appId,
appName: appName,
});
yield put({
type: ReduxActionTypes.INITIALIZE_EDITOR_SUCCESS,
});
2021-03-31 07:40:59 +00:00
PerformanceTracker.stopAsyncTracking(
PerformanceTransactionName.INIT_EDIT_APP,
);
} catch (e) {
2021-01-14 14:37:21 +00:00
log.error(e);
Sentry.captureException(e);
yield put({
type: ReduxActionTypes.SAFE_CRASH_APPSMITH_REQUEST,
payload: {
code: ERROR_CODES.SERVER_ERROR,
},
});
return;
}
yield call(populatePageDSLsSaga);
2019-11-01 07:11:32 +00:00
}
2019-11-08 11:02:00 +00:00
export function* initializeAppViewerSaga(
action: ReduxAction<{ applicationId: string; pageId: string }>,
2019-11-08 11:02:00 +00:00
) {
const { applicationId, pageId } = action.payload;
2021-03-31 07:40:59 +00:00
PerformanceTracker.startAsyncTracking(
PerformanceTransactionName.INIT_VIEW_APP,
);
[API breaking change : Automated Tests Will Fail] Page And Action Refactor (#549) * Introduced new page which stores the published and unpublished pages as separate. * Mid level commit to save the state. * Parity of new page repository with old page repository (custom functions) * WIP : Delete a page. This requires changes across application structure as well. * Added publishedPages construct inside application to store the pages in the deployed view as well as isDefault so that the same changes (delete or isDefault) in unpublished view doesn't alter these fields for the published application * Parity reached with PageService. * Minor ActionService refactor to remove unnecessary code. ApplicationPageService, LayoutActionService, LayoutService use the new page service to fetch the pages Minor corrections in fetching the page from new page service in tests * New save function which sets the PageDTO for unpublished page and then saves the new page into repository. * Migration of page service functions to new page service functions across other services/tests/controller * Finished migrating all the page service functions to the new page service functions * Application Service Tests have been fixed. * All the existing test cases are working now. * Publish application implemented to store published pages as well. Added a basic test case to check that published pages is being set and that page's publishedPageDTO is being set accordingly. * Minor TODOs added to add test cases for published application. * A few tests to ascertain that published application page fields (deleted, isDefault) does not get changed when these statuses are changed for a page in edit mode. * Added a new controller end point to fetch application in view mode. * Added new endpoint for fetching an application in view mode on the client. * Bug fix where get application in view mode API was not getting called. * Fixed the get page names by application & archive pages which have been deleted in edit mode during publishing of application. * During delete page, if a page was never published and it was deleted during edit, delete the entire page instead of just deleting the unpublished PageDTO * Minor formatting. * Non working client side code to fetch page list using view mode. * revert unnecassary changes and streamlined view and edit actions * Fix missed import * Fixed a bug where if a page is not published, it should not be returned in view mode in list of page names api. * Fixed update for a page which was not working in integration test. * ActionDTO added. * Solidified the new action structure. * Migration added for NewAction index creation and NewAction per Action insertion in the database. * Basic file structure added the new repository, custom repository, service, etc. * Delete OldPage.java * Repo functions added - TODO : Haven;t handled the published/edited views * Helper functions added to convert Action to NewAction and vice-versa. Removed unused currentUserMono usage. * Create & update action functionality added. * Execute Action refactored. Removed dry run specific code. * Repository migrated to handle new data structure. Execute action refactored to no longer support dry runs of actions. * TODO added for special handling of change view of application to handle edge cases of pages/actions which either exist in published mode but don't exist in unpublished mode or vice versa. * Migrated finding on load actions from spring repository to custom repository. * In view mode, now actions are being fetched by application id directly instead of first fetching application and then using the page ids, fetching the actions. This reduces the db calls from 2 to 1 per fetch actions in view mode api call. * Delete action and get all actions (used in edit mode on the client side) implemented. * Updated CollectionService and ActionCollectionService to use the new action service instead of the old one. * LayoutActionService refactored to now use the new service functions. * ActionController now no longer used ActionService. The remaining service functions have been migrated to the new action service. * Refactor across ACL code for addition/removal of policies during addition/removal of users to organization, making app public, refactor for services like policy utils, item service, etc. * Removed the last of action repository and action service and replaced with new action repo and new action service. * Compile and run time issues fixed. The server is coming up without any spring dependency errors. * WIP in fixing fetching actions by page id. * Finally!!! Fixed the fetch actions (both published and unpublished actions) by page id repository function. * Fixed create action bug where null datasource in published actiondto (inside newly created action) leads to error. * Fixed the execute action issues : 1. Removed the dry runs from the tests 2. Fixed the null pointer error in variable substituted action and datasource configurations. * 1. Fixed the custom action repository field names. 2. Fixed the data structures used in ExamplesOrganizationClonerTests * Fixed countByDatasourceId repository function which was querying the actions incorrectly. * Fixed the clone example organization error where the id of the action was not getting updated in the page correctly. Yay! * Fixed post merge compilation failure. * Fixed more compilation time failures in ActionServiceTest * Fixed failing test case for fetching actions in view mode. * Minor changes to resolve merge changes and incorporate in the new refactored code. * 1. Fixed compile time errors on Client code. 2. Fixed fetching of actions in view mode by application id. The repository function did not need name parameter. Removed the same. * [Integration Testing Error Fix] : Added a new test case for refactor action name. * Instead of fetching actions in the page, mistakenly used the base service which was fetching all the actions in the repository, barring none which led to the name refactor being blocked even though no action in the current page exists with the new proposed name, * Added delete functionality to action service. * Minor code cleanup * Adding viewMode to action execution * Replacing action with actionId. * 1. Bug fix for deletion of unpublished action. In case of never published action, the entire action should be deleted. In case an action was published, only the unpublished action should be deleted. 2. In case of DB actions (external datasources), only the bare minimum fields should be stored inside the action (datasource id and datasource plugin id). The other fields should not be duplicated across code. * Fixed yarn build compilation issues. * Update app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ActionController.java Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com> * Changed the API path for GET applications in view mode. Some minor code formatting. * Incorporated review comments. * Some more unnecessary code removed. * Instead of returning Page, now the interface object between client and server for Pages is PageDTO * Migrated Page and Action to PageDTO and ActionDTO Fixed the compilation issues. TODO : Fix the test compilation issues. * Fixed compilation time issues with all the tests by migrating Page and Action to PageDTO and ActionDTO respectively * Action Controller and Page Controller no longer extend Base Controller. All the required functions have now been implemented and no base line API end points are being re-used from the base. * Test case fixes. * Bug Fix : Updating an action was not updating execute on load. Fixed the data flow leading to the error. * Deprecating Page and Action domain objects. This is to ensure no new code is written with these till we remove this old code. * Cloned example applications are now published before returning. This is to ensure that the applications are in ready to view mode when the new user signs up. * Added a function comment to expand on the usage of new param introduced. * When cloning a page, new actions were not being stored. Added that. Also updated the clonePage test to assert that the actions are also cloned when the pages are cloned. * Updated a Api call * removed extra slash Co-authored-by: Hetu Nandu <hetunandu@gmail.com> Co-authored-by: Satbir Singh <satbir121@gmail.com> Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com> Co-authored-by: nandan.anantharamu <nandan@thinkify.io>
2020-10-26 12:34:23 +00:00
yield put(setAppMode(APP_MODE.PUBLISHED));
2021-03-24 05:09:47 +00:00
yield put(updateAppPersistentStore(getPersistentAppStore(applicationId)));
2020-10-23 18:02:59 +00:00
yield put({ type: ReduxActionTypes.START_EVALUATION });
2020-01-24 09:54:40 +00:00
yield all([
[API breaking change : Automated Tests Will Fail] Page And Action Refactor (#549) * Introduced new page which stores the published and unpublished pages as separate. * Mid level commit to save the state. * Parity of new page repository with old page repository (custom functions) * WIP : Delete a page. This requires changes across application structure as well. * Added publishedPages construct inside application to store the pages in the deployed view as well as isDefault so that the same changes (delete or isDefault) in unpublished view doesn't alter these fields for the published application * Parity reached with PageService. * Minor ActionService refactor to remove unnecessary code. ApplicationPageService, LayoutActionService, LayoutService use the new page service to fetch the pages Minor corrections in fetching the page from new page service in tests * New save function which sets the PageDTO for unpublished page and then saves the new page into repository. * Migration of page service functions to new page service functions across other services/tests/controller * Finished migrating all the page service functions to the new page service functions * Application Service Tests have been fixed. * All the existing test cases are working now. * Publish application implemented to store published pages as well. Added a basic test case to check that published pages is being set and that page's publishedPageDTO is being set accordingly. * Minor TODOs added to add test cases for published application. * A few tests to ascertain that published application page fields (deleted, isDefault) does not get changed when these statuses are changed for a page in edit mode. * Added a new controller end point to fetch application in view mode. * Added new endpoint for fetching an application in view mode on the client. * Bug fix where get application in view mode API was not getting called. * Fixed the get page names by application & archive pages which have been deleted in edit mode during publishing of application. * During delete page, if a page was never published and it was deleted during edit, delete the entire page instead of just deleting the unpublished PageDTO * Minor formatting. * Non working client side code to fetch page list using view mode. * revert unnecassary changes and streamlined view and edit actions * Fix missed import * Fixed a bug where if a page is not published, it should not be returned in view mode in list of page names api. * Fixed update for a page which was not working in integration test. * ActionDTO added. * Solidified the new action structure. * Migration added for NewAction index creation and NewAction per Action insertion in the database. * Basic file structure added the new repository, custom repository, service, etc. * Delete OldPage.java * Repo functions added - TODO : Haven;t handled the published/edited views * Helper functions added to convert Action to NewAction and vice-versa. Removed unused currentUserMono usage. * Create & update action functionality added. * Execute Action refactored. Removed dry run specific code. * Repository migrated to handle new data structure. Execute action refactored to no longer support dry runs of actions. * TODO added for special handling of change view of application to handle edge cases of pages/actions which either exist in published mode but don't exist in unpublished mode or vice versa. * Migrated finding on load actions from spring repository to custom repository. * In view mode, now actions are being fetched by application id directly instead of first fetching application and then using the page ids, fetching the actions. This reduces the db calls from 2 to 1 per fetch actions in view mode api call. * Delete action and get all actions (used in edit mode on the client side) implemented. * Updated CollectionService and ActionCollectionService to use the new action service instead of the old one. * LayoutActionService refactored to now use the new service functions. * ActionController now no longer used ActionService. The remaining service functions have been migrated to the new action service. * Refactor across ACL code for addition/removal of policies during addition/removal of users to organization, making app public, refactor for services like policy utils, item service, etc. * Removed the last of action repository and action service and replaced with new action repo and new action service. * Compile and run time issues fixed. The server is coming up without any spring dependency errors. * WIP in fixing fetching actions by page id. * Finally!!! Fixed the fetch actions (both published and unpublished actions) by page id repository function. * Fixed create action bug where null datasource in published actiondto (inside newly created action) leads to error. * Fixed the execute action issues : 1. Removed the dry runs from the tests 2. Fixed the null pointer error in variable substituted action and datasource configurations. * 1. Fixed the custom action repository field names. 2. Fixed the data structures used in ExamplesOrganizationClonerTests * Fixed countByDatasourceId repository function which was querying the actions incorrectly. * Fixed the clone example organization error where the id of the action was not getting updated in the page correctly. Yay! * Fixed post merge compilation failure. * Fixed more compilation time failures in ActionServiceTest * Fixed failing test case for fetching actions in view mode. * Minor changes to resolve merge changes and incorporate in the new refactored code. * 1. Fixed compile time errors on Client code. 2. Fixed fetching of actions in view mode by application id. The repository function did not need name parameter. Removed the same. * [Integration Testing Error Fix] : Added a new test case for refactor action name. * Instead of fetching actions in the page, mistakenly used the base service which was fetching all the actions in the repository, barring none which led to the name refactor being blocked even though no action in the current page exists with the new proposed name, * Added delete functionality to action service. * Minor code cleanup * Adding viewMode to action execution * Replacing action with actionId. * 1. Bug fix for deletion of unpublished action. In case of never published action, the entire action should be deleted. In case an action was published, only the unpublished action should be deleted. 2. In case of DB actions (external datasources), only the bare minimum fields should be stored inside the action (datasource id and datasource plugin id). The other fields should not be duplicated across code. * Fixed yarn build compilation issues. * Update app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ActionController.java Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com> * Changed the API path for GET applications in view mode. Some minor code formatting. * Incorporated review comments. * Some more unnecessary code removed. * Instead of returning Page, now the interface object between client and server for Pages is PageDTO * Migrated Page and Action to PageDTO and ActionDTO Fixed the compilation issues. TODO : Fix the test compilation issues. * Fixed compilation time issues with all the tests by migrating Page and Action to PageDTO and ActionDTO respectively * Action Controller and Page Controller no longer extend Base Controller. All the required functions have now been implemented and no base line API end points are being re-used from the base. * Test case fixes. * Bug Fix : Updating an action was not updating execute on load. Fixed the data flow leading to the error. * Deprecating Page and Action domain objects. This is to ensure no new code is written with these till we remove this old code. * Cloned example applications are now published before returning. This is to ensure that the applications are in ready to view mode when the new user signs up. * Added a function comment to expand on the usage of new param introduced. * When cloning a page, new actions were not being stored. Added that. Also updated the clonePage test to assert that the actions are also cloned when the pages are cloned. * Updated a Api call * removed extra slash Co-authored-by: Hetu Nandu <hetunandu@gmail.com> Co-authored-by: Satbir Singh <satbir121@gmail.com> Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com> Co-authored-by: nandan.anantharamu <nandan@thinkify.io>
2020-10-26 12:34:23 +00:00
// TODO (hetu) Remove spl view call for fetch actions
put(fetchActionsForView(applicationId)),
[API breaking change : Automated Tests Will Fail] Page And Action Refactor (#549) * Introduced new page which stores the published and unpublished pages as separate. * Mid level commit to save the state. * Parity of new page repository with old page repository (custom functions) * WIP : Delete a page. This requires changes across application structure as well. * Added publishedPages construct inside application to store the pages in the deployed view as well as isDefault so that the same changes (delete or isDefault) in unpublished view doesn't alter these fields for the published application * Parity reached with PageService. * Minor ActionService refactor to remove unnecessary code. ApplicationPageService, LayoutActionService, LayoutService use the new page service to fetch the pages Minor corrections in fetching the page from new page service in tests * New save function which sets the PageDTO for unpublished page and then saves the new page into repository. * Migration of page service functions to new page service functions across other services/tests/controller * Finished migrating all the page service functions to the new page service functions * Application Service Tests have been fixed. * All the existing test cases are working now. * Publish application implemented to store published pages as well. Added a basic test case to check that published pages is being set and that page's publishedPageDTO is being set accordingly. * Minor TODOs added to add test cases for published application. * A few tests to ascertain that published application page fields (deleted, isDefault) does not get changed when these statuses are changed for a page in edit mode. * Added a new controller end point to fetch application in view mode. * Added new endpoint for fetching an application in view mode on the client. * Bug fix where get application in view mode API was not getting called. * Fixed the get page names by application & archive pages which have been deleted in edit mode during publishing of application. * During delete page, if a page was never published and it was deleted during edit, delete the entire page instead of just deleting the unpublished PageDTO * Minor formatting. * Non working client side code to fetch page list using view mode. * revert unnecassary changes and streamlined view and edit actions * Fix missed import * Fixed a bug where if a page is not published, it should not be returned in view mode in list of page names api. * Fixed update for a page which was not working in integration test. * ActionDTO added. * Solidified the new action structure. * Migration added for NewAction index creation and NewAction per Action insertion in the database. * Basic file structure added the new repository, custom repository, service, etc. * Delete OldPage.java * Repo functions added - TODO : Haven;t handled the published/edited views * Helper functions added to convert Action to NewAction and vice-versa. Removed unused currentUserMono usage. * Create & update action functionality added. * Execute Action refactored. Removed dry run specific code. * Repository migrated to handle new data structure. Execute action refactored to no longer support dry runs of actions. * TODO added for special handling of change view of application to handle edge cases of pages/actions which either exist in published mode but don't exist in unpublished mode or vice versa. * Migrated finding on load actions from spring repository to custom repository. * In view mode, now actions are being fetched by application id directly instead of first fetching application and then using the page ids, fetching the actions. This reduces the db calls from 2 to 1 per fetch actions in view mode api call. * Delete action and get all actions (used in edit mode on the client side) implemented. * Updated CollectionService and ActionCollectionService to use the new action service instead of the old one. * LayoutActionService refactored to now use the new service functions. * ActionController now no longer used ActionService. The remaining service functions have been migrated to the new action service. * Refactor across ACL code for addition/removal of policies during addition/removal of users to organization, making app public, refactor for services like policy utils, item service, etc. * Removed the last of action repository and action service and replaced with new action repo and new action service. * Compile and run time issues fixed. The server is coming up without any spring dependency errors. * WIP in fixing fetching actions by page id. * Finally!!! Fixed the fetch actions (both published and unpublished actions) by page id repository function. * Fixed create action bug where null datasource in published actiondto (inside newly created action) leads to error. * Fixed the execute action issues : 1. Removed the dry runs from the tests 2. Fixed the null pointer error in variable substituted action and datasource configurations. * 1. Fixed the custom action repository field names. 2. Fixed the data structures used in ExamplesOrganizationClonerTests * Fixed countByDatasourceId repository function which was querying the actions incorrectly. * Fixed the clone example organization error where the id of the action was not getting updated in the page correctly. Yay! * Fixed post merge compilation failure. * Fixed more compilation time failures in ActionServiceTest * Fixed failing test case for fetching actions in view mode. * Minor changes to resolve merge changes and incorporate in the new refactored code. * 1. Fixed compile time errors on Client code. 2. Fixed fetching of actions in view mode by application id. The repository function did not need name parameter. Removed the same. * [Integration Testing Error Fix] : Added a new test case for refactor action name. * Instead of fetching actions in the page, mistakenly used the base service which was fetching all the actions in the repository, barring none which led to the name refactor being blocked even though no action in the current page exists with the new proposed name, * Added delete functionality to action service. * Minor code cleanup * Adding viewMode to action execution * Replacing action with actionId. * 1. Bug fix for deletion of unpublished action. In case of never published action, the entire action should be deleted. In case an action was published, only the unpublished action should be deleted. 2. In case of DB actions (external datasources), only the bare minimum fields should be stored inside the action (datasource id and datasource plugin id). The other fields should not be duplicated across code. * Fixed yarn build compilation issues. * Update app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ActionController.java Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com> * Changed the API path for GET applications in view mode. Some minor code formatting. * Incorporated review comments. * Some more unnecessary code removed. * Instead of returning Page, now the interface object between client and server for Pages is PageDTO * Migrated Page and Action to PageDTO and ActionDTO Fixed the compilation issues. TODO : Fix the test compilation issues. * Fixed compilation time issues with all the tests by migrating Page and Action to PageDTO and ActionDTO respectively * Action Controller and Page Controller no longer extend Base Controller. All the required functions have now been implemented and no base line API end points are being re-used from the base. * Test case fixes. * Bug Fix : Updating an action was not updating execute on load. Fixed the data flow leading to the error. * Deprecating Page and Action domain objects. This is to ensure no new code is written with these till we remove this old code. * Cloned example applications are now published before returning. This is to ensure that the applications are in ready to view mode when the new user signs up. * Added a function comment to expand on the usage of new param introduced. * When cloning a page, new actions were not being stored. Added that. Also updated the clonePage test to assert that the actions are also cloned when the pages are cloned. * Updated a Api call * removed extra slash Co-authored-by: Hetu Nandu <hetunandu@gmail.com> Co-authored-by: Satbir Singh <satbir121@gmail.com> Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com> Co-authored-by: nandan.anantharamu <nandan@thinkify.io>
2020-10-26 12:34:23 +00:00
put(fetchPageList(applicationId, APP_MODE.PUBLISHED)),
put(fetchApplication(applicationId, APP_MODE.PUBLISHED)),
2020-01-24 09:54:40 +00:00
]);
const resultOfPrimaryCalls = yield race({
success: all([
take(ReduxActionTypes.FETCH_ACTIONS_VIEW_MODE_SUCCESS),
take(ReduxActionTypes.FETCH_PAGE_LIST_SUCCESS),
take(ReduxActionTypes.FETCH_APPLICATION_SUCCESS),
]),
failure: take([
ReduxActionErrorTypes.FETCH_ACTIONS_VIEW_MODE_ERROR,
ReduxActionErrorTypes.FETCH_PAGE_LIST_ERROR,
ReduxActionErrorTypes.FETCH_APPLICATION_ERROR,
]),
});
if (resultOfPrimaryCalls.failure) {
yield put({
type: ReduxActionTypes.SAFE_CRASH_APPSMITH_REQUEST,
payload: {
code: get(
resultOfPrimaryCalls,
"failure.payload.error.code",
ERROR_CODES.SERVER_ERROR,
),
},
});
return;
}
const defaultPageId = yield select(getDefaultPageId);
const toLoadPageId = pageId || defaultPageId;
if (toLoadPageId) {
yield put(fetchPublishedPage(toLoadPageId, true));
const resultOfFetchPage = yield race({
success: take(ReduxActionTypes.FETCH_PUBLISHED_PAGE_SUCCESS),
failure: take(ReduxActionErrorTypes.FETCH_PUBLISHED_PAGE_ERROR),
});
if (resultOfFetchPage.failure) {
yield put({
type: ReduxActionTypes.SAFE_CRASH_APPSMITH_REQUEST,
payload: {
code: get(
resultOfFetchPage,
"failure.payload.error.code",
ERROR_CODES.SERVER_ERROR,
),
},
});
return;
}
yield put(setAppMode(APP_MODE.PUBLISHED));
yield put({
type: ReduxActionTypes.INITIALIZE_PAGE_VIEWER_SUCCESS,
});
2021-03-31 07:40:59 +00:00
PerformanceTracker.stopAsyncTracking(
PerformanceTransactionName.INIT_VIEW_APP,
);
if ("serviceWorker" in navigator) {
yield put({
type: ReduxActionTypes.FETCH_ALL_PUBLISHED_PAGES,
});
}
}
2019-11-08 11:02:00 +00:00
}
2021-03-08 08:24:12 +00:00
function* resetEditorSaga() {
yield put(resetEditorSuccess());
yield put(resetRecentEntities());
}
export function* waitForInit() {
const isEditorInitialised = yield select(getIsEditorInitialized);
const isViewerInitialized = yield select(getIsViewerInitialized);
if (!isEditorInitialised && !isViewerInitialized) {
yield take([
ReduxActionTypes.INITIALIZE_EDITOR_SUCCESS,
ReduxActionTypes.INITIALIZE_PAGE_VIEWER_SUCCESS,
]);
}
}
2019-11-01 07:11:32 +00:00
export default function* watchInitSagas() {
2019-11-08 11:02:00 +00:00
yield all([
takeLatest(ReduxActionTypes.INITIALIZE_EDITOR, initializeEditorSaga),
2019-11-08 11:02:00 +00:00
takeLatest(
ReduxActionTypes.INITIALIZE_PAGE_VIEWER,
initializeAppViewerSaga,
),
2021-03-08 08:24:12 +00:00
takeLatest(ReduxActionTypes.RESET_EDITOR_REQUEST, resetEditorSaga),
2019-11-08 11:02:00 +00:00
]);
2019-11-01 07:11:32 +00:00
}