From 541df3fb7793a8dce99c6a341ffe76430570a507 Mon Sep 17 00:00:00 2001 From: Bruno Bernardino Date: Sat, 6 Apr 2024 08:21:21 +0100 Subject: [PATCH] Support multiple file upload, rename Dav password --- components/files/MainFiles.tsx | 52 ++++++++++++++++++---------------- islands/Settings.tsx | 10 +++---- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/components/files/MainFiles.tsx b/components/files/MainFiles.tsx index 55ae386..44767f7 100644 --- a/components/files/MainFiles.tsx +++ b/components/files/MainFiles.tsx @@ -54,39 +54,43 @@ export default function MainFiles({ initialDirectories, initialFiles, initialPat function onClickUploadFile() { const fileInput = document.createElement('input'); fileInput.type = 'file'; + fileInput.multiple = true; fileInput.click(); fileInput.onchange = async (event) => { - const chosenFiles = (event.target as HTMLInputElement)?.files!; - const chosenFile = chosenFiles[0]; + const chosenFilesList = (event.target as HTMLInputElement)?.files!; - if (!chosenFile) { - return; - } + const chosenFiles = Array.from(chosenFilesList); isUploading.value = true; - areNewOptionsOption.value = false; - - const requestBody = new FormData(); - requestBody.set('parent_path', path.value); - requestBody.set('name', chosenFile.name); - requestBody.set('contents', chosenFile); - - try { - const response = await fetch(`/api/files/upload`, { - method: 'POST', - body: requestBody, - }); - const result = await response.json() as UploadResponseBody; - - if (!result.success) { - throw new Error('Failed to upload file!'); + for (const chosenFile of chosenFiles) { + if (!chosenFile) { + continue; } - files.value = [...result.newFiles]; - } catch (error) { - console.error(error); + areNewOptionsOption.value = false; + + const requestBody = new FormData(); + requestBody.set('parent_path', path.value); + requestBody.set('name', chosenFile.name); + requestBody.set('contents', chosenFile); + + try { + const response = await fetch(`/api/files/upload`, { + method: 'POST', + body: requestBody, + }); + const result = await response.json() as UploadResponseBody; + + if (!result.success) { + throw new Error('Failed to upload file!'); + } + + files.value = [...result.newFiles]; + } catch (error) { + console.error(error); + } } isUploading.value = false; diff --git a/islands/Settings.tsx b/islands/Settings.tsx index ab13b9f..769f5ce 100644 --- a/islands/Settings.tsx +++ b/islands/Settings.tsx @@ -24,7 +24,7 @@ export const actionWords = new Map([ ['change-email', 'change email'], ['verify-change-email', 'change email'], ['change-password', 'change password'], - ['change-dav-password', 'change DAV password'], + ['change-dav-password', 'change Sync password'], ['delete-account', 'delete account'], ]); @@ -83,11 +83,11 @@ function formFields(action: Action, formData: FormData) { } else if (action === 'change-dav-password') { fields.push({ name: 'new-dav-password', - label: 'New DAV Password', + label: 'New Sync Password', type: 'password', placeholder: 'super-SECRET-passphrase', required: true, - description: 'Alternative password used for DAV access and/or HTTP Basic Auth.', + description: 'Alternative password used for Sync access and/or HTTP Basic Auth.', }); } else if (action === 'delete-account') { fields.push({ @@ -148,12 +148,12 @@ export default function Settings({ formData: formDataObject, error, notice }: Se -

Change your DAV password

+

Change your Sync password

{formFields('change-dav-password', formData).map((field) => generateFieldHtml(field, formData))}
- +