"use client"; import { Session } from "@zitadel/server"; import Link from "next/link"; import { useState } from "react"; import { Avatar } from "./Avatar"; import moment from "moment"; import { XCircleIcon } from "@heroicons/react/24/outline"; export default function SessionItem({ session, reload, }: { session: Session; reload: () => void; }) { const [loading, setLoading] = useState(false); async function clearSession(id: string) { setLoading(true); const res = await fetch("/api/session?" + new URLSearchParams({ id }), { method: "DELETE", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ id: id, }), }); const response = await res.json(); setLoading(false); if (!res.ok) { // setError(response.details); return Promise.reject(response); } else { return response; } } const validPassword = session?.factors?.password?.verifiedAt; return (
{session.factors?.user?.displayName} {session.factors?.user?.loginName} {validPassword && ( {moment(new Date(validPassword)).fromNow()} )}
{validPassword ? (
) : (
)} { event.preventDefault(); clearSession(session.id).then(() => { reload(); }); }} />
); }