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"
>
- tab = val.name"
>
tab = val.name"
>
tab = val.name"
>
@@ -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()