From cab1fb93decc5d7553bc9775900ec391c644a7d0 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Sun, 5 Jan 2025 00:06:04 +0100 Subject: [PATCH] [feature] add checkbox to create a steam shortcut + fix create shortcut modal --- ...create-launch-shortcut-modal.component.tsx | 40 +++++++++++++------ .../pages/version-viewer.component.tsx | 2 +- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/renderer/components/modal/modal-types/create-launch-shortcut-modal.component.tsx b/src/renderer/components/modal/modal-types/create-launch-shortcut-modal.component.tsx index e38b35cf..108d07b0 100644 --- a/src/renderer/components/modal/modal-types/create-launch-shortcut-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/create-launch-shortcut-modal.component.tsx @@ -1,7 +1,7 @@ import { ModalComponent, ModalExitCode } from "renderer/services/modale.service" import { BSVersion } from "shared/bs-version.interface" import { BsmCheckbox } from "renderer/components/shared/bsm-checkbox.component"; -import { useTranslation } from "renderer/hooks/use-translation.hook"; +import { useTranslationV2 } from "renderer/hooks/use-translation.hook"; import { BsmButton } from "renderer/components/shared/bsm-button.component"; import { LaunchOption } from "shared/models/bs-launch"; import { useService } from "renderer/hooks/use-service.hook"; @@ -11,27 +11,37 @@ import { BsNoteFill } from "renderer/components/svgs/icons/bs-note-fill.componen import { useThemeColor } from "renderer/hooks/use-theme-color.hook"; import { ChevronTopIcon } from "renderer/components/svgs/icons/chevron-top-icon.component"; import Tippy from "@tippyjs/react"; +import { LaunchMod } from "shared/models/bs-launch/launch-option.interface"; -export const CreateLaunchShortcutModal: ModalComponent = ({resolver, options: {data}}) => { +export const CreateLaunchShortcutModal: ModalComponent<{ steamShortcut: boolean, launchOption: LaunchOption }, BSVersion> = ({resolver, options: {data}}) => { const bsLauncher = useService(BSLauncherService); - const t = useTranslation(); + const { text: t } = useTranslationV2(); const color = useThemeColor("second-color"); - const [launchOptions, setLaunchOptions] = useState(bsLauncher.getLaunchOptions(data)); - const [advanced, setAdvanced] = useState(!!launchOptions.additionalArgs?.length); - const [additionalArgsString, setAdditionalArgsString] = useState(launchOptions.additionalArgs?.join("; ") ?? ""); + const [launchOption, setLaunchOptions] = useState(bsLauncher.getLaunchOptions(data)); + const [advanced, setAdvanced] = useState(!!launchOption.additionalArgs?.length); + const [additionalArgsString, setAdditionalArgsString] = useState(launchOption.additionalArgs?.join("; ") ?? ""); + const [steamShortcut, setSteamShortcut] = useState(false); const completeModal = () => { if(advanced) { - launchOptions.additionalArgs = additionalArgsString.split(";").map(arg => arg.trim()).filter(arg => arg.length); + launchOption.additionalArgs = additionalArgsString.split(";").map(arg => arg.trim()).filter(arg => arg.length); } else { - launchOptions.additionalArgs = undefined; + launchOption.additionalArgs = undefined; } - resolver({exitCode: ModalExitCode.COMPLETED, data: launchOptions}); + resolver({exitCode: ModalExitCode.COMPLETED, data: { launchOption, steamShortcut }}); + } + + const toogleLaunchMod = (mod: LaunchMod, enabled: boolean) => { + if(enabled) { + setLaunchOptions(prev => ({...prev, launchMods: [...prev.launchMods, mod]})); + } else { + setLaunchOptions(prev => ({...prev, launchMods: prev.launchMods.filter(m => m !== mod)})); + } } return ( @@ -49,20 +59,20 @@ export const CreateLaunchShortcutModal: ModalComponent
{data.oculus !== true && (
- setLaunchOptions({...launchOptions, oculus: e})} /> + toogleLaunchMod("oculus", e)} /> {t("pages.version-viewer.launch-mods.oculus")}
)}
- setLaunchOptions({...launchOptions, desktop: e})} /> + toogleLaunchMod("fpfc", e)} /> {t("pages.version-viewer.launch-mods.desktop")}
- setLaunchOptions({...launchOptions, debug: e})} /> + toogleLaunchMod("debug", e)} /> {t("pages.version-viewer.launch-mods.debug")} @@ -87,6 +97,12 @@ export const CreateLaunchShortcutModal: ModalComponent
+ +
+ setSteamShortcut(() => e)} /> + Créer un raccourci Steam +
+
resolver({ exitCode: ModalExitCode.CANCELED })} withBar={false} text="misc.cancel" /> diff --git a/src/renderer/pages/version-viewer.component.tsx b/src/renderer/pages/version-viewer.component.tsx index 70b50922..9e41ca49 100644 --- a/src/renderer/pages/version-viewer.component.tsx +++ b/src/renderer/pages/version-viewer.component.tsx @@ -120,7 +120,7 @@ export function VersionViewer() { const { exitCode, data } = await modalService.openModal(CreateLaunchShortcutModal, {data: state}); if(exitCode !== ModalExitCode.COMPLETED){ return; } - lastValueFrom(bsLauncher.createLaunchShortcut(data)).then(() => { + lastValueFrom(bsLauncher.createLaunchShortcut(data.launchOption)).then(() => { notification.notifySuccess({ title: "notifications.create-launch-shortcut.success.title", desc: "notifications.create-launch-shortcut.success.msg"