From 25f2a9507d4c00f1cade99b7df245853cbd744ab Mon Sep 17 00:00:00 2001 From: Egor Date: Mon, 12 Jan 2026 18:26:00 +0300 Subject: [PATCH] Update index.html --- miniapp/index.html | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/miniapp/index.html b/miniapp/index.html index 4f03e7aa..0471801e 100644 --- a/miniapp/index.html +++ b/miniapp/index.html @@ -2749,6 +2749,16 @@ .daily-subscription-progress { margin-bottom: 12px; + transition: opacity 0.3s ease; + } + + .daily-subscription-progress.paused { + opacity: 0.5; + } + + .daily-subscription-progress.paused .daily-progress-fill { + animation: none; + background: var(--hint-color); } .daily-progress-bar { @@ -6635,6 +6645,7 @@ 'daily.pause': 'Pause', 'daily.resume': 'Resume', 'daily.paused_notice': 'Subscription paused. Daily billing disabled. VPN is not working.', + 'daily.paused_no_charge': 'Paused — no charge', 'daily.status.active': 'Active', 'daily.status.paused': 'Paused', 'daily.hours_remaining': 'Hours left', @@ -7108,6 +7119,7 @@ 'daily.pause': 'Приостановить', 'daily.resume': 'Возобновить', 'daily.paused_notice': 'Подписка приостановлена. Ежедневное списание отключено. VPN не работает.', + 'daily.paused_no_charge': 'Пауза — без списания', 'daily.status.active': 'Активна', 'daily.status.paused': 'Приостановлена', 'daily.hours_remaining': 'Часов осталось', @@ -9568,7 +9580,9 @@ if (pauseBtnIcon) pauseBtnIcon.textContent = '▶️'; if (pauseBtnText) pauseBtnText.textContent = t('daily.resume'); pausedNotice?.classList.remove('hidden'); - progressSection?.classList.add('hidden'); + // Оставляем прогресс секцию видимой, но затемняем + progressSection?.classList.remove('hidden'); + progressSection?.classList.add('paused'); // Обновляем статус badge const statusBadge = document.getElementById('statusBadge'); @@ -9582,6 +9596,7 @@ if (pauseBtnText) pauseBtnText.textContent = t('daily.pause'); pausedNotice?.classList.add('hidden'); progressSection?.classList.remove('hidden'); + progressSection?.classList.remove('paused'); } // Обработчик кнопки паузы @@ -9603,13 +9618,36 @@ const progressFill = document.getElementById('dailyProgressFill'); const nextChargeEl = document.getElementById('dailyNextCharge'); - if (!nextChargeAt || isPaused) { + if (!nextChargeAt) { if (timeRemainingEl) timeRemainingEl.textContent = '--:--:--'; if (progressFill) progressFill.style.width = '0%'; if (nextChargeEl) nextChargeEl.textContent = ''; return; } + // При паузе показываем оставшееся время, но без обновления (статичное) + if (isPaused) { + const nextChargeDate = new Date(nextChargeAt); + const now = new Date(); + const remaining = nextChargeDate - now; + + if (remaining > 0) { + const hours = Math.floor(remaining / (1000 * 60 * 60)); + const minutes = Math.floor((remaining % (1000 * 60 * 60)) / (1000 * 60)); + const seconds = Math.floor((remaining % (1000 * 60)) / 1000); + const timeStr = `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`; + if (timeRemainingEl) timeRemainingEl.textContent = timeStr; + const totalDuration = 24 * 60 * 60 * 1000; + const progressPercent = Math.max(0, Math.min(100, (remaining / totalDuration) * 100)); + if (progressFill) progressFill.style.width = `${progressPercent}%`; + } else { + if (timeRemainingEl) timeRemainingEl.textContent = '00:00:00'; + if (progressFill) progressFill.style.width = '0%'; + } + if (nextChargeEl) nextChargeEl.textContent = t('daily.paused_no_charge'); + return; + } + const nextChargeDate = new Date(nextChargeAt); const totalDuration = 24 * 60 * 60 * 1000; // 24 часа в миллисекундах