import React from "react"; import { Session } from "../model/"; import { Container, Loader, Icon } from "../components/"; import { memory, currentShare } from "../helpers/"; import { t } from "../locales/"; import "../pages/error.scss"; export function LoggedInOnly(WrappedComponent) { memory.set("user::authenticated", false); return class DecoratedLoggedInOnly extends React.Component { constructor(props) { super(props); this.state = { is_logged_in: memory.get("user::authenticated"), }; } componentDidMount() { if (this.state.is_logged_in === false && currentShare() === null) { Session.currentUser().then((res) => { if (res.is_authenticated === false) { this.props.error({ message: "Authentication Required" }); return; } memory.set("user::authenticated", true); this.setState({ is_logged_in: true }); }).catch((err) => { if (err.code === "NO_INTERNET") { this.setState({ is_logged_in: true }); return; } this.props.error(err); }); } } render() { if (this.state.is_logged_in === true || currentShare() !== null) { return ; } return null; } }; } export function ErrorPage(WrappedComponent) { return class DecoratedErrorPage extends React.Component { constructor(props) { super(props); this.state = { error: null, trace: null, showTrace: false, }; } update(obj) { this.setState({ error: obj, trace: new URLSearchParams(location.search).get("trace") || null, }); } render() { if (this.state.error !== null) { const message = this.state.error.message || t("There is nothing in here"); return (
home
this.setState({ showTrace: true })}>

{ t("Oops!") }

{ t(message) }

{ this.state.showTrace && this.state.trace && { this.state.trace } }
); } return ( ); } }; } export const LoadingPage = () => { return (
); };