diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-11-19 18:57:34 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-11-19 18:57:34 +0900 |
| commit | a902576334ba423b81201341b30c8dfaf544ac8a (patch) | |
| tree | 3215d27c4395e6fe62744bff8afb2853a3d071cb /packages/client/src | |
| parent | feat(client): collapse sub note automatically (diff) | |
| download | misskey-a902576334ba423b81201341b30c8dfaf544ac8a.tar.gz misskey-a902576334ba423b81201341b30c8dfaf544ac8a.tar.bz2 misskey-a902576334ba423b81201341b30c8dfaf544ac8a.zip | |
fix(client): better error handling of file upload
Diffstat (limited to 'packages/client/src')
| -rw-r--r-- | packages/client/src/os.ts | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/packages/client/src/os.ts b/packages/client/src/os.ts index 2bd270a97c..9eac06a5e3 100644 --- a/packages/client/src/os.ts +++ b/packages/client/src/os.ts @@ -563,13 +563,19 @@ export function post(props: Record<string, any>) { export const deckGlobalEvents = new EventEmitter(); -export const uploads = ref([]); +export const uploads = ref<{ + id: string; + name: string; + progressMax: number | undefined; + progressValue: number | undefined; + img: string; +}[]>([]); export function upload(file: File, folder?: any, name?: string) { if (folder && typeof folder == 'object') folder = folder.id; return new Promise((resolve, reject) => { - const id = Math.random(); + const id = Math.random().toString(); const reader = new FileReader(); reader.onload = (e) => { @@ -593,8 +599,21 @@ export function upload(file: File, folder?: any, name?: string) { const xhr = new XMLHttpRequest(); xhr.open('POST', apiUrl + '/drive/files/create', true); - xhr.onload = (e: any) => { - const driveFile = JSON.parse(e.target.response); + xhr.onload = (ev) => { + if (ev.target == null || ev.target.response == null) { + // TODO: 消すのではなくて再送できるようにしたい + uploads.value = uploads.value.filter(x => x.id != id); + + alert({ + type: 'error', + text: 'upload failed' + }); + + reject(); + return; + } + + const driveFile = JSON.parse(ev.target.response); resolve(driveFile); |