fix: pwa, firebase and auth initial load issues

This commit is contained in:
2026-04-28 14:50:13 +05:00
parent 669d8571ae
commit fad9cacd3e
8 changed files with 72 additions and 23 deletions
+4 -1
View File
@@ -14,7 +14,10 @@ export const useAchievements = () => {
const loadAchievements = async () => {
pending.value = true
try {
const data = await $fetch<{ achievements: Achievement[], stats: { total: number, completedTasks: number } }>('/api/achievements')
const auth = useAuth()
const data = await $fetch<{ achievements: Achievement[], stats: { total: number, completedTasks: number } }>('/api/achievements', {
headers: { Authorization: `Bearer ${auth.token.value}` }
})
achievements.value = data.achievements || []
stats.value = data.stats || { total: 0, completedTasks: 0 }
} catch (e) {
+15 -4
View File
@@ -51,10 +51,21 @@ export const useAuth = () => {
const initAuth = () => {
const auth = getAuth()
onAuthStateChanged(auth, async (firebaseUser) => {
if (firebaseUser) {
const idToken = await firebaseUser.getIdToken()
if (idToken !== token.value) {
token.value = idToken
// If user is authenticated in Firebase but we lost our backend token, try to restore
if (firebaseUser && !token.value) {
try {
const idToken = await firebaseUser.getIdToken()
const res = await $fetch<{ token: string; user: User }>('/api/auth/google', {
method: 'POST',
body: { idToken }
})
token.value = res.token
if (useRoute().path === '/login') {
navigateTo('/')
}
} catch (e) {
console.error('Failed to restore backend auth from Firebase', e)
}
}
})