Update to migrate note url in the history of browser storage and cookie
Signed-off-by: Max Wu <jackymaxj@gmail.com>
This commit is contained in:
parent
fe429e9ac1
commit
d08c9522c0
2 changed files with 47 additions and 0 deletions
|
@ -3,6 +3,12 @@
|
||||||
|
|
||||||
import store from 'store'
|
import store from 'store'
|
||||||
import S from 'string'
|
import S from 'string'
|
||||||
|
import LZString from 'lz-string'
|
||||||
|
|
||||||
|
import {
|
||||||
|
checkNoteIdValid,
|
||||||
|
encodeNoteId
|
||||||
|
} from './utils'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
checkIfAuth
|
checkIfAuth
|
||||||
|
@ -291,6 +297,15 @@ function parseToHistory (list, notehistory, callback) {
|
||||||
else if (!list || !notehistory) callback(list, notehistory)
|
else if (!list || !notehistory) callback(list, notehistory)
|
||||||
else if (notehistory && notehistory.length > 0) {
|
else if (notehistory && notehistory.length > 0) {
|
||||||
for (let i = 0; i < notehistory.length; i++) {
|
for (let i = 0; i < notehistory.length; i++) {
|
||||||
|
// migrate LZString encoded id to base64url encoded id
|
||||||
|
try {
|
||||||
|
let id = LZString.decompressFromBase64(notehistory[i].id)
|
||||||
|
if (id && checkNoteIdValid(id)) {
|
||||||
|
notehistory[i].id = encodeNoteId(id)
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
// na
|
||||||
|
}
|
||||||
// parse time to timestamp and fromNow
|
// parse time to timestamp and fromNow
|
||||||
const timestamp = (typeof notehistory[i].time === 'number' ? moment(notehistory[i].time) : moment(notehistory[i].time, 'MMMM Do YYYY, h:mm:ss a'))
|
const timestamp = (typeof notehistory[i].time === 'number' ? moment(notehistory[i].time) : moment(notehistory[i].time, 'MMMM Do YYYY, h:mm:ss a'))
|
||||||
notehistory[i].timestamp = timestamp.valueOf()
|
notehistory[i].timestamp = timestamp.valueOf()
|
||||||
|
|
32
public/js/utils.js
Normal file
32
public/js/utils.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
import base64url from 'base64url'
|
||||||
|
|
||||||
|
let uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
|
||||||
|
|
||||||
|
export function checkNoteIdValid (id) {
|
||||||
|
let result = id.match(uuidRegex)
|
||||||
|
if (result && result.length === 1) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function encodeNoteId (id) {
|
||||||
|
// remove dashes in UUID and encode in url-safe base64
|
||||||
|
let str = id.replace(/-/g, '')
|
||||||
|
let hexStr = Buffer.from(str, 'hex')
|
||||||
|
return base64url.encode(hexStr)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function decodeNoteId (encodedId) {
|
||||||
|
// decode from url-safe base64
|
||||||
|
let id = base64url.toBuffer(encodedId).toString('hex')
|
||||||
|
// add dashes between the UUID string parts
|
||||||
|
let idParts = []
|
||||||
|
idParts.push(id.substr(0, 8))
|
||||||
|
idParts.push(id.substr(8, 4))
|
||||||
|
idParts.push(id.substr(12, 4))
|
||||||
|
idParts.push(id.substr(16, 4))
|
||||||
|
idParts.push(id.substr(20, 12))
|
||||||
|
return idParts.join('-')
|
||||||
|
}
|
Loading…
Reference in a new issue