From 7e261fcb93e81db0f332d21eec0172a5efdc983c Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Sat, 1 Jul 2023 16:48:30 +0200 Subject: [PATCH] [chore] fix some sonarcloud code smells --- src/main/preload.ts | 9 ++- src/main/services/bs-installer.service.ts | 68 +++++++++---------- src/main/services/bs-launcher.service.ts | 4 +- src/main/services/bs-version-lib.service.ts | 12 ++-- src/main/services/ipc.service.ts | 20 +++--- .../services/mods/bs-mods-manager.service.ts | 8 +-- .../model-saber/model-saber.service.ts | 6 +- .../maps-row.component.tsx | 2 +- .../why-credentials-modal.component.tsx | 2 +- .../model-item.component.tsx | 2 +- .../models-grid.component.tsx | 2 +- .../components/nav-bar/nav-bar.component.tsx | 2 +- .../shared/bsm-checkbox.component.tsx | 2 +- .../components/shared/bsm-range.component.tsx | 2 +- .../shared/bsm-select.component.tsx | 2 +- .../slides/mods/mods-grid.component.tsx | 2 +- .../slides/mods/mods-slide.component.tsx | 2 +- src/renderer/preload.d.ts | 10 ++- .../services/bs-version-manager.service.ts | 2 +- src/renderer/services/i18n.service.ts | 18 ++--- src/renderer/services/progress-bar.service.ts | 2 +- .../models/ipc/ipc-response.interface.ts | 5 +- src/shared/models/models/model-saber.model.ts | 4 +- 23 files changed, 88 insertions(+), 100 deletions(-) diff --git a/src/main/preload.ts b/src/main/preload.ts index 00ec0e3e..b002e439 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -1,22 +1,21 @@ import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron'; -import { IpcChannel } from 'shared/models/ipc/ipc-response.interface'; contextBridge.exposeInMainWorld('electron', { ipcRenderer: { - sendMessage(channel: IpcChannel, args: unknown[]) { + sendMessage(channel: string, args: unknown[]) { ipcRenderer.send(channel, args); }, - on(channel: IpcChannel, func: (...args: unknown[]) => void) { + on(channel: string, func: (...args: unknown[]) => void) { const subscription = (_event: IpcRendererEvent, ...args: unknown[]) => func(...args); ipcRenderer.on(channel, subscription); return () => ipcRenderer.removeListener(channel, subscription); }, - once(channel: IpcChannel, func: (...args: unknown[]) => void) { + once(channel: string, func: (...args: unknown[]) => void) { ipcRenderer.once(channel, (_event, ...args) => func(...args)); }, - removeAllListeners(channel: IpcChannel) { + removeAllListeners(channel: string) { ipcRenderer.removeAllListeners(channel); } }, diff --git a/src/main/services/bs-installer.service.ts b/src/main/services/bs-installer.service.ts index 68ce0318..0d11bd7b 100644 --- a/src/main/services/bs-installer.service.ts +++ b/src/main/services/bs-installer.service.ts @@ -1,4 +1,3 @@ -/* eslint-disable prefer-promise-reject-errors */ import { BS_APP_ID, BS_DEPOT } from "../constants"; import path from "path"; import { BSVersion, PartialBSVersion } from 'shared/bs-version.interface'; @@ -10,57 +9,52 @@ import { ctrlc } from "ctrlc-windows"; import { BSLocalVersionService } from "./bs-local-version.service"; import isOnline from 'is-online'; import { WindowManagerService } from "./window-manager.service"; -import { copy, copySync } from "fs-extra"; -import { clean, satisfies } from "semver"; +import { copy } from "fs-extra"; import { ensureFolderExist, pathExist } from "../helpers/fs.helpers"; export class BSInstallerService{ - private static instance: BSInstallerService; + private static instance: BSInstallerService; - private readonly utils: UtilsService; - private readonly installLocationService: InstallationLocationService; - private readonly localVersionService: BSLocalVersionService; - private readonly windows: WindowManagerService; + private readonly utils: UtilsService; + private readonly installLocationService: InstallationLocationService; + private readonly localVersionService: BSLocalVersionService; + private readonly windows: WindowManagerService; - private downloadProcess: ChildProcessWithoutNullStreams; + private downloadProcess: ChildProcessWithoutNullStreams; - private constructor(){ - this.utils = UtilsService.getInstance(); - this.installLocationService = InstallationLocationService.getInstance(); - this.localVersionService = BSLocalVersionService.getInstance(); - this.windows = WindowManagerService.getInstance(); + private constructor(){ + this.utils = UtilsService.getInstance(); + this.installLocationService = InstallationLocationService.getInstance(); + this.localVersionService = BSLocalVersionService.getInstance(); + this.windows = WindowManagerService.getInstance(); - this.windows.getWindow("index.html")?.on("close", () => { - this.killDownloadProcess(); - }); - } + this.windows.getWindow("index.html")?.on("close", () => { + this.killDownloadProcess(); + }); + } - public static getInstance(){ - if(!BSInstallerService.instance){ BSInstallerService.instance = new BSInstallerService(); } - return BSInstallerService.instance; - } - - private escapeSpaces(path: string): string{ - return `\"${path}\"` + public static getInstance(){ + if(!BSInstallerService.instance){ BSInstallerService.instance = new BSInstallerService(); } + return BSInstallerService.instance; } private getDepotDownloaderExePath(): string{ - return this.escapeSpaces(path.join(this.utils.getAssetsScriptsPath(), 'depot-downloader', 'DepotDownloader.exe')); + return path.join(this.utils.getAssetsScriptsPath(), 'depot-downloader', 'DepotDownloader.exe'); } - private removeSpecialSchar(txt: string): string{ return txt.replaceAll(/\[|\]/g, ""); } + private removeSpecialSchar(txt: string): string{ return txt.replaceAll(/[\[\]]/g, ""); } private sendDownloadEvent(event: DownloadEventType, data?: string|number, success = true): void{ if(typeof data === "string"){ data = this.removeSpecialSchar(data); } this.utils.ipcSend(`bs-download.${event}`, { success, data }); } - public sendInputProcess(input: string){ - if(this.downloadProcess.stdin.writable){ - this.downloadProcess.stdin.write(`${input}\n`); + public sendInputProcess(input: string){ + if(this.downloadProcess.stdin.writable){ + this.downloadProcess.stdin.write(`${input}\n`); + } } - } public killDownloadProcess(): Promise{ return new Promise(resolve => { @@ -78,7 +72,7 @@ export class BSInstallerService{ public async isDotNet6Installed(): Promise{ try{ - const process = spawnSync(this.getDepotDownloaderExePath(), {shell: true}); + const process = spawnSync(`"${this.getDepotDownloaderExePath()}"`, {shell: true}); if(process.stderr.toString()){ log.error("no dotnet", process.stderr.toString()); return false; @@ -93,9 +87,9 @@ export class BSInstallerService{ public async downloadBsVersion(downloadInfos: DownloadInfo): Promise{ - // TODO : Can be a lot improved by using ipcV2 and Observable + // TODO : Can be a lot improved by using ipcV2 and Observable -- This will be reworked for qrCode login - if(this.downloadProcess && this.downloadProcess.connected){ throw "AlreadyDownloading"; } + if(this.downloadProcess?.connected){ throw "AlreadyDownloading"; } const {bsVersion} = downloadInfos; if(!bsVersion){ return {type: "[Error]"}; } if(!(await isOnline({timeout: 1500}))){ throw "no-internet"; } @@ -109,13 +103,13 @@ export class BSInstallerService{ const downloadVersion: BSVersion = {...downloadInfos.bsVersion, ...(path.basename(dest) !== downloadInfos.bsVersion.BSVersion && {name: path.basename(dest)})} this.downloadProcess = spawn( - this.getDepotDownloaderExePath(), + `"${this.getDepotDownloaderExePath()}"`, [ `-app ${BS_APP_ID}`, `-depot ${BS_DEPOT}`, `-manifest ${bsVersion.BSManifest}`, - `-username \"${downloadInfos.username}\"`, - `-dir \"${this.localVersionService.getVersionFolder(downloadVersion)}\"` + `-username "${downloadInfos.username}"`, + `-dir "${this.localVersionService.getVersionFolder(downloadVersion)}"` ], {shell: true, cwd: this.installLocationService.versionsDirectory} ); diff --git a/src/main/services/bs-launcher.service.ts b/src/main/services/bs-launcher.service.ts index 3e449686..dcd6a2a5 100644 --- a/src/main/services/bs-launcher.service.ts +++ b/src/main/services/bs-launcher.service.ts @@ -106,10 +106,10 @@ export class BSLauncherService{ } if(launchOptions.debug){ - this.bsProcess = spawn(`\"${exePath}\"`, launchArgs, {shell: true, cwd, env: {...process.env, "SteamAppId": BS_APP_ID}, detached: true, windowsVerbatimArguments: true }); + this.bsProcess = spawn(`"${exePath}"`, launchArgs, {shell: true, cwd, env: {...process.env, "SteamAppId": BS_APP_ID}, detached: true, windowsVerbatimArguments: true }); } else{ - this.bsProcess = spawn(`\"${exePath}\"`, launchArgs, {shell: true, cwd, env: {...process.env, "SteamAppId": BS_APP_ID} }); + this.bsProcess = spawn(`"${exePath}"`, launchArgs, {shell: true, cwd, env: {...process.env, "SteamAppId": BS_APP_ID} }); } this.bsProcess.on('error', err => log.error(err)); diff --git a/src/main/services/bs-version-lib.service.ts b/src/main/services/bs-version-lib.service.ts index 4c4fdd10..fb33ad30 100644 --- a/src/main/services/bs-version-lib.service.ts +++ b/src/main/services/bs-version-lib.service.ts @@ -52,16 +52,16 @@ export class BSVersionLibService{ ], {keepStructure: true}); let resVersions = localVersions; - if(remoteVersions && remoteVersions.length){ resVersions = remoteVersions; this.updateLocalVersions(resVersions); } + if(remoteVersions?.length){ resVersions = remoteVersions; this.updateLocalVersions(resVersions); } this.bsVersions = resVersions; return this.bsVersions; } - public async getAvailableVersions(): Promise{ - const bsVersions = await this.loadBsVersions(); - if(!bsVersions || !bsVersions.length){ return []; } - return bsVersions; - } + public async getAvailableVersions(): Promise{ + const bsVersions = await this.loadBsVersions(); + if(!bsVersions?.length){ return []; } + return bsVersions; + } public async getVersionDetails(version: string): Promise{ const versions = await this.getAvailableVersions(); diff --git a/src/main/services/ipc.service.ts b/src/main/services/ipc.service.ts index 4f239c5d..a741bc22 100644 --- a/src/main/services/ipc.service.ts +++ b/src/main/services/ipc.service.ts @@ -1,7 +1,7 @@ import { IpcRequest } from "shared/models/ipc"; import { ipcMain } from "electron"; import { Observable } from "rxjs"; -import { IpcChannel, IpcCompleteChannel, IpcErrorChannel } from "shared/models/ipc/ipc-response.interface"; +import { IpcCompleteChannel, IpcErrorChannel } from "shared/models/ipc/ipc-response.interface"; import { AppWindow } from "shared/models/window-manager/app-window.model"; import { WindowManagerService } from "./window-manager.service"; import { IpcReplier } from "shared/models/ipc/ipc-request.interface"; @@ -22,15 +22,15 @@ export class IpcService { this.windows = WindowManagerService.getInstance(); } - private getErrorChannel(channel: IpcChannel): IpcErrorChannel { + private getErrorChannel(channel: string): IpcErrorChannel { return `${channel}_error`; } - private getCompleteChannel(channel: IpcChannel): IpcCompleteChannel { + private getCompleteChannel(channel: string): IpcCompleteChannel { return `${channel}_complete`; } - private buildProxyListener(listener: (req: IpcRequest, replier: IpcReplier) => void) { + private buildProxyListener(listener: IpcListener) { return (event: Electron.IpcMainEvent, req: IpcRequest) => { const window = this.windows.getAppWindowFromWebContents(event.sender); @@ -40,11 +40,11 @@ export class IpcService { } - public send(channel: IpcChannel, window: AppWindow, response?: T|Error): void{ + public send(channel: string, window: AppWindow, response?: T|Error): void{ this.windows.getWindow(window)?.webContents?.send(channel, response); } - private connectStream(channel: IpcChannel, window: AppWindow, observable: Observable): void{ + private connectStream(channel: string, window: AppWindow, observable: Observable): void{ observable.subscribe(data => { this.send(channel, window, data); }, error => { @@ -55,12 +55,14 @@ export class IpcService { }); } - public on(channel: IpcChannel, listener: (req: IpcRequest, replier: IpcReplier) => void): void{ + public on(channel: string, listener: IpcListener): void{ ipcMain.on(channel, this.buildProxyListener(listener)); } - public once(channel: IpcChannel, listener: (req: IpcRequest, replier: IpcReplier) => void): void{ + public once(channel: string, listener: IpcListener): void{ ipcMain.once(channel, this.buildProxyListener(listener)); } -} \ No newline at end of file +} + +type IpcListener = (req: IpcRequest, replier: IpcReplier) => void|Promise; diff --git a/src/main/services/mods/bs-mods-manager.service.ts b/src/main/services/mods/bs-mods-manager.service.ts index e6650907..3557e4a3 100644 --- a/src/main/services/mods/bs-mods-manager.service.ts +++ b/src/main/services/mods/bs-mods-manager.service.ts @@ -269,7 +269,7 @@ export class BsModsManagerService { } public async installMods(mods: Mod[], version: BSVersion): Promise{ - if(!mods || !mods.length){ throw "no-mods"; } + if(!mods?.length){ throw "no-mods"; } const deps = await this.resolveDependencies(mods, version); mods.push(...deps); @@ -296,7 +296,7 @@ export class BsModsManagerService { } public async uninstallMods(mods: Mod[], version: BSVersion): Promise{ - if(!mods || !mods.length){ throw "no-mods"; } + if(!mods?.length){ throw "no-mods"; } this.nbModsToUninstall = mods.length; this.nbUninstalledMods = 0; @@ -314,7 +314,7 @@ export class BsModsManagerService { public async uninstallAllMods(version: BSVersion): Promise{ const mods = await this.getInstalledMods(version); - if(!mods || !mods.length){ throw "no-mods"; } + if(!mods?.length){ throw "no-mods"; } this.nbModsToUninstall = mods.length; this.nbUninstalledMods = 0; @@ -329,8 +329,6 @@ export class BsModsManagerService { await deleteFolder(path.join(versionPath, ModsInstallFolder.LIBS)); await deleteFolder(path.join(versionPath, ModsInstallFolder.IPA)); - path.resolve - return { nbModsToUninstall: this.nbModsToUninstall, nbUninstalledMods: this.nbUninstalledMods diff --git a/src/main/services/thrid-party/model-saber/model-saber.service.ts b/src/main/services/thrid-party/model-saber/model-saber.service.ts index f14eb452..267e678a 100644 --- a/src/main/services/thrid-party/model-saber/model-saber.service.ts +++ b/src/main/services/thrid-party/model-saber/model-saber.service.ts @@ -92,9 +92,9 @@ export class ModelSaberService { const res = await this.modelSaberApi.searchModel(query); if(res.status !== 200){ observer.error(res.status); } observer.next(Object.values(res.data).map(model => { - if(!model || !model.name){ return model; } - (model as MSModel).name = striptags(model.name); - (model as MSModel).author = striptags(model.author); + if(!model?.name){ return null; } + model.name = striptags(model.name); + model.author = striptags(model.author); return model; })); })().catch(e => observer.error(e)).then(() => observer.complete()); diff --git a/src/renderer/components/maps-mangement-components/maps-row.component.tsx b/src/renderer/components/maps-mangement-components/maps-row.component.tsx index 30ba64fe..62d94431 100644 --- a/src/renderer/components/maps-mangement-components/maps-row.component.tsx +++ b/src/renderer/components/maps-mangement-components/maps-row.component.tsx @@ -67,7 +67,7 @@ export const MapsRow = memo(({maps, style, selectedMaps$, onMapSelect, onMapDele return (
    - {maps && maps.map(renderMapItem)} + {maps?.map(renderMapItem)}
) }, equal); diff --git a/src/renderer/components/modal/modal-types/why-credentials-modal.component.tsx b/src/renderer/components/modal/modal-types/why-credentials-modal.component.tsx index 8b958ccd..f23bfdf4 100644 --- a/src/renderer/components/modal/modal-types/why-credentials-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/why-credentials-modal.component.tsx @@ -17,7 +17,7 @@ export const WhyCredentialsModal: ModalComponent = () => {

{t("modals.steam-credentials.p-1")}

{ /* eslint-disable-next-line jsx-a11y/anchor-is-valid */} - {e.preventDefault; openTutorial()}} className="underline text-blue-600 hover:text-blue-900 dark:text-blue-400 dark:hover:text-blue-600 mb-2 block cursor-pointer"> + {e.preventDefault(); openTutorial()}} className="underline text-blue-600 hover:text-blue-900 dark:text-blue-400 dark:hover:text-blue-600 mb-2 block cursor-pointer"> https://steamcommunity.com/sharedfiles/filedetails/?id=1805934840

{t("modals.steam-credentials.p-2")}

diff --git a/src/renderer/components/models-management/model-item.component.tsx b/src/renderer/components/models-management/model-item.component.tsx index c2f136df..83108509 100644 --- a/src/renderer/components/models-management/model-item.component.tsx +++ b/src/renderer/components/models-management/model-item.component.tsx @@ -138,7 +138,7 @@ function ModelItemElement(props: Props) { copyContent(`${props.hash}`, 'hash')}>{props.hash}
- {props.id && ( + {!!props.id && ( copyContent(`${props.id}`, 'id')}>{props.id} diff --git a/src/renderer/components/models-management/models-grid.component.tsx b/src/renderer/components/models-management/models-grid.component.tsx index fcf6eaca..bd674e4f 100644 --- a/src/renderer/components/models-management/models-grid.component.tsx +++ b/src/renderer/components/models-management/models-grid.component.tsx @@ -68,7 +68,7 @@ export const ModelsGrid = forwardRef(({className, version, type, search, active, useOnUpdate(() => { if(!active){ return; } - if(models && models.length){ return; } + if(models?.length){ return; } loadModels(); }, [active]); diff --git a/src/renderer/components/nav-bar/nav-bar.component.tsx b/src/renderer/components/nav-bar/nav-bar.component.tsx index f517cbc1..63e29739 100644 --- a/src/renderer/components/nav-bar/nav-bar.component.tsx +++ b/src/renderer/components/nav-bar/nav-bar.component.tsx @@ -28,7 +28,7 @@ export function NavBar() {
    - {installedVersions && installedVersions.map((version) => )} + {installedVersions?.map((version) => )}
diff --git a/src/renderer/components/shared/bsm-checkbox.component.tsx b/src/renderer/components/shared/bsm-checkbox.component.tsx index e08aa3a3..32b8dd06 100644 --- a/src/renderer/components/shared/bsm-checkbox.component.tsx +++ b/src/renderer/components/shared/bsm-checkbox.component.tsx @@ -15,7 +15,7 @@ export function BsmCheckbox({className, checked, onChange, disabled} : Props) { const handleClick = () => { if(disabled){ return; } - onChange && onChange(!checked); + onChange?.(!checked); } return ( diff --git a/src/renderer/components/shared/bsm-range.component.tsx b/src/renderer/components/shared/bsm-range.component.tsx index 48039d7c..9b48cdf1 100644 --- a/src/renderer/components/shared/bsm-range.component.tsx +++ b/src/renderer/components/shared/bsm-range.component.tsx @@ -56,7 +56,7 @@ export function BsmRange({colorType = "first-color", values, onChange, onFinalCh color: labelTextColor, }} > - {renderLabel && renderLabel(values[index])} + {renderLabel?.(values[index])}
)} /> diff --git a/src/renderer/components/shared/bsm-select.component.tsx b/src/renderer/components/shared/bsm-select.component.tsx index 623d4737..c73a5946 100644 --- a/src/renderer/components/shared/bsm-select.component.tsx +++ b/src/renderer/components/shared/bsm-select.component.tsx @@ -19,7 +19,7 @@ export function BsmSelect(props: Props) { return ( diff --git a/src/renderer/components/version-viewer/slides/mods/mods-grid.component.tsx b/src/renderer/components/version-viewer/slides/mods/mods-grid.component.tsx index 42f54c28..98ec3a1a 100644 --- a/src/renderer/components/version-viewer/slides/mods/mods-grid.component.tsx +++ b/src/renderer/components/version-viewer/slides/mods/mods-grid.component.tsx @@ -20,7 +20,7 @@ export function ModsGrid({modsMap, installed, modsSelected, onModChange, moreInf const t = useTranslation(); const installedModVersion = (key: string, mod: Mod): string => { - if(!installed || !installed.get(key)){ return undefined; } + if(!installed?.get(key)){ return undefined; } const installedMod = installed.get(key).find(m => m.name === mod.name); if(!installedMod){ return undefined } return installedMod.version diff --git a/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx b/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx index 7a9407db..9eeaea59 100644 --- a/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx +++ b/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx @@ -62,7 +62,7 @@ export function ModsSlide({version, onDisclamerDecline}: {version: BSVersion, on } const handleOpenMoreInfo = () => { - if(!moreInfoMod || !moreInfoMod.link){ return; } + if(!moreInfoMod?.link){ return; } linkOpener.open(moreInfoMod.link); } diff --git a/src/renderer/preload.d.ts b/src/renderer/preload.d.ts index bce2f371..215d2d2b 100644 --- a/src/renderer/preload.d.ts +++ b/src/renderer/preload.d.ts @@ -1,16 +1,14 @@ -import { IpcChannel } from "shared/models/ipc/ipc-response.interface"; - declare global { interface Window { electron: { ipcRenderer: { - sendMessage(channel: IpcChannel, args: any): void; + sendMessage(channel: string, args: any): void; on( - channel: IpcChannel, + channel: string, func: (...args: any) => void ): (() => void) | undefined; - once(channel: IpcChannel, func: (...args: any) => void): void; - removeAllListeners(channel: IpcChannel): void; + once(channel: string, func: (...args: any) => void): void; + removeAllListeners(channel: string): void; }; }; } diff --git a/src/renderer/services/bs-version-manager.service.ts b/src/renderer/services/bs-version-manager.service.ts index c779f768..46d02e2e 100644 --- a/src/renderer/services/bs-version-manager.service.ts +++ b/src/renderer/services/bs-version-manager.service.ts @@ -32,7 +32,7 @@ export class BSVersionManagerService { } public setInstalledVersions(versions: BSVersion[]){ - const sorted: BSVersion[] = versions.sort((a, b) => +b.ReleaseDate - +a.ReleaseDate) + const sorted: BSVersion[] = [...versions].sort((a, b) => +b.ReleaseDate - +a.ReleaseDate) const steamIndex = sorted.findIndex(v => v.steam); const oculusIndex = sorted.findIndex(v => v.oculus); if(steamIndex > 0){ diff --git a/src/renderer/services/i18n.service.ts b/src/renderer/services/i18n.service.ts index 2a81da97..ddf36626 100644 --- a/src/renderer/services/i18n.service.ts +++ b/src/renderer/services/i18n.service.ts @@ -51,15 +51,15 @@ export class I18nService { this.configService.set("language" as DefaultConfigKey, this.getSupportedLanguages().includes(lang) ? lang : this.LANG_FALLBACK); } - public translate(translationKey: string, args?: Record): string{ - let translated = this.cache.get(translationKey); - if(!translated){ - translated = getProperty(this.dictionary, translationKey); - translated ? this.cache.set(translated, translationKey) : translated = translationKey; - } - args && Object.keys(args).forEach(key => {translated = translated.replaceAll(`{${key}}`, args[key])}); - return translated; - } + public translate(translationKey: string, args?: Record): string{ + let translated = this.cache.get(translationKey); + if(!translated){ + translated = getProperty(this.dictionary, translationKey) ?? translationKey; + this.cache.set(translationKey, translated); + } + args && Object.keys(args).forEach(key => {translated = translated.replaceAll(`{${key}}`, args[key])}); + return translated; + } diff --git a/src/renderer/services/progress-bar.service.ts b/src/renderer/services/progress-bar.service.ts index 36fecb2a..9c23fb31 100644 --- a/src/renderer/services/progress-bar.service.ts +++ b/src/renderer/services/progress-bar.service.ts @@ -48,7 +48,7 @@ export class ProgressBarService{ public unsubscribe(){ this._progression$.next({progression: 0}); - this.subscription && this.subscription.unsubscribe(); + this.subscription?.unsubscribe(); this.subscription = null; } diff --git a/src/shared/models/ipc/ipc-response.interface.ts b/src/shared/models/ipc/ipc-response.interface.ts index e9a3b175..a60a3c8c 100644 --- a/src/shared/models/ipc/ipc-response.interface.ts +++ b/src/shared/models/ipc/ipc-response.interface.ts @@ -6,6 +6,5 @@ export interface IpcResponse{ success: boolean, } -export type IpcChannel = string; -export type IpcErrorChannel = IpcChannel & `${string}_error`; -export type IpcCompleteChannel = IpcChannel & `${string}_complete`; \ No newline at end of file +export type IpcErrorChannel = string & `${string}_error`; +export type IpcCompleteChannel = string & `${string}_complete`; \ No newline at end of file diff --git a/src/shared/models/models/model-saber.model.ts b/src/shared/models/models/model-saber.model.ts index 69b167ff..ced15398 100644 --- a/src/shared/models/models/model-saber.model.ts +++ b/src/shared/models/models/model-saber.model.ts @@ -12,13 +12,11 @@ export interface MSModel { discord?: string, variationid?: number, platform: MSModelPlatform, - download: ModelDownloadURL, + download: string, install_link: string, date: string } -export type ModelDownloadURL = string; - export enum MSModelType { Avatar = "avatar", Saber = "saber",