/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React, { ReactNode, useLayoutEffect, useState } from "react"; import { Link, Redirect } from "react-router-dom"; import { Auth } from "@aws-amplify/auth"; import { useSettings, useCurrentAuthenticatedUser, useFavicon, useFileLoaded } from "../hooks"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faWindowClose } from "@fortawesome/free-solid-svg-icons"; import Footer from "./Footer"; import Logo from "../components/Logo"; import { useTranslation } from "react-i18next"; import Header from "../components/Header"; import { Helmet } from "react-helmet"; import defaultFavicon from "../favicon.svg"; import "./Admin.scss"; interface LayoutProps { children: ReactNode; } function AdminLayout(props: LayoutProps) { const { settings, loadingSettings } = useSettings(); const { favicon, loadingFile } = useFavicon(settings.customFaviconS3Key); const [toHide, setToHide] = useState(true); const { t } = useTranslation(); const { username, isAdmin, isFederatedId, isEditor, isPublic, hasRole } = useCurrentAuthenticatedUser(); const signOut = async (event: React.MouseEvent) => { event.preventDefault(); setTimeout(async () => { try { await Auth.signOut(); if (!isFederatedId) { window.location.href = "/admin"; } } catch (error) { console.log("error signing out: ", error); event.preventDefault(); } }); }; useFileLoaded(setToHide, loadingFile, loadingSettings, settings, "favicon"); useLayoutEffect(() => { document.getElementById("Home")?.focus(); }); return ( <> {loadingFile || loadingSettings || toHide ? ( ) : ( )}
{t("SkipToMainContent")}
{(!hasRole || isPublic) && }
{props.children}