1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 12:56:41 +07:00

made node editor use SWR

This commit is contained in:
Fedor Katurov 2021-11-21 21:23:07 +07:00
parent 2eb10c4da7
commit 64cc47a116
5 changed files with 45 additions and 45 deletions

View file

@ -1,4 +1,4 @@
import React, { createElement, FC, useCallback, useEffect, useMemo, useState } from 'react';
import React, { createElement, FC, useCallback, useMemo, useState } from 'react';
import { IDialogProps } from '~/redux/modal/constants';
import styles from './styles.module.scss';
import { NODE_EDITORS } from '~/redux/node/constants';
@ -25,7 +25,7 @@ const EditorDialog: FC<Props> = ({ node, onRequestClose }) => {
const uploader = useFileUploader(UPLOAD_SUBJECTS.EDITOR, UPLOAD_TARGETS.NODES, node.files);
const formik = useNodeFormFormik(node, uploader, onRequestClose);
const { values, handleSubmit, dirty, status, setStatus } = formik;
const { values, handleSubmit, dirty, status } = formik;
const component = useMemo(() => node.type && prop(node.type, NODE_EDITORS), [node.type]);
@ -49,14 +49,6 @@ const EditorDialog: FC<Props> = ({ node, onRequestClose }) => {
const error = useTranslatedError(status);
useEffect(() => {
if (!status) {
return;
}
setStatus('');
}, [setStatus, status, values]);
useCloseOnEscape(onClose);
if (!component) {

View file

@ -1,15 +1,12 @@
import React, { FC, useCallback, useEffect, useMemo, useState } from 'react';
import { EMPTY_NODE } from '~/redux/node/constants';
import React, { FC, useCallback, useMemo } from 'react';
import { EditorDialog } from '~/containers/dialogs/EditorDialog';
import { useHistory, useRouteMatch } from 'react-router';
import { ModalWrapper } from '~/components/dialogs/ModalWrapper';
import { apiGetNodeWithCancel } from '~/redux/node/api';
import { LoaderCircle } from '~/components/input/LoaderCircle';
import styles from './styles.module.scss';
import { useGetNode } from '~/utils/hooks/data/useGetNode';
const EditorEditDialog: FC = () => {
const [data, setData] = useState(EMPTY_NODE);
const [isLoading, setLoading] = useState(true);
const history = useHistory();
const {
@ -25,23 +22,9 @@ const EditorEditDialog: FC = () => {
history.replace(backUrl);
}, [backUrl, history]);
useEffect(() => {
if (!id) {
return;
}
const { node, isLoading } = useGetNode(parseInt(id, 10));
const { request, cancel } = apiGetNodeWithCancel({ id });
setLoading(true);
request
.then(data => setData(data.node))
.then(() => setLoading(false))
.catch(console.log);
return () => cancel();
}, [id]);
if (isLoading) {
if (isLoading || !node) {
return (
<ModalWrapper onOverlayClick={goBack}>
<div className={styles.loader}>
@ -51,7 +34,7 @@ const EditorEditDialog: FC = () => {
);
}
return <EditorDialog node={data} onRequestClose={goBack} />;
return <EditorDialog node={node} onRequestClose={goBack} />;
};
export { EditorEditDialog };