UNPKG

@shopify/app-bridge-host

Version:

App Bridge Host contains middleware and components that are meant to be consumed by the app's host. The middleware and `Frame` component are responsible for facilitating messages posted between the client and host, and used to act on actions sent from the

78 lines (77 loc) 2.81 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var actions_1 = require("@shopify/app-bridge/actions"); var navigation_1 = require("@shopify/app-bridge/validate/actions/navigation"); var actions_2 = require("./actions"); exports.defaultNavigationStore = {}; function navigationReducer(state, action) { if (state === void 0) { state = exports.defaultNavigationStore; } switch (action.type) { case actions_1.Redirect.ActionType.APP: case actions_1.History.ActionType.PUSH: case actions_1.History.ActionType.REPLACE: { var castAction = action; if (navigation_1.validateAction(castAction)) { return state; } var payload = castAction.payload; return { updateAction: { type: getUpdateActionType(action.type), target: actions_1.Redirect.Action.APP, payload: payload, }, }; } case actions_1.Redirect.ActionType.ADMIN_PATH: case actions_1.Redirect.ActionType.ADMIN_SECTION: case actions_1.Redirect.ActionType.REMOTE: { var castAction = action; if (navigation_1.validateAction(castAction)) { return state; } var payload = castAction.payload; var target = getUpdateActionTarget(action.type); return { updateAction: { target: target, payload: payload, }, }; } case actions_2.COMPLETE_ROUTE_UPDATE: { return __assign({}, state, { updateAction: undefined }); } default: return state; } } function getUpdateActionType(type) { switch (type) { case actions_1.History.ActionType.REPLACE: return actions_1.History.Action.REPLACE; case actions_1.History.ActionType.PUSH: return actions_1.History.Action.PUSH; } } function getUpdateActionTarget(type) { switch (type) { case actions_1.Redirect.ActionType.ADMIN_PATH: return actions_1.Redirect.Action.ADMIN_PATH; case actions_1.Redirect.ActionType.ADMIN_SECTION: return actions_1.Redirect.Action.ADMIN_SECTION; } return actions_1.Redirect.Action.REMOTE; } exports.default = navigationReducer;