Lass uns zuerst das Button-mehrfach-Klicken Problem lösen. Du sagst, es trifft auch in diesem "guten aber nicht vollständigen" Entwicklungsstand auf? https://gitlab.com/ThunderbirdMai…step-2023-08-17
Ich kann das Problem zunächst nicht nachstellen, aber wahrscheinlich gibt es einen edge-case, den ich noch nicht erwischt habe. Ich würde vorschlagen erstmal mit dem "guten aber nicht vollständigen" Entwicklungsstand weiterzumachen:
* die Aufrufe zum disable des Buttons erfolgen sehr spät: Maßnahme #1 ist ein acceptButtonClicks flag, das gesetzt werden muss, bevor der Button was tut (egal ob er enabled oder disabled ist)
* ich würde das flag am Ende des onMessageDisplayed listeners auf true setzen (unabhängig vom Button disable/enable status).
* Ich würde das flag in einer globalen Map (tabId->status) speichern und es auch auf false setzen, bevor wir den reload triggern (eigentlich direkt am Anfanf des onClicked listeners), sodass wir ganz klar die Funktion des Buttons in den problematischen Zeiträumen deaktivieren.
* im onClicked listener prüfst du das flag und machst ein early exit, wenn es nicht existiert oder flase ist: if (!acceptButtonClicks.get(tab.id)) { return; } funktioniert in beiden Fällen.
Das hat zur Folge, dass der User bei diesen edge-cases zwar u.U. einen aktiven Button hat (der durch das timing issue noch nicht deaktiviert wurde), aber der Klick wird ignoriert. Wie klingt das?