mirror of
https://github.com/Zagrios/bs-manager.git
synced 2026-07-03 14:08:25 +02:00
[bugfix] show error when BSManager can't connect to beatmods
This commit is contained in:
@@ -133,6 +133,7 @@
|
||||
"mods-not-available": "No mods are available yet for this version of Beat Saber",
|
||||
"status": {
|
||||
"no-wineprefix": "Could not find BSManager WINEPREFIX path. Please launch Beat Saber in BSManager first.",
|
||||
"beatmods-down": "Beatmods is currently unreachable. Please retry later. If the issue persists, inform us on Discord/GitHub.",
|
||||
"unknown": "An unknown error occurred ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import BeatWaitingImg from "../../../../../../assets/images/apngs/beat-waiting.p
|
||||
import BeatConflictImg from "../../../../../../assets/images/apngs/beat-conflict.png";
|
||||
import { useObservable } from "renderer/hooks/use-observable.hook";
|
||||
import { lastValueFrom } from "rxjs";
|
||||
import { useTranslation, useTranslationV2 } from "renderer/hooks/use-translation.hook";
|
||||
import { useTranslationV2 } from "renderer/hooks/use-translation.hook";
|
||||
import { LinkOpenerService } from "renderer/services/link-opener.service";
|
||||
import { ModalExitCode, ModalService } from "renderer/services/modale.service";
|
||||
import { ModsDisclaimerModal } from "renderer/components/modal/modal-types/mods-disclaimer-modal.component";
|
||||
@@ -232,10 +232,7 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
||||
return onDisclamerDecline?.();
|
||||
}
|
||||
|
||||
let status = ModsGridStatus.OK;
|
||||
if (window.electron.platform === "linux") {
|
||||
status = await modsManager.getModsGridStatus();
|
||||
}
|
||||
const status = await modsManager.getModsGridStatus();
|
||||
setGridStatus(status);
|
||||
|
||||
loadMods();
|
||||
@@ -347,12 +344,12 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
||||
});
|
||||
|
||||
function ModStatus({ text, image, spin = false, children }: { text: string; image: string; spin?: boolean, children?: ReactNode}) {
|
||||
const t = useTranslation();
|
||||
const { text: t } = useTranslationV2();
|
||||
|
||||
return (
|
||||
<div className="w-full h-full flex flex-col items-center justify-center text-gray-800 dark:text-gray-200">
|
||||
<img className={`w-32 h-32 ${spin ? "spin-loading" : ""}`} src={image} alt=" " />
|
||||
<span className="text-xl mt-3 italic">{t(text)}</span>
|
||||
<span className="text-xl text-center px-2 mt-3 italic">{t(text)}</span>
|
||||
{children}
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -16,6 +16,7 @@ export interface UninstallModsResult {
|
||||
export enum ModsGridStatus {
|
||||
OK = "",
|
||||
NO_WINEPREFIX = "no-wineprefix",
|
||||
BEATMODS_DOWN = "beatmods-down",
|
||||
UNKNOWN = "unknown"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user