UNPKG

@moxb/stellar-router-react

Version:

Stellar router: React widgets

48 lines (47 loc) 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NavRefRedirect = void 0; var tslib_1 = require("tslib"); var React = require("react"); var react_1 = require("react"); var mobx_react_lite_1 = require("mobx-react-lite"); var stellar_router_core_1 = require("@moxb/stellar-router-core"); var routingProviders_1 = require("./routingProviders"); /** * The NavRefRedirect component is responsible for executing redirects based on base64-encoded * NavRef links. * * Just put it into a menu (under the preferred url prefix used for the redirects), * and it will handle the rest. I.e. * * { * key: 'redirects', * hidden: true, * fragment: NavRefRedirect, * }, * */ exports.NavRefRedirect = (0, mobx_react_lite_1.observer)(function (props) { var locationManager = (0, routingProviders_1.useLocationManager)('nav ref redirect'); var linkGenerator = (0, routingProviders_1.useLinkGenerator)(); if (!linkGenerator) { throw new Error('Link generator is missing! Have you passed in the state space when creating the routing store?'); } var _a = (0, react_1.useState)(false), failed = _a[0], setFailed = _a[1]; (0, react_1.useEffect)(function () { setFailed(false); try { // Get the data out of the next path token var stringForm = (0, stellar_router_core_1.getNextPathToken)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, props), { locationManager: locationManager })); // Parse the base64 data into a NavRefCall data structure var _a = (0, stellar_router_core_1.parseNavRef)(stringForm), navRef = _a.navRef, tokens = _a.tokens; // Go to this NavRef linkGenerator.doGoTo(navRef.call(tokens), stellar_router_core_1.UpdateMethod.REPLACE); } catch (e) { setFailed(true); console.log(e); } }); return failed ? React.createElement("div", null, "Oops! This redirect doesn't seem to be working.") : React.createElement("div", null, "Redirecting..."); });