mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-25 12:56:41 +07:00
audio editor images
This commit is contained in:
parent
5e9b6e1819
commit
a9d4be064e
1 changed files with 47 additions and 9 deletions
|
@ -1,14 +1,52 @@
|
||||||
import React, { FC, useCallback } from 'react';
|
import React, { FC, useCallback, useMemo } from 'react';
|
||||||
import { INode } from '~/redux/types';
|
import { INode } from '~/redux/types';
|
||||||
import path from 'ramda/es/path';
|
import { connect } from 'react-redux';
|
||||||
|
import { UPLOAD_TYPES } from '~/redux/uploads/constants';
|
||||||
|
import { ImageGrid } from '../ImageGrid';
|
||||||
|
import * as UPLOAD_ACTIONS from '~/redux/uploads/actions';
|
||||||
|
import { selectUploads } from '~/redux/uploads/selectors';
|
||||||
|
|
||||||
interface IProps {
|
const mapStateToProps = selectUploads;
|
||||||
data: INode;
|
const mapDispatchToProps = {
|
||||||
setData: (val: INode) => void;
|
uploadUploadFiles: UPLOAD_ACTIONS.uploadUploadFiles,
|
||||||
}
|
|
||||||
|
|
||||||
const AudioEditor: FC<IProps> = ({ data, setData }) => {
|
|
||||||
return <div>something!</div>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type IProps = ReturnType<typeof mapStateToProps> &
|
||||||
|
typeof mapDispatchToProps & {
|
||||||
|
data: INode;
|
||||||
|
setData: (val: INode) => void;
|
||||||
|
temp: string[];
|
||||||
|
setTemp: (val: string[]) => void;
|
||||||
|
};
|
||||||
|
|
||||||
|
const AudioEditorUnconnected: FC<IProps> = ({ data, setData, temp, statuses }) => {
|
||||||
|
const images = useMemo(
|
||||||
|
() => data.files.filter(file => file && file.type === UPLOAD_TYPES.IMAGE),
|
||||||
|
[data.files]
|
||||||
|
);
|
||||||
|
|
||||||
|
const pending_images = useMemo(() => temp.filter(id => !!statuses[id]).map(id => statuses[id]), [
|
||||||
|
temp,
|
||||||
|
statuses,
|
||||||
|
]);
|
||||||
|
|
||||||
|
const audios = useMemo(
|
||||||
|
() => data.files.filter(file => file && file.type === UPLOAD_TYPES.AUDIO),
|
||||||
|
[data.files]
|
||||||
|
);
|
||||||
|
|
||||||
|
const setImages = useCallback(files => setData({ ...data, files: [...files, ...audios] }), [
|
||||||
|
setData,
|
||||||
|
data,
|
||||||
|
audios,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return <ImageGrid files={images} setFiles={setImages} locked={pending_images} />;
|
||||||
|
};
|
||||||
|
|
||||||
|
const AudioEditor = connect(
|
||||||
|
mapStateToProps,
|
||||||
|
mapDispatchToProps
|
||||||
|
)(AudioEditorUnconnected);
|
||||||
|
|
||||||
export { AudioEditor };
|
export { AudioEditor };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue