From ffdb248872c89b586a83aaefc5cca3c98b8e5e8c Mon Sep 17 00:00:00 2001 From: Daniel Jacobs Date: Tue, 14 Nov 2023 15:17:22 -0500 Subject: [PATCH] demo/extension: Expand iPad check to work for iPadOS 13+ --- web/packages/demo/www/index.js | 4 +++- web/packages/extension/src/player.ts | 14 +++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/web/packages/demo/www/index.js b/web/packages/demo/www/index.js index 56a4fcbe3f79..00dc20f24d65 100644 --- a/web/packages/demo/www/index.js +++ b/web/packages/demo/www/index.js @@ -230,7 +230,9 @@ reloadSwf.addEventListener("click", () => { window.addEventListener("load", () => { if ( navigator.userAgent.match(/iPad/i) || - navigator.userAgent.match(/iPhone/i) + navigator.userAgent.match(/iPhone/i) || + (navigator.platform === "MacIntel" && + typeof navigator.standalone !== "undefined") ) { localFileInput.removeAttribute("accept"); } diff --git a/web/packages/extension/src/player.ts b/web/packages/extension/src/player.ts index 2ffe18f80841..d9675b7bdf26 100644 --- a/web/packages/extension/src/player.ts +++ b/web/packages/extension/src/player.ts @@ -7,6 +7,16 @@ import type { URLLoadOptions, } from "ruffle-core"; +declare global { + interface Navigator { + /** + * iPadOS sends a User-Agent string that appears to be from macOS. + * navigator.standalone is not defined on macOS, so we use it for iPad detection. + */ + standalone?: boolean; + } +} + const api = PublicAPI.negotiate(window.RufflePlayer!, "local"); window.RufflePlayer = api; const ruffle = api.newest()!; @@ -216,7 +226,9 @@ reloadSwf.addEventListener("click", () => { window.addEventListener("load", () => { if ( navigator.userAgent.match(/iPad/i) || - navigator.userAgent.match(/iPhone/i) + navigator.userAgent.match(/iPhone/i) || + (navigator.platform === "MacIntel" && + typeof navigator.standalone !== "undefined") ) { localFileInput.removeAttribute("accept"); }