From b7c20a6c60fbdc57cc0ff1b718fc063223c8c29e Mon Sep 17 00:00:00 2001 From: Daniel Jacobs Date: Thu, 16 Mar 2023 10:42:09 -0400 Subject: [PATCH] extension: Give precedence to toggles over default options (fixes #5825) Also fixes #5696 --- web/packages/core/src/public-api.ts | 7 +++++-- web/packages/core/src/ruffle-player.ts | 7 +++++++ web/packages/extension/src/ruffle.ts | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/web/packages/core/src/public-api.ts b/web/packages/core/src/public-api.ts index 9aa4fd48f..76ecdadc8 100644 --- a/web/packages/core/src/public-api.ts +++ b/web/packages/core/src/public-api.ts @@ -12,7 +12,10 @@ declare global { * [[PublicAPI]] instance itself. */ RufflePlayer?: - | { config?: DataLoadOptions | URLLoadOptions | object } + | { + config?: DataLoadOptions | URLLoadOptions | object; + conflict?: Record | null; + } | PublicAPI; } } @@ -33,11 +36,11 @@ export class PublicAPI { * The configuration object used when Ruffle is instantiated. */ config: DataLoadOptions | URLLoadOptions | object; + conflict: Record | null; private sources: Record; private invoked: boolean; private newestName: string | null; - private conflict: Record | null; /** * Construct the Ruffle public API. diff --git a/web/packages/core/src/ruffle-player.ts b/web/packages/core/src/ruffle-player.ts index 52353f3c7..363c0f164 100644 --- a/web/packages/core/src/ruffle-player.ts +++ b/web/packages/core/src/ruffle-player.ts @@ -666,6 +666,13 @@ export class RufflePlayer extends HTMLElement { try { this.loadedConfig = { ...DEFAULT_CONFIG, + ...(window.RufflePlayer?.conflict && + window.RufflePlayer?.conflict["newestName"] === "extension" + ? (window.RufflePlayer?.conflict["config"] as Record< + string, + unknown + >) + : {}), ...(window.RufflePlayer?.config ?? {}), ...this.config, ...options, diff --git a/web/packages/extension/src/ruffle.ts b/web/packages/extension/src/ruffle.ts index a6578438f..96d9d9b12 100644 --- a/web/packages/extension/src/ruffle.ts +++ b/web/packages/extension/src/ruffle.ts @@ -16,8 +16,8 @@ function handleMessage(message: Message) { case "load": { const api = window.RufflePlayer ?? {}; api.config = { - ...api.config, ...message.config, + ...api.config, }; window.RufflePlayer = PublicAPI.negotiate(api, "extension"); return {};