Files
flagnote-web/src/router/index.js
Jesse-Ma 9a7d98316c tag1
2022-06-06 10:56:12 +08:00

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