This commit is contained in:
xds
2026-02-26 11:35:01 +03:00
parent 7d7cd25040
commit f89548b363
2 changed files with 53 additions and 40 deletions

View File

@@ -152,7 +152,7 @@ const modalAssets = ref([])
const isModalLoading = ref(false)
const tempSelectedAssets = ref([])
const quality = ref({ key: 'TWOK', value: '2K' })
const aspectRatio = ref({ key: "NINESIXTEEN", value: "9:16" })
const aspectRatio = ref('NINESIXTEEN') // Default to Video (9:16)
const generationCount = ref(1)
const sendToTelegram = ref(false)
const telegramId = ref('')
@@ -218,18 +218,6 @@ const qualityOptions = ref([
{ key: 'TWOK', value: '2K' },
{ key: 'FOURK', value: '4K' }
])
const aspectRatioOptions = ref([
{ key: "ONEONE", value: "1:1" },
{ key: "TWOTHREE", value: "2:3" },
{ key: "THREETWO", value: "3:2" },
{ key: "THREEFOUR", value: "3:4" },
{ key: "FOURTHREE", value: "4:3" },
{ key: "FOURFIVE", value: "4:5" },
{ key: "FIVEFOUR", value: "5:4" },
{ key: "NINESIXTEEN", value: "9:16" },
{ key: "SIXTEENNINE", value: "16:9" },
{ key: "TWENTYONENINE", value: "21:9" }
])
// --- Persistence ---
const STORAGE_KEY = 'flexible_gen_settings'
@@ -267,7 +255,14 @@ const restoreSettings = () => {
// We need characters and assets loaded to fully restore objects
// For now, we'll store IDs and restore in loadData
if (settings.quality) quality.value = settings.quality
if (settings.aspectRatio) aspectRatio.value = settings.aspectRatio
if (settings.aspectRatio) {
// Handle legacy object format if present
if (typeof settings.aspectRatio === 'object' && settings.aspectRatio.key) {
aspectRatio.value = settings.aspectRatio.key
} else {
aspectRatio.value = settings.aspectRatio
}
}
sendToTelegram.value = settings.sendToTelegram || false
telegramId.value = settings.telegramId || localStorage.getItem('telegram_id') || ''
if (telegramId.value) isTelegramIdSaved.value = true
@@ -429,7 +424,7 @@ const handleGenerate = async () => {
try {
const payload = {
aspect_ratio: aspectRatio.value.key,
aspect_ratio: aspectRatio.value, // Now a string
quality: quality.value.key,
prompt: prompt.value,
assets_list: selectedAssets.value.map(a => a.id),
@@ -1159,11 +1154,22 @@ const confirmAddToAlbum = async () => {
:pt="{ input: { class: '!text-white' }, trigger: { class: '!text-slate-400' }, panel: { class: '!bg-slate-800 !border-white/10' }, item: { class: '!text-slate-300 hover:!bg-white/10 hover:!text-white' } }" />
</div>
<div class="flex flex-col gap-2">
<label class="text-xs font-bold text-slate-400 uppercase tracking-wider">Aspect
Ratio</label>
<Dropdown v-model="aspectRatio" :options="aspectRatioOptions" optionLabel="value"
class="w-full !bg-slate-800 !border-white/10 !text-white !rounded-xl"
:pt="{ input: { class: '!text-white' }, trigger: { class: '!text-slate-400' }, panel: { class: '!bg-slate-800 !border-white/10' }, item: { class: '!text-slate-300 hover:!bg-white/10 hover:!text-white' } }" />
<label class="text-xs font-bold text-slate-400 uppercase tracking-wider">Format</label>
<div class="flex items-center">
<div class="flex-1 flex bg-slate-800 rounded-xl border border-white/10 overflow-hidden">
<button @click="aspectRatio = 'THREEFOUR'"
class="flex-1 py-2 text-sm font-bold transition-all flex items-center justify-center gap-1"
:class="aspectRatio === 'THREEFOUR' ? 'bg-violet-600 text-white' : 'text-slate-400 hover:text-white hover:bg-white/5'">
<i class="pi pi-image"></i> Photo
</button>
<div class="w-px bg-white/10"></div>
<button @click="aspectRatio = 'NINESIXTEEN'"
class="flex-1 py-2 text-sm font-bold transition-all flex items-center justify-center gap-1"
:class="aspectRatio === 'NINESIXTEEN' ? 'bg-violet-600 text-white' : 'text-slate-400 hover:text-white hover:bg-white/5'">
<i class="pi pi-video"></i> Video
</button>
</div>
</div>
</div>
</div>