import SettingsLayout from "@/layouts/SettingsLayout"; import React, { useState } from "react"; import NewTokenModal from "@/components/ModalContent/NewTokenModal"; import RevokeTokenModal from "@/components/ModalContent/RevokeTokenModal"; import { AccessToken } from "@prisma/client"; import { useTranslation } from "next-i18next"; import getServerSideProps from "@/lib/client/getServerSideProps"; import { useTokens } from "@/hooks/store/tokens"; export default function AccessTokens() { const [newTokenModal, setNewTokenModal] = useState(false); const [revokeTokenModal, setRevokeTokenModal] = useState(false); const [selectedToken, setSelectedToken] = useState(null); const { t } = useTranslation(); const openRevokeModal = (token: AccessToken) => { setSelectedToken(token); setRevokeTokenModal(true); }; const { data: tokens = [] } = useTokens(); return (

{t("access_tokens")}

{t("access_tokens_description")}

{tokens.length > 0 ? ( {tokens.map((token, i) => ( ))}
{t("name")} {t("created")} {t("expires")}
{token.isSession ? (
{token.name}
) : ( token.name )}
{new Date(token.createdAt || "").toLocaleDateString()} {new Date(token.expires || "").toLocaleDateString()}
) : undefined}
{newTokenModal ? ( setNewTokenModal(false)} /> ) : undefined} {revokeTokenModal && selectedToken && ( { setRevokeTokenModal(false); setSelectedToken(null); }} activeToken={selectedToken} /> )}
); } export { getServerSideProps };