@100mslive/react-native-room-kit
Version:
100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps.
45 lines • 1.37 kB
JavaScript
import ActionTypes, { HmsStateActionTypes } from '../actionTypes';
const INITIAL_STATE = {
messages: [],
pinnedMessages: []
};
const messageReducer = (state = INITIAL_STATE, action) => {
switch (action.type) {
case ActionTypes.ADD_PINNED_MESSAGES.REQUEST:
const pinnedMessages = action.payload ?? INITIAL_STATE.pinnedMessages;
return {
...state,
pinnedMessages
};
case ActionTypes.ADD_MESSAGE.REQUEST:
const message = action.payload;
return {
...state,
messages: [message, ...state.messages]
};
case ActionTypes.CLEAR_MESSAGE_DATA.REQUEST:
return {
...state,
messages: []
};
case ActionTypes.FILTER_OUT_BLOCKED_MSGS:
const chatPeerBlacklist = action.payload;
return {
...state,
messages: state.messages.filter(message => {
var _message$sender;
const senderUserId = (_message$sender = message.sender) === null || _message$sender === void 0 ? void 0 : _message$sender.customerUserID;
if (!senderUserId) {
return true;
}
return !chatPeerBlacklist.includes(senderUserId);
})
};
case HmsStateActionTypes.CLEAR_STATES:
return INITIAL_STATE;
default:
return state;
}
};
export default messageReducer;
//# sourceMappingURL=message.js.map