UNPKG

@shopify/app-bridge-host

Version:

App Bridge Host contains components and middleware to be consumed by the app's host, as well as the host itself. The middleware and `Frame` component are responsible for facilitating communication between the client and host, and used to act on actions se

68 lines (65 loc) 2.21 kB
import { __assign } from 'tslib'; import { Redirect, History } from '@shopify/app-bridge-core/actions'; import { validateAction } from '@shopify/app-bridge-core/validate/actions/navigation'; import { COMPLETE_ROUTE_UPDATE } from './actions.js'; var defaultNavigationStore = {}; function navigationReducer(state, action) { if (state === void 0) { state = defaultNavigationStore; } switch (action.type) { case Redirect.Action.APP: case History.Action.PUSH: case History.Action.REPLACE: { var castAction = action; if (validateAction(castAction)) { return state; } var payload = castAction.payload; return { updateAction: { type: getUpdateActionType(action.type), target: Redirect.Action.APP, payload: payload, }, }; } case Redirect.Action.ADMIN_PATH: case Redirect.Action.ADMIN_SECTION: case Redirect.Action.REMOTE: { var castAction = action; if (validateAction(castAction)) { return state; } var payload = castAction.payload; var target = getUpdateActionTarget(action.type); return { updateAction: { target: target, payload: payload, }, }; } case COMPLETE_ROUTE_UPDATE: { return __assign(__assign({}, state), { updateAction: undefined }); } default: return state; } } function getUpdateActionType(type) { switch (type) { case History.Action.REPLACE: return History.Action.REPLACE; case History.Action.PUSH: return History.Action.PUSH; } } function getUpdateActionTarget(type) { switch (type) { case Redirect.Action.ADMIN_PATH: return Redirect.Action.ADMIN_PATH; case Redirect.Action.ADMIN_SECTION: return Redirect.Action.ADMIN_SECTION; } return Redirect.Action.REMOTE; } export { navigationReducer as default, defaultNavigationStore };