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 тоже сброшен } };