Files
Nitro-V3/src/hooks/mentions/useMentionMessages.ts
T
duckietm 59ed27b727 Revert "🆙 Bug fixed in localstorage"
This reverts commit 47453db5ee.
2026-06-04 13:43:29 +02:00

68 lines
2.3 KiB
TypeScript

import { MentionReceivedEvent, MentionsListEvent, RequestMentionsComposer } from '@nitrots/nitro-renderer';
import { useCallback, useEffect } from 'react';
import { GetConfigurationValue, IMentionEntry, PlaySound, SendMessageComposer } from '../../api';
import { useMessageEvent } from '../events';
import { addMention, setMentions } from './mentionsStore';
import { pushMentionToast } from './mentionToastsStore';
// Dedicated mention chime served from nitro-assets/sounds/<sample>.mp3.
const MENTION_SOUND_SAMPLE = 'mentions_notification';
export const useMentionMessages = (): void =>
{
const onMentionsList = useCallback((event: MentionsListEvent) =>
{
const list = event.getParser().mentions;
setMentions(list.map(m => ({
mentionId: m.mentionId,
senderId: m.senderId,
senderUsername: m.senderUsername,
senderFigure: m.senderFigure,
roomId: m.roomId,
roomName: m.roomName,
message: m.message,
mentionType: m.mentionType,
timestamp: m.timestamp,
read: m.read
})));
}, []);
const onMentionReceived = useCallback((event: MentionReceivedEvent) =>
{
if(!GetConfigurationValue<boolean>('mentions_ui.enabled', true)) return;
const m = event.getParser().mention;
const entry: IMentionEntry = {
mentionId: m.mentionId,
senderId: m.senderId,
senderUsername: m.senderUsername,
senderFigure: m.senderFigure,
roomId: m.roomId,
roomName: m.roomName,
message: m.message,
mentionType: m.mentionType,
timestamp: m.timestamp,
read: false
};
addMention(entry);
if(GetConfigurationValue<boolean>('mentions_ui.sound', true)) PlaySound(MENTION_SOUND_SAMPLE);
// Notifica laterale custom (avatar + messaggio + dismiss) invece del bubble generico.
pushMentionToast(entry);
}, []);
useMessageEvent<MentionsListEvent>(MentionsListEvent, onMentionsList);
useMessageEvent<MentionReceivedEvent>(MentionReceivedEvent, onMentionReceived);
useEffect(() =>
{
if(!GetConfigurationValue<boolean>('mentions_ui.enabled', true)) return;
SendMessageComposer(new RequestMentionsComposer());
}, []);
};