-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
68 lines (61 loc) · 2.21 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import { createApp } from 'vue'
// Commons PrimeVue components
import PrimeVue from 'primevue/config'
import Dialog from 'primevue/dialog'
import Button from 'primevue/button'
import DataTable from 'primevue/datatable'
import Column from 'primevue/column'
import InputText from 'primevue/inputtext'
import Dropdown from 'primevue/dropdown'
import ConfirmationService from 'primevue/confirmationservice'
import ConfirmDialog from 'primevue/confirmdialog'
import ToastService from 'primevue/toastservice'
import Tooltip from 'primevue/tooltip'
import HelpMessage from '@/components/HelpMessage.vue'
import App from './App.vue'
import router from '@/services/router'
import db from '@/services/db-plugin'
import supabase from '@/services/supabase'
import { utils } from '@/services/utils'
import { debounceDirective } from './services/debounce'
import 'bootstrap/dist/css/bootstrap-utilities.css'
import 'primeicons/primeicons.css'
import 'primevue/resources/themes/lara-light-indigo/theme.css'
import 'primevue/resources/primevue.min.css'
import './main.scss'
utils()
const app = createApp(App)
.use(router)
.use(db)
.use(PrimeVue)
.use(ConfirmationService)
.use(ToastService)
.directive('tooltip', Tooltip)
.directive('debounce', debounceDirective)
.component('Dialog', Dialog)
.component('Button', Button)
.component('DataTable', DataTable)
.component('Column', Column)
.component('InputText', InputText)
.component('ConfirmDialog', ConfirmDialog)
.component('Dropdown', Dropdown)
.component('HelpMessage', HelpMessage)
router.beforeEach(async (to) => {
const { data, error } = await supabase.auth.getSession()
if (error) this.toastError(error)
let user = data.session?.user
if (to.path.includes('update-password')) {
// wait for the user to be signed in in the backend
while (user == null) {
await new Promise((r) => setTimeout(r, 400))
const { data, error } = await supabase.auth.getSession()
if (error) this.toastError(error)
user = data.session?.user
}
app._instance.data.user = user
return { name: 'profile' }
}
if (!user && !['login', 'register', 'reset-password'].includes(to.name)) return { name: 'login' }
})
app.config.unwrapInjectedRef = true
app.mount('#app')