@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
JavaScript
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 };