From b0ecc7171b195da05368b5baa870020f90b2f786 Mon Sep 17 00:00:00 2001 From: redphx <96280+redphx@users.noreply.github.com> Date: Fri, 1 Nov 2024 19:52:25 +0700 Subject: [PATCH] Update device suggestion URL --- dist/better-xcloud.lite.user.js | 14 ++++++----- dist/better-xcloud.user.js | 14 ++++++----- src/modules/ui/dialog/settings-dialog.ts | 31 +++++++++++++++++++----- src/utils/bx-flags.ts | 4 ++- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/dist/better-xcloud.lite.user.js b/dist/better-xcloud.lite.user.js index f7d624c..961acb4 100644 --- a/dist/better-xcloud.lite.user.js +++ b/dist/better-xcloud.lite.user.js @@ -3939,9 +3939,14 @@ class SettingsNavigationDialog extends NavigationDialog { reloadPage() { this.$btnGlobalReload.disabled = !0, this.$btnGlobalReload.firstElementChild.textContent = t("settings-reloading"), this.hide(), FullscreenText.getInstance().show(t("settings-reloading")), window.location.reload(); } - async getRecommendedSettings(deviceCode) { + async getRecommendedSettings(androidInfo) { + function normalize(str) { + return str.toLowerCase().trim().replaceAll(/\s+/g, "-").replaceAll(/-+/g, "-"); + } try { - let json = await (await NATIVE_FETCH(`https://raw.githubusercontent.com/redphx/better-xcloud/gh-pages/devices/${deviceCode.toLowerCase()}.json`)).json(), recommended = {}; + let { manufacturer, board, model } = androidInfo; + manufacturer = normalize(manufacturer), board = normalize(board), model = normalize(model); + let url = `https://raw.githubusercontent.com/redphx/better-xcloud/gh-pages/devices/${manufacturer}/${board}-${model}.json`, json = await (await NATIVE_FETCH(url)).json(), recommended = {}; if (json.schema_version !== 1) return null; let scriptSettings = json.settings.script; if (scriptSettings._base) { @@ -3999,10 +4004,7 @@ class SettingsNavigationDialog extends NavigationDialog { } let recommendedDevice = ""; if (BX_FLAGS.DeviceInfo.deviceType.includes("android")) { - if (BX_FLAGS.DeviceInfo.androidInfo) { - let deviceCode = BX_FLAGS.DeviceInfo.androidInfo.board; - recommendedDevice = await this.getRecommendedSettings(deviceCode); - } + if (BX_FLAGS.DeviceInfo.androidInfo) recommendedDevice = await this.getRecommendedSettings(BX_FLAGS.DeviceInfo.androidInfo); } let hasRecommendedSettings = Object.keys(this.suggestedSettings.recommended).length > 0, deviceType = BX_FLAGS.DeviceInfo.deviceType; if (deviceType === "android-handheld") this.addDefaultSuggestedSetting("stream_touch_controller", "off"), this.addDefaultSuggestedSetting("controller_device_vibration", "on"); diff --git a/dist/better-xcloud.user.js b/dist/better-xcloud.user.js index 01bd9d2..0aaf022 100644 --- a/dist/better-xcloud.user.js +++ b/dist/better-xcloud.user.js @@ -5101,9 +5101,14 @@ class SettingsNavigationDialog extends NavigationDialog { reloadPage() { this.$btnGlobalReload.disabled = !0, this.$btnGlobalReload.firstElementChild.textContent = t("settings-reloading"), this.hide(), FullscreenText.getInstance().show(t("settings-reloading")), window.location.reload(); } - async getRecommendedSettings(deviceCode) { + async getRecommendedSettings(androidInfo) { + function normalize(str) { + return str.toLowerCase().trim().replaceAll(/\s+/g, "-").replaceAll(/-+/g, "-"); + } try { - let json = await (await NATIVE_FETCH(`https://raw.githubusercontent.com/redphx/better-xcloud/gh-pages/devices/${deviceCode.toLowerCase()}.json`)).json(), recommended = {}; + let { manufacturer, board, model } = androidInfo; + manufacturer = normalize(manufacturer), board = normalize(board), model = normalize(model); + let url = `https://raw.githubusercontent.com/redphx/better-xcloud/gh-pages/devices/${manufacturer}/${board}-${model}.json`, json = await (await NATIVE_FETCH(url)).json(), recommended = {}; if (json.schema_version !== 1) return null; let scriptSettings = json.settings.script; if (scriptSettings._base) { @@ -5161,10 +5166,7 @@ class SettingsNavigationDialog extends NavigationDialog { } let recommendedDevice = ""; if (BX_FLAGS.DeviceInfo.deviceType.includes("android")) { - if (BX_FLAGS.DeviceInfo.androidInfo) { - let deviceCode = BX_FLAGS.DeviceInfo.androidInfo.board; - recommendedDevice = await this.getRecommendedSettings(deviceCode); - } + if (BX_FLAGS.DeviceInfo.androidInfo) recommendedDevice = await this.getRecommendedSettings(BX_FLAGS.DeviceInfo.androidInfo); } let hasRecommendedSettings = Object.keys(this.suggestedSettings.recommended).length > 0, deviceType = BX_FLAGS.DeviceInfo.deviceType; if (deviceType === "android-handheld") this.addDefaultSuggestedSetting("stream_touch_controller", "off"), this.addDefaultSuggestedSetting("controller_device_vibration", "on"); diff --git a/src/modules/ui/dialog/settings-dialog.ts b/src/modules/ui/dialog/settings-dialog.ts index 0f365d5..200a853 100644 --- a/src/modules/ui/dialog/settings-dialog.ts +++ b/src/modules/ui/dialog/settings-dialog.ts @@ -19,7 +19,7 @@ import { setNearby } from "@/utils/navigation-utils"; import { PatcherCache } from "@/modules/patcher"; import { UserAgentProfile } from "@/enums/user-agent"; import { UserAgent } from "@/utils/user-agent"; -import { BX_FLAGS, NATIVE_FETCH } from "@/utils/bx-flags"; +import { BX_FLAGS, NATIVE_FETCH, type BxFlags } from "@/utils/bx-flags"; import { copyToClipboard } from "@/utils/utils"; import { GamepadKey } from "@/enums/mkb"; import { PrefKey, StorageKey } from "@/enums/pref-keys"; @@ -683,10 +683,23 @@ export class SettingsNavigationDialog extends NavigationDialog { window.location.reload(); } - private async getRecommendedSettings(deviceCode: string): Promise { + private async getRecommendedSettings(androidInfo: BxFlags['DeviceInfo']['androidInfo']): Promise { + function normalize(str: string) { + return str.toLowerCase() + .trim() + .replaceAll(/\s+/g, '-') + .replaceAll(/-+/g, '-'); + } + // Get recommended settings from GitHub try { - const response = await NATIVE_FETCH(`https://raw.githubusercontent.com/redphx/better-xcloud/gh-pages/devices/${deviceCode.toLowerCase()}.json`); + let {manufacturer, board, model} = androidInfo!; + manufacturer = normalize(manufacturer); + board = normalize(board); + model = normalize(model); + + const url = `https://raw.githubusercontent.com/redphx/better-xcloud/gh-pages/devices/${manufacturer}/${board}-${model}.json`; + const response = await NATIVE_FETCH(url); const json = (await response.json()) as RecommendedSettings; const recommended: PartialRecord = {}; @@ -804,11 +817,17 @@ export class SettingsNavigationDialog extends NavigationDialog { if (BX_FLAGS.DeviceInfo.deviceType.includes('android')) { if (BX_FLAGS.DeviceInfo.androidInfo) { - const deviceCode = BX_FLAGS.DeviceInfo.androidInfo.board; - recommendedDevice = await this.getRecommendedSettings(deviceCode); + recommendedDevice = await this.getRecommendedSettings(BX_FLAGS.DeviceInfo.androidInfo); } } - // recommendedDevice = await this.getRecommendedSettings('foster_e'); + + /* + recommendedDevice = await this.getRecommendedSettings({ + manufacturer: 'Lenovo', + board: 'kona', + model: 'Lenovo TB-9707F', + }); + */ const hasRecommendedSettings = Object.keys(this.suggestedSettings.recommended).length > 0; diff --git a/src/utils/bx-flags.ts b/src/utils/bx-flags.ts index 327a236..2d16805 100644 --- a/src/utils/bx-flags.ts +++ b/src/utils/bx-flags.ts @@ -1,6 +1,6 @@ import { BxLogger } from "./bx-logger"; -type BxFlags = { +export type BxFlags = { Debug: boolean; CheckForUpdate: boolean; @@ -15,7 +15,9 @@ type BxFlags = { userAgent?: string, androidInfo?: { + manufacturer: string, board: string, + model: string, }, } }