modified: serv_nginx/bbvue/src/stores/user.js
add export useStore
This commit is contained in:
@@ -16,11 +16,11 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
const error = ref('')
|
const error = ref('')
|
||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
const completedAchievements = computed(() =>
|
const completedAchievements = computed(() =>
|
||||||
userAchievements.value.filter(achievement => achievement.verified || achievement.achieved)
|
userAchievements.value.filter(achievement => achievement.verified || achievement.achieved)
|
||||||
)
|
)
|
||||||
|
|
||||||
const pendingAchievements = computed(() =>
|
const pendingAchievements = computed(() =>
|
||||||
userAchievements.value.filter(achievement => !(achievement.verified || achievement.achieved))
|
userAchievements.value.filter(achievement => !(achievement.verified || achievement.achieved))
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -29,19 +29,19 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
return Math.round((completedAchievements.value.length / userAchievements.value.length) * 100)
|
return Math.round((completedAchievements.value.length / userAchievements.value.length) * 100)
|
||||||
})
|
})
|
||||||
|
|
||||||
const verifiedPersonalBests = computed(() =>
|
const verifiedPersonalBests = computed(() =>
|
||||||
personalBests.value.filter(best => best.verified)
|
personalBests.value.filter(best => best.verified)
|
||||||
)
|
)
|
||||||
|
|
||||||
const confirmedEvents = computed(() =>
|
const confirmedEvents = computed(() =>
|
||||||
upcomingEvents.value.filter(event => event.registrationStatus === 'confirmed')
|
upcomingEvents.value.filter(event => event.registrationStatus === 'confirmed')
|
||||||
)
|
)
|
||||||
|
|
||||||
const totalWorkouts = computed(() =>
|
const totalWorkouts = computed(() =>
|
||||||
userStats.value?.workoutsCount || workoutHistory.value.length
|
userStats.value?.workoutsCount || workoutHistory.value.length
|
||||||
)
|
)
|
||||||
|
|
||||||
const totalCalories = computed(() =>
|
const totalCalories = computed(() =>
|
||||||
workoutHistory.value.reduce((sum, workout) => sum + (workout.calories || 0), 0)
|
workoutHistory.value.reduce((sum, workout) => sum + (workout.calories || 0), 0)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -102,46 +102,46 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn('Achievements endpoint not available, using mock data', error)
|
console.warn('Achievements endpoint not available, using mock data', error)
|
||||||
userAchievements.value = [
|
userAchievements.value = [
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
type: 'distance',
|
type: 'distance',
|
||||||
title: 'Первый забег',
|
title: 'Первый забег',
|
||||||
description: 'Пробежать первую 5км',
|
description: 'Пробежать первую 5км',
|
||||||
verified: true,
|
verified: true,
|
||||||
date: '2024-01-20',
|
date: '2024-01-20',
|
||||||
badgeImage: '/badges/first-run.png'
|
badgeImage: '/badges/first-run.png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
type: 'consistency',
|
type: 'consistency',
|
||||||
title: 'Неделя тренировок',
|
title: 'Неделя тренировок',
|
||||||
description: 'Тренироваться 7 дней подряд',
|
description: 'Тренироваться 7 дней подряд',
|
||||||
verified: true,
|
verified: true,
|
||||||
date: '2024-02-15',
|
date: '2024-02-15',
|
||||||
badgeImage: '/badges/week-streak.png'
|
badgeImage: '/badges/week-streak.png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
type: 'distance',
|
type: 'distance',
|
||||||
title: '100 км',
|
title: '100 км',
|
||||||
description: 'Пробежать 100 км',
|
description: 'Пробежать 100 км',
|
||||||
verified: true,
|
verified: true,
|
||||||
date: '2024-03-01',
|
date: '2024-03-01',
|
||||||
badgeImage: '/badges/100km.png'
|
badgeImage: '/badges/100km.png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 4,
|
id: 4,
|
||||||
type: 'distance',
|
type: 'distance',
|
||||||
title: 'Полумарафон',
|
title: 'Полумарафон',
|
||||||
description: 'Пробежать 21.1 км',
|
description: 'Пробежать 21.1 км',
|
||||||
verified: false,
|
verified: false,
|
||||||
badgeImage: '/badges/half-marathon.png'
|
badgeImage: '/badges/half-marathon.png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 5,
|
id: 5,
|
||||||
type: 'speed',
|
type: 'speed',
|
||||||
title: 'Скорость',
|
title: 'Скорость',
|
||||||
description: 'Пробежать 5км быстрее 25 минут',
|
description: 'Пробежать 5км быстрее 25 минут',
|
||||||
verified: false,
|
verified: false,
|
||||||
badgeImage: '/badges/speedster.png'
|
badgeImage: '/badges/speedster.png'
|
||||||
}
|
}
|
||||||
@@ -152,7 +152,7 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Новые actions для дополнительных данных
|
// Новые actions для дополнительных данных
|
||||||
const fetchPersonalBests = async () => {
|
const fetchPersonalBests = async () => {
|
||||||
return withStoreLoading(async () => {
|
return withStoreLoading(async () => {
|
||||||
try {
|
try {
|
||||||
const response = await apiClient.get('/user/personal-bests')
|
const response = await apiClient.get('/user/personal-bests')
|
||||||
@@ -353,7 +353,7 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
workoutHistory,
|
workoutHistory,
|
||||||
loading,
|
loading,
|
||||||
error,
|
error,
|
||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
completedAchievements,
|
completedAchievements,
|
||||||
pendingAchievements,
|
pendingAchievements,
|
||||||
@@ -362,7 +362,7 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
confirmedEvents,
|
confirmedEvents,
|
||||||
totalWorkouts,
|
totalWorkouts,
|
||||||
totalCalories,
|
totalCalories,
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
fetchUserStats,
|
fetchUserStats,
|
||||||
fetchUserAchievements,
|
fetchUserAchievements,
|
||||||
@@ -376,4 +376,7 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
completeWorkout,
|
completeWorkout,
|
||||||
resetUserStore
|
resetUserStore
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
export const userStore = useUserStore
|
||||||
Reference in New Issue
Block a user