mirror of
https://github.com/Zagrios/bs-manager.git
synced 2026-07-03 14:08:25 +02:00
Merge pull request #793 from silentrald/bugfix/linux-wineprefix-fallback
[bugfix] Don't fallback to system WINEPREFIX
This commit is contained in:
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Lade Mods...",
|
||||
"no-internet": "Kein Internet",
|
||||
"mods-not-available": "Für diese Version von Beat Saber sind noch keine Mods verfügbar.",
|
||||
"status": {
|
||||
"no-wineprefix": "Konnte den BSManager WINEPREFIX-Pfad nicht finden. Bitte starte Beat Saber zuerst in BSManager.",
|
||||
"unknown": "Ein unbekannter Fehler ist aufgetreten ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "Mehr Infos",
|
||||
"install-or-update": "Installieren oder aktualisieren",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "Alle Mods wurden entfernt.",
|
||||
"errors": {
|
||||
"no-mods": "Keine Mods sind in dieser Version installiert 😑"
|
||||
"no-mods": "Keine Mods sind in dieser Version installiert 😑",
|
||||
"no-wineprefix": "Konnte den BSManager WINEPREFIX-Pfad nicht finden. Bitte starte Beat Saber zuerst in BSManager."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Loading mods...",
|
||||
"no-internet": "No internet",
|
||||
"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.",
|
||||
"unknown": "An unknown error occurred ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "More info",
|
||||
"install-or-update": "Install or update",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "All mods have been uninstalled.",
|
||||
"errors": {
|
||||
"no-mods": "No mods are installed in this version 😑"
|
||||
"no-mods": "No mods are installed in this version 😑",
|
||||
"no-wineprefix": "Could not find BSManager WINEPREFIX path. Please launch Beat Saber in BSManager first."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Cargando mods...",
|
||||
"no-internet": "Sin internet",
|
||||
"mods-not-available": "Aún no hay mods disponibles para esta versión de Beat Saber",
|
||||
"status": {
|
||||
"no-wineprefix": "No se pudo encontrar la ruta del WINEPREFIX de BSManager. Por favor, inicia Beat Saber en BSManager primero.",
|
||||
"unknown": "Se ha producido un error desconocido ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "Más información",
|
||||
"install-or-update": "Instalar o actualizar",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "Todos los mods han sido desinstalados.",
|
||||
"errors": {
|
||||
"no-mods": "No hay mods instalados en esta versión 😑"
|
||||
"no-mods": "No hay mods instalados en esta versión 😑",
|
||||
"no-wineprefix": "No se pudo encontrar la ruta del WINEPREFIX de BSManager. Por favor, inicia Beat Saber en BSManager primero."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Chargement des mods...",
|
||||
"no-internet": "Pas d'accès Internet",
|
||||
"mods-not-available": "Aucun mod n'est encore disponible pour cette version de Beat Saber",
|
||||
"status": {
|
||||
"no-wineprefix": "Impossible de trouver le chemin WINEPREFIX de BSManager. Veuillez d'abord lancer Beat Saber dans BSManager.",
|
||||
"unknown": "Une erreur inconnue s'est produite ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "Plus d'infos",
|
||||
"install-or-update": "Installer ou mettre à jour",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "Tous les mods ont été désinstallés.",
|
||||
"errors": {
|
||||
"no-mods": "Aucun mod n'est installé dans dans cette version 😑"
|
||||
"no-mods": "Aucun mod n'est installé dans dans cette version 😑",
|
||||
"no-wineprefix": "Impossible de trouver le chemin WINEPREFIX de BSManager. Veuillez d'abord lancer Beat Saber dans BSManager."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Caricamento delle mod in corso...",
|
||||
"no-internet": "Internet non disponibile",
|
||||
"mods-not-available": "Nessuna mod è ancora disponibile per questa versione di Beat Saber",
|
||||
"status": {
|
||||
"no-wineprefix": "Impossibile trovare il percorso del WINEPREFIX di BSManager. Per favore avvia prima Beat Saber in BSManager.",
|
||||
"unknown": "È accaduto un errore sconosciuto ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "Più info",
|
||||
"install-or-update": "Installa o aggiorna",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "Tutte le mod sono state installate.",
|
||||
"errors": {
|
||||
"no-mods": "Non ci sono mod installate su questa versione 😑"
|
||||
"no-mods": "Non ci sono mod installate su questa versione 😑",
|
||||
"no-wineprefix": "Impossibile trovare il percorso del WINEPREFIX di BSManager. Per favore avvia prima Beat Saber in BSManager."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Modを読み込み中...",
|
||||
"no-internet": "インターネット接続がありません!",
|
||||
"mods-not-available": "このバージョンで使用できるMODはまだありません。",
|
||||
"status": {
|
||||
"no-wineprefix": "BSManager WINEPREFIXのパスが見つかりませんでした。まずBSManagerでBeat Saberを起動してください。",
|
||||
"unknown": "不明なエラーが発生しました (´・ω・`)"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "詳細情報",
|
||||
"install-or-update": "インストールとアップデート",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "すべてのModをアンインストールしました。",
|
||||
"errors": {
|
||||
"no-mods": "このバージョンのModはインストールされていません 😑"
|
||||
"no-mods": "このバージョンのModはインストールされていません 😑",
|
||||
"no-wineprefix": "BSManager WINEPREFIXのパスが見つかりませんでした。まずBSManagerでBeat Saberを起動してください。"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "모드를 불러오는 중...",
|
||||
"no-internet": "인터넷 연결이 없습니다!",
|
||||
"mods-not-available": "이 버전에서 사용할 수 있는 모드가 아직 없습니다.",
|
||||
"status": {
|
||||
"no-wineprefix": "BSManager WINEPREFIX 경로를 찾을 수 없습니다. 먼저 BSManager에서 Beat Saber를 실행하세요.",
|
||||
"unknown": "알 수 없는 오류가 발생했습니다 (´・ω・`)"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "자세히 보기",
|
||||
"install-or-update": "설치 및 업데이트",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "모든 Mod가 제거되었습니다.",
|
||||
"errors": {
|
||||
"no-mods": "이 버전에 설치된 Mod가 없습니다 😑"
|
||||
"no-mods": "이 버전에 설치된 Mod가 없습니다 😑",
|
||||
"no-wineprefix": "BSManager WINEPREFIX 경로를 찾을 수 없습니다. 먼저 BSManager에서 Beat Saber를 실행하세요."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Carregando mods...",
|
||||
"no-internet": "Sem internet",
|
||||
"mods-not-available": "Nenhum mod está disponível para essa versão de Beat Saber ainda",
|
||||
"status": {
|
||||
"no-wineprefix": "Não foi possível encontrar o caminho WINEPREFIX do BSManager. Por favor, inicie o Beat Saber no BSManager primeiro.",
|
||||
"unknown": "Um erro desconhecido aconteceu ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "Mais informações",
|
||||
"install-or-update": "Instalar ou Atualizar",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "Todos os mods foram desinstalados.",
|
||||
"errors": {
|
||||
"no-mods": "Nenhum mod está instalado nessa versão 😑"
|
||||
"no-mods": "Nenhum mod está instalado nessa versão 😑",
|
||||
"no-wineprefix": "Não foi possível encontrar o caminho WINEPREFIX do BSManager. Por favor, inicie o Beat Saber no BSManager primeiro."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Загрузка модов...",
|
||||
"no-internet": "Нет интернета",
|
||||
"mods-not-available": "Не найдены моды для этой версии Beat Saber",
|
||||
"status": {
|
||||
"no-wineprefix": "Не удалось найти путь WINEPREFIX BSManager. Пожалуйста, сначала запустите Beat Saber в BSManager.",
|
||||
"unknown": "Неизвестная ошибка ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "Подробнее",
|
||||
"install-or-update": "Установить или обновить",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "Все моды были удалены.",
|
||||
"errors": {
|
||||
"no-mods": "Для этой версии не было установлено модов 😑"
|
||||
"no-mods": "Для этой версии не было установлено модов 😑",
|
||||
"no-wineprefix": "Не удалось найти путь WINEPREFIX BSManager. Пожалуйста, сначала запустите Beat Saber в BSManager."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Naglo-load ng mga mod...",
|
||||
"no-internet": "Walang internet",
|
||||
"mods-not-available": "Walang mod na available pa para sa bersyon na ito ng Beat Saber",
|
||||
"status": {
|
||||
"no-wineprefix": "Hindi mahanap ang WINEPREFIX path ng BSManager. Pakilunsad muna ang Beat Saber sa BSManager.",
|
||||
"unknown": "May naganap na hindi kilalang error ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "Higit pang impormasyon",
|
||||
"install-or-update": "I-install o i-update",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "Lahat ng mod ay na-uninstall na.",
|
||||
"errors": {
|
||||
"no-mods": "Walang mod na naka-install sa bersyong ito 😑"
|
||||
"no-mods": "Walang mod na naka-install sa bersyong ito 😑",
|
||||
"no-wineprefix": "Hindi mahanap ang WINEPREFIX path ng BSManager. Pakilunsad muna ang Beat Saber sa BSManager."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Завантаження модів...",
|
||||
"no-internet": "Немає інтернету",
|
||||
"mods-not-available": "Для цієї версії Beat Saber поки що немає модів",
|
||||
"status": {
|
||||
"no-wineprefix": "Не вдалося знайти шлях до WINEPREFIX BSManager. Будь ласка, спочатку запустіть Beat Saber у BSManager.",
|
||||
"unknown": "Сталася невідома помилка ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "Більше інформації",
|
||||
"install-or-update": "Встановити або оновити",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "Усі моди були видалені.",
|
||||
"errors": {
|
||||
"no-mods": "У цій версії не встановлено жодних модів 😑"
|
||||
"no-mods": "У цій версії не встановлено жодних модів 😑",
|
||||
"no-wineprefix": "Не вдалося знайти шлях до WINEPREFIX BSManager. Будь ласка, спочатку запустіть Beat Saber у BSManager."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Mod 載入中...",
|
||||
"no-internet": "無網路",
|
||||
"mods-not-available": "該版本 BeatSaber 暫無可用 Mod",
|
||||
"status": {
|
||||
"no-wineprefix": "找不到 BSManager WINEPREFIX 路徑。請先在 BSManager 中啟動 Beat Saber。",
|
||||
"unknown": "發生了一個錯誤 ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "更多資訊",
|
||||
"install-or-update": "安裝或更新",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "所有 Mod 已被移除。",
|
||||
"errors": {
|
||||
"no-mods": "該版本中沒有安裝 Mod 😑"
|
||||
"no-mods": "該版本中沒有安裝 Mod 😑",
|
||||
"no-wineprefix": "找不到 BSManager WINEPREFIX 路徑。請先在 BSManager 中啟動 Beat Saber。"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"copied": "已复制!",
|
||||
"confirm": "确认",
|
||||
"choose-folder": "选择文件夹",
|
||||
"Unknown": "发生了一个错误 ¯\\_(ツ)_/¯",
|
||||
"unknown": "发生了一个错误 ¯\\_(ツ)_/¯",
|
||||
"warning": "警告",
|
||||
"continue": "继续",
|
||||
"shared": "共享",
|
||||
@@ -131,6 +131,10 @@
|
||||
"loading-mods": "Mod 加载中...",
|
||||
"no-internet": "无网络",
|
||||
"mods-not-available": "该版本 BeatSaber 暂无可用 Mod",
|
||||
"status": {
|
||||
"no-wineprefix": "找不到 BSManager WINEPREFIX 路径。请先在 BSManager 中启动 Beat Saber。",
|
||||
"unknown": "发生了一个错误 ¯\\_(ツ)_/¯"
|
||||
},
|
||||
"buttons": {
|
||||
"more-infos": "更多信息",
|
||||
"install-or-update": "安装或更新",
|
||||
@@ -592,7 +596,8 @@
|
||||
"msg": {
|
||||
"success": "所有 Mod 已被卸载。",
|
||||
"errors": {
|
||||
"no-mods": "该版本中没有安装 Mod 😑"
|
||||
"no-mods": "该版本中没有安装 Mod 😑",
|
||||
"no-wineprefix": "找不到 BSManager WINEPREFIX 路径。请先在 BSManager 中启动 Beat Saber。"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -33,3 +33,4 @@ ipc.on("bs-mods.uninstall-all-mods", (args, reply) => {
|
||||
const modsManager = BsModsManagerService.getInstance();
|
||||
reply(modsManager.uninstallAllMods(args));
|
||||
});
|
||||
|
||||
|
||||
@@ -9,3 +9,8 @@ ipc.on("linux.verify-proton-folder", (_, reply) => {
|
||||
reply(of(linuxService.verifyProtonPath()));
|
||||
});
|
||||
|
||||
ipc.on("linux.get-wine-prefix-path", (_, reply) => {
|
||||
const linuxService = LinuxService.getInstance();
|
||||
reply(of(linuxService.getWinePrefixPath()));
|
||||
});
|
||||
|
||||
|
||||
@@ -158,11 +158,10 @@ export class BsModsManagerService {
|
||||
winePath = `"${winePathResult}"`;
|
||||
|
||||
const winePrefix = this.linuxService.getWinePrefixPath();
|
||||
if (winePrefix) {
|
||||
env.WINEPREFIX = winePrefix;
|
||||
} else {
|
||||
log.warn("Could not find BSManager WINEPREFIX path, using system's default value instead");
|
||||
if (!winePrefix) {
|
||||
throw new CustomError("Could not find BSManager WINEPREFIX path", "no-wineprefix");
|
||||
}
|
||||
env.WINEPREFIX = winePrefix;
|
||||
}
|
||||
|
||||
return new Promise<boolean>(resolve => {
|
||||
|
||||
@@ -22,6 +22,7 @@ import { UninstallAllModsModal } from "renderer/components/modal/modal-types/uni
|
||||
import Tippy from "@tippyjs/react";
|
||||
import { ProgressBarService } from "renderer/services/progress-bar.service";
|
||||
import { Dropzone } from "renderer/components/shared/dropzone.component";
|
||||
import { ModsGridStatus } from "shared/models/mods/mod-ipc.model";
|
||||
|
||||
export type ModsSlideRef = {
|
||||
loadMods: () => Promise<void>;
|
||||
@@ -42,6 +43,7 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
||||
const os = useService(OsDiagnosticService);
|
||||
const progress = useService(ProgressBarService);
|
||||
|
||||
const [gridStatus, setGridStatus] = useState(ModsGridStatus.OK);
|
||||
const [modsAvailable, setModsAvailable] = useState(null as Map<BbmCategories, BbmFullMod[]>);
|
||||
const [modsInstalled, setModsInstalled] = useState(null as Map<BbmCategories, BbmFullMod[]>);
|
||||
const [modsSelected, setModsSelected] = useState([] as BbmFullMod[]);
|
||||
@@ -185,8 +187,23 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
||||
setModsSelected(() => []);
|
||||
}
|
||||
|
||||
const ensureDisclaimerAccepted = async (): Promise<boolean> => {
|
||||
if (configService.get<boolean>(ACCEPTED_DISCLAIMER_KEY)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const res = await modals.openModal(ModsDisclaimerModal);
|
||||
const haveAccepted = res.exitCode === ModalExitCode.COMPLETED;
|
||||
|
||||
if (haveAccepted) {
|
||||
configService.set(ACCEPTED_DISCLAIMER_KEY, true);
|
||||
}
|
||||
|
||||
return haveAccepted;
|
||||
}
|
||||
|
||||
const loadMods = async (): Promise<void> => {
|
||||
if (os.isOffline) {
|
||||
if (os.isOffline || gridStatus !== ModsGridStatus.OK) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
@@ -209,24 +226,14 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
||||
return noop();
|
||||
}
|
||||
|
||||
(async () => {
|
||||
if (configService.get<boolean>(ACCEPTED_DISCLAIMER_KEY)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const res = await modals.openModal(ModsDisclaimerModal);
|
||||
const haveAccepted = res.exitCode === ModalExitCode.COMPLETED;
|
||||
|
||||
if (haveAccepted) {
|
||||
configService.set(ACCEPTED_DISCLAIMER_KEY, true);
|
||||
}
|
||||
|
||||
return haveAccepted;
|
||||
})().then(canLoad => {
|
||||
ensureDisclaimerAccepted().then(async canLoad => {
|
||||
if (!canLoad) {
|
||||
return onDisclamerDecline?.();
|
||||
}
|
||||
|
||||
const status = await modsManager.getModsGridStatus();
|
||||
setGridStatus(() => status);
|
||||
|
||||
loadMods();
|
||||
});
|
||||
|
||||
@@ -234,6 +241,7 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
||||
setMoreInfoMod(null);
|
||||
setModsAvailable(null);
|
||||
setModsInstalled(null);
|
||||
setGridStatus(ModsGridStatus.OK);
|
||||
};
|
||||
}, [isActive, isOnline, version]);
|
||||
|
||||
@@ -262,6 +270,9 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
||||
if (!isOnline) {
|
||||
return <ModStatus text="pages.version-viewer.mods.no-internet" image={BeatConflictImg} />;
|
||||
}
|
||||
if (gridStatus !== ModsGridStatus.OK) {
|
||||
return <ModStatus text={`pages.version-viewer.mods.status.${gridStatus}`} image={BeatConflictImg} />;
|
||||
}
|
||||
if (!modsAvailable) {
|
||||
return <ModStatus text="pages.version-viewer.mods.loading-mods" image={BeatWaitingImg} spin />;
|
||||
}
|
||||
@@ -337,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>
|
||||
);
|
||||
|
||||
@@ -8,6 +8,8 @@ import { Progression } from "main/helpers/fs.helpers";
|
||||
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;
|
||||
@@ -17,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);
|
||||
|
||||
@@ -31,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[]> {
|
||||
@@ -204,4 +208,17 @@ export class BsModsManagerService {
|
||||
return { available: (available ?? []), installed: (installedMods ?? []) };
|
||||
}
|
||||
|
||||
public async getModsGridStatus(): Promise<ModsGridStatus> {
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -159,6 +159,7 @@ export interface IpcChannelMapping {
|
||||
|
||||
/* ** linux.ipcs ** */
|
||||
"linux.verify-proton-folder": { request: void, response: boolean };
|
||||
"linux.get-wine-prefix-path": { request: void, response: string };
|
||||
|
||||
/* ** oculus.ipcs ** */
|
||||
"is-oculus-sideloaded-apps-enabled": { request: void, response: boolean };
|
||||
|
||||
@@ -12,3 +12,10 @@ export interface UninstallModsResult {
|
||||
nbModsToUninstall: number;
|
||||
nbUninstalledMods: number;
|
||||
}
|
||||
|
||||
export enum ModsGridStatus {
|
||||
OK = "",
|
||||
NO_WINEPREFIX = "no-wineprefix",
|
||||
UNKNOWN = "unknown"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user