Group localstorage calls into class

master
Bel LaPointe 2021-02-26 21:33:28 -06:00
parent d449da9f54
commit 76aab678b5
1 changed files with 99 additions and 50 deletions

View File

@ -1216,11 +1216,66 @@
var nb_codeVersion = 20200429;
var nb_dataVersion = 20190412;
//
if (typeof(localStorage) === "undefined")
{
alert('Hmmm... no "localStorage" support');
}
class Database {
get(key) {
throw "abstract";
}
set(key)
{
throw "abstract";
}
del(key)
{
throw "abstract";
}
forEach(foo)
{
throw "abstract";
}
}
class Local extends Database {
constructor()
{
super();
if (typeof(localStorage) === "undefined")
{
throw 'Hmmm... no "localStorage" support';
}
}
get(key) {
return localStorage.getItem(key);
}
set(key, value)
{
return localStorage.setItem(key, value);
}
del(key)
{
return localStorage.removeItem(key);
}
forEach(foo)
{
var keys = [];
for (var i=0; i<localStorage.length; i++)
{
keys.push(localStorage.key(i));
}
for (var i=0; i<keys.length; i++)
{
foo(keys[i]);
}
}
}
globalStorage = new Local();
/*
* poor man's error handling -- $fixme
@ -1421,8 +1476,8 @@
var blob_id = board.id + '.' + board.revision;
localStorage.setItem('nullboard.board.' + blob_id, JSON.stringify(board));
localStorage.setItem('nullboard.board.' + board.id, board.revision);
globalStorage.set('nullboard.board.' + blob_id, JSON.stringify(board));
globalStorage.set('nullboard.board.' + board.id, board.revision);
console.log('Saved nullboard.board.' + blob_id + ' of ' + board.title);
//
@ -1473,11 +1528,11 @@
var blob;
var board;
revision = localStorage.getItem('nullboard.board.' + board_id);
revision = globalStorage.get('nullboard.board.' + board_id);
if (! revision)
return false;
blob = localStorage.getItem('nullboard.board.' + board_id + '.' + revision);
blob = globalStorage.get('nullboard.board.' + board_id + '.' + revision);
if (! blob)
return false;
@ -1507,11 +1562,13 @@
var re = new RegExp('^nullboard\.board\.' + board_id + '\.(\\d+)$');
var r = [];
for (var i=0; i<localStorage.length; i++)
{
var m = localStorage.key(i).match(re);
if (m) r.push( parseInt(m[1]) );
}
globalStorage.forEach((k) => {
var m = k.match(re);
if (m)
{
r.push( parseInt(m[1]) );
}
});
r.sort(function(a,b){ return b-a; });
return r;
@ -1541,7 +1598,7 @@
function nukeBoardRevision(rev)
{
var k = 'nullboard.board.' + document.board.id + '.' + rev;
localStorage.removeItem(k);
globalStorage.del(k);
console.log("Removed " + k);
}
@ -1549,21 +1606,15 @@
{
var prefix = new RegExp('^nullboard\.board\.' + document.board.id);
for (var i=0; i<localStorage.length; )
{
var k = localStorage.key(i);
globalStorage.forEach((k) => {
if (k.match(prefix))
{
console.log("Removed " + k);
localStorage.removeItem(k);
globalStorage.del(k);
}
else
{
i++;
}
}
});
localStorage.removeItem('nullboard.last_board');
globalStorage.del('nullboard.last_board');
}
//
@ -1582,8 +1633,8 @@
board.id = +new Date();
var blob_id = board.id + '.' + board.revision;
localStorage.setItem('nullboard.board.' + blob_id, JSON.stringify(board));
localStorage.setItem('nullboard.board.' + board.id, board.revision);
globalStorage.set('nullboard.board.' + blob_id, JSON.stringify(board));
globalStorage.set('nullboard.board.' + board.id, board.revision);
openBoard(board.id);
}
@ -1619,7 +1670,7 @@
'in":false},{"text":"Boards","raw":true,"min":false},{"text":"\u2022 Check out \u2261 at the top right.",' +
'"raw":false,"min":false},{"text":"\u2022 Try adding a new board.\\n\u2022 Try switching between the boards' +
'.","raw":false,"min":false},{"text":"\u2022 Try deleting a board. Unlike deleting a\\n list this _canno' +
't_ be undone.","raw":false,"min":false},{"text":"\u2022 Export the board (save to a file, as json)\\n' +
't_ be undone.","raw":false,"min":false},{"text":"\u2022 Export the board (save to a file, as json)\\n' +
'\u2022 Import the board (load from a save)","raw":false,"min":false}]}]}';
var demo = parseBoard(blob);
@ -1631,9 +1682,9 @@
demo.revision = 1;
demo.history = [ 1 ];
localStorage.setItem('nullboard.board.' + demo.id + '.' + demo.revision, JSON.stringify(demo));
localStorage.setItem('nullboard.board.' + demo.id, demo.revision);
localStorage.setItem('nullboard.last_board', demo.id);
globalStorage.set('nullboard.board.' + demo.id + '.' + demo.revision, JSON.stringify(demo));
globalStorage.set('nullboard.board.' + demo.id, demo.revision);
globalStorage.set('nullboard.last_board', demo.id);
return demo.id;
}
@ -1818,7 +1869,7 @@
document.board = loadBoard(board_id);
localStorage.setItem('nullboard.last_board', board_id);
globalStorage.set('nullboard.last_board', board_id);
showBoard(true);
}
@ -1829,7 +1880,7 @@
var via_menu = $('.wrap .board > .head .menu .bulk').is(':visible');
localStorage.setItem('nullboard.board.' + board_id, revision);
globalStorage.set('nullboard.board.' + board_id, revision);
openBoard(board_id);
if (via_menu)
@ -1855,7 +1906,7 @@
.queue(function(){ $board.remove(); });
document.board = null;
localStorage.setItem('nullboard.last_board', null);
globalStorage.set('nullboard.last_board', null);
updateUndoRedo();
updateBoardIndex();
@ -1867,7 +1918,7 @@
document.board = new Board('');
document.board.history = [ 0 ];
localStorage.setItem('nullboard.last_board', document.board_id);
globalStorage.set('nullboard.last_board', document.board_id);
showBoard(false);
@ -2210,11 +2261,11 @@
*/
function peekBoardTitle(board_id)
{
var revision = localStorage.getItem('nullboard.board.' + board_id);
var revision = globalStorage.get('nullboard.board.' + board_id);
if (! revision)
return false;
var blob = localStorage.getItem('nullboard.board.' + board_id + '.' + revision);
var blob = globalStorage.get('nullboard.board.' + board_id + '.' + revision);
if (! blob)
return false;
@ -2239,17 +2290,15 @@
$index.html('');
$index.hide();
for (var i=0; i<localStorage.length; i++)
{
var k = localStorage.key(i);
globalStorage.forEach((k) => {
var m = k.match(/^nullboard\.board\.(\d+)$/);
if (! m)
continue;
return;
var board_id = m[1];
var title = peekBoardTitle(board_id);
if (title === false)
continue;
return;
var $e = $entry.clone();
$e[0].board_id = board_id;
@ -2260,7 +2309,7 @@
$index.append($e);
empty = false;
}
});
if (id_now) $export.show();
else $export.hide();
@ -2610,11 +2659,11 @@
$('.config .exp-board').click(function(){
var board = document.board;
var revision = localStorage.getItem('nullboard.board.' + board.id);
var revision = globalStorage.get('nullboard.board.' + board.id);
if (! revision)
return false;
var blob = localStorage.getItem('nullboard.board.' + board.id + '.' + revision);
var blob = globalStorage.get('nullboard.board.' + board.id + '.' + revision);
if (! blob)
return false;
@ -2631,14 +2680,14 @@
$('.config .switch-theme').click(function() {
var $body = $('body');
$body.toggleClass('dark');
localStorage.setItem('nullboard.theme', $body.hasClass('dark') ? 'dark' : '');
globalStorage.set('nullboard.theme', $body.hasClass('dark') ? 'dark' : '');
return false;
});
$('.config .switch-fsize').click(function(){
var $body = $('body');
$body.toggleClass('z1');
localStorage.setItem('nullboard.fsize', $body.hasClass('z1') ? 'z1' : '');
globalStorage.set('nullboard.fsize', $body.hasClass('z1') ? 'z1' : '');
return false;
});
@ -2765,14 +2814,14 @@
}
//
if (localStorage.getItem('nullboard.theme') == 'dark')
if (globalStorage.get('nullboard.theme') == 'dark')
$('body').addClass('dark');
if (localStorage.getItem('nullboard.fsize') == 'z1')
if (globalStorage.get('nullboard.fsize') == 'z1')
$('body').addClass('z1');
//
var board_id = localStorage.getItem('nullboard.last_board');
var board_id = globalStorage.get('nullboard.last_board');
if (board_id)
document.board = loadBoard(board_id);