feat: auto-close modals when success notification appears

- Add closeOthersSignal to success notification store
- Create useCloseOnSuccessNotification hook for modals to subscribe
- Update TopUpModal to auto-close on success events
- Update InsufficientBalancePrompt to auto-close on success events
- Update Subscription page to close all modals/forms on success events

This ensures that when a WebSocket event indicates successful payment
or subscription purchase, all related modals close automatically,
providing clear feedback to users.
This commit is contained in:
c0mrade
2026-01-30 19:54:29 +03:00
parent 175b5608b2
commit 0be1ef0340
4 changed files with 57 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ import { balanceApi } from '../api/balance';
import { useCurrency } from '../hooks/useCurrency';
import { useTelegramWebApp } from '../hooks/useTelegramWebApp';
import { checkRateLimit, getRateLimitResetTime, RATE_LIMIT_KEYS } from '../utils/rateLimit';
import { useCloseOnSuccessNotification } from '../store/successNotification';
import type { PaymentMethod } from '../types';
import BentoCard from './ui/BentoCard';
@@ -144,6 +145,9 @@ export default function TopUpModal({ method, onClose, initialAmountRubles }: Top
onClose();
}, [onClose]);
// Auto-close when success notification appears (e.g., balance topped up via WebSocket)
useCloseOnSuccessNotification(handleClose);
// Keyboard: Escape to close (PC)
useEffect(() => {
const handleKeyDown = (e: KeyboardEvent) => {