@@ -25,6 +25,7 @@ import { useSiren } from '../utils';
2525type SirenContextProp = {
2626 siren : Siren | null ;
2727 verificationStatus : VerificationStatus ;
28+ id : string ;
2829} ;
2930
3031interface SirenProvider {
@@ -34,7 +35,8 @@ interface SirenProvider {
3435
3536export const SirenContext = createContext < SirenContextProp > ( {
3637 siren : null ,
37- verificationStatus : VerificationStatus . PENDING
38+ verificationStatus : VerificationStatus . PENDING ,
39+ id : ''
3840} ) ;
3941
4042/**
@@ -74,8 +76,13 @@ export const useSirenContext = (): SirenContextProp => useContext(SirenContext);
7476const SirenProvider : React . FC < SirenProvider > = ( { config, children } ) => {
7577 let retryCount = 0 ;
7678
79+ const generateUniqueId = ( ) : string => {
80+ return Math . random ( ) . toString ( 36 ) . substring ( 2 , 15 ) ;
81+ } ;
82+
7783 const { markAllAsViewed } = useSiren ( ) ;
7884
85+ const [ id ] = useState ( generateUniqueId ( ) ) ;
7986 const [ siren , setSiren ] = useState < Siren | null > ( null ) ;
8087 const [ verificationStatus , setVerificationStatus ] = useState < VerificationStatus > (
8188 VerificationStatus . PENDING
@@ -104,8 +111,8 @@ const SirenProvider: React.FC<SirenProvider> = ({ config, children }) => {
104111 action : eventTypes . RESET_NOTIFICATIONS
105112 } ;
106113
107- PubSub . publish ( events . NOTIFICATION_COUNT_EVENT , JSON . stringify ( updateCountPayload ) ) ;
108- PubSub . publish ( events . NOTIFICATION_LIST_EVENT , JSON . stringify ( updateNotificationPayload ) ) ;
114+ PubSub . publish ( ` ${ events . NOTIFICATION_COUNT_EVENT } ${ id } ` , JSON . stringify ( updateCountPayload ) ) ;
115+ PubSub . publish ( ` ${ events . NOTIFICATION_LIST_EVENT } ${ id } ` , JSON . stringify ( updateNotificationPayload ) ) ;
109116 } ;
110117
111118 const onNewNotificationEvent = ( responseData : NotificationDataType [ ] ) => {
@@ -114,7 +121,7 @@ const SirenProvider: React.FC<SirenProvider> = ({ config, children }) => {
114121 markAllAsViewed ( responseData [ 0 ] . createdAt ) ;
115122 const payload = { newNotifications : responseData , action : eventTypes . NEW_NOTIFICATIONS } ;
116123
117- PubSub . publish ( events . NOTIFICATION_LIST_EVENT , JSON . stringify ( payload ) ) ;
124+ PubSub . publish ( ` ${ events . NOTIFICATION_LIST_EVENT } ${ id } ` , JSON . stringify ( payload ) ) ;
118125 } ;
119126
120127 const onTotalUnviewedCountEvent = ( response : UnviewedCountApiResponse ) => {
@@ -124,7 +131,7 @@ const SirenProvider: React.FC<SirenProvider> = ({ config, children }) => {
124131 action : eventTypes . UPDATE_NOTIFICATIONS_COUNT
125132 } ;
126133
127- PubSub . publish ( events . NOTIFICATION_COUNT_EVENT , JSON . stringify ( payload ) ) ;
134+ PubSub . publish ( ` ${ events . NOTIFICATION_COUNT_EVENT } ${ id } ` , JSON . stringify ( payload ) ) ;
128135 } ;
129136
130137 const handleNotificationEvent = ( response : NotificationsApiResponse ) => {
@@ -195,6 +202,7 @@ const SirenProvider: React.FC<SirenProvider> = ({ config, children }) => {
195202 return (
196203 < SirenContext . Provider
197204 value = { {
205+ id,
198206 siren,
199207 verificationStatus
200208 } }
0 commit comments