feat(pet): подтверждение покупки фона в гардеробной

Перед платной покупкой фона — диалог LS.confirm («Купить «X» за N монет?»)
+ предпроверка баланса (тост, если монет не хватает). Применение уже
купленных/стандартного — без подтверждения.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-05 14:40:04 +03:00
parent 4c0fcc88f0
commit 1ed9dbcacf
+8
View File
@@ -1107,6 +1107,14 @@ async function renderBgPicker() {
c.addEventListener('click', () => selectBgInline(c.dataset.id, +c.dataset.price, c.dataset.owned === '1')));
}
async function selectBgInline(id, price, owned) {
// покупка платного фона — подтверждение + предпроверка баланса
if (!owned && id !== 'default') {
const coins = _petData ? (_petData.coins ?? 0) : 0;
if (coins < price) { LS.toast?.('Недостаточно монет: нужно ' + price, 'warn'); return; }
const ok = await LS.confirm('Купить фон «' + (BG_NAMES[id] || id) + '» за ' + price + ' монет?',
{ title: 'Покупка фона', confirmText: 'Купить за ' + price, danger: false });
if (!ok) return;
}
const endpoint = owned ? '/api/pet/bg' : '/api/pet/shop/buy';
const res = await LS.api(endpoint, { method: owned ? 'PATCH' : 'POST', body: JSON.stringify({ id }) }).catch(e => {
if (e?.data?.error === 'insufficient_coins') LS.toast?.('Недостаточно монет', 'error');