47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
|
|
import * as VueRouter from 'vue-router'
|
||
|
|
import * as Vue from 'vue'
|
||
|
|
|
||
|
|
import App from './App.vue'
|
||
|
|
import Index from './views/Index.vue'
|
||
|
|
import NewGame from './views/NewGame.vue'
|
||
|
|
import Game from './views/Game.vue'
|
||
|
|
import Replay from './views/Replay.vue'
|
||
|
|
import Util from './../common/Util'
|
||
|
|
|
||
|
|
(async () => {
|
||
|
|
const res = await fetch(`/api/conf`)
|
||
|
|
const conf = await res.json()
|
||
|
|
|
||
|
|
function initme() {
|
||
|
|
let ID = localStorage.getItem('ID')
|
||
|
|
if (!ID) {
|
||
|
|
ID = Util.uniqId()
|
||
|
|
localStorage.setItem('ID', ID)
|
||
|
|
}
|
||
|
|
return ID
|
||
|
|
}
|
||
|
|
|
||
|
|
const router = VueRouter.createRouter({
|
||
|
|
history: VueRouter.createWebHashHistory(),
|
||
|
|
routes: [
|
||
|
|
{ name: 'index', path: '/', component: Index },
|
||
|
|
{ name: 'new-game', path: '/new-game', component: NewGame },
|
||
|
|
{ name: 'game', path: '/g/:id', component: Game },
|
||
|
|
{ name: 'replay', path: '/replay/:id', component: Replay },
|
||
|
|
],
|
||
|
|
})
|
||
|
|
|
||
|
|
router.beforeEach((to, from) => {
|
||
|
|
if (from.name) {
|
||
|
|
document.documentElement.classList.remove(`view-${String(from.name)}`)
|
||
|
|
}
|
||
|
|
document.documentElement.classList.add(`view-${String(to.name)}`)
|
||
|
|
})
|
||
|
|
|
||
|
|
const app = Vue.createApp(App)
|
||
|
|
app.config.globalProperties.$config = conf
|
||
|
|
app.config.globalProperties.$clientId = initme()
|
||
|
|
app.use(router)
|
||
|
|
app.mount('#app')
|
||
|
|
})()
|