UNPKG

@livelike/react-native

Version:

LiveLike React Native package

60 lines (56 loc) 1.53 kB
import { addMessageListener, getMessageList, IMessageListenerCallbackArgs, removeMessageListener, } from '@livelike/javascript'; import { useEffect } from 'react'; import { chatMessageStoreActions } from '../store/chatMessage'; import { useAnalytics } from './useAnalytics'; export function useChatMessagesEffect({ roomId }) { const { trackEvent } = useAnalytics(); useEffect(() => { if (!roomId) { return; } getMessageList(roomId).then((res) => { chatMessageStoreActions.updateChatMessageStateAction({ roomId, chatMessages: res.messages, messageListIterator: res.done ? undefined : res.next, chatMessagesLoaded: true, }); trackEvent('Chat Message History Loaded', { roomId, }); }); function onMessage({ event, message }: IMessageListenerCallbackArgs) { if (event === 'messagereceived') { chatMessageStoreActions.addChatMessageAction({ roomId, chatMessage: message, }); trackEvent('Chat Message Received', { roomId, message }); } if (event === 'messagedeleted') { chatMessageStoreActions.deleteChatMessageAction({ roomId, chatMessage: message, }); trackEvent('Chat Message Deleted', { roomId, message, }); } } addMessageListener( { roomId, }, onMessage ); return () => { removeMessageListener({ roomId }, onMessage); }; }, [roomId]); }