Fix not able to get Remote Play consoles

This commit is contained in:
redphx 2024-04-24 17:35:04 +07:00
parent 06ffcf20f7
commit d376e4b8be
2 changed files with 20 additions and 16 deletions

View File

@ -219,16 +219,17 @@ export class RemotePlay {
}
}
fetch('https://xhome.gssv-play-prod.xboxlive.com/v2/login/user', {
method: 'POST',
body: JSON.stringify({
offeringId: 'xhome',
token: GSSV_TOKEN,
}),
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
}).then(resp => resp.json())
const request = new Request('https://xhome.gssv-play-prod.xboxlive.com/v2/login/user', {
method: 'POST',
body: JSON.stringify({
offeringId: 'xhome',
token: GSSV_TOKEN,
}),
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
});
fetch(request).then(resp => resp.json())
.then(json => {
RemotePlay.#REGIONS = json.offeringSettings.regions;
RemotePlay.XHOME_TOKEN = json.gsToken;
@ -252,8 +253,8 @@ export class RemotePlay {
// Test servers one by one
for (const region of RemotePlay.#REGIONS) {
try {
const url = `${region.baseUri}/v6/servers/home?mr=50`;
const resp = await fetch(url, options);
const request = new Request(`${region.baseUri}/v6/servers/home?mr=50`, options);
const resp = await fetch(request);
const json = await resp.json();
RemotePlay.#CONSOLES = json.results;

View File

@ -264,8 +264,11 @@ class XhomeInterceptor {
opts.body = await clone.text();
}
const index = request.url.indexOf('.xboxlive.com');
let newUrl = STATES.remotePlay.server + request.url.substring(index + 13);
let newUrl = request.url;
if (!newUrl.includes('/servers/home')) {
const index = request.url.indexOf('.xboxlive.com');
newUrl = STATES.remotePlay.server + request.url.substring(index + 13);
}
request = new Request(newUrl, opts);
let url = (typeof request === 'string') ? request : request.url;
@ -292,7 +295,7 @@ class XcloudInterceptor {
const obj = await response.clone().json();
// Preload Remote Play
BX_FLAGS.PreloadRemotePlay && RemotePlay.preload();
getPref(PrefKey.REMOTE_PLAY_ENABLED) && BX_FLAGS.PreloadRemotePlay && RemotePlay.preload();
// Store xCloud token
RemotePlay.XCLOUD_TOKEN = obj.gsToken;
@ -573,7 +576,7 @@ export function interceptHttpRequests() {
}
let requestType: RequestType;
if (STATES.remotePlay.isPlaying || url.includes('/sessions/home')) {
if (STATES.remotePlay.isPlaying || url.includes('/sessions/home') || url.includes('xhome.')) {
requestType = RequestType.XHOME;
} else {
requestType = RequestType.XCLOUD;