55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
|
|
import { updateAndSaveLayout } from "actions/pageActions";
|
||
|
|
import {
|
||
|
|
ReduxAction,
|
||
|
|
ReduxActionErrorTypes,
|
||
|
|
ReduxActionTypes,
|
||
|
|
} from "ce/constants/ReduxActionConstants";
|
||
|
|
import log from "loglevel";
|
||
|
|
import { CanvasWidgetsReduxState } from "reducers/entityReducers/canvasWidgetsReducer";
|
||
|
|
import { all, put, select, takeLatest } from "redux-saga/effects";
|
||
|
|
import {
|
||
|
|
alterLayoutForDesktop,
|
||
|
|
alterLayoutForMobile,
|
||
|
|
} from "utils/autoLayout/AutoLayoutUtils";
|
||
|
|
import { getWidgets } from "./selectors";
|
||
|
|
|
||
|
|
export function* updateLayoutForMobileCheckpoint(
|
||
|
|
actionPayload: ReduxAction<{
|
||
|
|
parentId: string;
|
||
|
|
isMobile: boolean;
|
||
|
|
canvasWidth: number;
|
||
|
|
}>,
|
||
|
|
) {
|
||
|
|
try {
|
||
|
|
const start = performance.now();
|
||
|
|
const { canvasWidth, isMobile, parentId } = actionPayload.payload;
|
||
|
|
const allWidgets: CanvasWidgetsReduxState = yield select(getWidgets);
|
||
|
|
const updatedWidgets: CanvasWidgetsReduxState = isMobile
|
||
|
|
? alterLayoutForMobile(allWidgets, parentId, canvasWidth)
|
||
|
|
: alterLayoutForDesktop(allWidgets, parentId);
|
||
|
|
yield put(updateAndSaveLayout(updatedWidgets));
|
||
|
|
log.debug(
|
||
|
|
"Auto Layout : updating layout for mobile viewport took",
|
||
|
|
performance.now() - start,
|
||
|
|
"ms",
|
||
|
|
);
|
||
|
|
} catch (error) {
|
||
|
|
yield put({
|
||
|
|
type: ReduxActionErrorTypes.WIDGET_OPERATION_ERROR,
|
||
|
|
payload: {
|
||
|
|
action: ReduxActionTypes.RECALCULATE_COLUMNS,
|
||
|
|
error,
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export default function* layoutUpdateSagas() {
|
||
|
|
yield all([
|
||
|
|
takeLatest(
|
||
|
|
ReduxActionTypes.RECALCULATE_COLUMNS,
|
||
|
|
updateLayoutForMobileCheckpoint,
|
||
|
|
),
|
||
|
|
]);
|
||
|
|
}
|