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_codeVersion = 20200429;
var nb_dataVersion = 20190412; var nb_dataVersion = 20190412;
// class Database {
if (typeof(localStorage) === "undefined") get(key) {
{ throw "abstract";
alert('Hmmm... no "localStorage" support'); }
}
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 * poor man's error handling -- $fixme
@ -1421,8 +1476,8 @@
var blob_id = board.id + '.' + board.revision; var blob_id = board.id + '.' + board.revision;
localStorage.setItem('nullboard.board.' + blob_id, JSON.stringify(board)); globalStorage.set('nullboard.board.' + blob_id, JSON.stringify(board));
localStorage.setItem('nullboard.board.' + board.id, board.revision); globalStorage.set('nullboard.board.' + board.id, board.revision);
console.log('Saved nullboard.board.' + blob_id + ' of ' + board.title); console.log('Saved nullboard.board.' + blob_id + ' of ' + board.title);
// //
@ -1473,11 +1528,11 @@
var blob; var blob;
var board; var board;
revision = localStorage.getItem('nullboard.board.' + board_id); revision = globalStorage.get('nullboard.board.' + board_id);
if (! revision) if (! revision)
return false; return false;
blob = localStorage.getItem('nullboard.board.' + board_id + '.' + revision); blob = globalStorage.get('nullboard.board.' + board_id + '.' + revision);
if (! blob) if (! blob)
return false; return false;
@ -1507,11 +1562,13 @@
var re = new RegExp('^nullboard\.board\.' + board_id + '\.(\\d+)$'); var re = new RegExp('^nullboard\.board\.' + board_id + '\.(\\d+)$');
var r = []; var r = [];
for (var i=0; i<localStorage.length; i++) globalStorage.forEach((k) => {
{ var m = k.match(re);
var m = localStorage.key(i).match(re); if (m)
if (m) r.push( parseInt(m[1]) ); {
} r.push( parseInt(m[1]) );
}
});
r.sort(function(a,b){ return b-a; }); r.sort(function(a,b){ return b-a; });
return r; return r;
@ -1541,7 +1598,7 @@
function nukeBoardRevision(rev) function nukeBoardRevision(rev)
{ {
var k = 'nullboard.board.' + document.board.id + '.' + rev; var k = 'nullboard.board.' + document.board.id + '.' + rev;
localStorage.removeItem(k); globalStorage.del(k);
console.log("Removed " + k); console.log("Removed " + k);
} }
@ -1549,21 +1606,15 @@
{ {
var prefix = new RegExp('^nullboard\.board\.' + document.board.id); var prefix = new RegExp('^nullboard\.board\.' + document.board.id);
for (var i=0; i<localStorage.length; ) globalStorage.forEach((k) => {
{
var k = localStorage.key(i);
if (k.match(prefix)) if (k.match(prefix))
{ {
console.log("Removed " + k); 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(); board.id = +new Date();
var blob_id = board.id + '.' + board.revision; var blob_id = board.id + '.' + board.revision;
localStorage.setItem('nullboard.board.' + blob_id, JSON.stringify(board)); globalStorage.set('nullboard.board.' + blob_id, JSON.stringify(board));
localStorage.setItem('nullboard.board.' + board.id, board.revision); globalStorage.set('nullboard.board.' + board.id, board.revision);
openBoard(board.id); openBoard(board.id);
} }
@ -1631,9 +1682,9 @@
demo.revision = 1; demo.revision = 1;
demo.history = [ 1 ]; demo.history = [ 1 ];
localStorage.setItem('nullboard.board.' + demo.id + '.' + demo.revision, JSON.stringify(demo)); globalStorage.set('nullboard.board.' + demo.id + '.' + demo.revision, JSON.stringify(demo));
localStorage.setItem('nullboard.board.' + demo.id, demo.revision); globalStorage.set('nullboard.board.' + demo.id, demo.revision);
localStorage.setItem('nullboard.last_board', demo.id); globalStorage.set('nullboard.last_board', demo.id);
return demo.id; return demo.id;
} }
@ -1818,7 +1869,7 @@
document.board = loadBoard(board_id); document.board = loadBoard(board_id);
localStorage.setItem('nullboard.last_board', board_id); globalStorage.set('nullboard.last_board', board_id);
showBoard(true); showBoard(true);
} }
@ -1829,7 +1880,7 @@
var via_menu = $('.wrap .board > .head .menu .bulk').is(':visible'); 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); openBoard(board_id);
if (via_menu) if (via_menu)
@ -1855,7 +1906,7 @@
.queue(function(){ $board.remove(); }); .queue(function(){ $board.remove(); });
document.board = null; document.board = null;
localStorage.setItem('nullboard.last_board', null); globalStorage.set('nullboard.last_board', null);
updateUndoRedo(); updateUndoRedo();
updateBoardIndex(); updateBoardIndex();
@ -1867,7 +1918,7 @@
document.board = new Board(''); document.board = new Board('');
document.board.history = [ 0 ]; document.board.history = [ 0 ];
localStorage.setItem('nullboard.last_board', document.board_id); globalStorage.set('nullboard.last_board', document.board_id);
showBoard(false); showBoard(false);
@ -2210,11 +2261,11 @@
*/ */
function peekBoardTitle(board_id) function peekBoardTitle(board_id)
{ {
var revision = localStorage.getItem('nullboard.board.' + board_id); var revision = globalStorage.get('nullboard.board.' + board_id);
if (! revision) if (! revision)
return false; return false;
var blob = localStorage.getItem('nullboard.board.' + board_id + '.' + revision); var blob = globalStorage.get('nullboard.board.' + board_id + '.' + revision);
if (! blob) if (! blob)
return false; return false;
@ -2239,17 +2290,15 @@
$index.html(''); $index.html('');
$index.hide(); $index.hide();
for (var i=0; i<localStorage.length; i++) globalStorage.forEach((k) => {
{
var k = localStorage.key(i);
var m = k.match(/^nullboard\.board\.(\d+)$/); var m = k.match(/^nullboard\.board\.(\d+)$/);
if (! m) if (! m)
continue; return;
var board_id = m[1]; var board_id = m[1];
var title = peekBoardTitle(board_id); var title = peekBoardTitle(board_id);
if (title === false) if (title === false)
continue; return;
var $e = $entry.clone(); var $e = $entry.clone();
$e[0].board_id = board_id; $e[0].board_id = board_id;
@ -2260,7 +2309,7 @@
$index.append($e); $index.append($e);
empty = false; empty = false;
} });
if (id_now) $export.show(); if (id_now) $export.show();
else $export.hide(); else $export.hide();
@ -2610,11 +2659,11 @@
$('.config .exp-board').click(function(){ $('.config .exp-board').click(function(){
var board = document.board; var board = document.board;
var revision = localStorage.getItem('nullboard.board.' + board.id); var revision = globalStorage.get('nullboard.board.' + board.id);
if (! revision) if (! revision)
return false; return false;
var blob = localStorage.getItem('nullboard.board.' + board.id + '.' + revision); var blob = globalStorage.get('nullboard.board.' + board.id + '.' + revision);
if (! blob) if (! blob)
return false; return false;
@ -2631,14 +2680,14 @@
$('.config .switch-theme').click(function() { $('.config .switch-theme').click(function() {
var $body = $('body'); var $body = $('body');
$body.toggleClass('dark'); $body.toggleClass('dark');
localStorage.setItem('nullboard.theme', $body.hasClass('dark') ? 'dark' : ''); globalStorage.set('nullboard.theme', $body.hasClass('dark') ? 'dark' : '');
return false; return false;
}); });
$('.config .switch-fsize').click(function(){ $('.config .switch-fsize').click(function(){
var $body = $('body'); var $body = $('body');
$body.toggleClass('z1'); $body.toggleClass('z1');
localStorage.setItem('nullboard.fsize', $body.hasClass('z1') ? 'z1' : ''); globalStorage.set('nullboard.fsize', $body.hasClass('z1') ? 'z1' : '');
return false; return false;
}); });
@ -2765,14 +2814,14 @@
} }
// //
if (localStorage.getItem('nullboard.theme') == 'dark') if (globalStorage.get('nullboard.theme') == 'dark')
$('body').addClass('dark'); $('body').addClass('dark');
if (localStorage.getItem('nullboard.fsize') == 'z1') if (globalStorage.get('nullboard.fsize') == 'z1')
$('body').addClass('z1'); $('body').addClass('z1');
// //
var board_id = localStorage.getItem('nullboard.last_board'); var board_id = globalStorage.get('nullboard.last_board');
if (board_id) if (board_id)
document.board = loadBoard(board_id); document.board = loadBoard(board_id);