mirror of
https://github.com/morten-olsen/parcel.git
synced 2026-02-08 01:36:24 +01:00
sec
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
import { nanoid } from 'nanoid';
|
||||
import File from '../types/File';
|
||||
|
||||
export const downloadLink = (name: string, blob: Blob) => {
|
||||
const url = URL.createObjectURL(blob);
|
||||
const downloadLink = document.createElement('a');
|
||||
@@ -7,3 +10,49 @@ export const downloadLink = (name: string, blob: Blob) => {
|
||||
downloadLink.click();
|
||||
document.body.removeChild(downloadLink);
|
||||
};
|
||||
|
||||
//type SetFilesType = (fn: (files: {[id: string]: File}) => {[id: string]: File}) => any;
|
||||
type SetFilesType = any;
|
||||
|
||||
export const createFile = (setFiles: SetFilesType, name: string) => {
|
||||
const id = nanoid();
|
||||
const file: File = {
|
||||
name,
|
||||
status: 'processing',
|
||||
};
|
||||
setFiles((files) => ({
|
||||
...files,
|
||||
[id]: file,
|
||||
}));
|
||||
|
||||
const setContent = (input: Blob | Promise<Blob>) => {
|
||||
Promise.resolve(input)
|
||||
.then((blob) => {
|
||||
setFiles((files) => ({
|
||||
...files,
|
||||
[id]: {
|
||||
...files[id],
|
||||
blob,
|
||||
status: 'success',
|
||||
},
|
||||
}));
|
||||
})
|
||||
.catch(setFailed);
|
||||
}
|
||||
|
||||
const setFailed = (err: any) => {
|
||||
setFiles((files) => ({
|
||||
...files,
|
||||
[id]: {
|
||||
...files[id],
|
||||
status: 'failed',
|
||||
error: err,
|
||||
},
|
||||
}));
|
||||
};
|
||||
|
||||
return {
|
||||
setContent,
|
||||
setFailed,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user