diff --git a/lnbits/core/templates/core/install.html b/lnbits/core/templates/core/install.html index 19056f7c0..178c2aeac 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 55fbb7a42..23efe47e8 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()