[chore-245] convert some "send" calls to "sendV2"

This commit is contained in:
MathieuG-P
2023-07-16 17:26:55 +02:00
parent 1edcb55c90
commit 59896400e0
13 changed files with 63 additions and 86 deletions
+8 -24
View File
@@ -6,35 +6,19 @@ import { IpcRequest } from "shared/models/ipc";
import { Mod } from "shared/models/mods/mod.interface";
import { InstallModsResult } from "shared/models/mods";
import log from "electron-log";
import { IpcService } from "../services/ipc.service";
import { from } from "rxjs";
ipcMain.on("get-available-mods", (event, request: IpcRequest<BSVersion>) => {
const utils = UtilsService.getInstance();
const ipc = IpcService.getInstance();
ipc.on<BSVersion>("get-available-mods", (req, reply) => {
const modsManager = BsModsManagerService.getInstance();
modsManager
.getAvailableMods(request.args)
.then(mods => {
utils.ipcSend(request.responceChannel, { success: true, data: mods });
})
.catch(err => {
utils.ipcSend(request.responceChannel, { success: false });
log.error("ipc", "get-available-mods", err, request);
});
reply(from(modsManager.getAvailableMods(req.args)));
});
ipcMain.on("get-installed-mods", (event, request: IpcRequest<BSVersion>) => {
const utils = UtilsService.getInstance();
ipc.on<BSVersion>("get-installed-mods", (req, reply) => {
const modsManager = BsModsManagerService.getInstance();
modsManager
.getInstalledMods(request.args)
.then(mods => {
utils.ipcSend(request.responceChannel, { success: true, data: mods });
})
.catch(err => {
utils.ipcSend(request.responceChannel, { success: false });
log.error("ipc", "get-installed-mods", err, request);
});
reply(from(modsManager.getInstalledMods(req.args)));
});
ipcMain.on("install-mods", (event, request: IpcRequest<{ mods: Mod[]; version: BSVersion }>) => {
+6 -11
View File
@@ -1,17 +1,12 @@
import { ipcMain } from "electron";
import { BSVersion } from "shared/bs-version.interface";
import { UtilsService } from "../services/utils.service";
import { IpcRequest } from "shared/models/ipc";
import { BSLocalVersionService } from "../services/bs-local-version.service";
import { IpcService } from "../services/ipc.service";
import { from } from "rxjs";
ipcMain.on("bs.uninstall", async (event, request: IpcRequest<BSVersion>) => {
const ipc = IpcService.getInstance();
ipc.on<BSVersion>("bs.uninstall", (req, reply) => {
const bsLocalVersionService = BSLocalVersionService.getInstance();
const utilsService = UtilsService.getInstance();
if (!request.args) {
utilsService.ipcSend(request.responceChannel, { success: false });
}
const res = await bsLocalVersionService.deleteVersion(request.args);
utilsService.ipcSend(request.responceChannel, { success: res });
reply(from(bsLocalVersionService.deleteVersion(req.args)));
});
+6 -7
View File
@@ -2,6 +2,10 @@ import { ipcMain } from "electron";
import { AutoUpdaterService } from "../services/auto-updater.service";
import { IpcRequest } from "shared/models/ipc";
import { UtilsService } from "../services/utils.service";
import { IpcService } from "../services/ipc.service";
import { from } from "rxjs";
const ipc = IpcService.getInstance();
ipcMain.on("download-update", async (event, request: IpcRequest<void>) => {
const updaterService = AutoUpdaterService.getInstance();
@@ -13,16 +17,11 @@ ipcMain.on("download-update", async (event, request: IpcRequest<void>) => {
.catch(() => utilsService.ipcSend(request.responceChannel, { success: false }));
});
ipcMain.on("check-update", async (event, request: IpcRequest<void>) => {
ipc.on("check-update", (_, reply) => {
const updaterService = AutoUpdaterService.getInstance();
const utilsService = UtilsService.getInstance();
updaterService
.isUpdateAvailable()
.then(updateAvailable => {
utilsService.ipcSend(request.responceChannel, { success: true, data: updateAvailable });
})
.catch(() => utilsService.ipcSend(request.responceChannel, { success: false }));
reply(from(updaterService.isUpdateAvailable()));
});
ipcMain.on("install-update", async (event, request: IpcRequest<void>) => {
+4 -9
View File
@@ -5,17 +5,12 @@ import { SystemNotificationOptions } from "shared/models/notification/system-not
import { NotificationService } from "../services/notification.service";
import { SteamService } from "../services/steam.service";
import { IpcService } from "../services/ipc.service";
import { from } from "rxjs";
import { from, of } from "rxjs";
// TODO IMPROVE WINDOW CONTROL BY USING WINDOW SERVICE
const ipc = IpcService.getInstance();
ipcMain.on("window.close", async () => {
const utils = UtilsService.getInstance();
utils.getMainWindows("index.html")?.close();
});
ipcMain.on("window.maximize", async () => {
const utils = UtilsService.getInstance();
utils.getMainWindows("index.html")?.maximize();
@@ -35,7 +30,7 @@ ipcMain.on("new-window", async (event, request: IpcRequest<string>) => {
shell.openExternal(request.args);
});
ipc.on("choose-folder", async (req: IpcRequest<string>, reply) => {
ipc.on<string>("choose-folder", async (req, reply) => {
reply(from(dialog.showOpenDialog({ properties: ["openDirectory"], defaultPath: req.args ?? "" })));
});
@@ -54,8 +49,8 @@ ipcMain.on("save-file", async (event, request: IpcRequest<{ filename?: string; f
});
});
ipcMain.on("current-version", async (event, request: IpcRequest<void>) => {
UtilsService.getInstance().ipcSend(request.responceChannel, { success: true, data: app.getVersion() });
ipc.on("current-version", (_, reply) => {
reply(of(app.getVersion()));
});
ipcMain.on("open-logs", async (event, request: IpcRequest<void>) => {
+10 -10
View File
@@ -1,32 +1,32 @@
import { ipcMain } from "electron";
import { WindowManagerService } from "../services/window-manager.service";
import { IpcRequest } from "shared/models/ipc";
import { AppWindow } from "shared/models/window-manager/app-window.model";
import { BSLauncherService } from "../services/bs-launcher.service";
import { IpcService } from "../services/ipc.service";
import { from } from "rxjs";
import { from, of } from "rxjs";
const launcher = BSLauncherService.getInstance();
const ipc = IpcService.getInstance();
ipcMain.on("open-window-then-close-all", async (event, request: IpcRequest<AppWindow>) => {
ipc.on<AppWindow>("open-window-then-close-all", (req, reply) => {
const windowManager = WindowManagerService.getInstance();
windowManager.openWindow(request.args).then(window => {
windowManager.closeAllWindows(request.args);
const res = windowManager.openWindow(req.args).then(() => {
windowManager.closeAllWindows(req.args);
});
reply(from(res));
});
ipcMain.on("close-all-windows", async (event, request: IpcRequest<AppWindow>) => {
ipc.on<AppWindow>("close-all-windows", async (req, reply) => {
await launcher.restoreSteamVR();
const windowManager = WindowManagerService.getInstance();
windowManager.closeAllWindows(request.args);
reply(of(windowManager.closeAllWindows(req.args)));
});
ipcMain.on("close-windows", async (event, request: IpcRequest<AppWindow[]>) => {
ipc.on<AppWindow[]>("close-windows", async (req, reply) => {
await launcher.restoreSteamVR();
const windowManager = WindowManagerService.getInstance();
windowManager.close(...request.args);
reply(of(windowManager.close(...req.args)));
});
ipc.on<AppWindow>("open-window-or-focus", (req, reply) => {
@@ -10,6 +10,7 @@ import { BsmRange } from "../shared/bsm-range.component";
import { BsmIconType } from "../svgs/bsm-icon.component";
import "./title-bar.component.css";
import { useService } from "renderer/hooks/use-service.hook";
import { lastValueFrom } from "rxjs";
export default function TitleBar({ template = "index.html" }: { template: AppWindow }) {
@@ -23,11 +24,11 @@ export default function TitleBar({ template = "index.html" }: { template: AppWin
const [previewVersion, setPreviewVersion] = useState(null);
useEffect(() => {
ipcService.send<string>("current-version").then(res => {
if (res.data.toLocaleLowerCase().includes("alpha")) {
lastValueFrom(ipcService.sendV2<string>("current-version")).then(version => {
if (version.toLocaleLowerCase().includes("alpha")) {
return setPreviewVersion("ALPHA");
}
if (res.data.toLocaleLowerCase().includes("beta")) {
if (version.toLocaleLowerCase().includes("beta")) {
return setPreviewVersion("BETA");
}
});
@@ -10,7 +10,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 { skip, filter } from "rxjs/operators";
import { Subscription } from "rxjs";
import { Subscription, lastValueFrom } from "rxjs";
import { useTranslation } from "renderer/hooks/use-translation.hook";
import { LinkOpenerService } from "renderer/services/link-opener.service";
import { useInView } from "framer-motion";
@@ -97,7 +97,10 @@ export function ModsSlide({ version, onDisclamerDecline }: { version: BSVersion;
return;
}
Promise.all([modsManager.getAvailableMods(version), modsManager.getInstalledMods(version)]).then(([available, installed]) => {
Promise.all([
lastValueFrom(modsManager.getAvailableMods(version)),
lastValueFrom(modsManager.getInstalledMods(version))
]).then(([available, installed]) => {
const defaultMods = configService.get<string[]>("default_mods" as DefaultConfigKey);
setModsAvailable(modsToCategoryMap(available));
setModsSelected(available.filter(m => m.required || defaultMods.some(d => m.name.toLowerCase() === d.toLowerCase()) || installed.some(i => m.name === i.name)));
@@ -79,7 +79,7 @@ export function SettingsPage() {
useEffect(() => {
loadInstallationFolder();
ipcService.send<string>("current-version").then(res => setAppVersion(res.data));
lastValueFrom(ipcService.sendV2<string>("current-version")).then(res => setAppVersion(res));
mapsManager.isDeepLinksEnabled().then(enabled => setMapDeepLinksEnabled(() => enabled));
playlistsManager.isDeepLinksEnabled().then(enabled => setPlaylistsDeepLinkEnabled(() => enabled));
modelsManager.isDeepLinksEnabled().then(enabled => setModelsDeepLinkEnabled(() => enabled));
@@ -1,4 +1,4 @@
import { Observable } from "rxjs";
import { Observable, lastValueFrom } from "rxjs";
import { map } from "rxjs/operators";
import { IpcService } from "./ipc.service";
import { ProgressBarService } from "./progress-bar.service";
@@ -26,12 +26,7 @@ export class AutoUpdaterService {
}
public isUpdateAvailable(): Promise<boolean> {
return this.ipcService.send<boolean>("check-update").then(res => {
if (!res.success) {
return false;
}
return res.data;
});
return lastValueFrom(this.ipcService.sendV2<boolean>("check-update")).catch(() => false);
}
public downloadUpdate(): Promise<boolean> {
@@ -40,6 +35,7 @@ export class AutoUpdaterService {
});
this.progressService.show(this.downloadProgress$, true);
return promise;
}
@@ -41,12 +41,12 @@ export class BsModsManagerService {
this.os = OsDiagnosticService.getInstance();
}
public async getAvailableMods(version: BSVersion): Promise<Mod[]> {
return this.ipcService.send<Mod[], BSVersion>("get-available-mods", { args: version }).then(res => res.data);
public getAvailableMods(version: BSVersion): Observable<Mod[]> {
return this.ipcService.sendV2<Mod[], BSVersion>("get-available-mods", { args: version });
}
public async getInstalledMods(version: BSVersion): Promise<Mod[]> {
return this.ipcService.send<Mod[], BSVersion>("get-installed-mods", { args: version }).then(res => res.data);
public getInstalledMods(version: BSVersion): Observable<Mod[]> {
return this.ipcService.sendV2<Mod[], BSVersion>("get-installed-mods", { args: version });
}
public installMods(mods: Mod[], version: BSVersion): Promise<void> {
@@ -1,5 +1,6 @@
import { BSVersion } from "shared/bs-version.interface";
import { IpcService } from "./ipc.service";
import { lastValueFrom } from "rxjs";
export class BSUninstallerService {
private static instance: BSUninstallerService;
@@ -17,7 +18,7 @@ export class BSUninstallerService {
this.ipcService = IpcService.getInstance();
}
public async uninstall(version: BSVersion): Promise<boolean> {
return (await this.ipcService.send("bs.uninstall", { args: version })).success;
public uninstall(version: BSVersion): Promise<boolean> {
return lastValueFrom(this.ipcService.sendV2<boolean>("bs.uninstall", { args: version })).catch(() => false);
}
}
+3
View File
@@ -18,6 +18,9 @@ export class IpcService {
this.channelObservables = new Map<string, Observable<IpcResponse<unknown>>>();
}
/**
* @deprecated use sendV2 instead
*/
public send<T, U = unknown>(channel: string, request?: IpcRequest<U>): Promise<IpcResponse<T>> {
if (!request) {
request = { args: null, responceChannel: null };
@@ -18,16 +18,16 @@ export class WindowManagerService {
this.ipcService = IpcService.getInstance();
}
public openThenCloseAll(window: AppWindow) {
this.ipcService.sendLazy<AppWindow>("open-window-then-close-all", { args: window });
public openThenCloseAll(window: AppWindow): Promise<void> {
return lastValueFrom(this.ipcService.sendV2<void>("open-window-then-close-all", { args: window }));
}
public closeAll(except?: AppWindow) {
this.ipcService.sendLazy<AppWindow>("close-all-windows", { args: except });
public closeAll(except?: AppWindow): Promise<void> {
return lastValueFrom(this.ipcService.sendV2<void>("close-all-windows", { args: except }));
}
public close(...win: AppWindow[]) {
this.ipcService.sendLazy<AppWindow[]>("close-windows", { args: win });
public close(...win: AppWindow[]): Promise<void> {
return lastValueFrom(this.ipcService.sendV2<void>("close-windows", { args: win }));
}
public openWindowOrFocus(window: AppWindow): Promise<void> {