Add migration for LZString compressed note id in history

Signed-off-by: Max Wu <jackymaxj@gmail.com>
This commit is contained in:
Max Wu 2018-02-26 16:46:59 +08:00
parent baa0418fb5
commit 44298baa93
1 changed files with 21 additions and 1 deletions

View File

@ -1,6 +1,7 @@
'use strict'
// history
// external modules
var LZString = require('lz-string')
// core
var config = require('./config')
@ -27,7 +28,26 @@ function getHistory (userid, callback) {
}
var history = {}
if (user.history) {
history = parseHistoryToObject(JSON.parse(user.history))
history = JSON.parse(user.history)
// migrate LZString encoded note id to base64url encoded note id
for (let i = 0, l = history.length; i < l; i++) {
let item = history[i]
// try to parse in base64url
let id = models.Note.decodeNoteId(item.id)
if (!id || !models.Note.checkNoteIdValid(id)) {
// try to parse in LZString if it can't be parsed in base64url
try {
id = LZString.decompressFromBase64(item.id)
} catch (err) {
id = null
}
if (id && models.Note.checkNoteIdValid(id)) {
// replace the note id to base64url encoded note id
history[i].id = models.Note.encodeNoteId(id)
}
}
}
history = parseHistoryToObject(history)
}
if (config.debug) {
logger.info('read history success: ' + user.id)