@botonic/react
Version:
Build Chatbots using React
48 lines • 2.92 kB
JavaScript
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