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 @@
+
+ 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
*/