修复礼包红包弹窗状态提示异常
This commit is contained in:
@@ -27,6 +27,24 @@ function byId(id) {
|
||||
return document.getElementById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新红包弹窗状态提示,兼容状态提示区域被移除的简化弹窗。
|
||||
*
|
||||
* @param {string} message 状态文案
|
||||
* @param {string} color 状态颜色
|
||||
* @returns {void}
|
||||
*/
|
||||
function setRedPacketStatus(message, color) {
|
||||
const status = byId("rp-status-msg");
|
||||
|
||||
if (!status) {
|
||||
return;
|
||||
}
|
||||
|
||||
status.textContent = message;
|
||||
status.style.color = color;
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置礼包按钮状态。
|
||||
*
|
||||
@@ -317,7 +335,7 @@ function renderRedPacketModal(payload) {
|
||||
byId("rp-remaining").textContent = payload.remainingCount;
|
||||
byId("rp-countdown").textContent = payload.expireSeconds;
|
||||
byId("rp-timer-bar").style.width = "100%";
|
||||
byId("rp-status-msg").textContent = "";
|
||||
setRedPacketStatus("", "#16a34a");
|
||||
|
||||
const emoji = modal.querySelector(".rp-emoji");
|
||||
if (emoji) {
|
||||
@@ -359,9 +377,7 @@ function startRedPacketTimer() {
|
||||
claimButton.disabled = true;
|
||||
claimButton.textContent = "礼包已过期";
|
||||
|
||||
const status = byId("rp-status-msg");
|
||||
status.style.color = "#9ca3af";
|
||||
status.textContent = "红包已过期,即将关闭…";
|
||||
setRedPacketStatus("红包已过期,即将关闭…", "#9ca3af");
|
||||
|
||||
setTimeout(() => closeRedPacketModal(), 3000);
|
||||
}
|
||||
@@ -477,9 +493,7 @@ export async function claimRedPacket() {
|
||||
const data = await response.json();
|
||||
handleClaimResponse(response, data, button);
|
||||
} catch (error) {
|
||||
const status = byId("rp-status-msg");
|
||||
status.textContent = "网络异常,请重试";
|
||||
status.style.color = "#dc2626";
|
||||
setRedPacketStatus("网络异常,请重试", "#dc2626");
|
||||
button.disabled = false;
|
||||
button.textContent = "🧧 立即抢红包";
|
||||
}
|
||||
@@ -494,14 +508,12 @@ export async function claimRedPacket() {
|
||||
* @returns {void}
|
||||
*/
|
||||
function handleClaimResponse(response, data, button) {
|
||||
const status = byId("rp-status-msg");
|
||||
const typeLabel = redPacketType === "exp" ? "经验" : "金币";
|
||||
|
||||
if (response.ok && data.status === "success") {
|
||||
redPacketClaimed = true;
|
||||
button.textContent = "🎉 已抢到!";
|
||||
status.style.color = "#16a34a";
|
||||
status.textContent = `恭喜!您抢到了 ${data.amount} ${typeLabel}!`;
|
||||
setRedPacketStatus(`恭喜!您抢到了 ${data.amount} ${typeLabel}!`, "#16a34a");
|
||||
|
||||
const remaining = byId("rp-remaining");
|
||||
if (remaining && typeof data.remaining_count === "number") {
|
||||
@@ -516,12 +528,11 @@ function handleClaimResponse(response, data, button) {
|
||||
duration: 8000,
|
||||
});
|
||||
|
||||
setTimeout(() => closeRedPacketModal(), 3000);
|
||||
closeRedPacketModal();
|
||||
return;
|
||||
}
|
||||
|
||||
status.style.color = "#dc2626";
|
||||
status.textContent = data.message || "抢包失败";
|
||||
setRedPacketStatus(data.message || "抢包失败", "#dc2626");
|
||||
updateClaimButtonAfterFailure(button, data.message || "");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user