feat: adds an upload for assets on backgroundImage in account and site customisation (#3929)
Co-authored-by: dni ⚡ <office@dnilabs.com> Co-authored-by: alan <alan@lnbits.com>
This commit is contained in:
+1
-1
File diff suppressed because one or more lines are too long
@@ -41,5 +41,37 @@ window.app.component('lnbits-admin-site-customisation', {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {}
|
methods: {
|
||||||
|
onBackgroundImageInput(e) {
|
||||||
|
const file = e.target.files[0]
|
||||||
|
if (file) {
|
||||||
|
this.uploadBackgroundImage(file)
|
||||||
|
}
|
||||||
|
e.target.value = null
|
||||||
|
},
|
||||||
|
async uploadBackgroundImage(file) {
|
||||||
|
const formData = new FormData()
|
||||||
|
formData.append('file', file)
|
||||||
|
try {
|
||||||
|
const {data} = await LNbits.api.request(
|
||||||
|
'POST',
|
||||||
|
'/api/v1/assets?public_asset=true',
|
||||||
|
null,
|
||||||
|
formData,
|
||||||
|
{
|
||||||
|
headers: {'Content-Type': 'multipart/form-data'}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
const assetUrl = `${window.location.origin}/api/v1/assets/${data.id}/thumbnail`
|
||||||
|
this.formData.lnbits_default_bgimage = assetUrl
|
||||||
|
Quasar.Notify.create({
|
||||||
|
type: 'positive',
|
||||||
|
message: 'Background image uploaded.',
|
||||||
|
icon: null
|
||||||
|
})
|
||||||
|
} catch (e) {
|
||||||
|
LNbits.utils.notifyApiError(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -545,31 +545,56 @@ window.PageAccount = {
|
|||||||
if (file) {
|
if (file) {
|
||||||
this.uploadAsset(file)
|
this.uploadAsset(file)
|
||||||
}
|
}
|
||||||
|
e.target.value = null
|
||||||
},
|
},
|
||||||
async uploadAsset(file) {
|
onBackgroundImageInput(e) {
|
||||||
|
const file = e.target.files[0]
|
||||||
|
if (file) {
|
||||||
|
this.uploadBackgroundImage(file)
|
||||||
|
}
|
||||||
|
e.target.value = null
|
||||||
|
},
|
||||||
|
async uploadAsset(
|
||||||
|
file,
|
||||||
|
{isPublic = this.assetsUploadToPublic, notifySuccess = true} = {}
|
||||||
|
) {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append('file', file)
|
formData.append('file', file)
|
||||||
try {
|
try {
|
||||||
await LNbits.api.request(
|
const {data} = await LNbits.api.request(
|
||||||
'POST',
|
'POST',
|
||||||
`/api/v1/assets?public_asset=${this.assetsUploadToPublic}`,
|
`/api/v1/assets?public_asset=${isPublic}`,
|
||||||
null,
|
null,
|
||||||
formData,
|
formData,
|
||||||
{
|
{
|
||||||
headers: {'Content-Type': 'multipart/form-data'}
|
headers: {'Content-Type': 'multipart/form-data'}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
if (notifySuccess) {
|
||||||
this.$q.notify({
|
this.$q.notify({
|
||||||
type: 'positive',
|
type: 'positive',
|
||||||
message: 'Upload successful!',
|
message: 'Upload successful!',
|
||||||
icon: null
|
icon: null
|
||||||
})
|
})
|
||||||
|
}
|
||||||
await this.getUserAssets()
|
await this.getUserAssets()
|
||||||
|
return data
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn(e)
|
console.warn(e)
|
||||||
LNbits.utils.notifyApiError(e)
|
LNbits.utils.notifyApiError(e)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
async uploadBackgroundImage(file) {
|
||||||
|
const asset = await this.uploadAsset(file, {
|
||||||
|
isPublic: false,
|
||||||
|
notifySuccess: false
|
||||||
|
})
|
||||||
|
if (!asset) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const assetUrl = `${window.location.origin}/api/v1/assets/${asset.id}/thumbnail`
|
||||||
|
await this.siteCustomisationChanged({bgimageChoice: assetUrl})
|
||||||
|
},
|
||||||
async deleteAsset(asset) {
|
async deleteAsset(asset) {
|
||||||
LNbits.utils
|
LNbits.utils
|
||||||
.confirmDialog('Are you sure you want to delete this asset?')
|
.confirmDialog('Are you sure you want to delete this asset?')
|
||||||
|
|||||||
@@ -251,10 +251,27 @@
|
|||||||
type="text"
|
type="text"
|
||||||
v-model="formData.lnbits_default_bgimage"
|
v-model="formData.lnbits_default_bgimage"
|
||||||
label="Background Image"
|
label="Background Image"
|
||||||
@update:model-value="applyGlobalBgimage"
|
|
||||||
hint="This must be a trusted source. It can change the content and it can log your IP address."
|
hint="This must be a trusted source. It can change the content and it can log your IP address."
|
||||||
>
|
>
|
||||||
|
<template v-slot:append>
|
||||||
|
<q-btn
|
||||||
|
dense
|
||||||
|
flat
|
||||||
|
round
|
||||||
|
icon="upload"
|
||||||
|
@click="$refs.adminBackgroundImageInput.click()"
|
||||||
|
>
|
||||||
|
<q-tooltip>Upload background image</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
|
</template>
|
||||||
</q-input>
|
</q-input>
|
||||||
|
<input
|
||||||
|
type="file"
|
||||||
|
ref="adminBackgroundImageInput"
|
||||||
|
accept="image/*"
|
||||||
|
style="display: none"
|
||||||
|
@change="onBackgroundImageInput"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row q-col-gutter-md q-mb-md">
|
<div class="row q-col-gutter-md q-mb-md">
|
||||||
|
|||||||
@@ -492,10 +492,28 @@
|
|||||||
siteCustomisationChanged({bgimageChoice: $event})
|
siteCustomisationChanged({bgimageChoice: $event})
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
|
<template v-slot:append>
|
||||||
|
<q-btn
|
||||||
|
dense
|
||||||
|
flat
|
||||||
|
round
|
||||||
|
icon="upload"
|
||||||
|
@click="$refs.backgroundImageInput.click()"
|
||||||
|
>
|
||||||
|
<q-tooltip>Upload background image</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
|
</template>
|
||||||
<q-tooltip
|
<q-tooltip
|
||||||
><span v-text="$t('background_image')"></span
|
><span v-text="$t('background_image')"></span
|
||||||
></q-tooltip>
|
></q-tooltip>
|
||||||
</q-input>
|
</q-input>
|
||||||
|
<input
|
||||||
|
type="file"
|
||||||
|
ref="backgroundImageInput"
|
||||||
|
accept="image/*"
|
||||||
|
style="display: none"
|
||||||
|
@change="onBackgroundImageInput"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row q-mb-md">
|
<div class="row q-mb-md">
|
||||||
|
|||||||
Reference in New Issue
Block a user