87 lines
1.9 KiB
JavaScript
87 lines
1.9 KiB
JavaScript
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
|