import React from 'react'; import { MessageBox, MessagesSection } from './MessageBox'; import { RelativeTimestamp } from '../RelativeTimestamp'; import { ManagementWarning } from '../config/ManagementWarning'; import type { FetchNotificationsQueryVariables } from '../graphql/graphql-sdk'; import { FetchNotificationsDocument, useDismissNotificationMutation, useFetchNotificationsQuery, } from '../graphql/graphql-sdk'; import { useApplicationContextSafe } from '../../presentation'; import { getIsDebugMode } from '../utils/debugMode'; import { useLogEvent } from '../utils/logging'; const AppNotifications = () => { const app = useApplicationContextSafe(); const logEvent = useLogEvent('Error', 'AppNotifications'); const variables: FetchNotificationsQueryVariables = { appName: app.name }; const { data, error } = useFetchNotificationsQuery({ variables }); const [onDismiss] = useDismissNotificationMutation({ refetchQueries: [{ query: FetchNotificationsDocument, variables }], }); React.useEffect(() => { if (error) { logEvent({ level: 'ERROR', error }); } }, [error, logEvent]); const notifications = data?.application?.notifications || []; const isDebug = getIsDebugMode(); if (!notifications.length) return null; return ( {notifications.map((notification) => ( onDismiss({ variables: { payload: { application: app.name, id: notification.id } } }) : undefined } > {notification.message}{' '} {notification.triggeredAt && ( <> () )} {notification.link && ( <> {' '} -{' '} View )} ))} ); }; interface IMessagesProps { showManagementWarning?: boolean; } export const Messages = ({ showManagementWarning = true }: IMessagesProps) => { const app = useApplicationContextSafe(); return ( <> {showManagementWarning && } ); };