From 9c08d0bac2412c7e5842e23a60890efd82711dbb Mon Sep 17 00:00:00 2001 From: Jones8683 Date: Mon, 10 Nov 2025 16:57:14 +1030 Subject: [PATCH] fix: spam clicking outside a popup restarts closing animation, and remove multiple close popup functions --- src/seqta/utils/Whatsnew.ts | 38 +++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/seqta/utils/Whatsnew.ts b/src/seqta/utils/Whatsnew.ts index 7c279a5a..4fc1adc3 100644 --- a/src/seqta/utils/Whatsnew.ts +++ b/src/seqta/utils/Whatsnew.ts @@ -4,22 +4,36 @@ import stringToHTML from "./stringToHTML"; import browser from "webextension-polyfill"; import kofi from "@/resources/kofi.png?base64"; -export async function DeleteWhatsNew() { - const bkelement = document.getElementById("whatsnewbk"); - const popup = document.getElementsByClassName("whatsnewContainer")[0]; +let isClosing = false; - if (!settingsState.animations) { - bkelement?.remove(); +export async function DeleteWhatsNew() { + if (isClosing) return; + isClosing = true; + + const bkelement = document.getElementById("whatsnewbk"); + const popup = document.getElementsByClassName( + "whatsnewContainer", + )[0] as HTMLElement; + + if (!bkelement || !popup) { + isClosing = false; return; } - animate( - [popup, bkelement!], - { opacity: [1, 0], scale: [1, 0] }, - { ease: [0.22, 0.03, 0.26, 1] }, - ).then(() => { - bkelement?.remove(); - }); + if (!settingsState.animations) { + bkelement.remove(); + isClosing = false; + return; + } + + await animate( + [popup, bkelement as HTMLElement], + { opacity: [1, 0], scale: [1, 0.95] } as any, + { duration: 0.25, ease: [0.22, 0.03, 0.26, 1] }, + ); + + bkelement.remove(); + isClosing = false; } export function OpenWhatsNewPopup() {