diff --git a/src/utils/preload-state.ts b/src/utils/preload-state.ts index 02742ff..b1c5910 100644 --- a/src/utils/preload-state.ts +++ b/src/utils/preload-state.ts @@ -1,5 +1,4 @@ import { STATES } from "@utils/global"; -import { UserAgent } from "@utils/user-agent"; import { BxLogger } from "./bx-logger"; import { TouchController } from "@modules/touch-controller"; import { GamePassCloudGallery } from "./gamepass-gallery"; @@ -12,19 +11,14 @@ export function overridePreloadState() { Object.defineProperty(window, '__PRELOADED_STATE__', { configurable: true, get: () => { - // @ts-ignore return _state; }, set: state => { // Override User-Agent - const userAgent = UserAgent.spoof(); - if (userAgent) { - try { - // @ts-ignore - state.appContext.requestInfo.userAgent = userAgent; - } catch (e) { - BxLogger.error(LOG_TAG, e); - } + try { + state.appContext.requestInfo.userAgent = window.navigator.userAgent; + } catch (e) { + BxLogger.error(LOG_TAG, e); } // Add list of games with custom layouts to the official list diff --git a/src/utils/user-agent.ts b/src/utils/user-agent.ts index c5b894a..d016931 100644 --- a/src/utils/user-agent.ts +++ b/src/utils/user-agent.ts @@ -45,6 +45,8 @@ export class UserAgent { if (!UserAgent.#config.custom) { UserAgent.#config.custom = ''; } + + UserAgent.spoof(); } static updateStorage(profile: UserAgentProfile, custom?: string) { @@ -63,16 +65,22 @@ export class UserAgent { } static get(profile: UserAgentProfile): string { - const defaultUserAgent = UserAgent.getDefault(); - if (profile === UserAgentProfile.CUSTOM) { - return UserAgent.#config.custom || ''; - } + const defaultUserAgent = window.navigator.userAgent; - return (UserAgent.#USER_AGENTS as any)[profile] || defaultUserAgent; + switch (profile) { + case UserAgentProfile.DEFAULT: + return defaultUserAgent; + + case UserAgentProfile.CUSTOM: + return UserAgent.#config.custom || defaultUserAgent; + + default: + return UserAgent.#USER_AGENTS[profile] || defaultUserAgent; + } } static isSafari(mobile=false): boolean { - const userAgent = (UserAgent.getDefault() || '').toLowerCase(); + const userAgent = UserAgent.getDefault().toLowerCase(); let result = userAgent.includes('safari') && !userAgent.includes('chrom'); if (result && mobile) { @@ -83,21 +91,17 @@ export class UserAgent { } static isMobile(): boolean { - const userAgent = (UserAgent.getDefault() || '').toLowerCase(); + const userAgent = UserAgent.getDefault().toLowerCase(); return /iphone|ipad|android/.test(userAgent); } static spoof() { - let newUserAgent; - const profile = UserAgent.#config.profile; if (profile === UserAgentProfile.DEFAULT) { return; } - if (!newUserAgent) { - newUserAgent = UserAgent.get(profile); - } + const newUserAgent = UserAgent.get(profile); // Clear data of navigator.userAgentData, force xCloud to detect browser based on navigator.userAgent (window.navigator as any).orgUserAgentData = (window.navigator as any).userAgentData; @@ -108,7 +112,5 @@ export class UserAgent { Object.defineProperty(window.navigator, 'userAgent', { value: newUserAgent, }); - - return newUserAgent; } }