PromucFlow_constructor/app/client/src/sagas/PageSagas.tsx

104 lines
2.9 KiB
TypeScript
Raw Normal View History

import CanvasWidgetsNormalizer from "../normalizers/CanvasWidgetsNormalizer";
import {
ReduxActionTypes,
ReduxAction,
LoadCanvasWidgetsPayload,
} from "../constants/ReduxActionConstants";
import {
loadCanvasWidgets,
savePageError,
savePageSuccess,
} from "../actions/pageActions";
import PageApi, {
FetchPageResponse,
SavePageResponse,
FetchPageRequest,
SavePageRequest,
} from "../api/PageApi";
import { call, put, takeLatest, all } from "redux-saga/effects";
import { RenderModes } from "../constants/WidgetConstants";
export function* fetchPage(pageRequestAction: ReduxAction<FetchPageRequest>) {
const pageRequest = pageRequestAction.payload;
2019-08-26 12:41:21 +00:00
try {
// const pageResponse: PageResponse = yield call(
// PageApi.fetchPage,
// pageRequest,
// );
2019-08-26 12:41:21 +00:00
if (pageRequest.renderMode === RenderModes.CANVAS) {
const pageResponse = JSON.parse(`{
"responseMeta": {},
"layout": {
"dsl": {
"widgetId": "0",
"type": "CONTAINER_WIDGET",
"snapColumns": 16,
"snapRows": 100,
"topRow": 0,
"bottomRow": 2000,
"leftColumn": 0,
"rightColumn": 1000,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"backgroundColor": "#ffffff",
"renderMode": "CANVAS",
"children": [
{
"widgetId": "1",
"type": "CONTAINER_WIDGET",
"snapColumns": 10,
"snapRows": 10,
"topRow": 1,
"bottomRow": 20,
"leftColumn": 1,
"rightColumn": 16,
"backgroundColor": "#000000",
"renderMode": "CANVAS",
"children": []
}
]
}
}
}`);
const normalizedResponse = CanvasWidgetsNormalizer.normalize(
pageResponse,
);
2019-09-13 09:56:11 +00:00
const canvasWidgetsPayload: LoadCanvasWidgetsPayload = {
2019-08-26 12:41:21 +00:00
pageWidgetId: normalizedResponse.result,
widgets: normalizedResponse.entities.canvasWidgets,
};
yield put(loadCanvasWidgets(canvasWidgetsPayload));
yield put({
type: ReduxActionTypes.LOAD_CANVAS_ACTIONS,
payload: pageResponse.layout.actions,
});
}
} catch (err) {
console.log(err);
2019-08-26 12:41:21 +00:00
//TODO(abhinav): REFACTOR THIS
}
}
export function* savePage(savePageAction: ReduxAction<SavePageRequest>) {
const savePageRequest = savePageAction.payload;
try {
const savePageResponse: SavePageResponse = yield call(
PageApi.savePage,
savePageRequest,
);
yield put(savePageSuccess(savePageResponse));
} catch (err) {
console.log(err);
yield put(savePageError(err));
}
}
export default function* pageSagas() {
yield all([
takeLatest(ReduxActionTypes.FETCH_PAGE, fetchPage),
takeLatest(ReduxActionTypes.SAVE_PAGE_INIT, savePage),
]);
}