diff --git a/src/api/subscription.ts b/src/api/subscription.ts index 80b60dd..3e0de3b 100644 --- a/src/api/subscription.ts +++ b/src/api/subscription.ts @@ -103,6 +103,11 @@ export const subscriptionApi = { await apiClient.post('/cabinet/subscription/devices/save-cart', { devices }); }, + // Save traffic cart for later purchase after top-up + saveTrafficCart: async (trafficGb: number): Promise => { + await apiClient.post('/cabinet/subscription/traffic/save-cart', { traffic_gb: trafficGb }); + }, + // Update autopay settings updateAutopay: async ( enabled: boolean, diff --git a/src/components/SuccessNotificationModal.tsx b/src/components/SuccessNotificationModal.tsx index 8249139..f80c44c 100644 --- a/src/components/SuccessNotificationModal.tsx +++ b/src/components/SuccessNotificationModal.tsx @@ -58,6 +58,16 @@ const DevicesIcon = () => ( ); +const TrafficIcon = () => ( + + + +); + const CloseIcon = () => ( @@ -125,6 +135,7 @@ export default function SuccessNotificationModal() { data.type === 'subscription_renewed' || data.type === 'subscription_purchased'; const isDevicesPurchased = data.type === 'devices_purchased'; + const isTrafficPurchased = data.type === 'traffic_purchased'; // Format amount const formattedAmount = data.amountKopeks @@ -173,6 +184,10 @@ export default function SuccessNotificationModal() { title = t('successNotification.devicesPurchased.title', 'Devices added!'); icon = ; gradientClass = 'from-blue-500 to-cyan-600'; + } else if (data.type === 'traffic_purchased') { + title = t('successNotification.trafficPurchased.title', 'Traffic added!'); + icon = ; + gradientClass = 'from-emerald-500 to-teal-600'; } } @@ -227,9 +242,9 @@ export default function SuccessNotificationModal() { : t('successNotification.price', 'Price')} - {isDevicesPurchased ? '' : '+'} + {isDevicesPurchased || isTrafficPurchased ? '' : '+'} {formattedAmount} @@ -254,6 +269,25 @@ export default function SuccessNotificationModal() { )} + {/* Traffic info (for traffic purchase) */} + {isTrafficPurchased && data.trafficGbAdded && ( +
+ + {t('successNotification.trafficAdded', 'Traffic added')} + + +{data.trafficGbAdded} GB +
+ )} + + {isTrafficPurchased && data.newTrafficLimitGb && ( +
+ + {t('successNotification.totalTraffic', 'Total traffic')} + + {data.newTrafficLimitGb} GB +
+ )} + {/* New balance (for top-up) */} {isBalanceTopup && formattedBalance && (
@@ -314,6 +348,16 @@ export default function SuccessNotificationModal() { )} + {isTrafficPurchased && ( + + )} +