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

fetching files

This commit is contained in:
muerwre 2019-08-07 17:52:48 +07:00
parent 1aff4d5b73
commit ec91c5533b
5 changed files with 34 additions and 8 deletions

View file

@ -78,14 +78,20 @@ const ImageEditorUnconnected: FC<IProps> = ({ data, setData, uploadUploadFiles,
useEffect(() => console.log({ data }), [data]);
useEffect(() => {
Object.entries(files).forEach(([id, file]) => {
if (temp.includes(id) && !!file.id) {
console.log({ temp, files });
Object.entries(statuses).forEach(([id, status]) => {
// todo: make this working
console.log({ id, uuid: status.uuid, file: files[status.uuid], files });
if (temp.includes(id) && !!status.uuid && files[status.uuid]) {
console.log(`${id} uploaded`);
// do setData to append this file
setData({ ...data, files: [...data.files, file] });
setData({ ...data, files: [...data.files, files[status.uuid]] });
setTemp(temp.filter(el => el === id));
}
});
}, [files, temp, setData, data, setTemp]);
}, [statuses, temp, setData, data, setTemp]);
return (
<form className={styles.uploads} onDrop={onDrop}>

View file

@ -1,5 +1,5 @@
import { UPLOAD_ACTIONS } from "~/redux/uploads/constants";
import { IFileWithUUID, UUID } from "../types";
import { IFileWithUUID, UUID, IFile } from "../types";
import { IUploadStatus } from "./reducer";
export const uploadUploadFiles = (files: IFileWithUUID[]) => ({
@ -13,6 +13,11 @@ export const uploadAddStatus = (temp_id: UUID, status?: Partial<IUploadStatus>)
type: UPLOAD_ACTIONS.ADD_STATUS,
});
export const uploadAddFile = (file: IFile) => ({
file,
type: UPLOAD_ACTIONS.ADD_FILE,
});
export const uploadSetStatus = (temp_id: UUID, status?: Partial<IUploadStatus>) => ({
temp_id,
status,

View file

@ -10,6 +10,8 @@ export const UPLOAD_ACTIONS = {
ADD_STATUS: `${prefix}ADD_STATUS`,
DROP_STATUS: `${prefix}DROP_STATUS`,
SET_STATUS: `${prefix}SET_STATUS`,
ADD_FILE: `${prefix}ADD_FILE`,
};
export const EMPTY_FILE: IFile = {

View file

@ -2,7 +2,7 @@ import assocPath from 'ramda/es/assocPath';
import omit from 'ramda/es/omit';
import { UPLOAD_ACTIONS, EMPTY_UPLOAD_STATUS } from './constants';
import { uploadAddStatus, uploadDropStatus, uploadSetStatus } from './actions';
import { uploadAddStatus, uploadDropStatus, uploadSetStatus, uploadAddFile } from './actions';
import { IUploadState } from './reducer';
const addStatus = (
@ -31,8 +31,19 @@ const setStatus = (
{ ...state.statuses, [temp_id]: { ...(state.statuses[temp_id] || EMPTY_UPLOAD_STATUS), ...status } },
state
);
const addFile = (
state: IUploadState,
{ file }: ReturnType<typeof uploadAddFile>
): IUploadState => assocPath(
['files'],
{ ...state.files, [file.id]: file },
state
);
export const UPLOAD_HANDLERS = {
[UPLOAD_ACTIONS.ADD_STATUS]: addStatus,
[UPLOAD_ACTIONS.DROP_STATUS]: dropStatus,
[UPLOAD_ACTIONS.SET_STATUS]: setStatus,
[UPLOAD_ACTIONS.ADD_FILE]: addFile,
};

View file

@ -1,6 +1,6 @@
import { takeEvery, all, spawn, call, put, take, fork, race } from 'redux-saga/effects';
import { UPLOAD_ACTIONS } from '~/redux/uploads/constants';
import { uploadUploadFiles, uploadSetStatus, uploadAddStatus, uploadDropStatus } from './actions';
import { uploadUploadFiles, uploadSetStatus, uploadAddStatus, uploadDropStatus, uploadAddFile } from './actions';
import { reqWrapper } from '../auth/sagas';
import { createUploader, uploadGetThumb, fakeUploader } from '~/utils/uploader';
import { HTTP_RESPONSES } from '~/utils/api';
@ -68,7 +68,7 @@ function* uploadFile({ file, temp_id }: IFileWithUUID) {
return yield put(uploadDropStatus(temp_id));
}
const { data, error }: IResultWithStatus<IFile> = result;
const { data, error }: { data: IFile & { detail: any }; error: string } = result;
if (error) {
return yield put(
@ -89,6 +89,8 @@ function* uploadFile({ file, temp_id }: IFileWithUUID) {
})
);
yield put(uploadAddFile(data));
return { error: null, status: HTTP_RESPONSES.CREATED, data: {} }; // add file here as data
}