[feat] user assets (#3504)

This commit is contained in:
Vlad Stan
2025-11-12 14:30:27 +02:00
committed by GitHub
parent c89721223f
commit 39c33699af
28 changed files with 1125 additions and 309 deletions
@@ -0,0 +1,154 @@
<template id="lnbits-admin-assets-config">
<q-card-section class="q-pa-none">
<h6 class="q-my-none q-mb-sm">Assets</h6>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-3">
<p>
<span v-text="$t('max_asset_size_mb')"></span>
</p>
<q-input
filled
type="number"
v-model.number="formData.lnbits_max_asset_size_mb"
:label="$t('max_asset_size_mb')"
step="0.1"
min="0"
:hint="$t('max_asset_size_mb_desc')"
></q-input>
</div>
<div class="col-12 col-md-9">
<p>
<span v-text="$t('assets_allowed_mime_types')"></span>
</p>
<q-input
filled
v-model.number="newAllowedAssetMimeType"
@keydown.enter="addAllowedAssetMimeType()"
:label="$t('assets_allowed_mime_types')"
:hint="$t('assets_allowed_mime_types_desc')"
>
<q-btn
@click="addAllowedAssetMimeType()"
dense
flat
icon="add"
></q-btn>
</q-input>
<div>
<q-chip
v-for="type in formData.lnbits_assets_allowed_mime_types"
:key="type"
removable
@remove="removeAllowedAssetMimeType(type)"
color="primary"
text-color="white"
class="ellipsis"
:label="type"
><q-tooltip
v-if="identifier"
anchor="top middle"
self="bottom middle"
><span v-text="identifier"></span></q-tooltip
></q-chip>
</div>
</div>
</div>
<q-separator class="q-mb-lg q-mt-sm"></q-separator>
<h6 class="q-my-none q-mb-sm">Thumbnails</h6>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-3">
<p>
<span v-text="$t('thumbnail_width')"></span>
</p>
<q-input
filled
type="number"
v-model.number="formData.lnbits_asset_thumbnail_width"
:label="$t('thumbnail_width')"
step="1"
min="0"
:hint="$t('thumbnail_width_desc')"
></q-input>
</div>
<div class="col-12 col-md-3">
<p>
<span v-text="$t('thumbnail_height')"></span>
</p>
<q-input
filled
type="number"
v-model.number="formData.lnbits_asset_thumbnail_height"
:label="$t('thumbnail_height')"
step="1"
min="0"
:hint="$t('thumbnail_height_desc')"
></q-input>
</div>
<div class="col-12 col-md-3">
<p>
<span v-text="$t('thumbnail_format')"></span>
</p>
<q-input
filled
v-model.number="formData.lnbits_asset_thumbnail_format"
:label="$t('thumbnail_format')"
:hint="$t('thumbnail_format_desc')"
></q-input>
</div>
</div>
<q-separator class="q-mb-lg q-mt-sm"></q-separator>
<h6 class="q-my-none q-mb-sm">Users</h6>
<div class="row q-col-gutter-md">
<div class="col-12 col-md-3">
<p>
<span v-text="$t('max_assets_per_user')"></span>
</p>
<q-input
filled
type="number"
v-model.number="formData.lnbits_max_assets_per_user"
:label="$t('max_assets_per_user')"
step="1"
min="0"
:hint="$t('max_assets_per_user_desc')"
></q-input>
</div>
<div class="col-12 col-md-9">
<p>
<span v-text="$t('assets_no_limit_users')"></span>
</p>
<q-input
filled
v-model.number="newNoLimitUser"
@keydown.enter="addNewNoLimitUser()"
:label="$t('assets_no_limit_users')"
:hint="$t('assets_no_limit_users_desc')"
>
<q-btn @click="addNewNoLimitUser()" dense flat icon="add"></q-btn>
</q-input>
<div>
<q-chip
v-for="type in formData.lnbits_assets_no_limit_users"
:key="type"
removable
@remove="removeNoLimitUser(type)"
color="primary"
text-color="white"
class="ellipsis"
:label="type"
><q-tooltip
v-if="identifier"
anchor="top middle"
self="bottom middle"
><span v-text="identifier"></span></q-tooltip
></q-chip>
</div>
</div>
</div>
</q-card-section>
<q-card-section>
<!-- for spacing -->
<br />
</q-card-section>
</template>
@@ -1,67 +0,0 @@
<template id="lnbits-admin-library">
<q-card-section class="q-pa-none">
<h6 class="q-my-none q-mb-sm">
<span v-text="$t('image_library')"></span>
</h6>
<q-btn
color="primary"
label="Add Image"
@click="$refs.imageInput.click()"
class="q-mb-md"
/>
<input
type="file"
ref="imageInput"
accept="image/png, image/jpeg, image/gif"
style="display: none"
@change="onImageInput"
/>
</q-card-section>
<div class="row q-col-gutter-sm q-pa-sm">
<div
v-for="image in library_images"
:key="image.filename"
class="col-6 col-sm-4 col-md-3 col-lg-2"
style="max-width: 200px"
>
<q-card class="q-mb-sm">
<q-img :src="image.url" style="height: 150px" />
<q-card-section
class="q-pt-md q-pb-md row items-center justify-between"
>
<small
><div
class="text-caption ellipsis"
style="max-width: 100px"
:title="image.filename"
v-text="image.filename"
></div
></small>
<q-btn
dense
flat
size="sm"
icon="content_copy"
@click="copyText(image.url)"
:title="$t('copy')"
><q-tooltip>Copy image link</q-tooltip></q-btn
>
<q-btn
dense
flat
size="sm"
icon="delete"
color="negative"
@click="deleteImage(image.filename)"
:title="$t('delete')"
><q-tooltip>Delete image</q-tooltip></q-btn
>
</q-card-section>
</q-card>
</div>
</div>
<div v-if="library_images.length === 0" class="q-pa-xl">
<div class="text-subtitle2 text-grey">No images uploaded yet.</div>
</div>
</template>