From 735b806d5d738ee05509c413fee22dfeb5dfbe7c Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Mon, 9 Apr 2018 22:27:17 +0200
Subject: [PATCH] Add check for noteId length

As we know the length of an UUID we can check if the base64 string
of the provided UUID is long enough for a legacy base64 encoded nodeId
and stop processing it in legacy mode, if it's not the case.

This should make the ugly warning way less common.

Signed-off-by: Sheogorath <sheogorath@shivering-isles.com>
---
 lib/models/note.js | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/lib/models/note.js b/lib/models/note.js
index 69393dd..2a048e3 100644
--- a/lib/models/note.js
+++ b/lib/models/note.js
@@ -211,6 +211,15 @@ module.exports = function (sequelize, DataTypes) {
           },
           // parse note id by LZString is deprecated, here for compability
           parseNoteIdByLZString: function (_callback) {
+            // Calculate minimal string length for an UUID that is encoded
+            // base64 encoded and optimize comparsion by using -1
+            // this should make a lot of LZ-String parsing errors obsolete
+            // as we can assume that a nodeId that is 48 chars or longer is a
+            // noteID.
+            const base64UuidLength = ((4 * 36) / 3) - 1
+            if (!(noteId.length > base64UuidLength)) {
+              return _callback(null, null)
+            }
             // try to parse note id by LZString Base64
             try {
               var id = LZString.decompressFromBase64(noteId)