From a20c73d0e98c9e365d87ad4cc18ce67565f4462f Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Sat, 27 Jul 2024 15:51:06 +0200 Subject: [PATCH] [qol] dont reinstall all mods by default (not finnished) --- .../shared/bsm-button.component.tsx | 2 +- .../shared/bsm-dropdown-button.component.tsx | 20 ++++++++++++++----- .../slides/mods/mods-grid.component.tsx | 6 +++--- .../slides/mods/mods-slide.component.tsx | 16 ++++++++++----- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/renderer/components/shared/bsm-button.component.tsx b/src/renderer/components/shared/bsm-button.component.tsx index 2d9802d6..f89e7b26 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" | "none"; +export type BsmButtonType = "primary" | "secondary" | "success" | "cancel" | "error" | "none"; type Props = { className?: string; diff --git a/src/renderer/components/shared/bsm-dropdown-button.component.tsx b/src/renderer/components/shared/bsm-dropdown-button.component.tsx index eceef67a..805c5041 100644 --- a/src/renderer/components/shared/bsm-dropdown-button.component.tsx +++ b/src/renderer/components/shared/bsm-dropdown-button.component.tsx @@ -1,9 +1,10 @@ import { forwardRef, LegacyRef, useImperativeHandle, useRef, useState } from "react"; import { BsmIconType, BsmIcon } from "../svgs/bsm-icon.component"; -import { BsmButton } from "./bsm-button.component"; +import { BsmButton, BsmButtonType } from "./bsm-button.component"; import { useTranslation } from "renderer/hooks/use-translation.hook"; import { AnimatePresence } from "framer-motion"; import { useClickOutside } from "renderer/hooks/use-click-outside.hook"; +import { cn } from "renderer/helpers/css-class.helpers"; export interface DropDownItem { text: string; @@ -11,8 +12,17 @@ export interface DropDownItem { onClick?: () => void; } +type ClassNames = { + mainContainer?: string; + button?: string; + itemsContainer?: string; + iconClassName?: string; +} + type Props = { className?: string; + classNames?: ClassNames; + buttonColor?: BsmButtonType; items?: DropDownItem[]; align?: "left" | "right" | "center"; withBar?: boolean; @@ -24,7 +34,7 @@ type Props = { textClassName?: string; }; -export const BsmDropdownButton = forwardRef(({ className, items, align, withBar = true, icon = "settings", buttonClassName, menuTranslationY, children, text, textClassName }: Props, fowardRed) => { +export const BsmDropdownButton = forwardRef(({ className, classNames, buttonColor, items, align, withBar = true, icon = "settings", buttonClassName, menuTranslationY, children, text, textClassName }: Props, fowardRed) => { const [expanded, setExpanded] = useState(false); const t = useTranslation(); const ref = useRef(fowardRed); @@ -63,9 +73,9 @@ export const BsmDropdownButton = forwardRef(({ className, items, align, withBar })(); return ( -
} className={className}> - setExpanded(!expanded)} className={buttonClassName ?? defaultButtonClassName} icon={icon} active={expanded} textClassName={textClassName} onClickOutside={handleClickOutside} withBar={withBar} text={text} /> -
+
} className={cn(className, classNames?.mainContainer)}> + setExpanded(!expanded)} className={cn(buttonClassName ?? defaultButtonClassName, classNames?.button)} icon={icon} active={expanded} textClassName={textClassName} onClickOutside={handleClickOutside} withBar={withBar} text={text} typeColor={buttonColor} iconClassName={classNames?.iconClassName}/> +
{items?.map( i => i && ( diff --git a/src/renderer/components/version-viewer/slides/mods/mods-grid.component.tsx b/src/renderer/components/version-viewer/slides/mods/mods-grid.component.tsx index b4ed6e82..206941f8 100644 --- a/src/renderer/components/version-viewer/slides/mods/mods-grid.component.tsx +++ b/src/renderer/components/version-viewer/slides/mods/mods-grid.component.tsx @@ -12,7 +12,7 @@ import { useService } from "renderer/hooks/use-service.hook"; type Props = { modsMap: Map; installed: Map; modsSelected: Mod[]; onModChange: (selected: boolean, mod: Mod) => void; moreInfoMod?: Mod; onWantInfos: (mod: Mod) => void }; export function ModsGrid({ modsMap, installed, modsSelected, onModChange, moreInfoMod, onWantInfos }: Props) { - + const pageState = useService(PageStateService); const modsManager = useService(BsModsManagerService); @@ -61,8 +61,8 @@ export function ModsGrid({ modsMap, installed, modsSelected, onModChange, moreIn return ( modsMap && (
- - + + {filterEnabled ? handleInput(e.target.value)} /> : {t("pages.version-viewer.mods.mods-grid.header-bar.name")}} diff --git a/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx b/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx index cc773abb..f708e042 100644 --- a/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx +++ b/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx @@ -35,6 +35,7 @@ export function ModsSlide({ version, onDisclamerDecline }: { version: BSVersion; const [modsInstalled, setModsInstalled] = useState(null as Map); const [modsSelected, setModsSelected] = useState([] as Mod[]); const [moreInfoMod, setMoreInfoMod] = useState(null as Mod); + const [reinstallAllMods, setReinstallAllMods] = useState(false); const isOnline = useObservable(() => os.isOnline$); const installing = useObservable(() => modsManager.isInstalling$); @@ -80,6 +81,7 @@ export function ModsSlide({ version, onDisclamerDecline }: { version: BSVersion; if (installing) { return; } + const modsToInstall = modsSelected.filter(mod => { const corespondingMod = modsAvailable.get(mod.category).find(availabeMod => availabeMod._id === mod._id); const installedMod = modsInstalled.get(mod.category)?.find(installedMod => installedMod.name === mod.name); @@ -186,13 +188,17 @@ export function ModsSlide({ version, onDisclamerDecline }: { version: BSVersion; } return ( <> -
+
-
+
-
- +
+
+ + +
+ setReinstallAllMods(prev => !prev)}/>
@@ -201,7 +207,7 @@ export function ModsSlide({ version, onDisclamerDecline }: { version: BSVersion; return (
-
{renderContent()}
+
{renderContent()}
); }