diff --git a/web/src/features/notifications/NotificationWrapper.tsx b/web/src/features/notifications/NotificationWrapper.tsx index 22da9df..4659727 100644 --- a/web/src/features/notifications/NotificationWrapper.tsx +++ b/web/src/features/notifications/NotificationWrapper.tsx @@ -2,7 +2,7 @@ import { useNuiEvent } from '../../hooks/useNuiEvent'; import { toast, Toaster } from 'react-hot-toast'; import ReactMarkdown from 'react-markdown'; import { Box, Center, createStyles, Group, keyframes, RingProgress, Stack, Text, ThemeIcon } from '@mantine/core'; -import React from 'react'; +import React, { useRef } from 'react'; import tinycolor from 'tinycolor2'; import type { NotificationProps } from '../../typings'; import MarkdownComponents from '../../config/MarkdownComponents'; @@ -111,8 +111,13 @@ const durationCircle = keyframes({ const Notifications: React.FC = () => { const { classes } = useStyles(); + const toastKeyRef = useRef(0); useNuiEvent('notify', (data) => { + const toastId = data.id?.toString(); + + if (toastId) toastKeyRef.current++; + if (!data.title && !data.description) return; let iconColor: string; @@ -190,6 +195,7 @@ const Notifications: React.FC = () => { <> {data.showDuration ? ( { animationDuration: `${duration}ms`, }, margin: -3, - } + }, }} label={
@@ -211,12 +217,7 @@ const Notifications: React.FC = () => { size={32} variant={tinycolor(iconColor).getAlpha() === 0 ? undefined : 'light'} > - +
} @@ -229,12 +230,7 @@ const Notifications: React.FC = () => { variant={tinycolor(iconColor).getAlpha() === 0 ? undefined : 'light'} style={{ alignSelf: !data.alignIcon || data.alignIcon === 'center' ? 'center' : 'start' }} > - + )} @@ -254,7 +250,7 @@ const Notifications: React.FC = () => { ), { - id: data.id?.toString(), + id: toastId, duration: duration, position: position || 'top-right', }