Support multiple file upload, rename Dav password

This commit is contained in:
Bruno Bernardino
2024-04-06 08:21:21 +01:00
parent 5f45725d81
commit 541df3fb77
2 changed files with 33 additions and 29 deletions

View File

@@ -54,39 +54,43 @@ export default function MainFiles({ initialDirectories, initialFiles, initialPat
function onClickUploadFile() { function onClickUploadFile() {
const fileInput = document.createElement('input'); const fileInput = document.createElement('input');
fileInput.type = 'file'; fileInput.type = 'file';
fileInput.multiple = true;
fileInput.click(); fileInput.click();
fileInput.onchange = async (event) => { fileInput.onchange = async (event) => {
const chosenFiles = (event.target as HTMLInputElement)?.files!; const chosenFilesList = (event.target as HTMLInputElement)?.files!;
const chosenFile = chosenFiles[0];
if (!chosenFile) { const chosenFiles = Array.from(chosenFilesList);
return;
}
isUploading.value = true; isUploading.value = true;
areNewOptionsOption.value = false; for (const chosenFile of chosenFiles) {
if (!chosenFile) {
const requestBody = new FormData(); continue;
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]; areNewOptionsOption.value = false;
} catch (error) {
console.error(error); 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; isUploading.value = false;

View File

@@ -24,7 +24,7 @@ export const actionWords = new Map<Action, string>([
['change-email', 'change email'], ['change-email', 'change email'],
['verify-change-email', 'change email'], ['verify-change-email', 'change email'],
['change-password', 'change password'], ['change-password', 'change password'],
['change-dav-password', 'change DAV password'], ['change-dav-password', 'change Sync password'],
['delete-account', 'delete account'], ['delete-account', 'delete account'],
]); ]);
@@ -83,11 +83,11 @@ function formFields(action: Action, formData: FormData) {
} else if (action === 'change-dav-password') { } else if (action === 'change-dav-password') {
fields.push({ fields.push({
name: 'new-dav-password', name: 'new-dav-password',
label: 'New DAV Password', label: 'New Sync Password',
type: 'password', type: 'password',
placeholder: 'super-SECRET-passphrase', placeholder: 'super-SECRET-passphrase',
required: true, 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') { } else if (action === 'delete-account') {
fields.push({ fields.push({
@@ -148,12 +148,12 @@ export default function Settings({ formData: formDataObject, error, notice }: Se
</section> </section>
</form> </form>
<h2 class='text-2xl mb-4 text-left px-4 max-w-screen-md mx-auto lg:min-w-96'>Change your DAV password</h2> <h2 class='text-2xl mb-4 text-left px-4 max-w-screen-md mx-auto lg:min-w-96'>Change your Sync password</h2>
<form method='POST' class='mb-12'> <form method='POST' class='mb-12'>
{formFields('change-dav-password', formData).map((field) => generateFieldHtml(field, formData))} {formFields('change-dav-password', formData).map((field) => generateFieldHtml(field, formData))}
<section class='flex justify-end mt-8 mb-4'> <section class='flex justify-end mt-8 mb-4'>
<button class='button-secondary' type='submit'>Change DAV password</button> <button class='button-secondary' type='submit'>Change Sync password</button>
</section> </section>
</form> </form>