import React from "react"; import styles from "./Connection.module.css"; import classnames from "classnames"; import CheckIcon from "./icons/CheckIcon"; import { type AuthProviderState } from "@/auth/AuthProvider"; import { useRouter } from "next/navigation"; import unlink from "@/actions/unlink"; export default function Connection({ service, unavailable = false, authState, icon }: { service: string; unavailable?: boolean; authState?: AuthProviderState; icon?: () => JSX.Element; }) { const router = useRouter(); const holdTime = authState?.connected ? 3000 : 0; const interval = React.useRef(); const execute = async () => { const name = authState?.name; if (!authState?.connected) { router.push(`/oauth/${name?.toLowerCase()}/login`); } else { await unlink(name); router.refresh(); } }; const down = (e: React.MouseEvent | React.TouchEvent) => { e.preventDefault(); interval.current = setTimeout(execute, holdTime); }; const up = (e: React.MouseEvent | React.TouchEvent) => { e.preventDefault(); if (interval.current) clearTimeout(interval.current); }; return ( ); }