import React from "react" import { useSnapshot } from "valtio" import { getCookie, deleteCookie } from "cookies-next" import { useRouter } from "next/router" import { useTranslation } from "next-i18next" import clonedeep from "lodash.clonedeep" import api from "~utils/api" import { accountState, initialAccountState } from "~utils/accountState" import { appState, initialAppState } from "~utils/appState" import Header from "~components/Header" import Button from "~components/Button" import HeaderMenu from "~components/HeaderMenu" const TopHeader = () => { const { t } = useTranslation("common") // Cookies const accountCookie = getCookie("account") const userCookie = getCookie("user") const headers = {} // accountCookies.account != null // ? { // Authorization: `Bearer ${accountCookies.account.access_token}`, // } // : {} const { account } = useSnapshot(accountState) const { party } = useSnapshot(appState) const router = useRouter() function copyToClipboard() { const el = document.createElement("input") el.value = window.location.href el.id = "url-input" document.body.appendChild(el) el.select() document.execCommand("copy") el.remove() } function newParty() { // Push the root URL router.push("/") // Clean state const resetState = clonedeep(initialAppState) Object.keys(resetState).forEach((key) => { appState[key] = resetState[key] }) // Set party to be editable appState.party.editable = true } function logout() { deleteCookie("account") deleteCookie("user") // Clean state const resetState = clonedeep(initialAccountState) Object.keys(resetState).forEach((key) => { if (key !== "language") accountState[key] = resetState[key] }) if (router.route != "/new") appState.party.editable = false router.push("/") return false } function toggleFavorite() { if (party.favorited) unsaveFavorite() else saveFavorite() } function saveFavorite() { if (party.id) api.saveTeam({ id: party.id, params: headers }).then((response) => { if (response.status == 201) appState.party.favorited = true }) else console.error("Failed to save team: No party ID") } function unsaveFavorite() { if (party.id) api.unsaveTeam({ id: party.id, params: headers }).then((response) => { if (response.status == 200) appState.party.favorited = false }) else console.error("Failed to unsave team: No party ID") } const leftNav = () => { return (