34 lines
828 B
TypeScript
34 lines
828 B
TypeScript
export interface Achievement {
|
|
id: string
|
|
title: string
|
|
description: string
|
|
icon?: string
|
|
unlockedAt?: string
|
|
}
|
|
|
|
export const useAchievements = () => {
|
|
const achievements = ref<Achievement[]>([])
|
|
const stats = ref({ total: 0, completedTasks: 0 })
|
|
const pending = ref(false)
|
|
|
|
const loadAchievements = async () => {
|
|
pending.value = true
|
|
try {
|
|
const data = await $fetch<{ achievements: Achievement[], stats: { total: number, completedTasks: number } }>('/api/achievements')
|
|
achievements.value = data.achievements || []
|
|
stats.value = data.stats || { total: 0, completedTasks: 0 }
|
|
} catch (e) {
|
|
console.error('Failed to load achievements:', e)
|
|
} finally {
|
|
pending.value = false
|
|
}
|
|
}
|
|
|
|
return {
|
|
achievements,
|
|
stats,
|
|
pending,
|
|
loadAchievements
|
|
}
|
|
}
|