Merge branch 'v1.5.0' into feature/playlists/107

This commit is contained in:
MathieuG-P
2024-05-21 20:38:38 +02:00
8 changed files with 72 additions and 16 deletions
@@ -3,6 +3,7 @@ import { BSLocalVersionService } from "../bs-local-version.service";
import { ChildProcessWithoutNullStreams, SpawnOptionsWithoutStdio, spawn } from "child_process";
import path from "path";
import log from "electron-log";
import { sToMs } from "shared/helpers/time.helpers";
export abstract class AbstractLauncherService {
@@ -46,20 +47,40 @@ export abstract class AbstractLauncherService {
}
protected launchBs(bsExePath: string, args: string[], options?: SpawnOptionsWithoutStdio): {process: ChildProcessWithoutNullStreams, exit: Promise<number>} {
protected launchBs(bsExePath: string, args: string[], options?: SpawnBsProcessOptions): {process: ChildProcessWithoutNullStreams, exit: Promise<number>} {
const process = this.launchBSProcess(bsExePath, args, options);
let timoutId: NodeJS.Timeout;
const exit = new Promise<number>((resolve, reject) => {
process.on("error", (err) => {
log.error(`Error while launching BS`, err);
reject(err);
});
process.on("exit", (code) => {
log.info(`BS process exit with code ${code}`);
resolve(code);
});
const unrefAfter = options?.unrefAfter ?? sToMs(10);
timoutId = setTimeout(() => {
log.error("BS process unref after timeout", unrefAfter);
process.unref();
process.removeAllListeners();
resolve(-1);
}, unrefAfter);
}).finally(() => {
clearTimeout(timoutId);
});
return { process, exit };
}
}
export type SpawnBsProcessOptions = {
unrefAfter?: number;
} & SpawnOptionsWithoutStdio;
@@ -112,7 +112,7 @@ export class BsModsManagerService {
private async getBsipaInstalled(version: BSVersion): Promise<Mod> {
const bsPath = await this.bsLocalService.getVersionPath(version);
const injectorPath = path.join(bsPath, "IPA", "winhttp.dll");
const injectorPath = path.join(bsPath, "Beat Saber_Data", "Managed", "IPA.Injector.dll");
if (!(await pathExist(injectorPath))) {
return undefined;
}
+2 -5
View File
@@ -23,9 +23,7 @@ import { ConfigurationService } from "renderer/services/configuration.service";
import { OsDiagnosticService } from "renderer/services/os-diagnostic.service";
import { useService } from "renderer/hooks/use-service.hook";
import { AutoUpdaterService } from "renderer/services/auto-updater.service";
import { gt } from "semver"
import { ModalService } from "renderer/services/modale.service";
import { ChooseStore } from "renderer/components/modal/modal-types/bs-downgrade/choose-store-modal.component";
import { gt, parse } from "semver"
export default function App() {
useService(OsDiagnosticService);
@@ -36,7 +34,6 @@ export default function App() {
const notification = useService(NotificationService);
const config = useService(ConfigurationService);
const autoUpdater = useService(AutoUpdaterService);
const modals = useService(ModalService);
const location = useLocation();
const navigate = useNavigate();
@@ -52,7 +49,7 @@ export default function App() {
autoUpdater.setLastAppVersion(appVersion);
if (lastAppVersion && gt(appVersion, lastAppVersion)) {
if (parse(lastAppVersion) && gt(appVersion, lastAppVersion)) {
autoUpdater.showChangelog(appVersion);
}
};