import './NotificationsOverlay.css' import { Button, Typography } from 'antd' import { animate } from 'motion' import { useEffect, useState } from 'react' import notifications from '../services/notifications' const NOTIFICATION_OVERLAY_CSS_ID = 'notification-overlay' const NOTIFICATION_OVERLAY_VERTICAL_START_POSITION = '-400px' const NOTIFICATION_OVERLAY_VERTICAL_DISPLAY_POSITION = '50px' // reset permissions on chrome://settings/content/siteDetails function NotificationOverlay() { const [permissionStatus, setPermissionStatus] = useState( 'Notification' in window ? Notification.permission : 'denied', ) const activateNotifications = async () => { const status: NotificationPermission = await notifications.activateNotifications() setPermissionStatus(status) } const dismissOverlay = async () => { await animate( `#${NOTIFICATION_OVERLAY_CSS_ID}`, { right: [ NOTIFICATION_OVERLAY_VERTICAL_DISPLAY_POSITION, NOTIFICATION_OVERLAY_VERTICAL_START_POSITION, ], opacity: [1, 0], }, { duration: 0.2, easing: 'ease-in', }, ).finished setPermissionStatus('denied') } useEffect(() => { animate( `#${NOTIFICATION_OVERLAY_CSS_ID}`, { right: [null, NOTIFICATION_OVERLAY_VERTICAL_DISPLAY_POSITION], }, { delay: 4, duration: 0.2, easing: 'ease-out', }, ) }, []) //only show when user has not decided yet if (permissionStatus !== 'default') return null return (
Enable Notifications Swaps and cross-chain transfers might take a while to complete. Enable notifications to stay informed about the state of your transaction.
) } export default NotificationOverlay