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

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) { if (hasChanges) {
// Если были изменения, автоматически сохраняем профиль // Если были изменения, автоматически сохраняем профиль
await saveProfileChanges(); await saveProfileChanges();
} } else {
// Если изменений не было, просто обновляем UI
console.log('[ProfileView] Изменений не обнаружено, пропускаем сохранение');
}
// В любом случае переключаемся в режим просмотра // В любом случае переключаемся в режим просмотра
isEditMode.value = false; isEditMode.value = false;
@ -437,7 +440,7 @@ const toggleEditMode = async () => {
// Копируем данные профиля в редактируемый объект // Копируем данные профиля в редактируемый объект
// Преобразуем формат даты из ISO в yyyy-MM-dd // Преобразуем формат даты из ISO в yyyy-MM-dd
let formattedDate = ''; let formattedDate = '';
if (profileData.value.dateOfBirth) { if (profileData.value && profileData.value.dateOfBirth) {
try { try {
const date = new Date(profileData.value.dateOfBirth); const date = new Date(profileData.value.dateOfBirth);
formattedDate = date.toISOString().split('T')[0]; // Получаем только yyyy-MM-dd часть formattedDate = date.toISOString().split('T')[0]; // Получаем только yyyy-MM-dd часть
@ -448,12 +451,12 @@ const toggleEditMode = async () => {
} }
editableProfileData.value = { editableProfileData.value = {
name: profileData.value.name || '', name: profileData.value?.name || '',
bio: profileData.value.bio || '', bio: profileData.value?.bio || '',
dateOfBirth: formattedDate, dateOfBirth: formattedDate,
gender: profileData.value.gender || '', gender: profileData.value?.gender || '',
location: { location: {
city: profileData.value.location?.city || '', city: profileData.value?.location?.city || '',
// Можно добавить другие поля местоположения, если они есть // Можно добавить другие поля местоположения, если они есть
} }
}; };
@ -462,16 +465,22 @@ const toggleEditMode = async () => {
originalProfileData = JSON.stringify(editableProfileData.value); originalProfileData = JSON.stringify(editableProfileData.value);
// Устанавливаем поисковый запрос города // Устанавливаем поисковый запрос города
if (profileData.value.location?.city) { if (profileData.value?.location?.city) {
citySearchQuery.value = 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); const genderOption = genderOptions.value.find(option => option.value === profileData.value.gender);
if (genderOption) { if (genderOption) {
genderSearchQuery.value = genderOption.text; genderSearchQuery.value = genderOption.text;
} else {
genderSearchQuery.value = '';
} }
} else {
genderSearchQuery.value = '';
} }
} }
}; };
@ -711,7 +720,17 @@ const fetchProfileDataLocal = async () => {
} }
try { 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) { } catch (err) {
console.error('[ProfileView] Ошибка при вызове fetchUser:', err); console.error('[ProfileView] Ошибка при вызове fetchUser:', err);
error.value = (err.response && err.response.data && err.response.data.message) error.value = (err.response && err.response.data && err.response.data.message)
@ -814,11 +833,12 @@ const executeDeletePhoto = async () => {
const saveProfileChanges = async () => { const saveProfileChanges = async () => {
profileLoading.value = true; profileLoading.value = true;
loading.value = true; // Устанавливаем общий индикатор загрузки
clearProfileMessages(); clearProfileMessages();
try { try {
console.log('[ProfileView] Сохранение данных профиля:', editableProfileData.value); console.log('[ProfileView] Сохранение данных профиля:', editableProfileData.value);
// Подготавливаем данные для отправки на сервер // Подготавливаем данные для отправки на сервер
const dataToUpdate = { ...editableProfileData.value }; const dataToUpdate = { ...editableProfileData.value };
// Обрабатываем дату рождения - если это строка с датой в формате yyyy-MM-dd // Обрабатываем дату рождения - если это строка с датой в формате yyyy-MM-dd
@ -855,6 +875,8 @@ const saveProfileChanges = async () => {
'Произошла ошибка при обновлении профиля. Пожалуйста, попробуйте позже.'; 'Произошла ошибка при обновлении профиля. Пожалуйста, попробуйте позже.';
} finally { } finally {
profileLoading.value = false; profileLoading.value = false;
loading.value = false; // Сбрасываем общий индикатор загрузки
initialLoading.value = false; // Убеждаемся, что initialLoading тоже сброшен
} }
}; };