From ee1e8ec267a3681ce4bd296e8c28e2aa53051ef0 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sat, 5 Aug 2023 00:10:29 +0200 Subject: [PATCH] web: Extension shouldn't set options that are default --- web/packages/extension/src/content.ts | 4 +++- web/packages/extension/src/player.ts | 2 +- web/packages/extension/src/utils.ts | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/web/packages/extension/src/content.ts b/web/packages/extension/src/content.ts index 165d89f49..6c2982868 100644 --- a/web/packages/extension/src/content.ts +++ b/web/packages/extension/src/content.ts @@ -108,6 +108,8 @@ function isXMLDocument(): boolean { (async () => { const options = await utils.getOptions(); + const explicitOptions = await utils.getExplicitOptions(); + const pageOptout = checkPageOptout(); const shouldLoad = !isXMLDocument() && @@ -171,7 +173,7 @@ function isXMLDocument(): boolean { await sendMessageToPage({ type: "load", config: { - ...options, + ...explicitOptions, autoplay: options.autostart ? "on" : "auto", unmuteOverlay: options.autostart ? "hidden" : "visible", splashScreen: !options.autostart, diff --git a/web/packages/extension/src/player.ts b/web/packages/extension/src/player.ts index a93e126dd..87c8bb443 100644 --- a/web/packages/extension/src/player.ts +++ b/web/packages/extension/src/player.ts @@ -24,7 +24,7 @@ window.addEventListener("DOMContentLoaded", async () => { player.id = "player"; document.getElementById("main")!.append(player); - const options = await utils.getOptions(); + const options = await utils.getExplicitOptions(); player.load({ ...options, diff --git a/web/packages/extension/src/utils.ts b/web/packages/extension/src/utils.ts index f2d3a4b20..376477dd8 100644 --- a/web/packages/extension/src/utils.ts +++ b/web/packages/extension/src/utils.ts @@ -145,3 +145,22 @@ export async function getOptions(): Promise { // Copy over default options if they don't exist yet. return { ...DEFAULT_OPTIONS, ...options }; } + +/** + * Gets the options that are explicitly different from the defaults. + * + * In the future we should just not store options we don't want to set. + */ +export async function getExplicitOptions(): Promise { + const options = await getOptions(); + const defaultOptions = DEFAULT_OPTIONS; + for (const key in defaultOptions) { + // @ts-expect-error: Element implicitly has an any type + if (key in options && defaultOptions[key] === options[key]) { + // @ts-expect-error: Element implicitly has an any type + delete options[key]; + } + } + + return options; +}