From e39366252ac16d3a73399a3e4cce7598f39517ea Mon Sep 17 00:00:00 2001 From: MathieuG-P Date: Fri, 22 Jul 2022 21:20:35 +0200 Subject: [PATCH] use theme colors for progress bars --- .../nav-bar/bs-version-item.component.tsx | 5 ++++- .../components/nav-bar/nav-bar.component.css | 6 ----- .../bsm-progress-bar.component.tsx | 5 ++++- src/renderer/hooks/use-theme-color.hook.ts | 22 +++++++++++++++++++ src/renderer/index.css | 1 - 5 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 src/renderer/hooks/use-theme-color.hook.ts diff --git a/src/renderer/components/nav-bar/bs-version-item.component.tsx b/src/renderer/components/nav-bar/bs-version-item.component.tsx index fa1c90e0..7b2cadb0 100644 --- a/src/renderer/components/nav-bar/bs-version-item.component.tsx +++ b/src/renderer/components/nav-bar/bs-version-item.component.tsx @@ -11,6 +11,7 @@ import { BSVersionManagerService } from "renderer/services/bs-version-manager.se import { BsmIcon } from "../svgs/bsm-icon.component"; import { ReactFitty } from "react-fitty"; import { DefaultConfigKey } from 'renderer/config/default-configuration.config'; +import { useThemeColor } from 'renderer/hooks/use-theme-color.hook'; export function BsVersionItem(props: {version: BSVersion}) { @@ -25,6 +26,8 @@ export function BsVersionItem(props: {version: BSVersion}) { const [downloading, setDownloading] = useState(false); const [downloadPercent, setDownloadPercent] = useState(0); const [color, setColor] = useState(""); + const firstColor = useThemeColor("first-color"); + const secondColor = useThemeColor("second-color"); const isActive = (): boolean => { return props.version?.BSVersion === state?.BSVersion && props?.version.steam === state?.steam && props?.version.name === state?.name; @@ -74,7 +77,7 @@ export function BsVersionItem(props: {version: BSVersion}) { return (
-
+
{props.version.steam && } diff --git a/src/renderer/components/nav-bar/nav-bar.component.css b/src/renderer/components/nav-bar/nav-bar.component.css index 5cd7d329..572602ab 100644 --- a/src/renderer/components/nav-bar/nav-bar.component.css +++ b/src/renderer/components/nav-bar/nav-bar.component.css @@ -26,12 +26,6 @@ scrollbar-gutter: stable; } -.nav-item-download > .progress{ - background-size: 500% !important; - background: linear-gradient(90deg, rgb(62, 51, 255), rgb(255, 0, 0), rgb(62, 51, 255), rgb(255, 0, 0)); - animation: rainbow 2s linear 0s infinite; -} - .nav-item-download > .wrapper > a > *{ animation: opacity 3s ease-in-out 0s infinite; } diff --git a/src/renderer/components/progress-bar/bsm-progress-bar.component.tsx b/src/renderer/components/progress-bar/bsm-progress-bar.component.tsx index 754f95f4..6f4ecb42 100644 --- a/src/renderer/components/progress-bar/bsm-progress-bar.component.tsx +++ b/src/renderer/components/progress-bar/bsm-progress-bar.component.tsx @@ -3,6 +3,7 @@ import { AnimatePresence, motion } from "framer-motion"; import BeatRunningImg from "../../../../assets/images/apngs/beat-running.png" import BeatWaitingImg from "../../../../assets/images/apngs/beat-waiting.png" import { useObservable } from "renderer/hooks/use-observable.hook"; +import { useThemeColor } from "renderer/hooks/use-theme-color.hook"; export function BsmProgressBar() { @@ -10,6 +11,8 @@ export function BsmProgressBar() { const progress= useObservable(progressBarService.progression$); const visible = useObservable(progressBarService.visible$); + const firstColor = useThemeColor("first-color"); + const secondColor = useThemeColor("second-color"); return ( { visible && @@ -18,7 +21,7 @@ export function BsmProgressBar() { { !!progress && ( <>
-
+
{`${Math.floor(progress)}%`} diff --git a/src/renderer/hooks/use-theme-color.hook.ts b/src/renderer/hooks/use-theme-color.hook.ts new file mode 100644 index 00000000..ac19bb68 --- /dev/null +++ b/src/renderer/hooks/use-theme-color.hook.ts @@ -0,0 +1,22 @@ +import { useEffect, useState } from "react"; +import { ConfigurationService } from "renderer/services/configuration.service"; + +export function useThemeColor(themeColor: "first-color"|"second-color"){ + const configService = ConfigurationService.getInstance(); + + const [color, setColor] = useState(""); + + useEffect(() => { + const obs = configService.watch(themeColor) + obs.subscribe(color => { + setColor(color); + }) + return () => { + configService.stopWatch(color, obs); + obs.unsubscribe(); + } + }, []); + + return color; + +} \ No newline at end of file diff --git a/src/renderer/index.css b/src/renderer/index.css index cdc72454..2aff339c 100644 --- a/src/renderer/index.css +++ b/src/renderer/index.css @@ -25,7 +25,6 @@ .download-progress{ background-size: 500% !important; - background: linear-gradient(90deg, rgb(62, 51, 255), rgb(255, 0, 0), rgb(62, 51, 255), rgb(255, 0, 0)); animation: rainbow 2s linear 0s infinite; }