mirror of
https://github.com/Zagrios/bs-manager.git
synced 2026-07-03 14:08:25 +02:00
Backend should be as frontend-agnostic as possible
This commit is contained in:
@@ -226,20 +226,16 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
||||
return noop();
|
||||
}
|
||||
|
||||
getAcceptDisclaimerKey()
|
||||
.then(async (canLoad) => {
|
||||
if (!canLoad) {
|
||||
return onDisclamerDecline?.();
|
||||
}
|
||||
getAcceptDisclaimerKey().then(async canLoad => {
|
||||
if (!canLoad) {
|
||||
return onDisclamerDecline?.();
|
||||
}
|
||||
|
||||
let status = ModsGridStatus.OK;
|
||||
if (window.electron.platform === "linux") {
|
||||
status = await modsManager.getModsGridStatus();
|
||||
}
|
||||
setGridStatus(status);
|
||||
const status = await modsManager.getModsGridStatus();
|
||||
setGridStatus(() => status);
|
||||
|
||||
loadMods();
|
||||
});
|
||||
loadMods();
|
||||
});
|
||||
|
||||
return () => {
|
||||
setMoreInfoMod(null);
|
||||
@@ -352,7 +348,7 @@ function ModStatus({ text, image, spin = false, children }: { text: string; imag
|
||||
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 mt-3 italic text-center">{t(text)}</span>
|
||||
{children}
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -9,6 +9,7 @@ import { ProgressionInterface } from "shared/models/progress-bar";
|
||||
import { BbmFullMod, BbmModVersion } from "shared/models/mods/mod.interface";
|
||||
import { logRenderError } from "renderer";
|
||||
import { ModsGridStatus } from "shared/models/mods/mod-ipc.model";
|
||||
import { LinuxService } from "./linux.service";
|
||||
|
||||
export class BsModsManagerService {
|
||||
private static instance: BsModsManagerService;
|
||||
@@ -18,6 +19,7 @@ export class BsModsManagerService {
|
||||
private readonly ipcService: IpcService;
|
||||
private readonly progressBar: ProgressBarService;
|
||||
private readonly notifications: NotificationService;
|
||||
private readonly linux: LinuxService
|
||||
|
||||
public readonly isUninstalling$: BehaviorSubject<boolean> = new BehaviorSubject(false);
|
||||
|
||||
@@ -32,6 +34,7 @@ export class BsModsManagerService {
|
||||
this.ipcService = IpcService.getInstance();
|
||||
this.progressBar = ProgressBarService.getInstance();
|
||||
this.notifications = NotificationService.getInstance();
|
||||
this.linux = LinuxService.getInstance();
|
||||
}
|
||||
|
||||
public getAvailableMods(version: BSVersion): Observable<BbmFullMod[]> {
|
||||
@@ -206,11 +209,16 @@ export class BsModsManagerService {
|
||||
}
|
||||
|
||||
public async getModsGridStatus(): Promise<ModsGridStatus> {
|
||||
return lastValueFrom(this.ipcService.sendV2("bs-mods.get-mods-grid-status"))
|
||||
.catch(error => {
|
||||
logRenderError(error);
|
||||
return ModsGridStatus.UNKNOWN;
|
||||
});
|
||||
|
||||
if(window.electron.platform === "linux"){
|
||||
const winePrefix = await lastValueFrom(this.linux.getWinePrefixPath());
|
||||
if(!winePrefix){
|
||||
logRenderError("Could not find BSManager WINEPREFIX path");
|
||||
return ModsGridStatus.NO_WINEPREFIX;
|
||||
}
|
||||
}
|
||||
|
||||
return ModsGridStatus.OK;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
import { Observable } from "rxjs";
|
||||
import { IpcService } from "./ipc.service";
|
||||
|
||||
export class LinuxService {
|
||||
|
||||
private static instance: LinuxService;
|
||||
|
||||
public static getInstance(): LinuxService {
|
||||
if (!LinuxService.instance) {
|
||||
LinuxService.instance = new LinuxService();
|
||||
}
|
||||
return LinuxService.instance;
|
||||
}
|
||||
|
||||
private readonly ipc: IpcService;
|
||||
|
||||
private constructor() {
|
||||
this.ipc = IpcService.getInstance();
|
||||
}
|
||||
|
||||
public getWinePrefixPath(): Observable<string> {
|
||||
return this.ipc.sendV2("linux.get-wine-prefix-path");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user