From 13ca18ad9a9524df8cc2afc41bd1ff5bcc0dcd2b Mon Sep 17 00:00:00 2001 From: hensm Date: Tue, 6 Sep 2022 08:41:03 +0100 Subject: [PATCH] Fix duplicate subtitle media control menus --- ext/src/ui/popup/Receiver.svelte | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ext/src/ui/popup/Receiver.svelte b/ext/src/ui/popup/Receiver.svelte index 2ca9385..f7c7057 100644 --- a/ext/src/ui/popup/Receiver.svelte +++ b/ext/src/ui/popup/Receiver.svelte @@ -185,7 +185,7 @@ : "" }); - updateMediaMenus(); + updateMediaMenus(info.menuIds as (string | number)[]); browser.menus.refresh(); } @@ -279,13 +279,23 @@ } /** Updates media menu items from media status. */ - function updateMediaMenus() { + function updateMediaMenus(shownMenuIds: (number | string)[]) { // Clear caption submenu for re-build if (captionSubmenus.size) { for (const menuId of captionSubmenus.keys()) { browser.menus.remove(menuId); } captionSubmenus.clear(); + } else { + // Clear caption submenus from previous instances + for (const menuId of shownMenuIds as string[] | number[]) { + if ( + typeof menuId === "string" && + menuId.startsWith("subtitle-") + ) { + browser.menus.remove(menuId); + } + } } // Hide all media menu items if no media status @@ -359,6 +369,7 @@ for (const track of textTracks) { const menuId = browser.menus.create({ + id: `subtitle-${track.trackId}`, title: track.name ?? track.trackId.toString(), parentId: menuIds.POPUP_MEDIA_CC, type: "radio",