|
@@ -1,47 +1,22 @@
|
|
-import React, { useEffect, useState } from 'react'
|
|
|
|
|
|
+import React from 'react'
|
|
|
|
|
|
import { usePersonalDataStore } from '@/providers'
|
|
import { usePersonalDataStore } from '@/providers'
|
|
-import { SvgGlyphClose } from '@/shared/icons'
|
|
|
|
|
|
|
|
-import {
|
|
|
|
- MessageButton,
|
|
|
|
- MessageDescription,
|
|
|
|
- MessageTitle,
|
|
|
|
- MessageWrapper,
|
|
|
|
- StyledSvgGlyphInfo,
|
|
|
|
-} from './DismissibleMessage.style'
|
|
|
|
|
|
+import { Banner, BannerProps } from '../Banner'
|
|
|
|
|
|
export type DismissibleMessageProps = {
|
|
export type DismissibleMessageProps = {
|
|
- title?: string
|
|
|
|
- description?: string
|
|
|
|
id: string
|
|
id: string
|
|
- className?: string
|
|
|
|
-}
|
|
|
|
|
|
+} & Omit<BannerProps, 'onExitClick'>
|
|
|
|
|
|
-export const DismissibleMessage: React.FC<DismissibleMessageProps> = ({ title, description, id, className }) => {
|
|
|
|
- const dismissedMessages = usePersonalDataStore((state) => state.dismissedMessages)
|
|
|
|
|
|
+export const DismissibleMessage: React.FC<DismissibleMessageProps> = ({ id, ...dismissedMessageProps }) => {
|
|
|
|
+ const isDismissedMessage = usePersonalDataStore((state) =>
|
|
|
|
+ state.dismissedMessages.some((message) => message.id === id)
|
|
|
|
+ )
|
|
const updateDismissedMessages = usePersonalDataStore((state) => state.actions.updateDismissedMessages)
|
|
const updateDismissedMessages = usePersonalDataStore((state) => state.actions.updateDismissedMessages)
|
|
- const [isDismissedMessage, setDismissedMessage] = useState<boolean>()
|
|
|
|
-
|
|
|
|
- useEffect(() => {
|
|
|
|
- const isDissmised = dismissedMessages.some((channel) => channel.id === id)
|
|
|
|
- setDismissedMessage(isDissmised)
|
|
|
|
- }, [dismissedMessages, id])
|
|
|
|
|
|
|
|
if (isDismissedMessage) {
|
|
if (isDismissedMessage) {
|
|
return null
|
|
return null
|
|
}
|
|
}
|
|
|
|
|
|
- return (
|
|
|
|
- <MessageWrapper className={className}>
|
|
|
|
- <MessageTitle variant="subtitle2">
|
|
|
|
- <StyledSvgGlyphInfo />
|
|
|
|
- {title}
|
|
|
|
- </MessageTitle>
|
|
|
|
- <MessageButton aria-label="close dialog" onClick={() => updateDismissedMessages(id)} variant="tertiary">
|
|
|
|
- <SvgGlyphClose />
|
|
|
|
- </MessageButton>
|
|
|
|
- <MessageDescription variant="body2">{description}</MessageDescription>
|
|
|
|
- </MessageWrapper>
|
|
|
|
- )
|
|
|
|
|
|
+ return <Banner {...dismissedMessageProps} onExitClick={() => updateDismissedMessages(id)} />
|
|
}
|
|
}
|