Improvements to file upload

This commit is contained in:
Piotr Rogowski 2022-11-02 20:08:28 +01:00
parent 665f07f5e6
commit f3fb37eb8d
No known key found for this signature in database
GPG Key ID: 4A842D702D9C6F8F
1 changed files with 17 additions and 7 deletions

View File

@ -136,6 +136,9 @@ const UploadPage = () => {
const [logFiles, setLogFiles] = useState<File[]>([]);
const [toothLogFiles, setToothLogFiles] = useState<File[]>([]);
const [logsTouched, setLogsTouched] = useState(false);
const [toothLogsTouched, setToothLogsTouched] = useState(false);
const shareSupported = 'share' in navigator;
const { currentUser, refreshUser } = useAuth();
const navigate = useNavigate();
@ -261,12 +264,15 @@ const UploadPage = () => {
}
});
if (existingTune) {
// clear old multi files first
const tempFormData = new FormData();
tempFormData.append('logFiles', '');
tempFormData.append('toothLogFiles', '');
await updateTune(existingTune.id, tempFormData as unknown as TunesRecord);
if (logsTouched || toothLogsTouched) {
// clear old multi files first since there is no other way to handle this
const tempFormData = new FormData();
tempFormData.append('logFiles', '');
tempFormData.append('toothLogFiles', '');
await updateTune(existingTune.id, tempFormData as unknown as TunesRecord);
}
// another update with new files
await updateTune(existingTune.id, formData as unknown as TunesRecord);
@ -343,6 +349,7 @@ const UploadPage = () => {
const uploadLogs = async (options: UploadRequestOption) => {
upload(options, async (file) => {
setLogFiles((prev) => [...prev, file]);
setLogsTouched(true);
}, async (file) => {
const { result, message } = await validateSize(file);
if (!result) {
@ -376,6 +383,7 @@ const UploadPage = () => {
const uploadToothLogs = async (options: UploadRequestOption) => {
upload(options, async (file) => {
setToothLogFiles((prev) => [...prev, file]);
setToothLogsTouched(true);
}, async (file) => {
const { result, message } = await validateSize(file);
if (!result) {
@ -422,11 +430,13 @@ const UploadPage = () => {
};
const removeLogFile = async (file: UploadFile) => {
setLogFiles((prev) => prev.filter((f) => f.name !== file.name));
setLogFiles((prev) => prev.filter((f) => removeFilenameSuffix(f.name) !== file.name));
setLogsTouched(true);
};
const removeToothLogFile = async (file: UploadFile) => {
setToothLogFiles((prev) => prev.filter((f) => f.name !== file.name));
setToothLogFiles((prev) => prev.filter((f) => removeFilenameSuffix(f.name) !== file.name));
setToothLogsTouched(true);
};
const removeCustomIniFile = async (file: UploadFile) => {