@@ -2,18 +2,47 @@ import React, { useState, useEffect } from 'react';
22import styles from './styles.module.css' ;
33import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" ;
44import { faArrowUpRightFromSquare , faTimes } from "@fortawesome/free-solid-svg-icons" ;
5- import notificationConfig from '../../config/notification.json' ;
5+ import useDocusaurusContext from '@docusaurus/useDocusaurusContext' ;
6+
7+ const notificationConfig = {
8+ prefix : "Live:" ,
9+ text : "Hands-on EKS Workshop Series -" ,
10+ linkText : "Register" ,
11+ linkUrl : "https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=d42ffbaa-d60a-4513-8a79-0bf36b9f33ce&sc_channel=el"
12+ } ;
613
714const GlobalNotification = ( ) => {
815 const [ isVisible , setIsVisible ] = useState ( false ) ;
916 const [ isAnimating , setIsAnimating ] = useState ( false ) ;
17+ const { siteConfig } = useDocusaurusContext ( ) ;
1018
11- // Don't render if notification is disabled in config
12- if ( ! notificationConfig . enabled ) return null ;
19+ // Don't render if notification is disabled via customFields
20+ if ( ! siteConfig . customFields . showNotification ) return null ;
1321
1422 useEffect ( ( ) => {
15- const dismissed = localStorage . getItem ( 'eks-workshop-notification-dismissed' ) ;
16- if ( ! dismissed ) {
23+ const dismissedData = localStorage . getItem ( 'eks-workshop-notification-dismissed' ) ;
24+
25+ if ( ! dismissedData ) {
26+ // Not dismissed yet
27+ setIsVisible ( true ) ;
28+ setTimeout ( ( ) => setIsAnimating ( true ) , 100 ) ;
29+ return ;
30+ }
31+
32+ try {
33+ const { timestamp } = JSON . parse ( dismissedData ) ;
34+ const now = new Date ( ) . getTime ( ) ;
35+ const daysSinceDismissed = ( now - timestamp ) / ( 1000 * 60 * 60 * 24 ) ;
36+
37+ if ( daysSinceDismissed > 7 ) {
38+ // Expired, show notification again
39+ localStorage . removeItem ( 'eks-workshop-notification-dismissed' ) ;
40+ setIsVisible ( true ) ;
41+ setTimeout ( ( ) => setIsAnimating ( true ) , 100 ) ;
42+ }
43+ } catch ( e ) {
44+ // If there's any error parsing (old format), show notification
45+ localStorage . removeItem ( 'eks-workshop-notification-dismissed' ) ;
1746 setIsVisible ( true ) ;
1847 setTimeout ( ( ) => setIsAnimating ( true ) , 100 ) ;
1948 }
@@ -23,7 +52,13 @@ const GlobalNotification = () => {
2352 setIsAnimating ( false ) ;
2453 setTimeout ( ( ) => {
2554 setIsVisible ( false ) ;
26- localStorage . setItem ( 'eks-workshop-notification-dismissed' , 'true' ) ;
55+
56+ // Store dismissal with timestamp
57+ const dismissalData = {
58+ timestamp : new Date ( ) . getTime ( )
59+ } ;
60+
61+ localStorage . setItem ( 'eks-workshop-notification-dismissed' , JSON . stringify ( dismissalData ) ) ;
2762 } , 300 ) ;
2863 } ;
2964
0 commit comments