mirror of
https://github.com/lnbits/lnbits.git
synced 2025-10-10 12:32:34 +02:00
working again
This commit is contained in:
@@ -313,174 +313,167 @@
|
|||||||
</q-card>
|
</q-card>
|
||||||
</q-dialog>
|
</q-dialog>
|
||||||
</div>
|
</div>
|
||||||
|
{% endblock %} {% block scripts %} {{ window_vars(user) }}
|
||||||
{% endblock %}
|
<script>
|
||||||
{% block scripts %}
|
new Vue({
|
||||||
<script >
|
el: '#vue',
|
||||||
|
data: function () {
|
||||||
|
return {
|
||||||
new Vue({
|
searchTerm: '',
|
||||||
el: '#vue',
|
tab: 'all',
|
||||||
mixins: [windowMixin],
|
filteredExtensions: null,
|
||||||
data: function () {
|
showUninstallDialog: false,
|
||||||
return {
|
showUpgradeDialog: false,
|
||||||
searchTerm: '',
|
selectedExtension: null,
|
||||||
tab: 'all',
|
selectedExtensionRepos: null,
|
||||||
filteredExtensions: null,
|
maxStars: 0
|
||||||
showUninstallDialog: false,
|
}
|
||||||
showUpgradeDialog: false,
|
|
||||||
selectedExtension: null,
|
|
||||||
selectedExtensionRepos: null,
|
|
||||||
maxStars: 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
searchTerm(term) {
|
|
||||||
this.filterExtensions(term, this.tab)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
handleTabChanged: function (tab) {
|
|
||||||
this.filterExtensions(this.searchTerm, tab)
|
|
||||||
},
|
},
|
||||||
filterExtensions(term, tab) {
|
watch: {
|
||||||
// Filter the extensions list
|
searchTerm(term) {
|
||||||
function extensionNameContains(searchTerm) {
|
this.filterExtensions(term, this.tab)
|
||||||
return function (extension) {
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleTabChanged: function (tab) {
|
||||||
|
this.filterExtensions(this.searchTerm, tab)
|
||||||
|
},
|
||||||
|
filterExtensions: function (term, tab) {
|
||||||
|
// Filter the extensions list
|
||||||
|
function extensionNameContains(searchTerm) {
|
||||||
|
return function (extension) {
|
||||||
|
return (
|
||||||
|
extension.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
||||||
|
extension.shortDescription
|
||||||
|
?.toLowerCase()
|
||||||
|
.includes(searchTerm.toLowerCase())
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.filteredExtensions = this.extensions
|
||||||
|
.filter(e => (tab === 'installed' ? e.isInstalled : true))
|
||||||
|
.filter(e => (tab === 'featured' ? e.isFeatured : true))
|
||||||
|
.filter(extensionNameContains(term))
|
||||||
|
},
|
||||||
|
installExtension: async function (release) {
|
||||||
|
const extension = this.selectedExtension
|
||||||
|
try {
|
||||||
|
extension.inProgress = true
|
||||||
|
this.showUpgradeDialog = false
|
||||||
|
await LNbits.api.request(
|
||||||
|
'POST',
|
||||||
|
`/api/v1/extension?usr=${this.g.user.id}`,
|
||||||
|
this.g.user.wallets[0].adminkey,
|
||||||
|
{
|
||||||
|
ext_id: extension.id,
|
||||||
|
archive: release.archive,
|
||||||
|
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
|
||||||
|
}
|
||||||
|
},
|
||||||
|
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}`,
|
||||||
|
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
|
||||||
|
}
|
||||||
|
},
|
||||||
|
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('')
|
||||||
|
},
|
||||||
|
|
||||||
|
showUninstall: function () {
|
||||||
|
this.showUpgradeDialog = false
|
||||||
|
this.showUninstallDialog = true
|
||||||
|
},
|
||||||
|
|
||||||
|
showUpgrade: async function (extension) {
|
||||||
|
this.selectedExtension = extension
|
||||||
|
this.showUpgradeDialog = true
|
||||||
|
this.selectedExtensionRepos = null
|
||||||
|
try {
|
||||||
|
const {data} = await LNbits.api.request(
|
||||||
|
'GET',
|
||||||
|
`/api/v1/extension/${extension.id}/releases?usr=${this.g.user.id}`,
|
||||||
|
this.g.user.wallets[0].adminkey
|
||||||
|
)
|
||||||
|
|
||||||
|
this.selectedExtensionRepos = data.reduce((repos, release) => {
|
||||||
|
repos[release.source_repo] = repos[release.source_repo] || {
|
||||||
|
releases: [],
|
||||||
|
isInstalled: false
|
||||||
|
}
|
||||||
|
release.isInstalled = this.isInstalledVersion(
|
||||||
|
this.selectedExtension,
|
||||||
|
release
|
||||||
|
)
|
||||||
|
if (release.isInstalled) {
|
||||||
|
repos[release.source_repo].isInstalled = true
|
||||||
|
}
|
||||||
|
repos[release.source_repo].releases.push(release)
|
||||||
|
return repos
|
||||||
|
}, {})
|
||||||
|
} catch (error) {
|
||||||
|
LNbits.utils.notifyApiError(error)
|
||||||
|
extension.inProgress = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hasNewVersion: function (extension) {
|
||||||
|
if (extension.installedRelease && extension.latestRelease) {
|
||||||
return (
|
return (
|
||||||
extension.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
extension.installedRelease.version !==
|
||||||
extension.shortDescription
|
extension.latestRelease.version
|
||||||
?.toLowerCase()
|
)
|
||||||
.includes(searchTerm.toLowerCase())
|
}
|
||||||
|
},
|
||||||
|
isInstalledVersion: function (extension, release) {
|
||||||
|
if (extension.installedRelease) {
|
||||||
|
return (
|
||||||
|
extension.installedRelease.source_repo === release.source_repo &&
|
||||||
|
extension.installedRelease.version === release.version
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.filteredExtensions = this.extensions
|
|
||||||
.filter(e => (tab === 'installed' ? e.isInstalled : true))
|
|
||||||
.filter(e => (tab === 'featured' ? e.isFeatured : true))
|
|
||||||
.filter(extensionNameContains(term))
|
|
||||||
},
|
},
|
||||||
async installExtension(release) {
|
created: function () {
|
||||||
const extension = this.selectedExtension
|
this.extensions = JSON.parse('{{extensions | tojson | safe}}').map(e => ({
|
||||||
try {
|
...e,
|
||||||
extension.inProgress = true
|
inProgress: false
|
||||||
this.showUpgradeDialog = false
|
}))
|
||||||
await LNbits.api.request(
|
this.filteredExtensions = this.extensions.concat([])
|
||||||
'POST',
|
|
||||||
`/api/v1/extension?usr=${this.g.user.id}`,
|
|
||||||
this.g.user.wallets[0].adminkey,
|
|
||||||
{
|
|
||||||
ext_id: extension.id,
|
|
||||||
archive: release.archive,
|
|
||||||
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
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
async uninstallExtension() {
|
mixins: [windowMixin]
|
||||||
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}`,
|
|
||||||
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
|
|
||||||
}
|
|
||||||
},
|
|
||||||
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('')
|
|
||||||
},
|
|
||||||
|
|
||||||
showUninstall() {
|
|
||||||
this.showUpgradeDialog = false
|
|
||||||
this.showUninstallDialog = true
|
|
||||||
},
|
|
||||||
|
|
||||||
async showUpgrade(extension) {
|
|
||||||
this.selectedExtension = extension
|
|
||||||
this.showUpgradeDialog = true
|
|
||||||
this.selectedExtensionRepos = null
|
|
||||||
try {
|
|
||||||
const {data} = await LNbits.api.request(
|
|
||||||
'GET',
|
|
||||||
`/api/v1/extension/${extension.id}/releases?usr=${this.g.user.id}`,
|
|
||||||
this.g.user.wallets[0].adminkey
|
|
||||||
)
|
|
||||||
|
|
||||||
this.selectedExtensionRepos = data.reduce((repos, release) => {
|
|
||||||
repos[release.source_repo] = repos[release.source_repo] || {
|
|
||||||
releases: [],
|
|
||||||
isInstalled: false
|
|
||||||
}
|
|
||||||
release.isInstalled = this.isInstalledVersion(
|
|
||||||
this.selectedExtension,
|
|
||||||
release
|
|
||||||
)
|
|
||||||
if (release.isInstalled) {
|
|
||||||
repos[release.source_repo].isInstalled = true
|
|
||||||
}
|
|
||||||
repos[release.source_repo].releases.push(release)
|
|
||||||
return repos
|
|
||||||
}, {})
|
|
||||||
} catch (error) {
|
|
||||||
LNbits.utils.notifyApiError(error)
|
|
||||||
extension.inProgress = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
hasNewVersion: function (extension) {
|
|
||||||
if (extension.installedRelease && extension.latestRelease) {
|
|
||||||
return (
|
|
||||||
extension.installedRelease.version !== extension.latestRelease.version
|
|
||||||
)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isInstalledVersion: function (extension, release) {
|
|
||||||
if (extension.installedRelease) {
|
|
||||||
return (
|
|
||||||
extension.installedRelease.source_repo === release.source_repo &&
|
|
||||||
extension.installedRelease.version === release.version
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
console.log('{{extensions}}')
|
|
||||||
console.log(this.extensions)
|
|
||||||
this.extensions = JSON.parse(window.extensions).map(e => ({
|
|
||||||
...e,
|
|
||||||
inProgress: false
|
|
||||||
}))
|
|
||||||
this.filteredExtensions = this.extensions.concat([])
|
|
||||||
},
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
Reference in New Issue
Block a user