优化:商店周卡/道具/戒指/钓鱼卡购买前弹确认窗口,购买成功后 Toast 提示

- 点击购买按钮 → 弹出 chatDialog.confirm 确认窗口
  「确认花费 🪙 X 金币购买【XXX】吗?」
- 确认后才调用 buyItem;取消则不执行
- 购买成功后:showShopToast「 XXX 购买成功!」
- 商店保持打开(不再 close)让用户看到分组标题徽章更新
This commit is contained in:
2026-03-01 16:58:29 +08:00
parent c72309aa16
commit bf001a6cf6

View File

@@ -894,10 +894,15 @@
btn.innerHTML = `🪙 ${Number(item.price).toLocaleString()}`;
btn.onclick = () => openGiftDialog(item);
} else {
// 周卡、道具、戒指:直接确认购买
// 周卡、道具、戒指、自动钓鱼卡:弹确认窗口再购买
btn.className = 'shop-btn';
btn.innerHTML = `🪙 ${Number(item.price).toLocaleString()}`;
btn.onclick = () => buyItem(item.id, item.name, item.price, 'all', '');
btn.onclick = async () => {
const confirmMsg =
`确认花费 🪙 ${Number(item.price).toLocaleString()} 金币购买\n【${item.name}】吗?`;
const ok = await window.chatDialog.confirm(confirmMsg, '确认购买');
if (ok) buyItem(item.id, item.name, item.price, 'all', '');
};
}
card.appendChild(btn);
list.appendChild(card);
@@ -962,13 +967,13 @@
if (data.jjb !== undefined)
document.getElementById('shop-jjb').textContent = Number(data.jjb)
.toLocaleString();
// 购买成功提示
showShopToast(`✅ ${name} 购买成功!`, true);
// 播放本地特效(购买者自己必须也能看到)
if (data.play_effect && window.EffectManager) {
window.EffectManager.play(data.play_effect);
}
// 关闭商店弹窗,让用户欣赏特效
closeShopModal();
// 延迟刷新商品数据
// 延迟刷新商品数据(保持商店开着让用户看到状态更新)
shopLoaded = false;
setTimeout(() => {
fetchShopData();