import Vue from 'vue' import VueRouter from 'vue-router' import EditNote from '@/views/EditNote.vue' import ViewNote from '@/views/ViewNote.vue' import ErrorView from '@/views/ErrorView.vue' import BlankNote from '@/views/BlankNote.vue' import { getKeyMeta, getNoteMeta } from "@/api/note"; import { getStoreKey } from "@/api/lock"; import storage from "@/libs/storage"; Vue.use(VueRouter) let keyMeta = null; function getNoteView() { let path = location.pathname; if (null != keyMeta) { path = "/" + keyMeta.key; } let reg = /^\/[abcdefhikmnopqstuvwxyz23456789]{16}$/ if (!reg.test(path)) { return; } let key = path.substr(1, path.length - 1); let storeKey = getStoreKey(key); if (keyMeta && keyMeta.cipher) { storage.session.setObject(storeKey + '.keyMeta', keyMeta); return EditNote; } let noteMeta = null; noteMeta = getNoteMeta(key); if (!noteMeta || !noteMeta.key) { let storeText = storage.local.getText(storeKey + '.text'); if(storeText){ return EditNote; }else{ return BlankNote; } } storage.session.setObject(storeKey + '.noteMeta', noteMeta); return ViewNote; } function getHomeRedirect() { let path = location.pathname; if (path != '/') { return; } let km = getKeyMeta(); km.isNew = true; //sessionStorage.setItem(km.getKey() + '.keyMeta', km); keyMeta = km; return '/' + keyMeta.key; } const routes = [ { path: '/', name: 'home', redirect: getHomeRedirect(), }, { path: '/error', name: 'error', component: ErrorView, }, { path: '/:name([abcdefhikmnopqstuvwxyz23456789]{16})', name: 'note', component: getNoteView(), } ] const router = new VueRouter({ routes, mode: 'history' }) export default router