dashboard/frontend/src/layouts/AdminLayout.svelte
2022-06-23 17:10:00 +01:00

93 lines
2.0 KiB
Svelte

<Head/>
<div class="wrapper">
<AdminSidebar />
<div class="super-container">
<LoadingScreen/>
<NotifyModal/>
<div class="content-container" class:hide={$loadingScreen}>
<Route {currentRoute} {params}/>
</div>
</div>
</div>
<script>
import {navigateTo, Route} from 'svelte-router-spa'
import Head from '../includes/Head.svelte'
import Sidebar from '../includes/Sidebar.svelte'
import LoadingScreen from '../includes/LoadingScreen.svelte'
import NotifyModal from '../includes/NotifyModal.svelte'
import axios from "axios";
import {API_URL} from '../js/constants'
import {notifyError} from '../js/util'
import {loadingScreen} from "../js/stores"
import {redirectLogin, setDefaultHeaders} from '../includes/Auth.svelte'
import AdminSidebar from "../includes/AdminSidebar.svelte";
export let currentRoute;
export let params = {};
setDefaultHeaders()
let name;
let avatar;
let isWhitelabel = false;
let isAdmin = false;
async function loadData() {
const res = await axios.get(`${API_URL}/api/session`);
if (res.status !== 200) {
if (res.data.auth === true) {
redirectLogin();
}
notifyError(res.data.error);
return;
}
isAdmin = res.data.admin;
if (!isAdmin) {
navigateTo(`/`);
}
}
loadData();
</script>
<style>
body {
padding: 0 !important;
}
.wrapper {
display: flex;
width: 100%;
height: 100%;
margin: 0 !important;
padding: 0 !important;
}
.super-container {
display: flex;
width: 100%;
height: 100%;
}
.content-container {
display: flex;
width: 100%;
height: 100%;
}
.hide {
visibility: hidden;
}
@media (max-width: 950px) {
.wrapper {
flex-direction: column;
}
}
</style>