PromucFlow_constructor/app/client/src/pages/Editor/loader.tsx
Valera Melnikov fb12f6ad87
chore:add eslint rules (#27878)
Add eslint rules
- promise-function-async
- prefer-nullish-coalescing
2023-10-09 16:54:06 +03:00

75 lines
1.9 KiB
TypeScript

import React from "react";
import PageLoadingBar from "pages/common/PageLoadingBar";
import { retryPromise } from "utils/AppsmithUtils";
import { connect } from "react-redux";
import type { InitializeEditorPayload } from "actions/initActions";
import { initEditor } from "actions/initActions";
import { getSearchQuery } from "../../utils/helpers";
import { GIT_BRANCH_QUERY_KEY } from "../../constants/routes";
import { APP_MODE } from "../../entities/App";
import type { RouteComponentProps } from "react-router";
import { ReduxActionTypes } from "@appsmith/constants/ReduxActionConstants";
type Props = {
initEditor: (payload: InitializeEditorPayload) => void;
clearCache: () => void;
} & RouteComponentProps<{ pageId: string }>;
class EditorLoader extends React.PureComponent<Props, { Page: any }> {
constructor(props: any) {
super(props);
this.state = {
Page: null,
};
}
initialise() {
const {
initEditor,
location: { search },
match: { params },
} = this.props;
const branch = getSearchQuery(search, GIT_BRANCH_QUERY_KEY);
const { pageId } = params;
if (pageId) {
initEditor({
pageId,
branch,
mode: APP_MODE.EDIT,
});
}
}
componentDidMount() {
this.initialise();
retryPromise(
async () => import(/* webpackChunkName: "editor" */ "./index"),
).then((module) => {
this.setState({ Page: module.default });
});
}
componentWillUnmount() {
const { clearCache } = this.props;
clearCache();
}
render() {
const { Page } = this.state;
return Page ? <Page {...this.props} /> : <PageLoadingBar />;
}
}
const mapDispatchToProps = (dispatch: any) => {
return {
initEditor: (payload: InitializeEditorPayload) =>
dispatch(initEditor(payload)),
clearCache: () => {
dispatch({ type: ReduxActionTypes.CLEAR_CACHE });
},
};
};
export default connect(null, mapDispatchToProps)(EditorLoader);