Merge pull request #1440 from lnbits/noreloadinstall

Removes install page reloads
This commit is contained in:
Arc 2023-02-01 06:37:03 +00:00 committed by GitHub
commit 865f4712c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 60 additions and 38 deletions

View file

@ -29,8 +29,8 @@
align="left" align="left"
> >
<q-tab <q-tab
name="featured" name="installed"
label="Featured" label="Installed"
@update="val => tab = val.name" @update="val => tab = val.name"
></q-tab> ></q-tab>
<q-tab <q-tab
@ -39,8 +39,8 @@
@update="val => tab = val.name" @update="val => tab = val.name"
></q-tab> ></q-tab>
<q-tab <q-tab
name="installed" name="featured"
label="Installed" label="Featured"
@update="val => tab = val.name" @update="val => tab = val.name"
></q-tab> ></q-tab>
</q-tabs> </q-tabs>
@ -318,7 +318,7 @@
data: function () { data: function () {
return { return {
searchTerm: '', searchTerm: '',
tab: 'featured', tab: 'all',
filteredExtensions: null, filteredExtensions: null,
showUninstallDialog: false, showUninstallDialog: false,
showUpgradeDialog: false, showUpgradeDialog: false,
@ -356,10 +356,10 @@
}, },
installExtension: async function (release) { installExtension: async function (release) {
const extension = this.selectedExtension const extension = this.selectedExtension
try { extension.inProgress = true
extension.inProgress = true this.showUpgradeDialog = false
this.showUpgradeDialog = false LNbits.api
await LNbits.api.request( .request(
'POST', 'POST',
`/api/v1/extension?usr=${this.g.user.id}`, `/api/v1/extension?usr=${this.g.user.id}`,
this.g.user.wallets[0].adminkey, this.g.user.wallets[0].adminkey,
@ -369,46 +369,61 @@
source_repo: release.source_repo source_repo: release.source_repo
} }
) )
window.location.href = [ .then(response => {
"{{ url_for('install.extensions') }}", extension.isAvailable = true
'?usr=', extension.isInstalled = true
this.g.user.id this.toggleExtension(extension)
].join('') extension.inProgress = false
} catch (error) { this.filteredExtensions = this.extensions.concat([])
LNbits.utils.notifyApiError(error) this.handleTabChanged('installed')
extension.inProgress = false this.tab = 'installed'
} })
.catch(err => {
LNbits.utils.notifyApiError(err)
extension.inProgress = false
})
}, },
uninstallExtension: async function () { uninstallExtension: async function () {
const extension = this.selectedExtension const extension = this.selectedExtension
this.showUpgradeDialog = false this.showUpgradeDialog = false
this.showUninstallDialog = false this.showUninstallDialog = false
try { extension.inProgress = true
extension.inProgress = true LNbits.api
await LNbits.api.request( .request(
'DELETE', 'DELETE',
`/api/v1/extension/${extension.id}?usr=${this.g.user.id}`, `/api/v1/extension/${extension.id}?usr=${this.g.user.id}`,
this.g.user.wallets[0].adminkey this.g.user.wallets[0].adminkey
) )
window.location.href = [ .then(response => {
"{{ url_for('install.extensions') }}", extension.isAvailable = false
'?usr=', extension.isInstalled = false
this.g.user.id extension.inProgress = false
].join('') this.filteredExtensions = this.extensions.concat([])
} catch (error) { this.handleTabChanged('installed')
LNbits.utils.notifyApiError(error) this.tab = 'installed'
extension.inProgress = false })
} .catch(err => {
LNbits.utils.notifyApiError(err)
extension.inProgress = false
})
}, },
toggleExtension: function (extension) { toggleExtension: function (extension) {
const action = extension.isActive ? 'activate' : 'deactivate' const action = extension.isActive ? 'activate' : 'deactivate'
window.location.href = [ LNbits.api
"{{ url_for('install.extensions') }}", .request(
'?usr=', 'GET',
this.g.user.id, "{{ url_for('install.extensions') }}?usr=" +
`&${action}=`, this.g.user.id +
extension.id '&' +
].join('') action +
'=' +
extension.id
)
.then(response => {})
.catch(err => {
LNbits.utils.notifyApiError(err)
extension.inProgress = false
})
}, },
showUninstall: function () { showUninstall: function () {
@ -477,7 +492,12 @@
inProgress: false inProgress: false
})) }))
this.filteredExtensions = this.extensions.concat([]) this.filteredExtensions = this.extensions.concat([])
this.handleTabChanged('featured') for (let i = 0; i < this.filteredExtensions.length; i++) {
if (this.filteredExtensions[i].isInstalled != false) {
this.handleTabChanged('installed')
this.tab = 'installed'
}
}
}, },
mixins: [windowMixin] mixins: [windowMixin]
}) })

View file

@ -761,6 +761,8 @@ async def api_install_extension(
if extension.upgrade_hash: if extension.upgrade_hash:
ext_info.nofiy_upgrade() ext_info.nofiy_upgrade()
return extension
except Exception as ex: except Exception as ex:
logger.warning(ex) logger.warning(ex)
ext_info.clean_extension_files() ext_info.clean_extension_files()