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("en-US", { month: "short", day: "numeric", year: "numeric", })} {new Date(token.expires).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric", })}
)}
{newTokenModal && ( setNewTokenModal(false)} /> )} {revokeTokenModal && selectedToken && ( { setRevokeTokenModal(false); setSelectedToken(null); }} activeToken={selectedToken} /> )}
); } export { getServerSideProps };