@livelike/react-native
Version:
LiveLike React Native package
63 lines • 1.6 kB
JavaScript
import { addMessageListener, getMessageList, removeMessageListener } from '@livelike/javascript';
import { useEffect } from 'react';
import { chatMessageStoreActions } from '../store/chatMessage';
import { useAnalytics } from './useAnalytics';
export function useChatMessagesEffect(_ref) {
let {
roomId
} = _ref;
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(_ref2) {
let {
event,
message
} = _ref2;
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]);
}
//# sourceMappingURL=useChatMessagesEffect.js.map