@tomino/dynamic-form-semantic-ui
Version:
Semantic UI form renderer based on dynamic form generation
54 lines • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const Gql = tslib_1.__importStar(require("./gql"));
const react_1 = tslib_1.__importDefault(require("react"));
const react_router_1 = require("react-router");
const context_1 = require("../../context");
const react_router_view_1 = require("../../react-router/react_router_view");
const common_1 = require("../../common");
const login_1 = tslib_1.__importDefault(require("./login"));
const mobx_react_1 = require("mobx-react");
exports.LoggedInView = mobx_react_1.observer((props) => {
const { routerProps } = props;
const ctx = react_1.default.useContext(context_1.Context);
const Component = react_1.default.useMemo(() => {
const page = common_1.root(props.formElement).pages.find(p => p.uid === props.formElement.props.page);
const RouteView = (routerProps) => (react_1.default.createElement(react_router_view_1.PageView, Object.assign({}, routerProps, props, { formElement: page })));
return RouteView;
}, [props]);
let user = ctx.auth.user;
let token = localStorage.getItem(ctx.authToken);
if (token && !user) {
return (react_1.default.createElement(Gql.ResumeQueryComponent, { variables: { token: localStorage.getItem(ctx.authToken) } }, (result) => {
if (result.loading || !result.data) {
return react_1.default.createElement("div", null, "Authorising ...");
}
else {
if (result.error || !result.data.resume.user) {
return react_1.default.createElement(login_1.default, null);
}
else {
if (!ctx.auth.user) {
ctx.auth.user = result.data.resume.user;
ctx.auth.logout = () => {
localStorage.removeItem(ctx.authToken);
ctx.auth.user = null;
};
}
return react_1.default.createElement(Component, Object.assign({}, routerProps));
}
}
}));
}
else if (user) {
return react_1.default.createElement(Component, Object.assign({}, routerProps));
}
else {
return react_1.default.createElement(login_1.default, null);
}
});
exports.PrivateReactRouterRoute = props => {
return (react_1.default.createElement(react_router_1.Route, { exact: !!props.formElement.props.exact, path: props.formElement.props.path, render: routerProps => react_1.default.createElement(exports.LoggedInView, Object.assign({}, props, { routerProps: routerProps })) }));
};
//# sourceMappingURL=auth_view.js.map