From 5d3518d25634d5ad85d1bdf348b27ad2c1db164e Mon Sep 17 00:00:00 2001 From: Matt Date: Thu, 14 Aug 2025 15:44:18 +0200 Subject: [PATCH] fixes --- pages/dashboard/profile.vue | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pages/dashboard/profile.vue b/pages/dashboard/profile.vue index 44fd9fa..7fcf151 100644 --- a/pages/dashboard/profile.vue +++ b/pages/dashboard/profile.vue @@ -479,20 +479,32 @@ const onSelectImage = async (files: File[] | File | null) => { return; } + // Check if we have member data + if (!memberData.value?.member_id) { + snackbar.value = { show: true, message: 'Unable to upload: member ID not found.', color: 'error' }; + return; + } + try { uploading.value = true; const body = new FormData(); - body.append('file', file); + body.append('image', file); // Changed from 'file' to 'image' to match backend expectation + await $fetch('/api/profile/upload-image', { method: 'POST', + query: { + memberId: memberData.value.member_id + }, body }); + avatarBustKey.value++; selectedFiles.value = []; // Clear the file input snackbar.value = { show: true, message: 'Profile image updated.', color: 'success' }; - } catch (e) { - console.error(e); - snackbar.value = { show: true, message: 'Failed to upload image.', color: 'error' }; + } catch (e: any) { + console.error('Upload error:', e); + const errorMessage = e?.data?.message || e?.message || 'Failed to upload image.'; + snackbar.value = { show: true, message: errorMessage, color: 'error' }; } finally { uploading.value = false; }