From 76aab678b5c01c4a8cfbfa939a914d4ed27574d5 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Fri, 26 Feb 2021 21:33:28 -0600 Subject: [PATCH] Group localstorage calls into class --- nullboard.html | 149 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 99 insertions(+), 50 deletions(-) diff --git a/nullboard.html b/nullboard.html index 0717e11..c84937b 100644 --- a/nullboard.html +++ b/nullboard.html @@ -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 { + 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 { 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 { 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);