From e20bb99811ab637882d958b79d85c8e204068abb Mon Sep 17 00:00:00 2001 From: ben Date: Wed, 1 Feb 2023 06:12:00 +0000 Subject: [PATCH 1/3] Removes install page reloads --- lnbits/core/templates/core/install.html | 94 ++++++++++++++----------- lnbits/core/views/api.py | 2 + 2 files changed, 56 insertions(+), 40 deletions(-) diff --git a/lnbits/core/templates/core/install.html b/lnbits/core/templates/core/install.html index 19056f7c..178c2aea 100644 --- a/lnbits/core/templates/core/install.html +++ b/lnbits/core/templates/core/install.html @@ -28,9 +28,9 @@ active-color="primary" align="left" > - @@ -318,7 +318,7 @@ data: function () { return { searchTerm: '', - tab: 'featured', + tab: 'all', filteredExtensions: null, showUninstallDialog: false, showUpgradeDialog: false, @@ -356,11 +356,10 @@ }, installExtension: async function (release) { const extension = this.selectedExtension - try { extension.inProgress = true this.showUpgradeDialog = false - await LNbits.api.request( - 'POST', + LNbits.api + .request('POST', `/api/v1/extension?usr=${this.g.user.id}`, this.g.user.wallets[0].adminkey, { @@ -369,46 +368,55 @@ source_repo: release.source_repo } ) - window.location.href = [ - "{{ url_for('install.extensions') }}", - '?usr=', - this.g.user.id - ].join('') - } catch (error) { - LNbits.utils.notifyApiError(error) - extension.inProgress = false - } + .then(response => { + extension.isAvailable = true + extension.isInstalled = true + extension.inProgress = false + this.filteredExtensions = this.extensions.concat([]) + this.handleTabChanged('installed') + this.tab = 'installed' + }) + .catch(err => { + LNbits.utils.notifyApiError(err) + extension.inProgress = false + }) }, uninstallExtension: async function () { const extension = this.selectedExtension this.showUpgradeDialog = false this.showUninstallDialog = false - try { - extension.inProgress = true - await LNbits.api.request( - 'DELETE', - `/api/v1/extension/${extension.id}?usr=${this.g.user.id}`, + extension.inProgress = true + LNbits.api + .request('DELETE', + `/api/v1/extension/${extension.id}?usr=${this.g.user.id}`, this.g.user.wallets[0].adminkey ) - window.location.href = [ - "{{ url_for('install.extensions') }}", - '?usr=', - this.g.user.id - ].join('') - } catch (error) { - LNbits.utils.notifyApiError(error) - extension.inProgress = false - } + .then(response => { + extension.isAvailable = false + extension.isInstalled = false + extension.inProgress = false + this.filteredExtensions = this.extensions.concat([]) + this.handleTabChanged('installed') + this.tab = 'installed' + }) + .catch(err => { + LNbits.utils.notifyApiError(err) + extension.inProgress = false + }) }, toggleExtension: function (extension) { const action = extension.isActive ? 'activate' : 'deactivate' - window.location.href = [ - "{{ url_for('install.extensions') }}", - '?usr=', - this.g.user.id, - `&${action}=`, - extension.id - ].join('') + LNbits.api + .request('GET', + "{{ url_for('install.extensions') }}?usr=" + this.g.user.id + "&" + action + "=" + extension.id + ) + .then(response => { + // this.filteredExtensions = this.extensions.concat([]) + }) + .catch(err => { + LNbits.utils.notifyApiError(err) + extension.inProgress = false + }) }, showUninstall: function () { @@ -477,7 +485,13 @@ inProgress: false })) this.filteredExtensions = this.extensions.concat([]) - this.handleTabChanged('featured') + console.log(this.filteredExtensions) + for (let i = 0; i < this.filteredExtensions.length; i++) { + if(this.filteredExtensions[i].isInstalled != false){ + this.handleTabChanged('installed') + this.tab = 'installed' + } + } }, mixins: [windowMixin] }) diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py index 55fbb7a4..23efe47e 100644 --- a/lnbits/core/views/api.py +++ b/lnbits/core/views/api.py @@ -761,6 +761,8 @@ async def api_install_extension( if extension.upgrade_hash: ext_info.nofiy_upgrade() + return extension + except Exception as ex: logger.warning(ex) ext_info.clean_extension_files() From d2d7bd64697ab34b3a0d6af8b4712dc76bbc09cb Mon Sep 17 00:00:00 2001 From: ben Date: Wed, 1 Feb 2023 06:13:01 +0000 Subject: [PATCH 2/3] format --- lnbits/core/templates/core/install.html | 32 +++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/lnbits/core/templates/core/install.html b/lnbits/core/templates/core/install.html index 178c2aea..21d36902 100644 --- a/lnbits/core/templates/core/install.html +++ b/lnbits/core/templates/core/install.html @@ -28,7 +28,7 @@ active-color="primary" align="left" > - { @@ -407,16 +409,22 @@ toggleExtension: function (extension) { const action = extension.isActive ? 'activate' : 'deactivate' LNbits.api - .request('GET', - "{{ url_for('install.extensions') }}?usr=" + this.g.user.id + "&" + action + "=" + extension.id + .request( + 'GET', + "{{ url_for('install.extensions') }}?usr=" + + this.g.user.id + + '&' + + action + + '=' + + extension.id ) .then(response => { - // this.filteredExtensions = this.extensions.concat([]) + // this.filteredExtensions = this.extensions.concat([]) }) .catch(err => { LNbits.utils.notifyApiError(err) extension.inProgress = false - }) + }) }, showUninstall: function () { @@ -487,7 +495,7 @@ this.filteredExtensions = this.extensions.concat([]) console.log(this.filteredExtensions) for (let i = 0; i < this.filteredExtensions.length; i++) { - if(this.filteredExtensions[i].isInstalled != false){ + if (this.filteredExtensions[i].isInstalled != false) { this.handleTabChanged('installed') this.tab = 'installed' } From 31ae40d44d0944f00c4d24322f06bc4241dad9a5 Mon Sep 17 00:00:00 2001 From: ben Date: Wed, 1 Feb 2023 06:30:03 +0000 Subject: [PATCH 3/3] Working --- lnbits/core/templates/core/install.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lnbits/core/templates/core/install.html b/lnbits/core/templates/core/install.html index 21d36902..db56ca7a 100644 --- a/lnbits/core/templates/core/install.html +++ b/lnbits/core/templates/core/install.html @@ -372,6 +372,7 @@ .then(response => { extension.isAvailable = true extension.isInstalled = true + this.toggleExtension(extension) extension.inProgress = false this.filteredExtensions = this.extensions.concat([]) this.handleTabChanged('installed') @@ -418,9 +419,7 @@ '=' + extension.id ) - .then(response => { - // this.filteredExtensions = this.extensions.concat([]) - }) + .then(response => {}) .catch(err => { LNbits.utils.notifyApiError(err) extension.inProgress = false @@ -493,7 +492,6 @@ inProgress: false })) this.filteredExtensions = this.extensions.concat([]) - console.log(this.filteredExtensions) for (let i = 0; i < this.filteredExtensions.length; i++) { if (this.filteredExtensions[i].isInstalled != false) { this.handleTabChanged('installed')