1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-24 20:36:40 +07:00

refactored code

This commit is contained in:
Fedor Katurov 2019-10-16 15:47:52 +07:00
parent 5872e7a457
commit 265b075ddc
2 changed files with 14 additions and 14 deletions

View file

@ -1,6 +1,6 @@
import React, { FC, useMemo } from 'react';
import React, { FC, useMemo, useCallback } from 'react';
import { connect } from 'react-redux';
import { INode } from '~/redux/types';
import { INode, IFile } from '~/redux/types';
import * as UPLOAD_ACTIONS from '~/redux/uploads/actions';
import { selectUploads } from '~/redux/uploads/selectors';
import { ImageGrid } from '~/components/editors/ImageGrid';
@ -24,7 +24,9 @@ const ImageEditorUnconnected: FC<IProps> = ({ data, setData, temp, statuses }) =
statuses,
]);
return <ImageGrid data={data} setData={setData} locked={pending_files} />;
const setFiles = useCallback((files: IFile[]) => setData({ ...data, files }), [data, setData]);
return <ImageGrid files={data.files} setFiles={setFiles} locked={pending_files} />;
};
const ImageEditor = connect(

View file

@ -9,26 +9,24 @@ import reject from 'ramda/es/reject';
import { SortableImageGrid } from '~/components/editors/SortableImageGrid';
interface IProps {
data: INode;
setData: (val: INode) => void;
files: IFile[];
setFiles: (val: IFile[]) => void;
locked: IUploadStatus[];
}
const ImageGrid: FC<IProps> = ({ data, setData, locked }) => {
const ImageGrid: FC<IProps> = ({ files, setFiles, locked }) => {
const onMove = useCallback(
({ oldIndex, newIndex }: SortEnd) => {
setData(assocPath(['files'], moveArrItem(oldIndex, newIndex, data.files), data));
setFiles(moveArrItem(oldIndex, newIndex, files) as IFile[]);
},
[data, setData]
[setFiles, files]
);
const onDrop = useCallback(
(file_id: IFile['id']) => {
setData(
assocPath(['files'], reject(el => !el || !el.id || el.id === file_id, data.files), data)
);
(remove_id: IFile['id']) => {
setFiles(files.filter(file => file.id === remove_id));
},
[setData, data]
[setFiles, files]
);
return (
@ -36,7 +34,7 @@ const ImageGrid: FC<IProps> = ({ data, setData, locked }) => {
onDrop={onDrop}
onSortEnd={onMove}
axis="xy"
items={data.files}
items={files}
locked={locked}
pressDelay={window.innerWidth < 768 ? 200 : 0}
helperClass={styles.helper}