summaryrefslogtreecommitdiff
path: root/packages/client/src
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-19 18:57:34 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-19 18:57:34 +0900
commita902576334ba423b81201341b30c8dfaf544ac8a (patch)
tree3215d27c4395e6fe62744bff8afb2853a3d071cb /packages/client/src
parentfeat(client): collapse sub note automatically (diff)
downloadmisskey-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.ts27
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);