fix get resources after login

This commit is contained in:
vadim committed 2026-10-21 12:56:57 +03:00
1 parent 327f59104d
commit 9303a66aa8
9 files changed
+69 -12

No files matched your search

+26 -6
View File
@@ -1,7 +1,7 @@
<script setup lang="ts">
import { useEventSource } from '@vueuse/core'
import { storeToRefs } from 'pinia'
import { computed, onMounted, watch } from 'vue'
import { computed, watch } from 'vue'
import { useRoute } from 'vue-router'
import { useStatusStore } from '@/stores/status.ts'
import { useIssueTypeStore } from '@/stores/issue-type.ts'
@@ -25,7 +25,7 @@ interface IssueSseEvent {
type: string
}
const { data, event } = useEventSource<string[], IssueSseEvent>(
const { event, open, close } = useEventSource<string[], IssueSseEvent>(
`${window.location.origin}/api/issues/events`,
['issue.created', 'issue.updated', 'issue.deleted'],
{
@@ -61,10 +61,30 @@ const layout = computed(() => {
return layout ? `${layout}Layout` : 'DefaultLayout'
})
onMounted(async () => {
await Promise.all([statusStore.list(), issueTypeStore.list()])
await issueStore.getStat(currentProjectId.value)
})
// Все эти ресурсы требуют авторизации: грузим при появлении сессии и чистим при выходе,
// иначе запросы, ушедшие до логина, падают с 401 и больше не повторяются
watch(
() => session.value.data?.user.id,
async (userId) => {
if (!userId) {
close()
statusStore.reset()
issueTypeStore.reset()
issueStore.reset()
projectStore.reset()
return
}
open()
try {
await Promise.all([statusStore.list(), issueTypeStore.list()])
await issueStore.getStat(currentProjectId.value)
} catch (e) {
console.error('Failed to load dictionaries', e)
}
},
{ immediate: true },
)
</script>
<template>