import { AppShell, SideBar, Content, AuthProvider, Modal, LoginPage, SignupPage, Quests, RequestPasswordPage, SetNewPasswordPage, OverlayProfile, OverlayProfileSettings, OverlayUserSettings, OverlayItemsIndexPage, OverlayItemProfile, OverlayItemProfileSettings, Permissions, Tags } from 'utopia-ui' import { getBottomRoutes, routes } from './routes/sidebar' import { Route, Routes } from 'react-router-dom' import MapContainer from "./pages/MapContainer" import './App.css' import { userApi } from './api/userApi' import { assetsApi } from './api/assetsApi' import { ModalContent } from './ModalContent' import { MoonCalendar } from 'utopia-ui' import { Landingpage } from './pages/Landingpage' import { useEffect, useState } from 'react' import { itemsApi } from './api/itemsApi' import { permissionsApi } from './api/permissionsApi' import { Tag } from 'utopia-ui/dist/types' import { mapApi } from './api/mapApi' import { layersApi } from './api/layersApi' function App() { const [permissionsApiInstance, setPermissionsApiInstance] = useState(); const [tagsApi, setTagsApi] = useState>(); const [mapApiInstance, setMapApiInstance] = useState(); const [layersApiInstance, setLayersApiInstance] = useState(); const [map, setMap] = useState(); const [layers, setLayers] = useState(); const [layerPageRoutes, setLayerPageRoutes] = useState(); const [loading, setLoading] = useState(true); useEffect(() => { setPermissionsApiInstance(new permissionsApi()); setMapApiInstance(new mapApi(window.location.origin)); }, []) useEffect(() => { mapApiInstance && getMap(); }, [mapApiInstance]) const getMap = async () => { const map = await mapApiInstance?.getItems(); map && setMap(map); map && map!="null" && setLayersApiInstance(new layersApi(map.id)); map && map!="null" && map.own_tag_space ? setTagsApi(new itemsApi('tags', undefined, map.id)) : setTagsApi(new itemsApi('tags')); } useEffect(() => { layersApiInstance && getLayers(); }, [layersApiInstance]) const getLayers = async () => { const layers = await layersApiInstance?.getItems(); layers && setLayers(layers); setLayerPageRoutes(layers?.filter((l: any) => l.listed).map((l: any) => ({ path: '/' + l.name, // url icon: , name: l.name, // name that appear in Sidebar }))); } useEffect(() => { if (map && map.name) { document.title = map?.name && map.name; let link = document.querySelector("link[rel~='icon']") as HTMLLinkElement if (!link) { link = document.createElement('link'); link.rel = 'icon'; document.getElementsByTagName('head')[0].appendChild(link); } link.href = map?.logo && "https://api.utopia-lab.org/assets/" + map.logo; // Specify the path to your favicon } setLoading(false); }, [map]) const currentUrl = window.location.href; const bottomRoutes = getBottomRoutes(currentUrl); if (map && layers) return (
{tagsApi && } }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> { layers.map((l: any) => } /> ) }
) else if (map == "null" && !loading) return (

This map does not exist

) else return (
) } export default App