From 0d7c160b24233ad02313649c3ebb05b255c298cc Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 02:22:58 +0100 Subject: [PATCH 01/78] Adding JSON changelog --- assets/jsons/changelogs/de.json | 7 +++++++ assets/jsons/changelogs/en.json | 7 +++++++ assets/jsons/changelogs/es.json | 7 +++++++ assets/jsons/changelogs/fr.json | 7 +++++++ assets/jsons/changelogs/ru.json | 7 +++++++ 5 files changed, 35 insertions(+) create mode 100644 assets/jsons/changelogs/de.json create mode 100644 assets/jsons/changelogs/en.json create mode 100644 assets/jsons/changelogs/es.json create mode 100644 assets/jsons/changelogs/fr.json create mode 100644 assets/jsons/changelogs/ru.json diff --git a/assets/jsons/changelogs/de.json b/assets/jsons/changelogs/de.json new file mode 100644 index 00000000..d5412969 --- /dev/null +++ b/assets/jsons/changelogs/de.json @@ -0,0 +1,7 @@ +{ + "1.0.0": { + "title": "Erste Veröffentlichung", + "htmlBody": "

Erste Veröffentlichung der App.

", + "timestampPublished" : "1700788913" + } +} diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs/en.json new file mode 100644 index 00000000..7971aa2f --- /dev/null +++ b/assets/jsons/changelogs/en.json @@ -0,0 +1,7 @@ +{ + "1.0.0" : { + "title" : "First Release", + "htmlBody" : "

First release of the app.

", + "timestampPublished" : "1700788913" + } +} diff --git a/assets/jsons/changelogs/es.json b/assets/jsons/changelogs/es.json new file mode 100644 index 00000000..ef23afde --- /dev/null +++ b/assets/jsons/changelogs/es.json @@ -0,0 +1,7 @@ +{ + "1.0.0": { + "title": "Primera Lanzamiento", + "htmlBody": "

Primera lanzamiento de la aplicación.

", + "timestampPublished" : "1700788913" + } +} diff --git a/assets/jsons/changelogs/fr.json b/assets/jsons/changelogs/fr.json new file mode 100644 index 00000000..9c2f7a27 --- /dev/null +++ b/assets/jsons/changelogs/fr.json @@ -0,0 +1,7 @@ +{ + "1.0.0": { + "title": "Première Version", + "htmlBody": "

Première version de l'application.

", + "timestampPublished" : "1700788913" + } +} diff --git a/assets/jsons/changelogs/ru.json b/assets/jsons/changelogs/ru.json new file mode 100644 index 00000000..f7f05149 --- /dev/null +++ b/assets/jsons/changelogs/ru.json @@ -0,0 +1,7 @@ +{ + "1.0.0": { + "title": "Первый Релиз", + "htmlBody": "

Первый релиз приложения.

", + "timestampPublished" : "1700788913" + } +} From 8c9846d75181e78af49a333375f97dd47c034d09 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 02:46:34 +0100 Subject: [PATCH 02/78] Add ConfigurationService and methods for getting and setting haveBeenUpdated flag --- src/main/services/auto-updater.service.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/services/auto-updater.service.ts b/src/main/services/auto-updater.service.ts index 667e26cf..8dec8d84 100644 --- a/src/main/services/auto-updater.service.ts +++ b/src/main/services/auto-updater.service.ts @@ -2,12 +2,18 @@ import { autoUpdater } from "electron-updater"; import log from "electron-log"; import { UtilsService } from "./utils.service"; import { gt } from "semver"; +import { Observable } from "rxjs"; +import { ConfigurationService } from "./configuration.service"; export class AutoUpdaterService { private static instance: AutoUpdaterService; private readonly utilsService: UtilsService; + private readonly ConfigurationService: ConfigurationService + + private readonly HAVE_BEEN_UPDATED_KEY : string; + public static getInstance(): AutoUpdaterService { if (!AutoUpdaterService.instance) { AutoUpdaterService.instance = new AutoUpdaterService(); @@ -20,6 +26,8 @@ export class AutoUpdaterService { autoUpdater.autoDownload = false; this.utilsService = UtilsService.getInstance(); + this.ConfigurationService = ConfigurationService.getInstance(); + this.HAVE_BEEN_UPDATED_KEY = "haveBeenUpdated"; } public isUpdateAvailable(): Promise { @@ -51,4 +59,19 @@ export class AutoUpdaterService { public quitAndInstall() { autoUpdater.quitAndInstall(); } + + + public getHaveBeenUpdated(): Observable { + const haveBeenUpdated = this.ConfigurationService.get(this.HAVE_BEEN_UPDATED_KEY); + return new Observable((observer) => { + observer.next(haveBeenUpdated as boolean); + observer.complete(); + }); + } + + public setHaveBeenUpdated(value: boolean): void { + this.ConfigurationService.set(this.HAVE_BEEN_UPDATED_KEY, value); + } + + } From 34c0ad03d3196694d7c191e6bd8c0f5365a8a50d Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 02:53:36 +0100 Subject: [PATCH 03/78] Add ipc "have-been-updated" --- src/main/ipcs/bs-launcher-ipcs.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/ipcs/bs-launcher-ipcs.ts b/src/main/ipcs/bs-launcher-ipcs.ts index bdd0692a..203cffd3 100644 --- a/src/main/ipcs/bs-launcher-ipcs.ts +++ b/src/main/ipcs/bs-launcher-ipcs.ts @@ -2,9 +2,10 @@ import { LaunchOption } from "shared/models/bs-launch"; import { BSLauncherService } from "../services/bs-launcher/bs-launcher.service" import { IpcService } from '../services/ipc.service'; -import { from } from "rxjs"; +import { from, of } from "rxjs"; import { SteamLauncherService } from "../services/bs-launcher/steam-launcher.service"; import { OculusLauncherService } from "../services/bs-launcher/oculus-launcher.service"; +import { AutoUpdaterService } from "../services/auto-updater.service"; const ipc = IpcService.getInstance(); @@ -29,4 +30,11 @@ ipc.on("restore-original-oculus-folder", (_, reply) => { reply(from( oculusLauncher.deleteBsSymlinks().then(() => oculusLauncher.restoreOriginalBeatSaber()) )); -}) \ No newline at end of file +}); + +ipc.on("have-been-updated", (_, reply) => { + const updaterService = AutoUpdaterService.getInstance(); + reply(of(updaterService.getHaveBeenUpdated())); +}); + + From 6c3a241481c53c09ca47f571d10f6377ec276baa Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 02:59:08 +0100 Subject: [PATCH 04/78] Update "haveBeenUpdated" when update is available --- src/main/services/auto-updater.service.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/services/auto-updater.service.ts b/src/main/services/auto-updater.service.ts index 8dec8d84..8e2fb5df 100644 --- a/src/main/services/auto-updater.service.ts +++ b/src/main/services/auto-updater.service.ts @@ -39,6 +39,7 @@ export class AutoUpdaterService { if (!info?.updateInfo) { return false; } + this.setHaveBeenUpdated(true); return gt(info.updateInfo.version, autoUpdater.currentVersion.version); })(); resolve(needUpdate); From 385c403beede6a941911a000d6ab21f422ceed4e Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 03:03:38 +0100 Subject: [PATCH 05/78] Update "havebeenupdated" when close index.html --- src/main/ipcs/window-manager-ipcs.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/ipcs/window-manager-ipcs.ts b/src/main/ipcs/window-manager-ipcs.ts index 94b54e6e..d71eef5b 100644 --- a/src/main/ipcs/window-manager-ipcs.ts +++ b/src/main/ipcs/window-manager-ipcs.ts @@ -3,11 +3,16 @@ import { AppWindow } from "shared/models/window-manager/app-window.model"; import { IpcService } from "../services/ipc.service"; import { from } from "rxjs"; import { BrowserWindow, ipcMain } from "electron"; +import { AutoUpdaterService } from "../services/auto-updater.service"; const ipc = IpcService.getInstance(); +const autoUpdaterService = AutoUpdaterService.getInstance(); // Native windows control, do not pass through IPC service ipcMain.on("close-window", async (event) => { + if (event.sender.getURL().includes("index.html")) { + autoUpdaterService.setHaveBeenUpdated(false); + } BrowserWindow.fromWebContents(event.sender)?.close(); }); From 00bf26081bbb1f7922235c1655b605e65f63531c Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 03:06:22 +0100 Subject: [PATCH 06/78] move Update "haveBeenUpdated" when update is available --- src/main/ipcs/launcher-ipcs.ts | 5 ++++- src/main/services/auto-updater.service.ts | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/ipcs/launcher-ipcs.ts b/src/main/ipcs/launcher-ipcs.ts index 20473765..e309370f 100644 --- a/src/main/ipcs/launcher-ipcs.ts +++ b/src/main/ipcs/launcher-ipcs.ts @@ -13,7 +13,10 @@ ipcMain.on("download-update", async (event, request: IpcRequest) => { updaterService .downloadUpdate() - .then(res => utilsService.ipcSend(request.responceChannel, { success: res })) + .then(res => { + utilsService.ipcSend(request.responceChannel, { success: res }); + updaterService.setHaveBeenUpdated(true); + }) .catch(() => utilsService.ipcSend(request.responceChannel, { success: false })); }); diff --git a/src/main/services/auto-updater.service.ts b/src/main/services/auto-updater.service.ts index 8e2fb5df..8dec8d84 100644 --- a/src/main/services/auto-updater.service.ts +++ b/src/main/services/auto-updater.service.ts @@ -39,7 +39,6 @@ export class AutoUpdaterService { if (!info?.updateInfo) { return false; } - this.setHaveBeenUpdated(true); return gt(info.updateInfo.version, autoUpdater.currentVersion.version); })(); resolve(needUpdate); From cb0faad4182a785851c815db70ae7daca93b3ced Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 04:22:57 +0100 Subject: [PATCH 07/78] Fix reply type in bs-launcher-ipcs.ts --- src/main/ipcs/bs-launcher-ipcs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/ipcs/bs-launcher-ipcs.ts b/src/main/ipcs/bs-launcher-ipcs.ts index 203cffd3..d60ba476 100644 --- a/src/main/ipcs/bs-launcher-ipcs.ts +++ b/src/main/ipcs/bs-launcher-ipcs.ts @@ -34,7 +34,7 @@ ipc.on("restore-original-oculus-folder", (_, reply) => { ipc.on("have-been-updated", (_, reply) => { const updaterService = AutoUpdaterService.getInstance(); - reply(of(updaterService.getHaveBeenUpdated())); + reply(from(updaterService.getHaveBeenUpdated())); }); From ba51e766911350de4b6988c8c83787d6b12a0afe Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 04:23:39 +0100 Subject: [PATCH 08/78] add getHaveBeenUpdated method --- src/renderer/services/auto-updater.service.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 7c92dcb1..d9ae43fe 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -35,11 +35,14 @@ export class AutoUpdaterService { }); this.progressService.show(this.downloadProgress$, true); - return promise; } public quitAndInstall() { this.ipcService.sendLazy("install-update"); } + + public getHaveBeenUpdated(): Observable{ + return this.ipcService.sendV2("have-been-updated"); + } } From 8963c08e642eb22484c611d80ce352d98769387b Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 06:04:17 +0100 Subject: [PATCH 09/78] Add data test --- assets/jsons/changelogs/en.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs/en.json index 7971aa2f..3549ce3e 100644 --- a/assets/jsons/changelogs/en.json +++ b/assets/jsons/changelogs/en.json @@ -1,4 +1,9 @@ { + "27.0.0" : { + "title" : "Second Release", + "htmlBody" : "

Second release of the app.

", + "timestampPublished" : "1700788913" + }, "1.0.0" : { "title" : "First Release", "htmlBody" : "

First release of the app.

", From 76c863608e8c2ef0fb4d34610007aeeb6d42b7ab Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 06:46:08 +0100 Subject: [PATCH 10/78] Update version numbers in changelog --- assets/jsons/changelogs/en.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs/en.json index 3549ce3e..fce54e43 100644 --- a/assets/jsons/changelogs/en.json +++ b/assets/jsons/changelogs/en.json @@ -2,11 +2,13 @@ "27.0.0" : { "title" : "Second Release", "htmlBody" : "

Second release of the app.

", - "timestampPublished" : "1700788913" + "timestampPublished" : "1700788913", + "version" : "27.0.0" }, "1.0.0" : { "title" : "First Release", "htmlBody" : "

First release of the app.

", - "timestampPublished" : "1700788913" + "timestampPublished" : "1700788913", + "version" : "1.0.0" } } From 4a0848fb41f7493e7f54656af177dc1bd4145524 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 06:59:35 +0100 Subject: [PATCH 11/78] Add AutoUpdaterService and show changelog --- src/renderer/windows/App.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 3c70c7fa..003c4822 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -18,10 +18,11 @@ import { MapsManagerService } from "renderer/services/maps-manager.service"; import { PlaylistsManagerService } from "renderer/services/playlists-manager.service"; import { ModelsManagerService } from "renderer/services/models-management/models-manager.service"; import { NotificationService } from "renderer/services/notification.service"; -import { timer } from "rxjs"; +import { lastValueFrom, timer } from "rxjs"; 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"; export default function App() { useService(OsDiagnosticService); @@ -31,11 +32,15 @@ export default function App() { const models = useService(ModelsManagerService); const notification = useService(NotificationService); const config = useService(ConfigurationService); + const autoUpdater = useService(AutoUpdaterService); + const location = useLocation(); const navigate = useNavigate(); useEffect(() => { + + autoUpdater.showChangelog(); checkOneClicks(); }, []); From ae2cf08c7df6c670b543f58c595a0f3021220c25 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 06:59:44 +0100 Subject: [PATCH 12/78] Add changelog functionality to AutoUpdaterService --- src/renderer/services/auto-updater.service.ts | 70 ++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index d9ae43fe..883906fe 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -1,8 +1,22 @@ -import { Observable, lastValueFrom } from "rxjs"; +import { BehaviorSubject, Observable, lastValueFrom } from "rxjs"; import { map } from "rxjs/operators"; import { IpcService } from "./ipc.service"; import { ProgressBarService } from "./progress-bar.service"; +import { I18nService } from "./i18n.service"; +import { ModalService } from "renderer/services/modale.service"; +import { ChangelogModal } from "renderer/components/modal/modal-types/changelog-modal.component"; +import { error } from "console"; + +export interface Changelog { + [version: string]: ChangelogVersion; +} +export interface ChangelogVersion { + htmlBody: string; + title: string; + timestampPublished: number; + version: string; +} export class AutoUpdaterService { private static instance: AutoUpdaterService; @@ -11,6 +25,12 @@ export class AutoUpdaterService { private downloadProgress$: Observable; + private i18nService: I18nService; + + private modal: ModalService; + + private readonly changelog: BehaviorSubject; + public static getInstance(): AutoUpdaterService { if (!AutoUpdaterService.instance) { AutoUpdaterService.instance = new AutoUpdaterService(); @@ -21,7 +41,10 @@ export class AutoUpdaterService { private constructor() { this.progressService = ProgressBarService.getInstance(); this.ipcService = IpcService.getInstance(); + this.i18nService = I18nService.getInstance(); + this.modal = ModalService.getInstance(); + //this.getChangelog().then(changelog => {this.changelog.next(changelog);}); this.downloadProgress$ = this.ipcService.watch("update-download-progress").pipe(map(res => (res.success ? res.data : 0))); } @@ -45,4 +68,49 @@ export class AutoUpdaterService { public getHaveBeenUpdated(): Observable{ return this.ipcService.sendV2("have-been-updated"); } + + private async getChangelog(): Promise { + const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs/${this.i18nService.currentLanguage.split("-")[0]}.json` + const response = await fetch(path); + if (!response.ok) { + return undefined; + } + + const data = await response.json(); + if (!data) { + return undefined; + } + return data; + } + + private async getChangelogVersion(version:string): Promise { + const changelogs = await this.getChangelog(); + if (!changelogs) { + throw new Error("No changelog found"); + } + + const changelogVersion = changelogs[version]; + if (!changelogVersion) { + throw new Error("No changelog found for this version"); + } + + + return changelogVersion; + } + + public getAppVersion() : Observable { + return this.ipcService.sendV2("current-version"); + } + + public async showChangelog(): Promise{ + try{ + const currentVersion = await lastValueFrom(this.getAppVersion()); + const changelog = await this.getChangelogVersion(currentVersion); + + this.modal.openModal(ChangelogModal, changelog); + } + catch(error){ + this.ipcService.sendLazy("log-error", {args: error}); + } + } } From aaf75278d0d24b838f86ad2cf59e307cd4d73321 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 24 Nov 2023 06:59:55 +0100 Subject: [PATCH 13/78] Add ChangelogModal component (WIP) --- .../modal-types/changelog-modal.component.tsx | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/renderer/components/modal/modal-types/changelog-modal.component.tsx diff --git a/src/renderer/components/modal/modal-types/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/changelog-modal.component.tsx new file mode 100644 index 00000000..a93e8344 --- /dev/null +++ b/src/renderer/components/modal/modal-types/changelog-modal.component.tsx @@ -0,0 +1,40 @@ +import { BsmButton } from "renderer/components/shared/bsm-button.component"; +import { BsmImage } from "renderer/components/shared/bsm-image.component"; +import { useTranslation } from "renderer/hooks/use-translation.hook"; +import { Changelog, ChangelogVersion } from "renderer/services/auto-updater.service"; +import { LinkOpenerService } from "renderer/services/link-opener.service"; +import { ModalComponent } from "renderer/services/modale.service"; +import BeatRunning from "../../../../../assets/images/apngs/beat-running.png"; +import { data } from "autoprefixer"; + +export const ChangelogModal: ModalComponent = ({ resolver, data: changelog }) => { + + console.log(changelog) + const linkOpener: LinkOpenerService = LinkOpenerService.getInstance(); + const openGithub = () => linkOpener.open("https://github.com/Zagrios/bs-manager"); + const openTwitter = () => linkOpener.open("https://twitter.com/BSManager_"); + const openSupportPage = () => linkOpener.open("https://www.patreon.com/bsmanager"); + const openDiscord = () => linkOpener.open("https://discord.gg/uSqbHVpKdV"); + const formattedTimestamp = changelog?.timestampPublished ? new Date(changelog.timestampPublished * 1000).toLocaleDateString() : ''; + + return ( +
+

{changelog?.title}

+ +
+
+
+ +
+ {formattedTimestamp} + {changelog?.version} +
+
+ + + + +
+ + ) + } From 9c440a043032a82cd7d5a73869320ecd43aeb4d6 Mon Sep 17 00:00:00 2001 From: GaetanGrd <40648115+GaetanGrd@users.noreply.github.com> Date: Fri, 24 Nov 2023 10:48:54 +0100 Subject: [PATCH 14/78] Update changelog for version 27.0.0 --- assets/jsons/changelogs/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs/en.json index fce54e43..08f09ca9 100644 --- a/assets/jsons/changelogs/en.json +++ b/assets/jsons/changelogs/en.json @@ -1,7 +1,7 @@ { "27.0.0" : { "title" : "Second Release", - "htmlBody" : "

Second release of the app.

", + "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add \"no-yeet\" argument when launching Beat Saber to prevent mods to be removed if \"UserData\" is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from \"Documents\" to the \"User\" directory to avoid OneDrive conflicts #319
", "timestampPublished" : "1700788913", "version" : "27.0.0" }, From 9872fcb856be2fc9374333b6dfb7aaee1aeea9d2 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 00:09:32 +0100 Subject: [PATCH 15/78] Update changelog to version 27.1.3 --- assets/jsons/changelogs/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs/en.json index 08f09ca9..ae627c9c 100644 --- a/assets/jsons/changelogs/en.json +++ b/assets/jsons/changelogs/en.json @@ -1,5 +1,5 @@ { - "27.0.0" : { + "27.1.3" : { "title" : "Second Release", "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add \"no-yeet\" argument when launching Beat Saber to prevent mods to be removed if \"UserData\" is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from \"Documents\" to the \"User\" directory to avoid OneDrive conflicts #319
", "timestampPublished" : "1700788913", From d243475bf80c9631051e89bba9f1a87e1a4e9cd1 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 00:47:59 +0100 Subject: [PATCH 16/78] Add dompurify library to package.json and package-lock.json --- package-lock.json | 11 +++++++++++ package.json | 1 + 2 files changed, 12 insertions(+) diff --git a/package-lock.json b/package-lock.json index 88acdeb7..be28d921 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "archiver": "^6.0.1", "color": "^4.2.3", "dateformat": "^5.0.3", + "dompurify": "^3.0.6", "dot-prop": "^8.0.2", "electron-debug": "^3.2.0", "electron-log": "^4.4.8", @@ -6627,6 +6628,11 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", + "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" + }, "node_modules/domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", @@ -24248,6 +24254,11 @@ "domelementtype": "^2.2.0" } }, + "dompurify": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", + "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" + }, "domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", diff --git a/package.json b/package.json index 6e1b815a..a84bda07 100644 --- a/package.json +++ b/package.json @@ -239,6 +239,7 @@ "archiver": "^6.0.1", "color": "^4.2.3", "dateformat": "^5.0.3", + "dompurify": "^3.0.6", "dot-prop": "^8.0.2", "electron-debug": "^3.2.0", "electron-log": "^4.4.8", From 214ffc243d24cd15410bc77a057bb30d10de39b3 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 00:48:08 +0100 Subject: [PATCH 17/78] Update package-lock.json version to 1.4.2 --- release/app/package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/app/package-lock.json b/release/app/package-lock.json index 2ae5ec12..a784f062 100644 --- a/release/app/package-lock.json +++ b/release/app/package-lock.json @@ -1,12 +1,12 @@ { "name": "bs-manager", - "version": "1.4.1", + "version": "1.4.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "bs-manager", - "version": "1.4.1", + "version": "1.4.2", "hasInstallScript": true, "license": "MIT", "dependencies": { From ec0d2fb8c61640d801e8735b3f4f454842bb3798 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 00:48:21 +0100 Subject: [PATCH 18/78] Add Changelog Modal component and fix import path in AutoUpdaterService --- .../changelog-modal.component.css | 4 +++ .../changelog-modal.component.tsx | 25 +++++++++---------- src/renderer/services/auto-updater.service.ts | 6 ++--- 3 files changed, 19 insertions(+), 16 deletions(-) create mode 100644 src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.css rename src/renderer/components/modal/modal-types/{ => chabgelog-modal}/changelog-modal.component.tsx (59%) diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.css b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.css new file mode 100644 index 00000000..e263d0ef --- /dev/null +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.css @@ -0,0 +1,4 @@ + +.content * { + all: revert; +} diff --git a/src/renderer/components/modal/modal-types/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx similarity index 59% rename from src/renderer/components/modal/modal-types/changelog-modal.component.tsx rename to src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx index a93e8344..b526d1e9 100644 --- a/src/renderer/components/modal/modal-types/changelog-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx @@ -1,15 +1,14 @@ import { BsmButton } from "renderer/components/shared/bsm-button.component"; import { BsmImage } from "renderer/components/shared/bsm-image.component"; -import { useTranslation } from "renderer/hooks/use-translation.hook"; -import { Changelog, ChangelogVersion } from "renderer/services/auto-updater.service"; +import { ChangelogVersion } from "renderer/services/auto-updater.service"; import { LinkOpenerService } from "renderer/services/link-opener.service"; import { ModalComponent } from "renderer/services/modale.service"; -import BeatRunning from "../../../../../assets/images/apngs/beat-running.png"; -import { data } from "autoprefixer"; +import BeatRunning from "../../../../../../assets/images/apngs/beat-running.png"; +import DOMPurify from 'dompurify'; +import './changelog-modal.component.css'; export const ChangelogModal: ModalComponent = ({ resolver, data: changelog }) => { - console.log(changelog) const linkOpener: LinkOpenerService = LinkOpenerService.getInstance(); const openGithub = () => linkOpener.open("https://github.com/Zagrios/bs-manager"); const openTwitter = () => linkOpener.open("https://twitter.com/BSManager_"); @@ -22,19 +21,19 @@ export const ChangelogModal: ModalComponent = ({ resolve

{changelog?.title}

-
+
- +
{formattedTimestamp} {changelog?.version}
-
- - - - -
+
+ + + + +
) } diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 883906fe..042424fb 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -4,7 +4,7 @@ import { IpcService } from "./ipc.service"; import { ProgressBarService } from "./progress-bar.service"; import { I18nService } from "./i18n.service"; import { ModalService } from "renderer/services/modale.service"; -import { ChangelogModal } from "renderer/components/modal/modal-types/changelog-modal.component"; +import { ChangelogModal } from "renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component"; import { error } from "console"; @@ -86,12 +86,12 @@ export class AutoUpdaterService { private async getChangelogVersion(version:string): Promise { const changelogs = await this.getChangelog(); if (!changelogs) { - throw new Error("No changelog found"); + throw new Error(`No changelogs found`); } const changelogVersion = changelogs[version]; if (!changelogVersion) { - throw new Error("No changelog found for this version"); + throw new Error(`No changelog found for this version (${version})`); } From 7e9b8ec86dd85e7f1a2e6fdd1dbd5a137526826b Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 00:57:01 +0100 Subject: [PATCH 19/78] Add @types/dompurify package --- package-lock.json | 31 +++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 32 insertions(+) diff --git a/package-lock.json b/package-lock.json index be28d921..7a715239 100644 --- a/package-lock.json +++ b/package-lock.json @@ -62,6 +62,7 @@ "@types/archiver": "^5.3.1", "@types/color": "^3.0.3", "@types/dateformat": "^5.0.0", + "@types/dompurify": "^3.0.5", "@types/jest": "^27.5.2", "@types/node": "17.0.23", "@types/node-fetch": "^2.6.3", @@ -2540,6 +2541,15 @@ "@types/ms": "*" } }, + "node_modules/@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "dev": true, + "dependencies": { + "@types/trusted-types": "*" + } + }, "node_modules/@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -2965,6 +2975,12 @@ "@types/node": "*" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true + }, "node_modules/@types/use-double-click": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/use-double-click/-/use-double-click-1.0.1.tgz", @@ -21083,6 +21099,15 @@ "@types/ms": "*" } }, + "@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "dev": true, + "requires": { + "@types/trusted-types": "*" + } + }, "@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -21512,6 +21537,12 @@ "@types/node": "*" } }, + "@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true + }, "@types/use-double-click": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/use-double-click/-/use-double-click-1.0.1.tgz", diff --git a/package.json b/package.json index a84bda07..1187b218 100644 --- a/package.json +++ b/package.json @@ -156,6 +156,7 @@ "@types/archiver": "^5.3.1", "@types/color": "^3.0.3", "@types/dateformat": "^5.0.0", + "@types/dompurify": "^3.0.5", "@types/jest": "^27.5.2", "@types/node": "17.0.23", "@types/node-fetch": "^2.6.3", From 1dde1b89160cff49e715dee7b4370636ac17424a Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 00:58:24 +0100 Subject: [PATCH 20/78] Remove unused import and commented code in AutoUpdaterService --- src/renderer/services/auto-updater.service.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 042424fb..2ca51119 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -5,8 +5,6 @@ import { ProgressBarService } from "./progress-bar.service"; import { I18nService } from "./i18n.service"; import { ModalService } from "renderer/services/modale.service"; import { ChangelogModal } from "renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component"; -import { error } from "console"; - export interface Changelog { [version: string]: ChangelogVersion; @@ -44,7 +42,7 @@ export class AutoUpdaterService { this.i18nService = I18nService.getInstance(); this.modal = ModalService.getInstance(); - //this.getChangelog().then(changelog => {this.changelog.next(changelog);}); + this.downloadProgress$ = this.ipcService.watch("update-download-progress").pipe(map(res => (res.success ? res.data : 0))); } From b2c13386506bedb5e8ffe026c5b289c7c97cad1e Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 01:27:29 +0100 Subject: [PATCH 21/78] Refactor AutoUpdaterService and remove unused code --- src/main/ipcs/bs-launcher-ipcs.ts | 5 ----- src/main/services/auto-updater.service.ts | 15 ------------- src/renderer/services/auto-updater.service.ts | 21 +++++++++++++------ 3 files changed, 15 insertions(+), 26 deletions(-) diff --git a/src/main/ipcs/bs-launcher-ipcs.ts b/src/main/ipcs/bs-launcher-ipcs.ts index d60ba476..eee40cce 100644 --- a/src/main/ipcs/bs-launcher-ipcs.ts +++ b/src/main/ipcs/bs-launcher-ipcs.ts @@ -32,9 +32,4 @@ ipc.on("restore-original-oculus-folder", (_, reply) => { )); }); -ipc.on("have-been-updated", (_, reply) => { - const updaterService = AutoUpdaterService.getInstance(); - reply(from(updaterService.getHaveBeenUpdated())); -}); - diff --git a/src/main/services/auto-updater.service.ts b/src/main/services/auto-updater.service.ts index 8dec8d84..b54448eb 100644 --- a/src/main/services/auto-updater.service.ts +++ b/src/main/services/auto-updater.service.ts @@ -59,19 +59,4 @@ export class AutoUpdaterService { public quitAndInstall() { autoUpdater.quitAndInstall(); } - - - public getHaveBeenUpdated(): Observable { - const haveBeenUpdated = this.ConfigurationService.get(this.HAVE_BEEN_UPDATED_KEY); - return new Observable((observer) => { - observer.next(haveBeenUpdated as boolean); - observer.complete(); - }); - } - - public setHaveBeenUpdated(value: boolean): void { - this.ConfigurationService.set(this.HAVE_BEEN_UPDATED_KEY, value); - } - - } diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 2ca51119..9d57b367 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -5,6 +5,7 @@ import { ProgressBarService } from "./progress-bar.service"; import { I18nService } from "./i18n.service"; import { ModalService } from "renderer/services/modale.service"; import { ChangelogModal } from "renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component"; +import { ConfigurationService } from "./configuration.service"; export interface Changelog { [version: string]: ChangelogVersion; @@ -27,7 +28,7 @@ export class AutoUpdaterService { private modal: ModalService; - private readonly changelog: BehaviorSubject; + private configurationService: ConfigurationService; public static getInstance(): AutoUpdaterService { if (!AutoUpdaterService.instance) { @@ -41,6 +42,7 @@ export class AutoUpdaterService { this.ipcService = IpcService.getInstance(); this.i18nService = I18nService.getInstance(); this.modal = ModalService.getInstance(); + this.configurationService = ConfigurationService.getInstance(); this.downloadProgress$ = this.ipcService.watch("update-download-progress").pipe(map(res => (res.success ? res.data : 0))); @@ -63,10 +65,15 @@ export class AutoUpdaterService { this.ipcService.sendLazy("install-update"); } - public getHaveBeenUpdated(): Observable{ - return this.ipcService.sendV2("have-been-updated"); + public getHaveBeenUpdated(): boolean { + return this.configurationService.get("have-been-updated"); } + public setHaveBeenUpdated(value: boolean){ + this.configurationService.set("have-been-updated", value); + } + + private async getChangelog(): Promise { const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs/${this.i18nService.currentLanguage.split("-")[0]}.json` const response = await fetch(path); @@ -102,10 +109,12 @@ export class AutoUpdaterService { public async showChangelog(): Promise{ try{ - const currentVersion = await lastValueFrom(this.getAppVersion()); - const changelog = await this.getChangelogVersion(currentVersion); + if(this.getHaveBeenUpdated()){ + const currentVersion = await lastValueFrom(this.getAppVersion()); + const changelog = await this.getChangelogVersion(currentVersion); - this.modal.openModal(ChangelogModal, changelog); + this.modal.openModal(ChangelogModal, changelog); + } } catch(error){ this.ipcService.sendLazy("log-error", {args: error}); From 57157b4553311b0f8633467525b27aa38b82f134 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 01:27:57 +0100 Subject: [PATCH 22/78] Remove unnecessary blank lines --- src/renderer/services/auto-updater.service.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 9d57b367..f9e42dd0 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -73,7 +73,6 @@ export class AutoUpdaterService { this.configurationService.set("have-been-updated", value); } - private async getChangelog(): Promise { const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs/${this.i18nService.currentLanguage.split("-")[0]}.json` const response = await fetch(path); @@ -99,7 +98,6 @@ export class AutoUpdaterService { throw new Error(`No changelog found for this version (${version})`); } - return changelogVersion; } From f57926e41bef36009266e782543728259df6aa3b Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 02:58:12 +0100 Subject: [PATCH 23/78] Remove unnecessary imports and variables --- src/main/ipcs/bs-launcher-ipcs.ts | 3 +-- src/main/services/auto-updater.service.ts | 8 -------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/main/ipcs/bs-launcher-ipcs.ts b/src/main/ipcs/bs-launcher-ipcs.ts index eee40cce..bb0b9dcc 100644 --- a/src/main/ipcs/bs-launcher-ipcs.ts +++ b/src/main/ipcs/bs-launcher-ipcs.ts @@ -2,10 +2,9 @@ import { LaunchOption } from "shared/models/bs-launch"; import { BSLauncherService } from "../services/bs-launcher/bs-launcher.service" import { IpcService } from '../services/ipc.service'; -import { from, of } from "rxjs"; +import { from} from "rxjs"; import { SteamLauncherService } from "../services/bs-launcher/steam-launcher.service"; import { OculusLauncherService } from "../services/bs-launcher/oculus-launcher.service"; -import { AutoUpdaterService } from "../services/auto-updater.service"; const ipc = IpcService.getInstance(); diff --git a/src/main/services/auto-updater.service.ts b/src/main/services/auto-updater.service.ts index b54448eb..667e26cf 100644 --- a/src/main/services/auto-updater.service.ts +++ b/src/main/services/auto-updater.service.ts @@ -2,18 +2,12 @@ import { autoUpdater } from "electron-updater"; import log from "electron-log"; import { UtilsService } from "./utils.service"; import { gt } from "semver"; -import { Observable } from "rxjs"; -import { ConfigurationService } from "./configuration.service"; export class AutoUpdaterService { private static instance: AutoUpdaterService; private readonly utilsService: UtilsService; - private readonly ConfigurationService: ConfigurationService - - private readonly HAVE_BEEN_UPDATED_KEY : string; - public static getInstance(): AutoUpdaterService { if (!AutoUpdaterService.instance) { AutoUpdaterService.instance = new AutoUpdaterService(); @@ -26,8 +20,6 @@ export class AutoUpdaterService { autoUpdater.autoDownload = false; this.utilsService = UtilsService.getInstance(); - this.ConfigurationService = ConfigurationService.getInstance(); - this.HAVE_BEEN_UPDATED_KEY = "haveBeenUpdated"; } public isUpdateAvailable(): Promise { From 834dad0cc01022055929a97d440df5a27beb9a23 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 02:59:13 +0100 Subject: [PATCH 24/78] Refactor AutoUpdaterService imports and add error handling for getChangelog() and isChangelogAvailable() --- src/renderer/services/auto-updater.service.ts | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index f9e42dd0..3a0d9739 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -1,4 +1,3 @@ -import { BehaviorSubject, Observable, lastValueFrom } from "rxjs"; import { map } from "rxjs/operators"; import { IpcService } from "./ipc.service"; import { ProgressBarService } from "./progress-bar.service"; @@ -6,6 +5,7 @@ import { I18nService } from "./i18n.service"; import { ModalService } from "renderer/services/modale.service"; import { ChangelogModal } from "renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component"; import { ConfigurationService } from "./configuration.service"; +import { Observable, lastValueFrom } from "rxjs"; export interface Changelog { [version: string]: ChangelogVersion; @@ -44,7 +44,6 @@ export class AutoUpdaterService { this.modal = ModalService.getInstance(); this.configurationService = ConfigurationService.getInstance(); - this.downloadProgress$ = this.ipcService.watch("update-download-progress").pipe(map(res => (res.success ? res.data : 0))); } @@ -74,6 +73,7 @@ export class AutoUpdaterService { } private async getChangelog(): Promise { + try { const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs/${this.i18nService.currentLanguage.split("-")[0]}.json` const response = await fetch(path); if (!response.ok) { @@ -85,6 +85,11 @@ export class AutoUpdaterService { return undefined; } return data; + } + catch(error){ + this.ipcService.sendLazy("log-error", {args: error}); + return undefined; + } } private async getChangelogVersion(version:string): Promise { @@ -105,11 +110,15 @@ export class AutoUpdaterService { return this.ipcService.sendV2("current-version"); } - public async showChangelog(): Promise{ + public async showChangelog(version:string = undefined): Promise{ try{ + + if (!version) { + version = await lastValueFrom(this.getAppVersion()) + } + if(this.getHaveBeenUpdated()){ - const currentVersion = await lastValueFrom(this.getAppVersion()); - const changelog = await this.getChangelogVersion(currentVersion); + const changelog = await this.getChangelogVersion(version); this.modal.openModal(ChangelogModal, changelog); } @@ -118,4 +127,20 @@ export class AutoUpdaterService { this.ipcService.sendLazy("log-error", {args: error}); } } + + public async isChangelogAvailable(version:string = undefined): Promise{ + try { + if (!version) { + version = await lastValueFrom(this.getAppVersion()) + } + + const changelog = await this.getChangelogVersion(version); + + return !!changelog; + } + catch(error){ + this.ipcService.sendLazy("log-error", {args: error}); + return false; + } + } } From 75100e69195992642e5a9f2db408f87207019861 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 02:59:22 +0100 Subject: [PATCH 25/78] Add AutoUpdaterService and show changelog when available --- .../pages/settings-page.component.tsx | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index f813fd9a..87746481 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -40,9 +40,11 @@ import { BsStore } from "shared/models/bs-store.enum"; import { SteamIcon } from "renderer/components/svgs/icons/steam-icon.component"; import { OculusIcon } from "renderer/components/svgs/icons/oculus-icon.component"; import { BsDownloaderService } from "renderer/services/bs-version-download/bs-downloader.service"; +import { AutoUpdaterService } from "renderer/services/auto-updater.service"; + export function SettingsPage() { - + const configService = useService(ConfigurationService); const themeService = useService(ThemeService); const ipcService = useService(IpcService); @@ -58,6 +60,7 @@ export function SettingsPage() { const playlistsManager = useService(PlaylistsManagerService); const modelsManager = useService(ModelsManagerService); const versionLinker = useService(VersionFolderLinkerService); + const autoUpdater = useService(AutoUpdaterService); const { firstColor, secondColor } = useThemeColor(); @@ -88,13 +91,20 @@ export function SettingsPage() { const [hasDownloaderSession, setHasDownloaderSession] = useState(false); const appVersion = useObservable(ipcService.sendV2("current-version")); + const [isChangelogAvailable, setIsChangelogAvailable] = useState(undefined); + const checkChangelogAvailability = async () => { + const changelogAvailable = await autoUpdater.isChangelogAvailable(appVersion); + setIsChangelogAvailable(changelogAvailable); + }; + useEffect(() => { loadInstallationFolder(); loadDownloadersSession(); mapsManager.isDeepLinksEnabled().then(enabled => setMapDeepLinksEnabled(() => enabled)); playlistsManager.isDeepLinksEnabled().then(enabled => setPlaylistsDeepLinkEnabled(() => enabled)); modelsManager.isDeepLinksEnabled().then(enabled => setModelsDeepLinkEnabled(() => enabled)); - }, []); + if (isChangelogAvailable) {autoUpdater.showChangelog(appVersion)}; + }, [isChangelogAvailable, appVersion]); const allDeepLinkEnabled = mapDeepLinksEnabled && playlistsDeepLinkEnabled && modelsDeepLinkEnabled; @@ -136,6 +146,10 @@ export function SettingsPage() { i18nService.setLanguage(item.value); }; + const handleVersionClick = async () => { + await checkChangelogAvailability(); + }; + const setDefaultInstallationFolder = () => { if (!progressBarService.require()) { return; @@ -231,7 +245,7 @@ export function SettingsPage() { - + }, @@ -239,7 +253,7 @@ export function SettingsPage() { { id: 0, text: t("pages.settings.steam-and-oculus.download-platform.always-ask"), value: undefined, }, ]} selectedItemValue={downloadStore} onItemSelected={handleChangeBsStore}/> - + @@ -441,9 +455,10 @@ export function SettingsPage() {
- - v{appVersion} -
+ + v{appVersion} + +
From c8017939da5ff62bd37666dd711df4fc8967779c Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 04:08:03 +0100 Subject: [PATCH 26/78] Remove unnecessary code in launcher-ipcs.ts --- src/main/ipcs/launcher-ipcs.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/ipcs/launcher-ipcs.ts b/src/main/ipcs/launcher-ipcs.ts index e309370f..2e87f15c 100644 --- a/src/main/ipcs/launcher-ipcs.ts +++ b/src/main/ipcs/launcher-ipcs.ts @@ -15,7 +15,6 @@ ipcMain.on("download-update", async (event, request: IpcRequest) => { .downloadUpdate() .then(res => { utilsService.ipcSend(request.responceChannel, { success: res }); - updaterService.setHaveBeenUpdated(true); }) .catch(() => utilsService.ipcSend(request.responceChannel, { success: false })); }); From 19998facc7d4efc554266703fcfc2bde498d7064 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 04:08:34 +0100 Subject: [PATCH 27/78] Update Patreon icon viewBox --- src/renderer/components/svgs/icons/patreon-icon.component.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/components/svgs/icons/patreon-icon.component.tsx b/src/renderer/components/svgs/icons/patreon-icon.component.tsx index 360bf1e0..70c4fc91 100644 --- a/src/renderer/components/svgs/icons/patreon-icon.component.tsx +++ b/src/renderer/components/svgs/icons/patreon-icon.component.tsx @@ -2,7 +2,7 @@ import { CSSProperties } from "react"; export default function PatreonIcon(props: { className?: string; style?: CSSProperties }) { return ( - + From e21b731e105a1d34b8d159c9d4644608d8a1f2f9 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 04:08:45 +0100 Subject: [PATCH 28/78] Remove unnecessary code in window-manager-ipcs.ts --- src/main/ipcs/window-manager-ipcs.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/ipcs/window-manager-ipcs.ts b/src/main/ipcs/window-manager-ipcs.ts index d71eef5b..35032759 100644 --- a/src/main/ipcs/window-manager-ipcs.ts +++ b/src/main/ipcs/window-manager-ipcs.ts @@ -10,9 +10,6 @@ const autoUpdaterService = AutoUpdaterService.getInstance(); // Native windows control, do not pass through IPC service ipcMain.on("close-window", async (event) => { - if (event.sender.getURL().includes("index.html")) { - autoUpdaterService.setHaveBeenUpdated(false); - } BrowserWindow.fromWebContents(event.sender)?.close(); }); From fbec5a0e4657383cfbc2f90e66cb48c354a341a7 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 04:08:57 +0100 Subject: [PATCH 29/78] Add logic to show changelog if available --- src/renderer/pages/settings-page.component.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 87746481..f90d7471 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -148,7 +148,10 @@ export function SettingsPage() { const handleVersionClick = async () => { await checkChangelogAvailability(); - }; + if (isChangelogAvailable) { + autoUpdater.showChangelog(appVersion); + } + }; const setDefaultInstallationFolder = () => { if (!progressBarService.require()) { From 0b64722092b91e83020a9b1f64f2d5cc60947710 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 04:09:38 +0100 Subject: [PATCH 30/78] update AutoUpdaterService status --- src/renderer/windows/Launcher.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/renderer/windows/Launcher.tsx b/src/renderer/windows/Launcher.tsx index 270056ef..d3416e04 100644 --- a/src/renderer/windows/Launcher.tsx +++ b/src/renderer/windows/Launcher.tsx @@ -9,7 +9,6 @@ import { WindowManagerService } from "../services/window-manager.service"; import { useService } from "renderer/hooks/use-service.hook"; export default function Launcher() { - const updaterService = useService(AutoUpdaterService); const windowService = useService(WindowManagerService); @@ -22,11 +21,13 @@ export default function Launcher() { useEffect(() => { updaterService.isUpdateAvailable().then(available => { if (!available) { + updaterService.setHaveBeenUpdated(false); return windowService.openThenCloseAll("index.html"); } setText("auto-update.downloading"); updaterService.downloadUpdate().then(installed => { if (!installed) { + updaterService.setHaveBeenUpdated(true); return windowService.openThenCloseAll("index.html"); } updaterService.quitAndInstall(); From 2da329367faed55a99f1d94fbdb950b8e99f3052 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 19:27:16 +0100 Subject: [PATCH 31/78] Update changelog for version 27.1.3 --- assets/jsons/changelogs/en.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs/en.json index ae627c9c..fb86e816 100644 --- a/assets/jsons/changelogs/en.json +++ b/assets/jsons/changelogs/en.json @@ -1,9 +1,9 @@ { "27.1.3" : { - "title" : "Second Release", - "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add \"no-yeet\" argument when launching Beat Saber to prevent mods to be removed if \"UserData\" is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from \"Documents\" to the \"User\" directory to avoid OneDrive conflicts #319
", + "title" : "What's News ?", + "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add 'no-yeet' argument when launching Beat Saber to prevent mods to be removed if 'UserData' is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from 'Documents' to the 'User' directory to avoid OneDrive conflicts #319
", "timestampPublished" : "1700788913", - "version" : "27.0.0" + "version" : "1.7.0" }, "1.0.0" : { "title" : "First Release", From e5599b78d88ea5f16eb955765bfb8f0db1325af7 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 19:33:30 +0100 Subject: [PATCH 32/78] Update changelog formatting --- assets/jsons/changelogs/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs/en.json index fb86e816..7bd94b4f 100644 --- a/assets/jsons/changelogs/en.json +++ b/assets/jsons/changelogs/en.json @@ -1,7 +1,7 @@ { "27.1.3" : { "title" : "What's News ?", - "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add 'no-yeet' argument when launching Beat Saber to prevent mods to be removed if 'UserData' is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from 'Documents' to the 'User' directory to avoid OneDrive conflicts #319
", + "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add 'no-yeet' argument when launching Beat Saber to prevent mods to be removed if 'UserData' is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from 'Documents' to the 'User' directory to avoid OneDrive conflicts #319
", "timestampPublished" : "1700788913", "version" : "1.7.0" }, From 37a3951f7bf845b707f47b29608bdbd514636b76 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 19:41:11 +0100 Subject: [PATCH 33/78] Update changelog formatting --- assets/jsons/changelogs/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs/en.json index 7bd94b4f..96a9b6d6 100644 --- a/assets/jsons/changelogs/en.json +++ b/assets/jsons/changelogs/en.json @@ -1,7 +1,7 @@ { "27.1.3" : { "title" : "What's News ?", - "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add 'no-yeet' argument when launching Beat Saber to prevent mods to be removed if 'UserData' is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from 'Documents' to the 'User' directory to avoid OneDrive conflicts #319
", + "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add 'no-yeet' argument when launching Beat Saber to prevent mods to be removed if 'UserData' is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from 'Documents' to the 'User' directory to avoid OneDrive conflicts #319
", "timestampPublished" : "1700788913", "version" : "1.7.0" }, From c77f4a94485c652a15076ea5087fd6a3cdb65cf6 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 21:03:53 +0100 Subject: [PATCH 34/78] Refactor changelog modal component layout and styling --- .../changelog-modal.component.tsx | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx index b526d1e9..8252921f 100644 --- a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx @@ -17,22 +17,22 @@ export const ChangelogModal: ModalComponent = ({ resolve const formattedTimestamp = changelog?.timestampPublished ? new Date(changelog.timestampPublished * 1000).toLocaleDateString() : ''; return ( -
-

{changelog?.title}

- -
-
-
- -
- {formattedTimestamp} - {changelog?.version} -
-
- - - - + +

{changelog?.title}

+ +
+ +
+
+ {formattedTimestamp} + v{changelog?.version} +
+
+ + + + +
) From 7d58fec63b794d34fd4dfd23446fa23b6257eced Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 21:16:40 +0100 Subject: [PATCH 35/78] Fix autoUpdater showChangelog condition --- src/renderer/windows/App.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 003c4822..66a9ada5 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -34,13 +34,14 @@ export default function App() { const config = useService(ConfigurationService); const autoUpdater = useService(AutoUpdaterService); - const location = useLocation(); const navigate = useNavigate(); useEffect(() => { - autoUpdater.showChangelog(); + lastValueFrom(autoUpdater.getAppVersion()).then(version => { + if(autoUpdater.isChangelogAvailable && autoUpdater.getLastVersion() === version) {autoUpdater.showChangelog()} + }); checkOneClicks(); }, []); From fdef870e8330ab88a6feca90c4de0f34b2f2e884 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 21:17:00 +0100 Subject: [PATCH 36/78] remove unnecessary code --- src/renderer/windows/Launcher.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/renderer/windows/Launcher.tsx b/src/renderer/windows/Launcher.tsx index d3416e04..62d60a16 100644 --- a/src/renderer/windows/Launcher.tsx +++ b/src/renderer/windows/Launcher.tsx @@ -21,13 +21,12 @@ export default function Launcher() { useEffect(() => { updaterService.isUpdateAvailable().then(available => { if (!available) { - updaterService.setHaveBeenUpdated(false); + return windowService.openThenCloseAll("index.html"); } setText("auto-update.downloading"); updaterService.downloadUpdate().then(installed => { if (!installed) { - updaterService.setHaveBeenUpdated(true); return windowService.openThenCloseAll("index.html"); } updaterService.quitAndInstall(); From 504462258ae3d69e68364f2e7cf3fc179ff9a774 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Thu, 21 Dec 2023 21:17:15 +0100 Subject: [PATCH 37/78] Refactor AutoUpdaterService methods to use LAST_VERSION instead of have-been-updated --- src/renderer/services/auto-updater.service.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 3a0d9739..f3792365 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -64,12 +64,12 @@ export class AutoUpdaterService { this.ipcService.sendLazy("install-update"); } - public getHaveBeenUpdated(): boolean { - return this.configurationService.get("have-been-updated"); + public getLastVersion(): string { + return this.configurationService.get("LAST_VERSION"); } - public setHaveBeenUpdated(value: boolean){ - this.configurationService.set("have-been-updated", value); + public setLastVersion(){ + lastValueFrom(this.getAppVersion()).then(v => this.configurationService.set("LAST_VERSION", v)); } private async getChangelog(): Promise { @@ -116,12 +116,9 @@ export class AutoUpdaterService { if (!version) { version = await lastValueFrom(this.getAppVersion()) } - - if(this.getHaveBeenUpdated()){ const changelog = await this.getChangelogVersion(version); this.modal.openModal(ChangelogModal, changelog); - } } catch(error){ this.ipcService.sendLazy("log-error", {args: error}); From 0776de8d7994b37fbc6a6707b30b487677d9f283 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 01:24:37 +0100 Subject: [PATCH 38/78] Remove unused imports and styling in ChangelogModal component --- .../modal-types/chabgelog-modal/changelog-modal.component.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx index 8252921f..ca06c1f8 100644 --- a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx @@ -1,9 +1,7 @@ import { BsmButton } from "renderer/components/shared/bsm-button.component"; -import { BsmImage } from "renderer/components/shared/bsm-image.component"; import { ChangelogVersion } from "renderer/services/auto-updater.service"; import { LinkOpenerService } from "renderer/services/link-opener.service"; import { ModalComponent } from "renderer/services/modale.service"; -import BeatRunning from "../../../../../../assets/images/apngs/beat-running.png"; import DOMPurify from 'dompurify'; import './changelog-modal.component.css'; @@ -19,7 +17,6 @@ export const ChangelogModal: ModalComponent = ({ resolve return (

{changelog?.title}

-
From f0f83e2b3b341ae474c2fd500d38e46f3e6298aa Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 01:28:29 +0100 Subject: [PATCH 39/78] Update indent size to 4 spaces in .editorconfig --- .editorconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index 4a7ea303..779f99a1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,7 +2,7 @@ root = true [*] indent_style = space -indent_size = 2 +indent_size = 4 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true From f4560b91902ba1ed356f9b33815bac57b7535a56 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 01:28:42 +0100 Subject: [PATCH 40/78] Refactor autoUpdater logic in App component --- src/renderer/windows/App.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 66a9ada5..3631fce6 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -39,9 +39,12 @@ export default function App() { useEffect(() => { - lastValueFrom(autoUpdater.getAppVersion()).then(version => { - if(autoUpdater.isChangelogAvailable && autoUpdater.getLastVersion() === version) {autoUpdater.showChangelog()} + lastValueFrom(autoUpdater.getAppVersion()).then(appVersion => { + if(appVersion === autoUpdater.getLastAppVersion()){ return; } + autoUpdater.showChangelog(appVersion); }); + + autoUpdater.setLastAppVersion(); checkOneClicks(); }, []); From 2c08f1e07c2257c0234d2e13314c208c2788cce2 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 01:28:58 +0100 Subject: [PATCH 41/78] Add cache for changelog and refactor methods in AutoUpdaterService --- src/renderer/services/auto-updater.service.ts | 39 ++++++------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index f3792365..a7d2f7c6 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -30,6 +30,8 @@ export class AutoUpdaterService { private configurationService: ConfigurationService; + private cacheChangelog: Changelog; + public static getInstance(): AutoUpdaterService { if (!AutoUpdaterService.instance) { AutoUpdaterService.instance = new AutoUpdaterService(); @@ -64,16 +66,20 @@ export class AutoUpdaterService { this.ipcService.sendLazy("install-update"); } - public getLastVersion(): string { + public getLastAppVersion(): string { return this.configurationService.get("LAST_VERSION"); } - public setLastVersion(){ + public setLastAppVersion(){ lastValueFrom(this.getAppVersion()).then(v => this.configurationService.set("LAST_VERSION", v)); } private async getChangelog(): Promise { try { + if (this.cacheChangelog) { + return this.cacheChangelog; + } + const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs/${this.i18nService.currentLanguage.split("-")[0]}.json` const response = await fetch(path); if (!response.ok) { @@ -84,6 +90,8 @@ export class AutoUpdaterService { if (!data) { return undefined; } + + this.cacheChangelog = data; return data; } catch(error){ @@ -110,34 +118,9 @@ export class AutoUpdaterService { return this.ipcService.sendV2("current-version"); } - public async showChangelog(version:string = undefined): Promise{ - try{ - - if (!version) { - version = await lastValueFrom(this.getAppVersion()) - } + public async showChangelog(version:string): Promise{ const changelog = await this.getChangelogVersion(version); this.modal.openModal(ChangelogModal, changelog); - } - catch(error){ - this.ipcService.sendLazy("log-error", {args: error}); - } - } - - public async isChangelogAvailable(version:string = undefined): Promise{ - try { - if (!version) { - version = await lastValueFrom(this.getAppVersion()) - } - - const changelog = await this.getChangelogVersion(version); - - return !!changelog; - } - catch(error){ - this.ipcService.sendLazy("log-error", {args: error}); - return false; - } } } From 39f2a16c96b6b1997fa97a1e0f7d9403c9d5a953 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 01:30:59 +0100 Subject: [PATCH 42/78] Optimise and refactor changelog loading --- .../pages/settings-page.component.tsx | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index f90d7471..36d09afc 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -41,6 +41,7 @@ import { SteamIcon } from "renderer/components/svgs/icons/steam-icon.component"; import { OculusIcon } from "renderer/components/svgs/icons/oculus-icon.component"; import { BsDownloaderService } from "renderer/services/bs-version-download/bs-downloader.service"; import { AutoUpdaterService } from "renderer/services/auto-updater.service"; +import BeatWaitingImg from "../../../assets/images/apngs/beat-waiting.png"; export function SettingsPage() { @@ -91,11 +92,8 @@ export function SettingsPage() { const [hasDownloaderSession, setHasDownloaderSession] = useState(false); const appVersion = useObservable(ipcService.sendV2("current-version")); - const [isChangelogAvailable, setIsChangelogAvailable] = useState(undefined); - const checkChangelogAvailability = async () => { - const changelogAvailable = await autoUpdater.isChangelogAvailable(appVersion); - setIsChangelogAvailable(changelogAvailable); - }; + const [isChangelogAvailable, setIsChangelogAvailable] = useState(true); + const [changlogsLoading, setChanglogsLoading] = useState(false); useEffect(() => { loadInstallationFolder(); @@ -103,8 +101,7 @@ export function SettingsPage() { mapsManager.isDeepLinksEnabled().then(enabled => setMapDeepLinksEnabled(() => enabled)); playlistsManager.isDeepLinksEnabled().then(enabled => setPlaylistsDeepLinkEnabled(() => enabled)); modelsManager.isDeepLinksEnabled().then(enabled => setModelsDeepLinkEnabled(() => enabled)); - if (isChangelogAvailable) {autoUpdater.showChangelog(appVersion)}; - }, [isChangelogAvailable, appVersion]); + }, []); const allDeepLinkEnabled = mapDeepLinksEnabled && playlistsDeepLinkEnabled && modelsDeepLinkEnabled; @@ -147,11 +144,12 @@ export function SettingsPage() { }; const handleVersionClick = async () => { - await checkChangelogAvailability(); - if (isChangelogAvailable) { - autoUpdater.showChangelog(appVersion); - } - }; + setChanglogsLoading(() => true); + await autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) + .then(() => setIsChangelogAvailable(() => true)) + .catch(() => setIsChangelogAvailable(() => false)); + setChanglogsLoading(() => false); + } const setDefaultInstallationFolder = () => { if (!progressBarService.require()) { @@ -458,9 +456,12 @@ export function SettingsPage() {
- - v{appVersion} + +
+ +
+
From 8333e238a6efe05b0dd404e0f14c315ffbc3444f Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 01:31:21 +0100 Subject: [PATCH 43/78] Add "none" as a BsmButtonType option --- src/renderer/components/shared/bsm-button.component.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/shared/bsm-button.component.tsx b/src/renderer/components/shared/bsm-button.component.tsx index 351ef8a8..66d2fc1b 100644 --- a/src/renderer/components/shared/bsm-button.component.tsx +++ b/src/renderer/components/shared/bsm-button.component.tsx @@ -6,7 +6,7 @@ import { useClickOutside } from "renderer/hooks/use-click-outside.hook"; import { useThemeColor } from "renderer/hooks/use-theme-color.hook"; import { getCorrectTextColor } from "renderer/helpers/correct-text-color"; -type BsmButtonType = "primary" | "secondary" | "success" | "cancel" | "error"; +type BsmButtonType = "primary" | "secondary" | "success" | "cancel" | "error" | "none"; type Props = { className?: string; @@ -66,6 +66,10 @@ export function BsmButton({ className, style, imgClassName, iconClassName, icon, if (typeColor === "success") { return "bg-green-500"; } + if (typeColor === "none") + { + return ""; + } return ""; })(); From 71f317dd379cde94ebf64b7b7c356dd6f8253139 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 01:39:19 +0100 Subject: [PATCH 44/78] Update translations for changelogs --- assets/jsons/translations/de.json | 4 ++++ assets/jsons/translations/en.json | 4 ++++ assets/jsons/translations/es.json | 4 ++++ assets/jsons/translations/fr.json | 4 ++++ assets/jsons/translations/ja.json | 4 ++++ assets/jsons/translations/ru.json | 4 ++++ assets/jsons/translations/zh-tw.json | 4 ++++ assets/jsons/translations/zh.json | 4 ++++ 8 files changed, 32 insertions(+) diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json index 86376aad..2bc41529 100644 --- a/assets/jsons/translations/de.json +++ b/assets/jsons/translations/de.json @@ -195,6 +195,10 @@ "report-bug": "Fehler melden", "open-logs": "Protokolle öffnen" } + }, + "changelogs": { + "open" : "🚀 Neues im Changelog entdecken!", + "not-found": "😕 Hoppla, kein Changelog zu sehen!" } } }, diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json index fa3534d4..4d199f2a 100644 --- a/assets/jsons/translations/en.json +++ b/assets/jsons/translations/en.json @@ -195,6 +195,10 @@ "report-bug": "Report a bug", "open-logs": "Open logs" } + }, + "changelogs": { + "open" : "🚀 Check Out the Changelog!", + "not-found": "😕 Oops, No Changelog Here!" } } }, diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json index 6bdbd5fc..a79b4f24 100644 --- a/assets/jsons/translations/es.json +++ b/assets/jsons/translations/es.json @@ -194,6 +194,10 @@ "report-bug": "Informar de un error", "open-logs": "Abrir los registros" } + }, + "changelogs": { + "open" : "🚀 ¡Descubre lo nuevo en el Changelog!", + "not-found": "😕 Uy, ¡Changelog no encontrado!" } } }, diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json index 515e03bb..25e45e31 100644 --- a/assets/jsons/translations/fr.json +++ b/assets/jsons/translations/fr.json @@ -194,6 +194,10 @@ "report-bug": "Signaler un bug", "open-logs": "Ouvrir les logs" } + }, + "changelogs": { + "open" : "🚀 Jetez un œil au Changelog !", + "not-found": "😕 Oups, Changelog introuvable !" } } }, diff --git a/assets/jsons/translations/ja.json b/assets/jsons/translations/ja.json index 206e9326..668a4570 100644 --- a/assets/jsons/translations/ja.json +++ b/assets/jsons/translations/ja.json @@ -195,6 +195,10 @@ "report-bug": "バグを報告", "open-logs": "ログを表示" } + }, + "changelogs": { + "open" : "🚀 チェンジログを覗いてみて!", + "not-found": "😕 あれ、チェンジログが見当たらない!" } } }, diff --git a/assets/jsons/translations/ru.json b/assets/jsons/translations/ru.json index 118b14f6..b328568d 100644 --- a/assets/jsons/translations/ru.json +++ b/assets/jsons/translations/ru.json @@ -195,6 +195,10 @@ "report-bug": "Сообщить о баге", "open-logs": "Открыть логи" } + }, + "changelogs": { + "open" : "🚀 Изучаем Changelog!", + "not-found": "😕 Ой, Changelog нигде не видно!" } } }, diff --git a/assets/jsons/translations/zh-tw.json b/assets/jsons/translations/zh-tw.json index 257550e8..9a8a3d95 100644 --- a/assets/jsons/translations/zh-tw.json +++ b/assets/jsons/translations/zh-tw.json @@ -195,6 +195,10 @@ "report-bug": "報告 bug", "open-logs": "打開日誌" } + }, + "changelogs": { + "open" : "🚀 探索更新日誌!", + "not-found": "😕 噢,找不到更新日誌!" } } }, diff --git a/assets/jsons/translations/zh.json b/assets/jsons/translations/zh.json index 29d566bd..43563d4d 100644 --- a/assets/jsons/translations/zh.json +++ b/assets/jsons/translations/zh.json @@ -195,6 +195,10 @@ "report-bug": "报告 bug", "open-logs": "打开日志" } + }, + "changelogs": { + "open" : "🚀 探索更新日志!", + "not-found": "😕 哎呀,找不到更新日志!" } } }, From 7dae25ce321f7216688f2651b3f4dd2b906ad9de Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 01:55:32 +0100 Subject: [PATCH 45/78] Fix formatting in bs-launcher-ipcs.ts --- src/main/ipcs/bs-launcher-ipcs.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/ipcs/bs-launcher-ipcs.ts b/src/main/ipcs/bs-launcher-ipcs.ts index bb0b9dcc..c79cde6e 100644 --- a/src/main/ipcs/bs-launcher-ipcs.ts +++ b/src/main/ipcs/bs-launcher-ipcs.ts @@ -2,7 +2,7 @@ import { LaunchOption } from "shared/models/bs-launch"; import { BSLauncherService } from "../services/bs-launcher/bs-launcher.service" import { IpcService } from '../services/ipc.service'; -import { from} from "rxjs"; +import { from } from "rxjs"; import { SteamLauncherService } from "../services/bs-launcher/steam-launcher.service"; import { OculusLauncherService } from "../services/bs-launcher/oculus-launcher.service"; @@ -18,7 +18,6 @@ ipc.on("create-launch-shortcut", (req, reply) => { reply(from(bsLauncher.createLaunchShortcut(req.args))); }); - ipc.on("bs-launch.restore-steamvr", (_, reply) => { const steamLauncher = SteamLauncherService.getInstance(); reply(from(steamLauncher.restoreSteamVR())); @@ -30,5 +29,3 @@ ipc.on("restore-original-oculus-folder", (_, reply) => { oculusLauncher.deleteBsSymlinks().then(() => oculusLauncher.restoreOriginalBeatSaber()) )); }); - - From 33bab3ea0e042b1843869f6fdd54ba5ce0e9e270 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 22 Dec 2023 02:00:05 +0100 Subject: [PATCH 46/78] reset useless change --- src/main/ipcs/launcher-ipcs.ts | 4 +--- src/main/ipcs/window-manager-ipcs.ts | 2 -- .../modal-types/chabgelog-modal/changelog-modal.component.css | 1 - src/renderer/components/svgs/icons/patreon-icon.component.tsx | 2 +- src/renderer/windows/Launcher.tsx | 1 - 5 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/ipcs/launcher-ipcs.ts b/src/main/ipcs/launcher-ipcs.ts index 2e87f15c..20473765 100644 --- a/src/main/ipcs/launcher-ipcs.ts +++ b/src/main/ipcs/launcher-ipcs.ts @@ -13,9 +13,7 @@ ipcMain.on("download-update", async (event, request: IpcRequest) => { updaterService .downloadUpdate() - .then(res => { - utilsService.ipcSend(request.responceChannel, { success: res }); - }) + .then(res => utilsService.ipcSend(request.responceChannel, { success: res })) .catch(() => utilsService.ipcSend(request.responceChannel, { success: false })); }); diff --git a/src/main/ipcs/window-manager-ipcs.ts b/src/main/ipcs/window-manager-ipcs.ts index 35032759..94b54e6e 100644 --- a/src/main/ipcs/window-manager-ipcs.ts +++ b/src/main/ipcs/window-manager-ipcs.ts @@ -3,10 +3,8 @@ import { AppWindow } from "shared/models/window-manager/app-window.model"; import { IpcService } from "../services/ipc.service"; import { from } from "rxjs"; import { BrowserWindow, ipcMain } from "electron"; -import { AutoUpdaterService } from "../services/auto-updater.service"; const ipc = IpcService.getInstance(); -const autoUpdaterService = AutoUpdaterService.getInstance(); // Native windows control, do not pass through IPC service ipcMain.on("close-window", async (event) => { diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.css b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.css index e263d0ef..fa08a62b 100644 --- a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.css +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.css @@ -1,4 +1,3 @@ - .content * { all: revert; } diff --git a/src/renderer/components/svgs/icons/patreon-icon.component.tsx b/src/renderer/components/svgs/icons/patreon-icon.component.tsx index 70c4fc91..360bf1e0 100644 --- a/src/renderer/components/svgs/icons/patreon-icon.component.tsx +++ b/src/renderer/components/svgs/icons/patreon-icon.component.tsx @@ -2,7 +2,7 @@ import { CSSProperties } from "react"; export default function PatreonIcon(props: { className?: string; style?: CSSProperties }) { return ( - + diff --git a/src/renderer/windows/Launcher.tsx b/src/renderer/windows/Launcher.tsx index 62d60a16..155b10f8 100644 --- a/src/renderer/windows/Launcher.tsx +++ b/src/renderer/windows/Launcher.tsx @@ -21,7 +21,6 @@ export default function Launcher() { useEffect(() => { updaterService.isUpdateAvailable().then(available => { if (!available) { - return windowService.openThenCloseAll("index.html"); } setText("auto-update.downloading"); From a981adede0d92243e6d54770e9d2c84a94363b19 Mon Sep 17 00:00:00 2001 From: shidorien Date: Fri, 22 Dec 2023 13:49:38 +0100 Subject: [PATCH 47/78] Delete changelog files for multiple languages --- assets/jsons/{changelogs/en.json => changelogs.json} | 0 assets/jsons/changelogs/de.json | 7 ------- assets/jsons/changelogs/es.json | 7 ------- assets/jsons/changelogs/fr.json | 7 ------- assets/jsons/changelogs/ru.json | 7 ------- 5 files changed, 28 deletions(-) rename assets/jsons/{changelogs/en.json => changelogs.json} (100%) delete mode 100644 assets/jsons/changelogs/de.json delete mode 100644 assets/jsons/changelogs/es.json delete mode 100644 assets/jsons/changelogs/fr.json delete mode 100644 assets/jsons/changelogs/ru.json diff --git a/assets/jsons/changelogs/en.json b/assets/jsons/changelogs.json similarity index 100% rename from assets/jsons/changelogs/en.json rename to assets/jsons/changelogs.json diff --git a/assets/jsons/changelogs/de.json b/assets/jsons/changelogs/de.json deleted file mode 100644 index d5412969..00000000 --- a/assets/jsons/changelogs/de.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "1.0.0": { - "title": "Erste Veröffentlichung", - "htmlBody": "

Erste Veröffentlichung der App.

", - "timestampPublished" : "1700788913" - } -} diff --git a/assets/jsons/changelogs/es.json b/assets/jsons/changelogs/es.json deleted file mode 100644 index ef23afde..00000000 --- a/assets/jsons/changelogs/es.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "1.0.0": { - "title": "Primera Lanzamiento", - "htmlBody": "

Primera lanzamiento de la aplicación.

", - "timestampPublished" : "1700788913" - } -} diff --git a/assets/jsons/changelogs/fr.json b/assets/jsons/changelogs/fr.json deleted file mode 100644 index 9c2f7a27..00000000 --- a/assets/jsons/changelogs/fr.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "1.0.0": { - "title": "Première Version", - "htmlBody": "

Première version de l'application.

", - "timestampPublished" : "1700788913" - } -} diff --git a/assets/jsons/changelogs/ru.json b/assets/jsons/changelogs/ru.json deleted file mode 100644 index f7f05149..00000000 --- a/assets/jsons/changelogs/ru.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "1.0.0": { - "title": "Первый Релиз", - "htmlBody": "

Первый релиз приложения.

", - "timestampPublished" : "1700788913" - } -} From 02ad4b9c68a5a3ccbf9e3b10562077883e2e364c Mon Sep 17 00:00:00 2001 From: shidorien Date: Fri, 22 Dec 2023 13:51:43 +0100 Subject: [PATCH 48/78] change location of changelogs an dremove unused import --- src/renderer/services/auto-updater.service.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index a7d2f7c6..0908bc0d 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -1,7 +1,6 @@ import { map } from "rxjs/operators"; import { IpcService } from "./ipc.service"; import { ProgressBarService } from "./progress-bar.service"; -import { I18nService } from "./i18n.service"; import { ModalService } from "renderer/services/modale.service"; import { ChangelogModal } from "renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component"; import { ConfigurationService } from "./configuration.service"; @@ -24,8 +23,6 @@ export class AutoUpdaterService { private downloadProgress$: Observable; - private i18nService: I18nService; - private modal: ModalService; private configurationService: ConfigurationService; @@ -42,7 +39,6 @@ export class AutoUpdaterService { private constructor() { this.progressService = ProgressBarService.getInstance(); this.ipcService = IpcService.getInstance(); - this.i18nService = I18nService.getInstance(); this.modal = ModalService.getInstance(); this.configurationService = ConfigurationService.getInstance(); @@ -80,7 +76,7 @@ export class AutoUpdaterService { return this.cacheChangelog; } - const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs/${this.i18nService.currentLanguage.split("-")[0]}.json` + const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs.json` const response = await fetch(path); if (!response.ok) { return undefined; From 961e629de851f81a61dfa7ef03dc094c37d79323 Mon Sep 17 00:00:00 2001 From: shidorien Date: Sat, 23 Dec 2023 22:31:27 +0100 Subject: [PATCH 49/78] Refactor ChangelogModal component --- .../changelog-modal.component.tsx | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx index ca06c1f8..71062094 100644 --- a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx @@ -15,22 +15,22 @@ export const ChangelogModal: ModalComponent = ({ resolve const formattedTimestamp = changelog?.timestampPublished ? new Date(changelog.timestampPublished * 1000).toLocaleDateString() : ''; return ( - -

{changelog?.title}

-
- -
-
- {formattedTimestamp} - v{changelog?.version} + +

{changelog?.title}

+
+ +
+
+ {formattedTimestamp} + v{changelog?.version} +
+
+ + + + +
-
- - - - -
-
- + ) - } +} From 4e15d1c1b6fed5d60f31ba74dbf55f5f76422157 Mon Sep 17 00:00:00 2001 From: shidorien Date: Sat, 23 Dec 2023 22:33:31 +0100 Subject: [PATCH 50/78] Update Patreon and Twitter icons --- .../components/svgs/icons/patreon-icon.component.tsx | 5 ++--- .../components/svgs/icons/twitter-icon.component.tsx | 6 ++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/svgs/icons/patreon-icon.component.tsx b/src/renderer/components/svgs/icons/patreon-icon.component.tsx index 360bf1e0..41bddd5b 100644 --- a/src/renderer/components/svgs/icons/patreon-icon.component.tsx +++ b/src/renderer/components/svgs/icons/patreon-icon.component.tsx @@ -2,9 +2,8 @@ import { CSSProperties } from "react"; export default function PatreonIcon(props: { className?: string; style?: CSSProperties }) { return ( - - - + + ); } diff --git a/src/renderer/components/svgs/icons/twitter-icon.component.tsx b/src/renderer/components/svgs/icons/twitter-icon.component.tsx index be0b4f68..ddc467cd 100644 --- a/src/renderer/components/svgs/icons/twitter-icon.component.tsx +++ b/src/renderer/components/svgs/icons/twitter-icon.component.tsx @@ -2,10 +2,8 @@ import { CSSProperties } from "react"; export function TwitterIcon(props: { className?: string; style?: CSSProperties }) { return ( - - - - + + ); } From 002b11d54c7a9d5603db87a2289efcb76169769c Mon Sep 17 00:00:00 2001 From: shidorien Date: Sat, 23 Dec 2023 22:33:46 +0100 Subject: [PATCH 51/78] Refactor handleVersionClick function in SettingsPage component --- .../pages/settings-page.component.tsx | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 36d09afc..9f3ffdbe 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -144,12 +144,25 @@ export function SettingsPage() { }; const handleVersionClick = async () => { - setChanglogsLoading(() => true); - await autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) - .then(() => setIsChangelogAvailable(() => true)) - .catch(() => setIsChangelogAvailable(() => false)); - setChanglogsLoading(() => false); - } + let isChangelogResolved = false; + + const changelogPromise = autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) + .then(() => { + isChangelogResolved = true; + setIsChangelogAvailable(() => true); + }) + .catch(() => { + isChangelogResolved = true; + setIsChangelogAvailable(() => false); + }); + + setTimeout(() => { + setChanglogsLoading(() => !isChangelogResolved); + }, 100); + + await changelogPromise; + setChanglogsLoading(() => false); + }; const setDefaultInstallationFolder = () => { if (!progressBarService.require()) { @@ -440,7 +453,7 @@ export function SettingsPage() {
- +
@@ -462,7 +475,7 @@ export function SettingsPage() {
-
+
From b91d74f3a3b2e352b87a6b93e36bdd1a7f38379d Mon Sep 17 00:00:00 2001 From: shidorien Date: Sat, 23 Dec 2023 22:38:38 +0100 Subject: [PATCH 52/78] Fix xlink namespace in PatreonIcon component --- src/renderer/components/svgs/icons/patreon-icon.component.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/components/svgs/icons/patreon-icon.component.tsx b/src/renderer/components/svgs/icons/patreon-icon.component.tsx index 41bddd5b..c770bba6 100644 --- a/src/renderer/components/svgs/icons/patreon-icon.component.tsx +++ b/src/renderer/components/svgs/icons/patreon-icon.component.tsx @@ -2,7 +2,7 @@ import { CSSProperties } from "react"; export default function PatreonIcon(props: { className?: string; style?: CSSProperties }) { return ( - + ); From ddde1f8b8a7fc5fcb563295cb61975bef659b1e4 Mon Sep 17 00:00:00 2001 From: shidorien Date: Thu, 28 Dec 2023 15:32:30 +0100 Subject: [PATCH 53/78] Update package version to 1.4.3 --- release/app/package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/app/package-lock.json b/release/app/package-lock.json index a784f062..76622776 100644 --- a/release/app/package-lock.json +++ b/release/app/package-lock.json @@ -1,12 +1,12 @@ { "name": "bs-manager", - "version": "1.4.2", + "version": "1.4.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "bs-manager", - "version": "1.4.2", + "version": "1.4.3", "hasInstallScript": true, "license": "MIT", "dependencies": { From 98bdbba23c2509023816d03834e4875a9736e70c Mon Sep 17 00:00:00 2001 From: shidorien Date: Thu, 28 Dec 2023 15:32:37 +0100 Subject: [PATCH 54/78] Add tooltips to social media buttons in ChangelogModal --- .../changelog-modal.component.tsx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx index 71062094..2c791930 100644 --- a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx @@ -4,6 +4,7 @@ import { LinkOpenerService } from "renderer/services/link-opener.service"; import { ModalComponent } from "renderer/services/modale.service"; import DOMPurify from 'dompurify'; import './changelog-modal.component.css'; +import Tippy from "@tippyjs/react"; export const ChangelogModal: ModalComponent = ({ resolver, data: changelog }) => { @@ -22,13 +23,21 @@ export const ChangelogModal: ModalComponent = ({ resolve
{formattedTimestamp} - v{changelog?.version} + v{changelog?.version}
- - - - + +
+
+ +
+
+ +
+
+ +
+
From 99a9f5b1de9ce7fa95397dad7e3d9c2d30561159 Mon Sep 17 00:00:00 2001 From: shidorien Date: Thu, 28 Dec 2023 15:32:50 +0100 Subject: [PATCH 55/78] Fix conditional return in BsmButton component --- src/renderer/components/shared/bsm-button.component.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/components/shared/bsm-button.component.tsx b/src/renderer/components/shared/bsm-button.component.tsx index 66d2fc1b..3b80202d 100644 --- a/src/renderer/components/shared/bsm-button.component.tsx +++ b/src/renderer/components/shared/bsm-button.component.tsx @@ -50,7 +50,7 @@ export function BsmButton({ className, style, imgClassName, iconClassName, icon, if (primaryColor) { return getCorrectTextColor(primaryColor); } - return typeColor ? "white" : undefined; + return typeColor && typeColor !== "none" ? "white" : undefined; })(); const renderTypeColor = (() => { From 6b4d919afedfd33df59c1a9719c0a09b78a6bfcb Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 5 Jan 2024 13:27:08 +0100 Subject: [PATCH 56/78] Add version check before showing changelog --- src/renderer/windows/App.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 3631fce6..11324fa5 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -23,6 +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 { lte } from "semver"; export default function App() { useService(OsDiagnosticService); @@ -40,8 +41,10 @@ export default function App() { useEffect(() => { lastValueFrom(autoUpdater.getAppVersion()).then(appVersion => { - if(appVersion === autoUpdater.getLastAppVersion()){ return; } - autoUpdater.showChangelog(appVersion); + const lastAppVersion = autoUpdater.getLastAppVersion(); + if (!lastAppVersion) { return;} + if(lte(appVersion,lastAppVersion)){ return; } + autoUpdater.showChangelog(appVersion); }); autoUpdater.setLastAppVersion(); From 9401f1cf4aa844d2c316ed5558a8f3d7b05c0dc2 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 5 Jan 2024 13:44:34 +0100 Subject: [PATCH 57/78] Update configuration key for last app version --- src/renderer/services/auto-updater.service.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 0908bc0d..0dd629e4 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -63,17 +63,17 @@ export class AutoUpdaterService { } public getLastAppVersion(): string { - return this.configurationService.get("LAST_VERSION"); + return this.configurationService.get("last-app-version"); } public setLastAppVersion(){ - lastValueFrom(this.getAppVersion()).then(v => this.configurationService.set("LAST_VERSION", v)); + lastValueFrom(this.getAppVersion()).then(v => this.configurationService.set("last-app-version", v)); } private async getChangelog(): Promise { - try { + try { if (this.cacheChangelog) { - return this.cacheChangelog; + return this.cacheChangelog; } const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs.json` @@ -89,11 +89,11 @@ export class AutoUpdaterService { this.cacheChangelog = data; return data; - } - catch(error){ + } + catch(error){ this.ipcService.sendLazy("log-error", {args: error}); return undefined; - } + } } private async getChangelogVersion(version:string): Promise { From 76ed1b09a1392bf7eaf37d1d6d8bebd21cf7f333 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 5 Jan 2024 16:31:17 +0100 Subject: [PATCH 58/78] add modification after firt review part 1 --- .../changelog-modal.component.tsx | 11 ++++++----- .../components/shared/bsm-button.component.tsx | 4 ---- src/renderer/pages/settings-page.component.tsx | 8 +++----- src/renderer/services/auto-updater.service.ts | 18 +++++++----------- src/renderer/windows/App.tsx | 5 +---- 5 files changed, 17 insertions(+), 29 deletions(-) diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx index 2c791930..644a54e0 100644 --- a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx @@ -1,6 +1,7 @@ import { BsmButton } from "renderer/components/shared/bsm-button.component"; import { ChangelogVersion } from "renderer/services/auto-updater.service"; import { LinkOpenerService } from "renderer/services/link-opener.service"; +import { useService } from "renderer/hooks/use-service.hook"; import { ModalComponent } from "renderer/services/modale.service"; import DOMPurify from 'dompurify'; import './changelog-modal.component.css'; @@ -8,7 +9,7 @@ import Tippy from "@tippyjs/react"; export const ChangelogModal: ModalComponent = ({ resolver, data: changelog }) => { - const linkOpener: LinkOpenerService = LinkOpenerService.getInstance(); + const linkOpener = useService(LinkOpenerService); const openGithub = () => linkOpener.open("https://github.com/Zagrios/bs-manager"); const openTwitter = () => linkOpener.open("https://twitter.com/BSManager_"); const openSupportPage = () => linkOpener.open("https://www.patreon.com/bsmanager"); @@ -27,16 +28,16 @@ export const ChangelogModal: ModalComponent = ({ resolve
-
+
-
+
-
+
-
+
diff --git a/src/renderer/components/shared/bsm-button.component.tsx b/src/renderer/components/shared/bsm-button.component.tsx index 3b80202d..9e051db7 100644 --- a/src/renderer/components/shared/bsm-button.component.tsx +++ b/src/renderer/components/shared/bsm-button.component.tsx @@ -66,10 +66,6 @@ export function BsmButton({ className, style, imgClassName, iconClassName, icon, if (typeColor === "success") { return "bg-green-500"; } - if (typeColor === "none") - { - return ""; - } return ""; })(); diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 11786f30..fbcd03f3 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -149,13 +149,12 @@ export function SettingsPage() { const changelogPromise = autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) .then(() => { - isChangelogResolved = true; setIsChangelogAvailable(() => true); }) .catch(() => { - isChangelogResolved = true; setIsChangelogAvailable(() => false); - }); + }) + .finally(() => { isChangelogResolved = true; }); setTimeout(() => { setChanglogsLoading(() => !isChangelogResolved); @@ -471,13 +470,12 @@ export function SettingsPage() { -
+
- ); diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 0dd629e4..07d70fbc 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -71,7 +71,6 @@ export class AutoUpdaterService { } private async getChangelog(): Promise { - try { if (this.cacheChangelog) { return this.cacheChangelog; } @@ -79,28 +78,20 @@ export class AutoUpdaterService { const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs.json` const response = await fetch(path); if (!response.ok) { - return undefined; + throw new Error(`Failed to fetch changelogs (${response.status})`); } const data = await response.json(); if (!data) { - return undefined; + throw new Error(`Failed to parse changelogs`); } this.cacheChangelog = data; return data; } - catch(error){ - this.ipcService.sendLazy("log-error", {args: error}); - return undefined; - } - } private async getChangelogVersion(version:string): Promise { const changelogs = await this.getChangelog(); - if (!changelogs) { - throw new Error(`No changelogs found`); - } const changelogVersion = changelogs[version]; if (!changelogVersion) { @@ -119,4 +110,9 @@ export class AutoUpdaterService { this.modal.openModal(ChangelogModal, changelog); } + + lastValueFrom(autoUpdater.getAppVersion()).then(appVersion => { + const lastAppVersion = autoUpdater.getLastAppVersion(); + if (!lastAppVersion) { return;} + if(lte(appVersion,lastAppVersion)){ return; } } diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 11324fa5..26e0c85a 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -40,10 +40,7 @@ export default function App() { useEffect(() => { - lastValueFrom(autoUpdater.getAppVersion()).then(appVersion => { - const lastAppVersion = autoUpdater.getLastAppVersion(); - if (!lastAppVersion) { return;} - if(lte(appVersion,lastAppVersion)){ return; } + autoUpdater.showChangelog(appVersion); }); From 3217addaa60bbeac4ce30025946ce05d74e3cc11 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 5 Jan 2024 16:38:22 +0100 Subject: [PATCH 59/78] Add checkIsUpdated method to AutoUpdaterService --- src/renderer/services/auto-updater.service.ts | 15 +++++++++++---- src/renderer/windows/App.tsx | 5 ----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 07d70fbc..a819edf0 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -5,6 +5,7 @@ import { ModalService } from "renderer/services/modale.service"; import { ChangelogModal } from "renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component"; import { ConfigurationService } from "./configuration.service"; import { Observable, lastValueFrom } from "rxjs"; +import { lte } from "semver"; export interface Changelog { [version: string]: ChangelogVersion; @@ -111,8 +112,14 @@ export class AutoUpdaterService { this.modal.openModal(ChangelogModal, changelog); } - lastValueFrom(autoUpdater.getAppVersion()).then(appVersion => { - const lastAppVersion = autoUpdater.getLastAppVersion(); - if (!lastAppVersion) { return;} - if(lte(appVersion,lastAppVersion)){ return; } + public checkIsUpdated(): void { + lastValueFrom(this.getAppVersion()).then(appVersion => { + const lastAppVersion = this.getLastAppVersion(); + if (!lastAppVersion) { return;} + if(lte(appVersion,lastAppVersion)){ return; } + + this.setLastAppVersion(); + this.showChangelog(appVersion); + }); + } } diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 26e0c85a..e6cf62ea 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -23,7 +23,6 @@ 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 { lte } from "semver"; export default function App() { useService(OsDiagnosticService); @@ -41,10 +40,6 @@ export default function App() { useEffect(() => { - autoUpdater.showChangelog(appVersion); - }); - - autoUpdater.setLastAppVersion(); checkOneClicks(); }, []); From 4cf242f68315f59f16468a8a2bd8768c81bf0d8f Mon Sep 17 00:00:00 2001 From: Shidorien Date: Fri, 5 Jan 2024 16:43:08 +0100 Subject: [PATCH 60/78] Add autoUpdater check in useEffect --- src/renderer/windows/App.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index e6cf62ea..84fe738e 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -38,8 +38,7 @@ export default function App() { const navigate = useNavigate(); useEffect(() => { - - + autoUpdater.checkIsUpdated(); checkOneClicks(); }, []); From 61889c0b5b5b4bd8dcb673571b41f08435702575 Mon Sep 17 00:00:00 2001 From: shidorien Date: Fri, 5 Jan 2024 17:16:35 +0100 Subject: [PATCH 61/78] Refactor auto-updater service and App component --- src/renderer/services/auto-updater.service.ts | 23 +++++-------------- src/renderer/windows/App.tsx | 15 +++++++++++- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index a819edf0..571a7df2 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -5,16 +5,16 @@ import { ModalService } from "renderer/services/modale.service"; import { ChangelogModal } from "renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component"; import { ConfigurationService } from "./configuration.service"; import { Observable, lastValueFrom } from "rxjs"; -import { lte } from "semver"; + export interface Changelog { - [version: string]: ChangelogVersion; + [version: string]: ChangelogVersion; } export interface ChangelogVersion { - htmlBody: string; - title: string; - timestampPublished: number; - version: string; + htmlBody: string; + title: string; + timestampPublished: number; + version: string; } export class AutoUpdaterService { private static instance: AutoUpdaterService; @@ -111,15 +111,4 @@ export class AutoUpdaterService { this.modal.openModal(ChangelogModal, changelog); } - - public checkIsUpdated(): void { - lastValueFrom(this.getAppVersion()).then(appVersion => { - const lastAppVersion = this.getLastAppVersion(); - if (!lastAppVersion) { return;} - if(lte(appVersion,lastAppVersion)){ return; } - - this.setLastAppVersion(); - this.showChangelog(appVersion); - }); - } } diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 84fe738e..9c29a13c 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -23,6 +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 { lte } from "semver" export default function App() { useService(OsDiagnosticService); @@ -38,10 +39,22 @@ export default function App() { const navigate = useNavigate(); useEffect(() => { - autoUpdater.checkIsUpdated(); + checkIsUpdated(); checkOneClicks(); }, []); + const checkIsUpdated = async () => { + const appVersion = await lastValueFrom(autoUpdater.getAppVersion()); + const lastAppVersion = autoUpdater.getLastAppVersion(); + + if (!lastAppVersion || lte(appVersion, lastAppVersion)) { + return; + } + + autoUpdater.setLastAppVersion(); + autoUpdater.showChangelog(appVersion); + }; + const checkOneClicks = async () => { if (config.get("not-remind-oneclick") === true) { return; From 5c35eae53a68eaa47a47f621eae111432c5ca305 Mon Sep 17 00:00:00 2001 From: shidorien Date: Fri, 5 Jan 2024 17:29:48 +0100 Subject: [PATCH 62/78] Fix changelog loading issue and update version check --- src/renderer/pages/settings-page.component.tsx | 3 ++- src/renderer/windows/App.tsx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index fbcd03f3..96a2c290 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -156,12 +156,13 @@ export function SettingsPage() { }) .finally(() => { isChangelogResolved = true; }); - setTimeout(() => { + const timeoutId = setTimeout(() => { setChanglogsLoading(() => !isChangelogResolved); }, 100); await changelogPromise; setChanglogsLoading(() => false); + clearTimeout(timeoutId); }; const setDefaultInstallationFolder = () => { diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 9c29a13c..995cb8c6 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -46,7 +46,7 @@ export default function App() { const checkIsUpdated = async () => { const appVersion = await lastValueFrom(autoUpdater.getAppVersion()); const lastAppVersion = autoUpdater.getLastAppVersion(); - + if (!lastAppVersion || lte(appVersion, lastAppVersion)) { return; } From 5449792294b9610e724b6a36ad9d77fec36c02fb Mon Sep 17 00:00:00 2001 From: shidorien Date: Fri, 5 Jan 2024 17:38:05 +0100 Subject: [PATCH 63/78] Change checkisUpdated to fix a bug --- src/renderer/windows/App.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 995cb8c6..cc7d84b6 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -23,7 +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 { lte } from "semver" +import { gt } from "semver" export default function App() { useService(OsDiagnosticService); @@ -47,12 +47,11 @@ export default function App() { const appVersion = await lastValueFrom(autoUpdater.getAppVersion()); const lastAppVersion = autoUpdater.getLastAppVersion(); - if (!lastAppVersion || lte(appVersion, lastAppVersion)) { - return; + autoUpdater.setLastAppVersion(); + if (lastAppVersion && gt(appVersion, lastAppVersion)) { + autoUpdater.showChangelog(appVersion); } - autoUpdater.setLastAppVersion(); - autoUpdater.showChangelog(appVersion); }; const checkOneClicks = async () => { From cd5237aff363dec965d68ac81d9d0a14f835c391 Mon Sep 17 00:00:00 2001 From: shidorien Date: Fri, 5 Jan 2024 17:39:12 +0100 Subject: [PATCH 64/78] :eyes: --- src/renderer/windows/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index cc7d84b6..57367f95 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -48,10 +48,10 @@ export default function App() { const lastAppVersion = autoUpdater.getLastAppVersion(); autoUpdater.setLastAppVersion(); + if (lastAppVersion && gt(appVersion, lastAppVersion)) { autoUpdater.showChangelog(appVersion); } - }; const checkOneClicks = async () => { From 86c1f5aa7b520beddf374d891c9f0bd4cc46b0aa Mon Sep 17 00:00:00 2001 From: Shidorien <40648115+GaetanGrd@users.noreply.github.com> Date: Fri, 5 Jan 2024 17:56:41 +0100 Subject: [PATCH 65/78] Update path to get changelog --- src/renderer/services/auto-updater.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 571a7df2..a61dbcad 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -76,7 +76,7 @@ export class AutoUpdaterService { return this.cacheChangelog; } - const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/feature/add-changelog-modal/178/assets/jsons/changelogs.json` + const path = `https://raw.githubusercontent.com/Zagrios/bs-manager/master/assets/jsons/changelogs.json` const response = await fetch(path); if (!response.ok) { throw new Error(`Failed to fetch changelogs (${response.status})`); From c92ca87c4c7a403d6667fe2ec131e62596e2b555 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 8 Jan 2024 10:01:25 +0100 Subject: [PATCH 66/78] Refactor date variable in ChangelogModal component --- .../modal-types/chabgelog-modal/changelog-modal.component.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx index 644a54e0..1640daad 100644 --- a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx @@ -14,7 +14,7 @@ export const ChangelogModal: ModalComponent = ({ resolve const openTwitter = () => linkOpener.open("https://twitter.com/BSManager_"); const openSupportPage = () => linkOpener.open("https://www.patreon.com/bsmanager"); const openDiscord = () => linkOpener.open("https://discord.gg/uSqbHVpKdV"); - const formattedTimestamp = changelog?.timestampPublished ? new Date(changelog.timestampPublished * 1000).toLocaleDateString() : ''; + const date = changelog?.timestampPublished ? new Date(changelog.timestampPublished * 1000).toLocaleDateString() : ''; return (
@@ -23,7 +23,7 @@ export const ChangelogModal: ModalComponent = ({ resolve
- {formattedTimestamp} + {date} v{changelog?.version}
From 8e8d6081206f3feb0641d8f09a43015a28dbf473 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 8 Jan 2024 10:15:21 +0100 Subject: [PATCH 67/78] Refactor handleVersionClick function in SettingsPage component --- .../pages/settings-page.component.tsx | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 2cdb449f..f76edab1 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -147,20 +147,19 @@ export function SettingsPage() { const handleVersionClick = async () => { let isChangelogResolved = false; - const changelogPromise = autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) - .then(() => { - setIsChangelogAvailable(() => true); - }) - .catch(() => { - setIsChangelogAvailable(() => false); - }) - .finally(() => { isChangelogResolved = true; }); - const timeoutId = setTimeout(() => { - setChanglogsLoading(() => !isChangelogResolved); - }, 100); + await autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) + .then(() => { + setIsChangelogAvailable(() => true); + }) + .catch(() => { + setIsChangelogAvailable(() => false); + }) + .finally(() => { isChangelogResolved = true; }); - await changelogPromise; + const timeoutId = setTimeout(() => { + setChanglogsLoading(() => !isChangelogResolved); + }, 100); setChanglogsLoading(() => false); clearTimeout(timeoutId); }; From b8262a941d1ed83b1faa2ae6d68ba9f50440c8d6 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 8 Jan 2024 10:17:19 +0100 Subject: [PATCH 68/78] Fix timestamp field name in changelogs.json and ChangelogVersion interface --- assets/jsons/changelogs.json | 4 ++-- .../modal-types/chabgelog-modal/changelog-modal.component.tsx | 2 +- src/renderer/services/auto-updater.service.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/jsons/changelogs.json b/assets/jsons/changelogs.json index 96a9b6d6..2449caa0 100644 --- a/assets/jsons/changelogs.json +++ b/assets/jsons/changelogs.json @@ -2,13 +2,13 @@ "27.1.3" : { "title" : "What's News ?", "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add 'no-yeet' argument when launching Beat Saber to prevent mods to be removed if 'UserData' is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from 'Documents' to the 'User' directory to avoid OneDrive conflicts #319
", - "timestampPublished" : "1700788913", + "timestamp " : "1700788913", "version" : "1.7.0" }, "1.0.0" : { "title" : "First Release", "htmlBody" : "

First release of the app.

", - "timestampPublished" : "1700788913", + "timestamp " : "1700788913", "version" : "1.0.0" } } diff --git a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx index 1640daad..4c461e22 100644 --- a/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/chabgelog-modal/changelog-modal.component.tsx @@ -14,7 +14,7 @@ export const ChangelogModal: ModalComponent = ({ resolve const openTwitter = () => linkOpener.open("https://twitter.com/BSManager_"); const openSupportPage = () => linkOpener.open("https://www.patreon.com/bsmanager"); const openDiscord = () => linkOpener.open("https://discord.gg/uSqbHVpKdV"); - const date = changelog?.timestampPublished ? new Date(changelog.timestampPublished * 1000).toLocaleDateString() : ''; + const date = changelog?.timestamp ? new Date(changelog.timestamp * 1000).toLocaleDateString() : ''; return ( diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index a61dbcad..3c402a1c 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -13,7 +13,7 @@ export interface Changelog { export interface ChangelogVersion { htmlBody: string; title: string; - timestampPublished: number; + timestamp : number; version: string; } export class AutoUpdaterService { From 2403f02851d86a102e1ceea59ad4bfc87f0073a8 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 8 Jan 2024 10:18:16 +0100 Subject: [PATCH 69/78] Remove unnecessary blank line in handleVersionClick function --- src/renderer/pages/settings-page.component.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index f76edab1..5e73c1ac 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -147,7 +147,6 @@ export function SettingsPage() { const handleVersionClick = async () => { let isChangelogResolved = false; - await autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) .then(() => { setIsChangelogAvailable(() => true); From c62896f0781288499c155485a7164c7b4292d8d9 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 8 Jan 2024 15:05:42 +0100 Subject: [PATCH 70/78] fix timeout and indent on handleVersionClick --- .../pages/settings-page.component.tsx | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 5e73c1ac..c30e51f4 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -147,18 +147,17 @@ export function SettingsPage() { const handleVersionClick = async () => { let isChangelogResolved = false; - await autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) - .then(() => { - setIsChangelogAvailable(() => true); - }) - .catch(() => { - setIsChangelogAvailable(() => false); - }) - .finally(() => { isChangelogResolved = true; }); + const timeoutId = setTimeout(() => setChanglogsLoading(() => !isChangelogResolved), 100); + + await autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) + .then(() => { + setIsChangelogAvailable(() => true); + }) + .catch(() => { + setIsChangelogAvailable(() => false); + }) + .finally(() => { isChangelogResolved = true; }); - const timeoutId = setTimeout(() => { - setChanglogsLoading(() => !isChangelogResolved); - }, 100); setChanglogsLoading(() => false); clearTimeout(timeoutId); }; From 05154f577ff8447d440dd94705e298410a6a62d3 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 8 Jan 2024 15:32:01 +0100 Subject: [PATCH 71/78] spam mails :eyes: --- assets/jsons/changelogs.json | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/assets/jsons/changelogs.json b/assets/jsons/changelogs.json index 2449caa0..0967ef42 100644 --- a/assets/jsons/changelogs.json +++ b/assets/jsons/changelogs.json @@ -1,14 +1 @@ -{ - "27.1.3" : { - "title" : "What's News ?", - "htmlBody" : "

Features

  • Beat Saber versions now automatically sync with LIV #320
  • Use ArcViewer to preview maps #312

Fixes

  • SteamVR backup folder is now restored when disabling FPFC Mode #314
  • OneClick installs now correctly place contents in user-defined symlinks #311
  • Currently downloading Beat Saber version no longer disappears on uninstalling a version #307
  • Add 'no-yeet' argument when launching Beat Saber to prevent mods to be removed if 'UserData' is linked #321
  • Fixed a rare bug that prevent BSManager from launching due to a missing DLL #328
  • Increase the SteamVR restore timeout to prevent it from launching in FPFC Mode #330

Other changes

  • Improved Spanish translation #309 (Thanks to @GabiRP)
  • For new installations, the default folder for BSManager contents has been moved from 'Documents' to the 'User' directory to avoid OneDrive conflicts #319
", - "timestamp " : "1700788913", - "version" : "1.7.0" - }, - "1.0.0" : { - "title" : "First Release", - "htmlBody" : "

First release of the app.

", - "timestamp " : "1700788913", - "version" : "1.0.0" - } -} +{} From 1fd185fe88406dbde64f0071c4211a008a58288e Mon Sep 17 00:00:00 2001 From: Shidorien Date: Wed, 10 Jan 2024 21:57:45 +0100 Subject: [PATCH 72/78] Complete Review change --- src/renderer/pages/settings-page.component.tsx | 2 +- src/renderer/services/auto-updater.service.ts | 4 ++-- src/renderer/windows/App.tsx | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index c30e51f4..47ea95ed 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -467,7 +467,7 @@ export function SettingsPage() {
- +
diff --git a/src/renderer/services/auto-updater.service.ts b/src/renderer/services/auto-updater.service.ts index 3c402a1c..d4de5b2e 100644 --- a/src/renderer/services/auto-updater.service.ts +++ b/src/renderer/services/auto-updater.service.ts @@ -67,8 +67,8 @@ export class AutoUpdaterService { return this.configurationService.get("last-app-version"); } - public setLastAppVersion(){ - lastValueFrom(this.getAppVersion()).then(v => this.configurationService.set("last-app-version", v)); + public setLastAppVersion(value : string){ + this.configurationService.set("last-app-version", value); } private async getChangelog(): Promise { diff --git a/src/renderer/windows/App.tsx b/src/renderer/windows/App.tsx index 57367f95..6ea15823 100644 --- a/src/renderer/windows/App.tsx +++ b/src/renderer/windows/App.tsx @@ -47,8 +47,8 @@ export default function App() { const appVersion = await lastValueFrom(autoUpdater.getAppVersion()); const lastAppVersion = autoUpdater.getLastAppVersion(); - autoUpdater.setLastAppVersion(); - + autoUpdater.setLastAppVersion(appVersion); + if (lastAppVersion && gt(appVersion, lastAppVersion)) { autoUpdater.showChangelog(appVersion); } From d9f025e28bce9625fe13f7fe7dd9b07ba7e17192 Mon Sep 17 00:00:00 2001 From: shidorien Date: Mon, 5 Feb 2024 11:14:32 +0100 Subject: [PATCH 73/78] Update translation strings for "not-found" in multiple languages --- assets/jsons/translations/de.json | 2 +- assets/jsons/translations/en.json | 2 +- assets/jsons/translations/es.json | 2 +- assets/jsons/translations/fr.json | 2 +- assets/jsons/translations/ja.json | 2 +- assets/jsons/translations/ru.json | 2 +- assets/jsons/translations/zh-tw.json | 2 +- assets/jsons/translations/zh.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json index dbbe2329..746ed508 100644 --- a/assets/jsons/translations/de.json +++ b/assets/jsons/translations/de.json @@ -194,7 +194,7 @@ }, "changelogs": { "open" : "🚀 Neues im Changelog entdecken!", - "not-found": "😕 Hoppla, kein Changelog zu sehen!" + "not_founds": "😕 Hoppla, kein Changelog zu sehen!" } } }, diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json index 5f669d62..03a77889 100644 --- a/assets/jsons/translations/en.json +++ b/assets/jsons/translations/en.json @@ -194,7 +194,7 @@ }, "changelogs": { "open" : "🚀 Check Out the Changelog!", - "not-found": "😕 Oops, No Changelog Here!" + "not-founds": "😕 Oops, No Changelog Here!" } } }, diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json index 019d4020..bbade95a 100644 --- a/assets/jsons/translations/es.json +++ b/assets/jsons/translations/es.json @@ -194,7 +194,7 @@ }, "changelogs": { "open" : "🚀 ¡Descubre lo nuevo en el Changelog!", - "not-found": "😕 Uy, ¡Changelog no encontrado!" + "not_founds": "😕 Uy, ¡Changelog no encontrado!" } } }, diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json index 76ea9252..c63c26b4 100644 --- a/assets/jsons/translations/fr.json +++ b/assets/jsons/translations/fr.json @@ -194,7 +194,7 @@ }, "changelogs": { "open" : "🚀 Jetez un œil au Changelog !", - "not-found": "😕 Oups, Changelog introuvable !" + "not_founds": "😕 Oups, Changelog introuvable !" } } }, diff --git a/assets/jsons/translations/ja.json b/assets/jsons/translations/ja.json index 6df738b2..750ff767 100644 --- a/assets/jsons/translations/ja.json +++ b/assets/jsons/translations/ja.json @@ -194,7 +194,7 @@ }, "changelogs": { "open" : "🚀 チェンジログを覗いてみて!", - "not-found": "😕 あれ、チェンジログが見当たらない!" + "not_founds": "😕 あれ、チェンジログが見当たらない!" } } }, diff --git a/assets/jsons/translations/ru.json b/assets/jsons/translations/ru.json index 3bc6cf26..2f36a28e 100644 --- a/assets/jsons/translations/ru.json +++ b/assets/jsons/translations/ru.json @@ -194,7 +194,7 @@ }, "changelogs": { "open" : "🚀 Изучаем Changelog!", - "not-found": "😕 Ой, Changelog нигде не видно!" + "not_founds": "😕 Ой, Changelog нигде не видно!" } } }, diff --git a/assets/jsons/translations/zh-tw.json b/assets/jsons/translations/zh-tw.json index 96cde310..a8f46018 100644 --- a/assets/jsons/translations/zh-tw.json +++ b/assets/jsons/translations/zh-tw.json @@ -194,7 +194,7 @@ }, "changelogs": { "open" : "🚀 探索更新日誌!", - "not-found": "😕 噢,找不到更新日誌!" + "not_founds": "😕 噢,找不到更新日誌!" } } }, diff --git a/assets/jsons/translations/zh.json b/assets/jsons/translations/zh.json index 243f29a5..e0574f62 100644 --- a/assets/jsons/translations/zh.json +++ b/assets/jsons/translations/zh.json @@ -194,7 +194,7 @@ }, "changelogs": { "open" : "🚀 探索更新日志!", - "not-found": "😕 哎呀,找不到更新日志!" + "not_founds": "😕 哎呀,找不到更新日志!" } } }, From 318a6b5afa0fc353bc1b94964a02bf677d6fb2cf Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Tue, 6 Feb 2024 22:30:08 +0100 Subject: [PATCH 74/78] add patreon --- assets/jsons/patreons.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/assets/jsons/patreons.json b/assets/jsons/patreons.json index a6eaed66..dba45720 100644 --- a/assets/jsons/patreons.json +++ b/assets/jsons/patreons.json @@ -73,5 +73,11 @@ }, { "username": "Minescence" + }, + { + "username": "Finlay" + }, + { + "username": "mereknom" } ] From 3f37c2ee3469159c5308934930bf897755613152 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Mon, 12 Feb 2024 14:19:59 +0100 Subject: [PATCH 75/78] [bugfix] Fixed unable to launch downgraded oculus version when backup already exists --- src/main/services/bs-launcher/oculus-launcher.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/services/bs-launcher/oculus-launcher.service.ts b/src/main/services/bs-launcher/oculus-launcher.service.ts index b71cd2a9..d6edc3ed 100644 --- a/src/main/services/bs-launcher/oculus-launcher.service.ts +++ b/src/main/services/bs-launcher/oculus-launcher.service.ts @@ -11,6 +11,7 @@ import { AbstractLauncherService } from "./abstract-launcher.service"; import { taskRunning } from "../../helpers/os.helpers"; import { CustomError } from "../../../shared/models/exceptions/custom-error.class"; import { InstallationLocationService } from "../installation-location.service"; +import { ensurePathNotAlreadyExist } from "../../helpers/fs.helpers"; export class OculusLauncherService extends AbstractLauncherService implements StoreLauncherInterface { @@ -86,7 +87,7 @@ export class OculusLauncherService extends AbstractLauncherService implements St private async backupOriginalBeatSaber(): Promise{ const bsFolder = await this.oculus.getGameFolder(OCULUS_BS_DIR); if(!bsFolder){ return; } - const backupPath = path.join(bsFolder, "..", OCULUS_BS_BACKUP_DIR); + const backupPath = await ensurePathNotAlreadyExist(path.join(bsFolder, "..", OCULUS_BS_BACKUP_DIR)); log.info("Backing up original Beat Saber", bsFolder, backupPath); return rename(bsFolder, backupPath); } From 0f0f7c1abb509da7c3df37204697fd8e841aba6f Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 12 Feb 2024 14:38:29 +0100 Subject: [PATCH 76/78] Remove unnecessary line in handleVersionClick function --- src/renderer/pages/settings-page.component.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 47ea95ed..5ca7155b 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -146,7 +146,6 @@ export function SettingsPage() { const handleVersionClick = async () => { let isChangelogResolved = false; - const timeoutId = setTimeout(() => setChanglogsLoading(() => !isChangelogResolved), 100); await autoUpdater.showChangelog(await lastValueFrom(autoUpdater.getAppVersion())) From 14a65f1d69c3bbf3f7e6f8db751d678b136b96b9 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 12 Feb 2024 14:52:17 +0100 Subject: [PATCH 77/78] Update dompurify version to 3.0.8 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2b180ca..de877899 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "color": "^4.2.3", "crypto-js": "^4.2.0", "dateformat": "^5.0.3", - "dompurify": "^3.0.6", + "dompurify": "^3.0.8", "dot-prop": "^8.0.2", "electron-debug": "^3.2.0", "electron-log": "^4.4.8", @@ -6531,9 +6531,9 @@ } }, "node_modules/dompurify": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", - "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.8.tgz", + "integrity": "sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==" }, "node_modules/domutils": { "version": "2.8.0", diff --git a/package.json b/package.json index cc660ce2..d55f2461 100644 --- a/package.json +++ b/package.json @@ -244,7 +244,7 @@ "color": "^4.2.3", "crypto-js": "^4.2.0", "dateformat": "^5.0.3", - "dompurify": "^3.0.6", + "dompurify": "^3.0.8", "dot-prop": "^8.0.2", "electron-debug": "^3.2.0", "electron-log": "^4.4.8", From d7c43a2ba9ae367b1ff8bbf1032a6d2322f09b2a Mon Sep 17 00:00:00 2001 From: Shidorien Date: Mon, 12 Feb 2024 14:54:19 +0100 Subject: [PATCH 78/78] Add query-process package --- package-lock.json | 155 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 156 insertions(+) diff --git a/package-lock.json b/package-lock.json index de877899..907a8a88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,7 @@ "node-stream-zip": "^1.15.0", "pako": "^2.1.0", "qrcode.react": "^3.1.0", + "query-process": "^0.0.3", "react": "^18.2.0", "react-colorful": "^5.6.1", "react-dom": "^18.2.0", @@ -14575,6 +14576,160 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/query-process": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process/-/query-process-0.0.3.tgz", + "integrity": "sha512-6WRue0P+c84abP0o8MkDvigoS/gkkJzsSBt10PsOoBkP7Yodo4DducFsn9XyS4S+LuVYPAE5Hr4+kVNR5Onykg==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "query-process-android-arm-eabi": "0.0.3", + "query-process-android-arm64": "0.0.3", + "query-process-linux-arm-gnueabihf": "0.0.3", + "query-process-linux-arm64-gnu": "0.0.3", + "query-process-linux-arm64-musl": "0.0.3", + "query-process-linux-x64-gnu": "0.0.3", + "query-process-linux-x64-musl": "0.0.3", + "query-process-win32-arm64-msvc": "0.0.3", + "query-process-win32-x64-msvc": "0.0.3" + } + }, + "node_modules/query-process-android-arm-eabi": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-android-arm-eabi/-/query-process-android-arm-eabi-0.0.3.tgz", + "integrity": "sha512-NB+9T+/poBcygDiG+7d2lJSeioP5ZyLT0HwUBdnLgNWvNCpzbJxydup1SLpnt5G2NF6nlTgbUZlH4hvxY7t/bw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/query-process-android-arm64": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-android-arm64/-/query-process-android-arm64-0.0.3.tgz", + "integrity": "sha512-TiAw2yO62vQzM0s02471LToHyUs/PRkLGGlA715z10BPIM5NckzIe245AI45CDyH6tE/3nVHUd0LX/dfjQtTcw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/query-process-linux-arm-gnueabihf": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-linux-arm-gnueabihf/-/query-process-linux-arm-gnueabihf-0.0.3.tgz", + "integrity": "sha512-w7NLHBKt7qselCDoh/PVWyeuEb2NiiDDf1A9UB4K3Ns/H24hK3NbfMMBm8mCFxUnFUqoVX8O+VMs7dD/FNlTxA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/query-process-linux-arm64-gnu": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-linux-arm64-gnu/-/query-process-linux-arm64-gnu-0.0.3.tgz", + "integrity": "sha512-nrPHjnSqCBuuN7IZkZWOnBpiJjyKOjfpT0Xt2EjSGp+I7C0CHbnhCL/vG1hBzaWZn0mxJ5nf0c5N0Fja7krnpQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/query-process-linux-arm64-musl": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-linux-arm64-musl/-/query-process-linux-arm64-musl-0.0.3.tgz", + "integrity": "sha512-vk8xMYTnS1PRKhwJgqLKyBAGIFP2CYZW2BsaKuNgQKUrDv7NnBaG7yukZT8niHNO1ycSrFpR/xqeJ8R23hO07A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/query-process-linux-x64-gnu": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-linux-x64-gnu/-/query-process-linux-x64-gnu-0.0.3.tgz", + "integrity": "sha512-j1tGcNnGyVCABJ1PHZD1gKuyuomNzsPow3NDuZzUGjPqvKu67RsmKJJJOhMyT1SvUkcqdLFdtS1KTD20I4GS5Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/query-process-linux-x64-musl": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-linux-x64-musl/-/query-process-linux-x64-musl-0.0.3.tgz", + "integrity": "sha512-AOGrrI/Qcb30iKFstiW60zNG/HQevCY0Q38eMHGd7LrBZ5sEN7NzZOjzKp43KeNHejuZBDMxf0gdGAqDznOAng==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/query-process-win32-arm64-msvc": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-win32-arm64-msvc/-/query-process-win32-arm64-msvc-0.0.3.tgz", + "integrity": "sha512-LHvxbzMFwPPUXHe4bDCAqs1bYbp8j0bMW8XyJGPZnIYrnwHz6g8VE5WQEtXQxSznsbfVxAKJXUtn088EjDVazw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/query-process-win32-x64-msvc": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/query-process-win32-x64-msvc/-/query-process-win32-x64-msvc-0.0.3.tgz", + "integrity": "sha512-LfHAKmfqyKCgl9K+sTz0KyNwMwB79VcXZUy/Et9iQKLuZt7PDYpHWcFdhrfHw2qqIdKWTED8KmnmsOLhUn/2OA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "funding": [ diff --git a/package.json b/package.json index d55f2461..e1a780f8 100644 --- a/package.json +++ b/package.json @@ -262,6 +262,7 @@ "node-stream-zip": "^1.15.0", "pako": "^2.1.0", "qrcode.react": "^3.1.0", + "query-process": "^0.0.3", "react": "^18.2.0", "react-colorful": "^5.6.1", "react-dom": "^18.2.0",