UNPKG

@botonic/react

Version:

Build Chatbots using React

48 lines 2.92 kB
import { WebchatAction } from './actions'; import { messagesReducer } from './messages-reducer'; // eslint-disable-next-line complexity export function webchatReducer(state, action) { switch (action.type) { case WebchatAction.UPDATE_WEBVIEW: return Object.assign(Object.assign({}, state), action.payload); case WebchatAction.REMOVE_WEBVIEW: return Object.assign(Object.assign({}, state), { webview: null, webviewParams: null }); case WebchatAction.UPDATE_SESSION: return Object.assign(Object.assign({}, state), { session: Object.assign({}, action.payload) }); case WebchatAction.UPDATE_TYPING: return Object.assign(Object.assign({}, state), { typing: action.payload }); case WebchatAction.UPDATE_THEME: return Object.assign(Object.assign({}, state), action.payload); case WebchatAction.UPDATE_HANDOFF: return Object.assign(Object.assign({}, state), { handoff: action.payload }); case WebchatAction.TOGGLE_WEBCHAT: { const isWebchatOpen = action.payload; return Object.assign(Object.assign({}, state), { isWebchatOpen }); } case WebchatAction.TOGGLE_EMOJI_PICKER: return Object.assign(Object.assign({}, state), { isEmojiPickerOpen: action.payload }); case WebchatAction.TOGGLE_PERSISTENT_MENU: return Object.assign(Object.assign({}, state), { isPersistentMenuOpen: action.payload }); case WebchatAction.TOGGLE_COVER_COMPONENT: return Object.assign(Object.assign({}, state), { isCoverComponentOpen: action.payload }); case WebchatAction.DO_RENDER_CUSTOM_COMPONENT: return Object.assign(Object.assign({}, state), { isCustomComponentRendered: action.payload }); case WebchatAction.SET_ERROR: return Object.assign(Object.assign({}, state), { error: action.payload || {} }); case WebchatAction.SET_ONLINE: return Object.assign(Object.assign({}, state), { online: action.payload }); case WebchatAction.UPDATE_DEV_SETTINGS: return Object.assign(Object.assign({}, state), { devSettings: Object.assign({}, action.payload) }); case WebchatAction.UPDATE_LATEST_INPUT: return Object.assign(Object.assign({}, state), { latestInput: action.payload }); case WebchatAction.UPDATE_LAST_ROUTE_PATH: return Object.assign(Object.assign({}, state), { lastRoutePath: action.payload }); case WebchatAction.SET_CURRENT_ATTACHMENT: return Object.assign(Object.assign({}, state), { currentAttachment: action.payload }); case WebchatAction.SET_IS_INPUT_FOCUSED: return Object.assign(Object.assign({}, state), { isInputFocused: action.payload }); default: return messagesReducer(state, action); } } //# sourceMappingURL=webchat-reducer.js.map