@tomino/dynamic-form-semantic-ui
Version:
Semantic UI form renderer based on dynamic form generation
51 lines • 2.3 kB
JavaScript
import * as Gql from './gql';
import React from 'react';
import { Route } from 'react-router';
import { Context } from '../../context';
import { PageView } from '../../react-router/react_router_view';
import { root } from '../../common';
import Login from './login';
import { observer } from 'mobx-react';
export const LoggedInView = observer((props) => {
const { routerProps } = props;
const ctx = React.useContext(Context);
const Component = React.useMemo(() => {
const page = root(props.formElement).pages.find(p => p.uid === props.formElement.props.page);
const RouteView = (routerProps) => (React.createElement(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.createElement(Gql.ResumeQueryComponent, { variables: { token: localStorage.getItem(ctx.authToken) } }, (result) => {
if (result.loading || !result.data) {
return React.createElement("div", null, "Authorising ...");
}
else {
if (result.error || !result.data.resume.user) {
return React.createElement(Login, 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.createElement(Component, Object.assign({}, routerProps));
}
}
}));
}
else if (user) {
return React.createElement(Component, Object.assign({}, routerProps));
}
else {
return React.createElement(Login, null);
}
});
export const PrivateReactRouterRoute = props => {
return (React.createElement(Route, { exact: !!props.formElement.props.exact, path: props.formElement.props.path, render: routerProps => React.createElement(LoggedInView, Object.assign({}, props, { routerProps: routerProps })) }));
};
//# sourceMappingURL=auth_view.js.map