@@ -229,9 +229,9 @@ export default {
},
recentAchievements() {
return this.userAchievements
- .filter(a => a.verified)
- .sort((a, b) => new Date(b.date) - new Date(a.date))
- .slice(0, 3)
+ .filter(a => a.verified || a.achieved) // Добавить проверку на achieved
+ .sort((a, b) => new Date(b.date || b.created_at) - new Date(a.date || a.created_at)) // Добавить fallback
+ .slice(0, 3);
},
achievementProgress() {
return this.userStore.achievementProgress
@@ -349,19 +349,21 @@ export default {
async loadExtendedData() {
this.statsLoading = true;
try {
- const [statsResult, achievementsResult, bestsResult, eventsResult, planResult] = await Promise.all([
+ // Использовать правильные методы из стора
+ const [statsResult, achievementsResult, bestsResult, eventsResult, planResult] = await Promise.allSettled([
this.userStore.fetchUserStats(),
this.userStore.fetchUserAchievements(),
- this.fetchPersonalBests(),
- this.fetchUpcomingEvents(),
- this.fetchCurrentTrainingPlan()
+ this.userStore.fetchPersonalBests(),
+ this.userStore.fetchUpcomingEvents(),
+ this.userStore.fetchCurrentTrainingPlan()
]);
- if (!statsResult.success) console.error('Ошибка статистики:', statsResult.error);
- if (!achievementsResult.success) console.error('Ошибка достижений:', achievementsResult.error);
- if (!bestsResult.success) console.error('Ошибка рекордов:', bestsResult.error);
- if (!eventsResult.success) console.error('Ошибка событий:', eventsResult.error);
- if (!planResult.success) console.error('Ошибка плана:', planResult.error);
+ // Обработка результатов
+ if (statsResult.status === 'rejected') console.error('Ошибка статистики:', statsResult.reason);
+ if (achievementsResult.status === 'rejected') console.error('Ошибка достижений:', achievementsResult.reason);
+ if (bestsResult.status === 'rejected') console.error('Ошибка рекордов:', bestsResult.reason);
+ if (eventsResult.status === 'rejected') console.error('Ошибка событий:', eventsResult.reason);
+ if (planResult.status === 'rejected') console.error('Ошибка плана:', planResult.reason);
} catch (error) {
console.error('Ошибка загрузки расширенных данных:', error);
@@ -370,36 +372,6 @@ export default {
}
},
- async fetchPersonalBests() {
- try {
- const response = await this.userStore.fetchPersonalBests;
- this.personalBests = response.data;
- return { success: true };
- } catch (error) {
- return { success: false, error: error.message };
- }
- },
-
- async fetchUpcomingEvents() {
- try {
- const response = await this.userStore.apiClient.get('/events/upcoming');
- this.upcomingEvents = response.data;
- return { success: true };
- } catch (error) {
- return { success: false, error: error.message };
- }
- },
-
- async fetchCurrentTrainingPlan() {
- try {
- const response = await this.userStore.apiClient.get('/training-plans/current');
- this.currentTrainingPlan = response.data;
- return { success: true };
- } catch (error) {
- return { success: false, error: error.message };
- }
- },
-
formatTime(minutes) {
if (!minutes) return '0 мин';
const hours = Math.floor(minutes / 60);