diff --git a/js/channelProfile.js b/js/channelProfile.js index cec2ac2b..7adcbd45 100644 --- a/js/channelProfile.js +++ b/js/channelProfile.js @@ -929,15 +929,16 @@ function focusZapAmountField() { } function isZapControlsOpen() { - if (zapPopoverOpenPromise) { - return true; - } if (typeof zapPopover?.isOpen === "function") { return zapPopover.isOpen(); } return zapControlsOpen; } +function isZapControlsOpening() { + return Boolean(zapPopoverOpenPromise) && !isZapControlsOpen(); +} + async function openZapControls({ focus = false } = {}) { const zapButton = getChannelZapButton(); if (!zapButton) { @@ -970,6 +971,9 @@ async function openZapControls({ focus = false } = {}) { } if (zapPopoverOpenPromise) { + if (focus) { + zapShouldFocusOnOpen = true; + } try { return await zapPopoverOpenPromise; } catch (error) { @@ -1700,12 +1704,14 @@ async function handleZapButtonClick(event) { return; } - const popoverIsOpen = - typeof zapPopover?.isOpen === "function" - ? zapPopover.isOpen() - : isZapControlsOpen(); + const opening = isZapControlsOpening(); + const popoverIsOpen = isZapControlsOpen(); if (!popoverIsOpen) { + if (opening) { + zapShouldFocusOnOpen = true; + return; + } try { await openZapControls({ focus: true }); } catch (error) { @@ -1714,6 +1720,10 @@ async function handleZapButtonClick(event) { return; } + if (opening) { + return; + } + if (zapInFlight) { return; }