[bugfix] show error when BSManager can't connect to beatmods

This commit is contained in:
silentrald
2025-02-08 20:44:09 +08:00
parent a54809ffb5
commit 7fafbb316e
6 changed files with 27 additions and 11 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
import { BsModsManagerService } from "../services/mods/bs-mods-manager.service";
import { IpcService } from "../services/ipc.service";
import { from, of } from "rxjs";
import { from } from "rxjs";
const ipc = IpcService.getInstance();
@@ -36,6 +36,6 @@ ipc.on("bs-mods.uninstall-all-mods", (args, reply) => {
ipc.on("bs-mods.get-mods-grid-status", (_, reply) => {
const modsManager = BsModsManagerService.getInstance();
reply(of(modsManager.getModsGridStatus()));
})
reply(from(modsManager.getModsGridStatus()));
});
@@ -26,6 +26,17 @@ export class BeatModsApiService {
this.requestService = RequestService.getInstance();
}
public async isUp(): Promise<boolean> {
try {
// The data in status can be dropped
await this.requestService.getJSON<{}>(`${this.MODS_REPO_API_URL}/status`);
return true;
} catch (error) {
log.error("Could not connect to beatmods", error);
return false;
}
}
private getVersionModsUrl(version: BSVersion): string {
const platform: BbmPlatform = version.oculus || version.metadata?.store === BsStore.OCULUS ? BbmPlatform.OculusPC : BbmPlatform.SteamPC;
return `${this.MODS_REPO_API_URL}/mods?status=verified&gameVersion=${version.BSVersion}&gameName=BeatSaber&platform=${platform}`;
@@ -566,7 +566,7 @@ export class BsModsManagerService {
});
}
public getModsGridStatus(): ModsGridStatus {
public async getModsGridStatus(): Promise<ModsGridStatus> {
if (process.platform === "linux") {
const wineprefix = this.linuxService.getWinePrefixPath();
if (!wineprefix) {
@@ -575,6 +575,12 @@ export class BsModsManagerService {
}
}
const beatModsUp = await this.beatModsApi.isUp();
if (!beatModsUp) {
return ModsGridStatus.BEATMODS_DOWN;
}
return ModsGridStatus.OK;
}
}