From e9aaad9d7c10a5b44cee424e9bf8a9aeb2ea46b4 Mon Sep 17 00:00:00 2001 From: Professional Date: Fri, 23 May 2025 23:23:21 +0700 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D0=B1=D0=B5=D1=81?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D0=B5=D1=87=D0=BD=D0=BE=D0=B9=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=BF=D1=80=D0=BE=D1=84?= =?UTF-8?q?=D0=B8=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ProfileView.vue | 42 +++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue index 954151e..b8a3629 100644 --- a/src/views/ProfileView.vue +++ b/src/views/ProfileView.vue @@ -425,7 +425,10 @@ const toggleEditMode = async () => { if (hasChanges) { // Если были изменения, автоматически сохраняем профиль await saveProfileChanges(); - } + } else { + // Если изменений не было, просто обновляем UI + console.log('[ProfileView] Изменений не обнаружено, пропускаем сохранение'); + } // В любом случае переключаемся в режим просмотра isEditMode.value = false; @@ -437,7 +440,7 @@ const toggleEditMode = async () => { // Копируем данные профиля в редактируемый объект // Преобразуем формат даты из ISO в yyyy-MM-dd let formattedDate = ''; - if (profileData.value.dateOfBirth) { + if (profileData.value && profileData.value.dateOfBirth) { try { const date = new Date(profileData.value.dateOfBirth); formattedDate = date.toISOString().split('T')[0]; // Получаем только yyyy-MM-dd часть @@ -448,12 +451,12 @@ const toggleEditMode = async () => { } editableProfileData.value = { - name: profileData.value.name || '', - bio: profileData.value.bio || '', + name: profileData.value?.name || '', + bio: profileData.value?.bio || '', dateOfBirth: formattedDate, - gender: profileData.value.gender || '', + gender: profileData.value?.gender || '', location: { - city: profileData.value.location?.city || '', + city: profileData.value?.location?.city || '', // Можно добавить другие поля местоположения, если они есть } }; @@ -462,16 +465,22 @@ const toggleEditMode = async () => { originalProfileData = JSON.stringify(editableProfileData.value); // Устанавливаем поисковый запрос города - if (profileData.value.location?.city) { + if (profileData.value?.location?.city) { citySearchQuery.value = profileData.value.location.city; + } else { + citySearchQuery.value = ''; } // Устанавливаем поисковый запрос пола - if (profileData.value.gender) { + if (profileData.value?.gender) { const genderOption = genderOptions.value.find(option => option.value === profileData.value.gender); if (genderOption) { genderSearchQuery.value = genderOption.text; + } else { + genderSearchQuery.value = ''; } + } else { + genderSearchQuery.value = ''; } } }; @@ -711,7 +720,17 @@ const fetchProfileDataLocal = async () => { } try { - await fetchUser(); + await fetchUser(); + + // После выполнения fetchUser проверяем, что данные получены + if (!authUserFromStore.value) { + console.error('[ProfileView] Пользователь не загружен после fetchUser'); + error.value = 'Не удалось загрузить данные профиля. Попробуйте позже.'; + } else { + // Обновляем данные профиля из полученных данных пользователя + profileData.value = { ...authUserFromStore.value }; + console.log('[ProfileView] Данные профиля обновлены:', profileData.value); + } } catch (err) { console.error('[ProfileView] Ошибка при вызове fetchUser:', err); error.value = (err.response && err.response.data && err.response.data.message) @@ -814,11 +833,12 @@ const executeDeletePhoto = async () => { const saveProfileChanges = async () => { profileLoading.value = true; + loading.value = true; // Устанавливаем общий индикатор загрузки clearProfileMessages(); try { console.log('[ProfileView] Сохранение данных профиля:', editableProfileData.value); - // Подготавливаем данные для отправки на сервер + // Подготавливаем данные для отправки на сервер const dataToUpdate = { ...editableProfileData.value }; // Обрабатываем дату рождения - если это строка с датой в формате yyyy-MM-dd @@ -855,6 +875,8 @@ const saveProfileChanges = async () => { 'Произошла ошибка при обновлении профиля. Пожалуйста, попробуйте позже.'; } finally { profileLoading.value = false; + loading.value = false; // Сбрасываем общий индикатор загрузки + initialLoading.value = false; // Убеждаемся, что initialLoading тоже сброшен } };