From 1340bf531ac7138c5ff6ce85f04d69f5af79f8a9 Mon Sep 17 00:00:00 2001 From: NotNite Date: Fri, 28 Apr 2023 22:31:38 -0400 Subject: [PATCH] add back hold-to-unlink --- src/app/me/AboutMe.module.css | 23 -------------- src/app/me/AboutMe.tsx | 4 ++- src/components/Connection.module.css | 18 +++++++++++ src/components/Connection.tsx | 46 +++++++++++++++------------- src/components/Input.tsx | 11 +++++++ 5 files changed, 56 insertions(+), 46 deletions(-) diff --git a/src/app/me/AboutMe.module.css b/src/app/me/AboutMe.module.css index 96369e5..35c2ba9 100644 --- a/src/app/me/AboutMe.module.css +++ b/src/app/me/AboutMe.module.css @@ -58,29 +58,6 @@ height: 100%; } -/* the !importants here piss me off but it wouldn't accept the property otherwise */ -.progress { - background: linear-gradient( - to right, - var(--fg-darker) 50%, - var(--bg-dark) 50% - ) !important; - background-size: 200% 100% !important; - background-position: right bottom !important; - transition: all 0s linear !important; - - border: 0; - border-radius: 0.15rem; - cursor: pointer; - padding: 0.5em 1em; -} - -/* when clicked */ -.progress:active { - transition: all 3s linear !important; - background-position: left bottom !important; -} - .multiButtons { margin: 1rem 0; white-space: nowrap; diff --git a/src/app/me/AboutMe.tsx b/src/app/me/AboutMe.tsx index 9069d59..60c2cfe 100644 --- a/src/app/me/AboutMe.tsx +++ b/src/app/me/AboutMe.tsx @@ -5,7 +5,7 @@ import { UserInfo } from "@/ldap"; import React from "react"; import styles from "./AboutMe.module.css"; import AvatarChanger from "@/components/AvatarChanger"; -import Input, { Label } from "@/components/Input"; +import Input, { Hint, Label } from "@/components/Input"; import { Form, Formik, FormikHelpers } from "formik"; import { AboutMeFormValues, @@ -204,6 +204,8 @@ export default function AboutMe({
+ Click to link, hold to unlink. + JSX.Element; }) { const router = useRouter(); - const [changing, setChanging] = React.useState(false); - // TODO: Reimplement hold-to-unlink. + const holdTime = authState?.connected ? 3000 : 0; + const interval = React.useRef(); - async function handleClick(event: React.MouseEvent) { - event.preventDefault(); - - if (unavailable) return; - - const provider = service.toLowerCase(); - if (authState?.connected === false) { - setChanging(true); - router.push(`/oauth/${provider}/login`); + const execute = async () => { + const name = authState?.name.toLowerCase(); + if (!authState?.connected) { + router.push(`/oauth/${name}/login`); } else { - setChanging(true); - if (confirm(`Unlink your ${service} account?`)) { - await fetch(`/api/unlink?provider=${provider}`, { method: "POST" }); - window.location.reload(); - } else { - setChanging(false); - } + await fetch(`/api/unlink?provider=${name}`, { method: "POST" }); + router.refresh(); } - } + }; + + const mouseDown = (e: React.MouseEvent) => { + e.preventDefault(); + interval.current = setTimeout(execute, holdTime); + }; + + const mouseUp = (e: React.MouseEvent) => { + e.preventDefault(); + if (interval.current) clearTimeout(interval.current); + }; return (