diff options
-rw-r--r-- | extension/background/wallet.js | 44 | ||||
-rw-r--r-- | extension/pages/show-db.html | 14 | ||||
-rw-r--r-- | extension/pages/show-db.js | 27 | ||||
-rw-r--r-- | extension/style/wallet.css | 10 |
4 files changed, 93 insertions, 2 deletions
diff --git a/extension/background/wallet.js b/extension/background/wallet.js index 6c596899f..18b0a511c 100644 --- a/extension/background/wallet.js +++ b/extension/background/wallet.js @@ -58,7 +58,6 @@ function confirmReserve(db, detail, sendResponse) { let reserveRecord = { reserve_pub: keypair.pub, reserve_priv: keypair.priv, - keypair: keypair, mint_base_url: detail.mint, created: now, last_query: null, @@ -76,8 +75,10 @@ function confirmReserve(db, detail, sendResponse) { let tx = db.transaction(['reserves'], 'readwrite'); tx.objectStore('reserves').add(reserveRecord); tx.addEventListener('complete', (e) => { - console.log('tx complete'); + console.log('tx complete, pk was ' + reserveRecord.reserve_pub); sendResponse(resp); + updateReserveMints(db); + // We have to update the mints now ... }); break; default: @@ -90,6 +91,42 @@ function confirmReserve(db, detail, sendResponse) { return true; } + +/** + * Fetch information for mints that + * are referenced in a reserve and that were not + * updated recently. + */ +function updateReserveMints(db) { + +} + + +function dumpDb(db, detail, sendResponse) { + let dump = {}; + dump.name = db.name; + dump.version = db.version; + dump.stores = {}; + console.log("stores: " + JSON.stringify(db.objectStoreNames)); + let tx = db.transaction(db.objectStoreNames); + tx.addEventListener('complete', (e) => { + sendResponse(dump); + }); + for (let i = 0; i < db.objectStoreNames.length; i++) { + let name = db.objectStoreNames[i]; + let storeDump = {}; + dump.stores[name] = storeDump; + let store = tx.objectStore(name).openCursor().addEventListener('success', (e) => { + let cursor = event.target.result; + if (cursor) { + storeDump[cursor.key] = cursor.value; + cursor.continue(); + } + }); + } + return true; +} + withTalerDb((db) => { console.log("db loaded"); chrome.runtime.onMessage.addListener( @@ -100,6 +137,9 @@ withTalerDb((db) => { case "confirm-reserve": return confirmReserve(db, req.detail, onresponse) break; + case "dump-db": + console.log('dumping db'); + return dumpDb(db, req.detail, onresponse); } }); }); diff --git a/extension/pages/show-db.html b/extension/pages/show-db.html new file mode 100644 index 000000000..ee54d0e08 --- /dev/null +++ b/extension/pages/show-db.html @@ -0,0 +1,14 @@ + +<!doctype html> + +<html> + <head> + <title>Taler Wallet: Reserve Created</title> + <link rel="stylesheet" type="text/css" href="../style/wallet.css"> + <script src="show-db.js"></script> + </head> + <body> + <h1>DB Dump</h1> + <pre id="dump"></pre> + </body> +</html> diff --git a/extension/pages/show-db.js b/extension/pages/show-db.js new file mode 100644 index 000000000..e2161f151 --- /dev/null +++ b/extension/pages/show-db.js @@ -0,0 +1,27 @@ +function replacer(match, pIndent, pKey, pVal, pEnd) { + var key = '<span class=json-key>'; + var val = '<span class=json-value>'; + var str = '<span class=json-string>'; + var r = pIndent || ''; + if (pKey) + r = r + key + pKey.replace(/[": ]/g, '') + '</span>: '; + if (pVal) + r = r + (pVal[0] == '"' ? str : val) + pVal + '</span>'; + return r + (pEnd || ''); +} + + +function prettyPrint(obj) { + var jsonLine = /^( *)("[\w]+": )?("[^"]*"|[\w.+-]*)?([,[{])?$/mg; + return JSON.stringify(obj, null, 3) + .replace(/&/g, '&').replace(/\\"/g, '"') + .replace(/</g, '<').replace(/>/g, '>') + .replace(jsonLine, replacer); +} + + +document.addEventListener("DOMContentLoaded", (e) => { + chrome.runtime.sendMessage({type:'dump-db'}, (resp) => { + document.getElementById('dump').innerHTML = prettyPrint(resp); + }); +}); diff --git a/extension/style/wallet.css b/extension/style/wallet.css index ba698296a..487cdd407 100644 --- a/extension/style/wallet.css +++ b/extension/style/wallet.css @@ -17,3 +17,13 @@ input.url { .formish { } + +.json-key { + color: brown; +} +.json-value { + color: navy; + } +.json-string { + color: olive; +} |