From 50c15ad5a8f713a3a7215ee3bcc3df75b32642ae Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sat, 22 Jun 2024 21:15:26 +0700 Subject: [PATCH] Add new helper method `isPWA()` to check for standalone mode. Also fix #728 --- src/helpers/ua-parser-helpers.d.ts | 4 +++- src/helpers/ua-parser-helpers.js | 13 ++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/helpers/ua-parser-helpers.d.ts b/src/helpers/ua-parser-helpers.d.ts index 89f64f0..f467c31 100644 --- a/src/helpers/ua-parser-helpers.d.ts +++ b/src/helpers/ua-parser-helpers.d.ts @@ -7,9 +7,11 @@ import { IResult } from "../main/ua-parser"; declare function isAppleSilicon(res: IResult): boolean; declare function isChromiumBased(res: IResult): boolean; declare function isFrozenUA(ua: string): boolean; +declare function isPWA(): boolean; export { isAppleSilicon, isChromiumBased, - isFrozenUA + isFrozenUA, + isPWA } \ No newline at end of file diff --git a/src/helpers/ua-parser-helpers.js b/src/helpers/ua-parser-helpers.js index 4cbf30e..a862ec5 100644 --- a/src/helpers/ua-parser-helpers.js +++ b/src/helpers/ua-parser-helpers.js @@ -15,8 +15,19 @@ const isChromiumBased = (res) => res.engine.is(Engine.BLINK); const isFrozenUA = (ua) => /^Mozilla\/5\.0 \((Windows NT 10\.0; Win64; x64|Macintosh; Intel Mac OS X 10_15_7|X11; Linux x86_64|X11; CrOS x86_64 14541\.0\.0|Fuchsia|Linux; Android 10; K)\) AppleWebKit\/537\.36 \(KHTML, like Gecko\) Chrome\/\d+\.0\.0\.0 (Mobile )?Safari\/537\.36/.test(ua); +const isPWA = () => window && (window.matchMedia('(display-mode: standalone)').matches || + // iOS + navigator.standalone || + // Android + document.referrer.startsWith('android-app://') || + // Windows + window.Windows || + /trident.+(msapphost|webview)\//i.test(navigator.userAgent) || + document.referrer.startsWith('app-info://platform/microsoft-store')); + module.exports = { isAppleSilicon, isChromiumBased, - isFrozenUA + isFrozenUA, + isPWA } \ No newline at end of file