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

add room editor dialog

This commit is contained in:
Fedor Katurov 2023-10-26 19:23:27 +06:00
parent f809ab40b7
commit 7698d17ed3
11 changed files with 207 additions and 81 deletions

View file

@ -1,46 +1,39 @@
import React, { FC, useCallback, useMemo } from 'react';
import { FC } from 'react';
import { UploadDropzone } from '~/components/upload/UploadDropzone';
import { UploadType } from '~/constants/uploads';
import { IFile } from '~/types';
import { NodeEditorProps } from '~/types/node';
import { useUploaderContext } from '~/utils/context/UploaderContextProvider';
import { values } from '~/utils/ramda';
import { AudioGrid } from '../AudioGrid';
import { ImageGrid } from '../ImageGrid';
import styles from './styles.module.scss';
type IProps = NodeEditorProps;
const AudioEditor: FC<IProps> = () => {
const { pending, filesAudios, filesImages, setFiles, uploadFiles } = useUploaderContext()!;
const pendingImages = useMemo(
() => values(pending).filter(item => item.type === UploadType.Image),
[pending]
);
const pendingAudios = useMemo(
() => values(pending).filter(item => item.type === UploadType.Audio),
[pending]
);
const setImages = useCallback((values: IFile[]) => setFiles([...values, ...filesAudios]), [
setFiles,
filesAudios,
]);
const setAudios = useCallback((values: IFile[]) => setFiles([...values, ...filesImages]), [
setFiles,
const AudioEditor: FC<NodeEditorProps> = () => {
const {
filesImages,
]);
filesAudios,
uploadFiles,
setImages,
setAudios,
pendingAudios,
pendingImages,
} = useUploaderContext()!;
return (
<UploadDropzone onUpload={uploadFiles} helperClassName={styles.dropzone}>
<div className={styles.wrap}>
<ImageGrid files={filesImages} setFiles={setImages} locked={pendingImages} />
<AudioGrid files={filesAudios} setFiles={setAudios} locked={pendingAudios} />
<ImageGrid
files={filesImages}
setFiles={setImages}
locked={pendingImages}
/>
<AudioGrid
files={filesAudios}
setFiles={setAudios}
locked={pendingAudios}
/>
</div>
</UploadDropzone>
);

View file

@ -0,0 +1,42 @@
import { FC } from 'react';
import { UploadDropzone } from '~/components/upload/UploadDropzone';
import { NodeEditorProps } from '~/types/node';
import { useUploaderContext } from '~/utils/context/UploaderContextProvider';
import { AudioGrid } from '../AudioGrid';
import { ImageGrid } from '../ImageGrid';
import styles from './styles.module.scss';
const RoomEditor: FC<NodeEditorProps> = () => {
const {
filesImages,
filesAudios,
uploadFiles,
setImages,
setAudios,
pendingAudios,
pendingImages,
} = useUploaderContext()!;
return (
<UploadDropzone onUpload={uploadFiles} helperClassName={styles.dropzone}>
<div className={styles.wrap}>
<ImageGrid
files={filesImages}
setFiles={setImages}
locked={pendingImages}
/>
<AudioGrid
files={filesAudios}
setFiles={setAudios}
locked={pendingAudios}
/>
</div>
</UploadDropzone>
);
};
export { RoomEditor };

View file

@ -0,0 +1,6 @@
@import "src/styles/variables";
.wrap {
padding-bottom: $upload_button_height + $gap;
min-height: 200px;
}