diff --git a/static/admin/css/style.css b/static/admin/css/style.css index 7ffc507..a1da6e6 100644 --- a/static/admin/css/style.css +++ b/static/admin/css/style.css @@ -534,6 +534,17 @@ button { display: inline-block; } +#xpubs-deletion-actions span { + display: inline; +} + +#xpubs-deletion-actions input { + width: 50px; + margin-left: 5px; + margin-right: 5px; + display: inline-block; +} + #xpubs-tool-details #xpub-value { overflow: hidden; } diff --git a/static/admin/dmt/xpubs-tools/xpubs-tools.html b/static/admin/dmt/xpubs-tools/xpubs-tools.html index 2eeb6b9..fd7017e 100644 --- a/static/admin/dmt/xpubs-tools/xpubs-tools.html +++ b/static/admin/dmt/xpubs-tools/xpubs-tools.html @@ -61,6 +61,7 @@
+
@@ -77,6 +78,14 @@ +
+
+ Do you want to delete this xpub? + + +
+
+
diff --git a/static/admin/dmt/xpubs-tools/xpubs-tools.js b/static/admin/dmt/xpubs-tools/xpubs-tools.js index 930663e..2ada7e5 100644 --- a/static/admin/dmt/xpubs-tools/xpubs-tools.js +++ b/static/admin/dmt/xpubs-tools/xpubs-tools.js @@ -11,8 +11,11 @@ const screenXpubsToolsScript = { $('#btn-xpub-search-go').click(() => {this.searchXpub()}) $('#btn-xpub-details-reset').click(() => {this.showSearchForm()}) $('#btn-xpub-details-rescan').click(() => {this.showRescanForm()}) + $('#btn-xpub-details-delete').click(() => {this.showDeletionForm()}) $('#btn-xpub-rescan-go').click(() => {this.rescanXpub()}) $('#btn-xpub-rescan-cancel').click(() => {this.hideRescanForm()}) + $('#btn-xpub-delete-go').click(() => {this.deleteXpub()}) + $('#btn-xpub-delete-cancel').click(() => {this.hideDeletionForm()}) $('#btn-xpub-import-go').click(() => {this.importXpub()}) $('#btn-xpub-details-retype').click(() => {this.showImportForm(true)}) $('#btn-xpub-import-cancel').click(() => {this.hideImportForm(this.isReimport)}) @@ -25,6 +28,7 @@ const screenXpubsToolsScript = { preparePage: function() { this.hideRescanForm() + this.hideDeletionForm() this.showSearchForm() $("#xpub").focus() }, @@ -128,6 +132,18 @@ const screenXpubsToolsScript = { } }, + deleteXpub: function() { + lib_msg.displayMessage('Deleting a xpub. Please wait...') + return lib_api.getXpubDelete(this.currentXpub) + .then(result => { + this.currentXpub = null + this.preparePage() + lib_msg.displayInfo('Xpub successfully deleted') + }).catch(e => { + lib_errors.processError(e) + }) + }, + checkRescanStatus: function(callback) { this.rescanStatusTimerId = setTimeout(() => { lib_api.getXpubRescanStatus(this.currentXpub) @@ -281,6 +297,17 @@ const screenXpubsToolsScript = { $('#xpubs-tool-actions').show() }, + showDeletionForm: function() { + $('#xpubs-tool-actions').hide() + $('#xpubs-deletion-actions').show() + lib_msg.cleanMessagesUi() + }, + + hideDeletionForm: function() { + $('#xpubs-deletion-actions').hide() + $('#xpubs-tool-actions').show() + }, + } screenScripts.set('#screen-xpubs-tools', screenXpubsToolsScript) diff --git a/static/admin/lib/api-wrapper.js b/static/admin/lib/api-wrapper.js index 47f492d..2fdae1d 100644 --- a/static/admin/lib/api-wrapper.js +++ b/static/admin/lib/api-wrapper.js @@ -110,6 +110,15 @@ const lib_api = { ) }, + /** + * Deletes a xpub + */ + getXpubDelete: function(xpub) { + let prefix = conf['prefixes']['support'] + let uri = this.baseUri + '/' + prefix + '/xpub/' + xpub + '/delete' + return this.sendGetUriEncoded(uri, {}) + }, + /** * Gets the status of a xpub rescan */