фикс бесконечной загрузки профиля

This commit is contained in:
Professional 2025-05-23 23:23:21 +07:00
parent abc551e31d
commit e9aaad9d7c

View File

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