tiny-rdm/frontend/src/main.js

45 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

2023-06-27 15:53:29 +08:00
import { createPinia } from 'pinia'
2023-09-22 18:31:50 +08:00
import { createApp, nextTick } from 'vue'
2023-06-27 15:53:29 +08:00
import App from './App.vue'
import './styles/style.scss'
import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
import relativeTime from 'dayjs/plugin/relativeTime'
2023-08-20 15:33:51 +08:00
import { i18n } from '@/utils/i18n.js'
import { setupDiscreteApi } from '@/utils/discrete.js'
import usePreferencesStore from 'stores/preferences.js'
2023-09-02 18:23:40 +08:00
import { loadEnvironment } from '@/utils/platform.js'
dayjs.extend(duration)
dayjs.extend(relativeTime)
2023-06-27 15:53:29 +08:00
async function setupApp() {
const app = createApp(App)
app.use(i18n)
app.use(createPinia())
2023-09-02 18:23:40 +08:00
await loadEnvironment()
const prefStore = usePreferencesStore()
await prefStore.loadPreferences()
await setupDiscreteApi()
app.config.errorHandler = (err, instance, info) => {
// TODO: add "send error message to author" later
2023-09-22 18:31:50 +08:00
nextTick().then(() => {
try {
const content = err.toString()
$notification.error(content, {
title: i18n.global.t('common.error'),
meta: 'Please see console output for more detail',
})
console.error(err)
} catch (e) {}
})
}
app.config.warnHandler = (message) => {
console.warn(message)
}
app.mount('#app')
}
setupApp()