Files
th-hotel-simple/client/src/main.ts
2026-07-13 11:07:56 +08:00

52 lines
1.3 KiB
TypeScript

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import PrimeVue from 'primevue/config'
import Aura from '@primevue/themes/aura'
import { VueQueryPlugin } from '@tanstack/vue-query'
import 'primeicons/primeicons.css'
import App from './App.vue'
import {
setReservationHotelIdProvider,
setReservationTimeZoneProvider,
} from './config/reservationConfig'
import { i18n } from './i18n'
import { router } from './router'
import { setUnauthorizedHandler } from './services/httpClient'
import { useAuthStore } from './stores/authStore'
import './styles/main.css'
const app = createApp(App)
const pinia = createPinia()
const authStore = useAuthStore(pinia)
setReservationHotelIdProvider(() => authStore.selectedHotelId)
setReservationTimeZoneProvider(() => authStore.selectedHotel?.time_zone)
setUnauthorizedHandler(() => {
const currentPath = router.currentRoute.value.fullPath
authStore.clearAuth()
if (!currentPath.startsWith('/login')) {
void router.push({
path: '/login',
query: {
redirect: currentPath,
},
})
}
})
app.use(pinia)
app.use(router)
app.use(i18n)
app.use(VueQueryPlugin)
app.use(PrimeVue, {
theme: {
preset: Aura,
options: {
darkModeSelector: '.app-theme-dark',
},
},
})
app.mount('#app')