Show error when not able to get the server list

This commit is contained in:
redphx 2025-06-21 18:12:58 +07:00
parent f7048a38b3
commit 88151c9426
5 changed files with 22 additions and 6 deletions

View File

@ -8565,7 +8565,8 @@ class HeaderSection {
STATES.isSignedIn = !0, $btnSettings.querySelector("span").textContent = getPreferredServerRegion(!0) || t("better-xcloud"); STATES.isSignedIn = !0, $btnSettings.querySelector("span").textContent = getPreferredServerRegion(!0) || t("better-xcloud");
let PREF_LATEST_VERSION = getGlobalPref("version.latest"); let PREF_LATEST_VERSION = getGlobalPref("version.latest");
if (!SCRIPT_VERSION.includes("beta") && PREF_LATEST_VERSION && PREF_LATEST_VERSION !== SCRIPT_VERSION) $btnSettings.setAttribute("data-update-available", "true"); if (!SCRIPT_VERSION.includes("beta") && PREF_LATEST_VERSION && PREF_LATEST_VERSION !== SCRIPT_VERSION) $btnSettings.setAttribute("data-update-available", "true");
} else if (status === "unavailable") { } else if (status === "error") Toast.show(t("server-list-error"), "❌", { instant: !0 });
else if (status === "unavailable") {
if (STATES.supportedRegion = !1, document.querySelector("div[class^=UnsupportedMarketPage-module__container]")) SettingsDialog.getInstance().show(); if (STATES.supportedRegion = !1, document.querySelector("div[class^=UnsupportedMarketPage-module__container]")) SettingsDialog.getInstance().show();
} }
$btnSettings.classList.remove("bx-gone"); $btnSettings.classList.remove("bx-gone");
@ -9063,7 +9064,13 @@ class XcloudInterceptor {
let ip = BypassServerIps[bypassServer]; let ip = BypassServerIps[bypassServer];
ip && request.headers.set("X-Forwarded-For", ip); ip && request.headers.set("X-Forwarded-For", ip);
} }
let response = await NATIVE_FETCH(request, init); let response;
try {
response = await NATIVE_FETCH(request, init);
} catch (e) {
BxEventBus.Script.emit("xcloud.server", { status: "error" });
return;
}
if (response.status !== 200) return BxEventBus.Script.emit("xcloud.server", { status: "unavailable" }), response; if (response.status !== 200) return BxEventBus.Script.emit("xcloud.server", { status: "unavailable" }), response;
let obj = await response.clone().json(); let obj = await response.clone().json();
RemotePlayManager.getInstance()?.setXcloudToken(obj.gsToken); RemotePlayManager.getInstance()?.setXcloudToken(obj.gsToken);

File diff suppressed because one or more lines are too long

View File

@ -12,6 +12,7 @@ import { getGlobalPref } from "@/utils/pref-utils";
import { BxLogger } from "@/utils/bx-logger"; import { BxLogger } from "@/utils/bx-logger";
import { BxEventBus } from "@/utils/bx-event-bus"; import { BxEventBus } from "@/utils/bx-event-bus";
import { BlockFeature } from "@/enums/pref-values"; import { BlockFeature } from "@/enums/pref-values";
import { Toast } from "@/utils/toast";
export class HeaderSection { export class HeaderSection {
private static instance: HeaderSection; private static instance: HeaderSection;
@ -60,6 +61,8 @@ export class HeaderSection {
if (!SCRIPT_VERSION.includes('beta') && PREF_LATEST_VERSION && PREF_LATEST_VERSION !== SCRIPT_VERSION) { if (!SCRIPT_VERSION.includes('beta') && PREF_LATEST_VERSION && PREF_LATEST_VERSION !== SCRIPT_VERSION) {
$btnSettings.setAttribute('data-update-available', 'true'); $btnSettings.setAttribute('data-update-available', 'true');
} }
} else if (status === 'error') {
Toast.show(t('server-list-error'), '❌', { instant: true });
} else if (status === 'unavailable') { } else if (status === 'unavailable') {
STATES.supportedRegion = false; STATES.supportedRegion = false;

View File

@ -9,7 +9,7 @@ type EventCallback<T = any> = (payload: T) => void;
export type ScriptEvents = { export type ScriptEvents = {
'xcloud.server': { 'xcloud.server': {
status: 'ready' | 'unavailable' | 'signed-out', status: 'ready' | 'unavailable' | 'signed-out' | 'error',
}; };
'dialog.shown': {}; 'dialog.shown': {};

View File

@ -49,7 +49,13 @@ export class XcloudInterceptor {
ip && (request as Request).headers.set('X-Forwarded-For', ip); ip && (request as Request).headers.set('X-Forwarded-For', ip);
} }
const response = await NATIVE_FETCH(request, init); let response;
try {
response = await NATIVE_FETCH(request, init);
} catch (e) {
BxEventBus.Script.emit('xcloud.server', { status: 'error' });
return;
}
if (response.status !== 200) { if (response.status !== 200) {
// Unsupported region // Unsupported region
BxEventBus.Script.emit('xcloud.server', { status: 'unavailable' }); BxEventBus.Script.emit('xcloud.server', { status: 'unavailable' });