From 45d3994053533a5b10aa7bce194edd75f8f9ccd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateus=20Felipe=20Gon=C3=A7alves?= Date: Wed, 27 Dec 2023 16:30:22 +0000 Subject: [PATCH] feat(config-menu): add "updaet trasition time" config --- src/components/config-menu/index.tsx | 26 +++++++++- .../options/random-volume-settings.tsx | 48 ++++++++++++++++--- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/src/components/config-menu/index.tsx b/src/components/config-menu/index.tsx index eb1ea181..e4426ffe 100644 --- a/src/components/config-menu/index.tsx +++ b/src/components/config-menu/index.tsx @@ -23,7 +23,21 @@ export function ConfigMenu() { const settingStates = { randomModeUpdateInterval: useState(randomModeStore.updateIntervalInMs), - randomModeUpdateSteps: useState(randomModeStore.updateSteps) + randomModeUpdateSteps: useState(randomModeStore.updateSteps), + randomModeTransitionTime: useState(randomModeStore.updateTransitionTimeInMs) + } + + const randomModeTransitionTime: Action = { + save: () => { + randomModeStore.setUpdateTransitionTime( + settingStates.randomModeTransitionTime[0] + ) + }, + reset: () => { + settingStates.randomModeTransitionTime[1]( + randomModeStore.updateTransitionTimeInMs + ) + } } const randomModeUpdateInterval: Action = { @@ -48,7 +62,11 @@ export function ConfigMenu() { ] } - const actionList: Action[] = [randomModeUpdateInterval, randomModeUpdateSteps] + const actionList: Action[] = [ + randomModeUpdateInterval, + randomModeUpdateSteps, + randomModeTransitionTime + ] function closeModal() { setIsOpen(false) @@ -98,6 +116,10 @@ export function ConfigMenu() { value: settingStates.randomModeUpdateSteps[0], set: settingStates.randomModeUpdateSteps[1] }} + updateTransitionTime={{ + value: settingStates.randomModeTransitionTime[0], + set: settingStates.randomModeTransitionTime[1] + }} /> diff --git a/src/components/config-menu/options/random-volume-settings.tsx b/src/components/config-menu/options/random-volume-settings.tsx index a3655305..67b67923 100644 --- a/src/components/config-menu/options/random-volume-settings.tsx +++ b/src/components/config-menu/options/random-volume-settings.tsx @@ -2,6 +2,10 @@ import { useThemeStore } from '~/stores/theme-store' import { settingRow, input } from './styles' type Props = { + updateTransitionTime: { + value: number + set: (newValue: number) => void + } updateInterval: { value: number set: (newValue: number) => void @@ -12,18 +16,36 @@ type Props = { } } -export function RandomVolumeSettings({ updateInterval, updateSteps }: Props) { +export function RandomVolumeSettings({ + updateInterval, + updateSteps, + updateTransitionTime +}: Props) { const theme = useThemeStore(state => state.theme) - const MIN_INTERVAL = 10 * 1000 // 10 seconds - const MAX_INTERVAL = 5 * 60 * 1000 // 5 minutes - function handleUpdateInterval(intervalInSec: number) { const intervalInMs = intervalInSec * 1000 - if (intervalInMs < MIN_INTERVAL) updateInterval.set(MIN_INTERVAL) - else if (intervalInMs > MAX_INTERVAL) updateInterval.set(MAX_INTERVAL) - else updateInterval.set(intervalInMs) + const MIN_INTERVAL = 10 * 1000 // 10 seconds + const MAX_INTERVAL = 5 * 60 * 1000 // 5 minutes + + updateInterval.set( + Math.min(Math.max(intervalInMs, MIN_INTERVAL), MAX_INTERVAL) + ) + } + + function handleTransitionTime(transitionTimeInSec: number) { + const transitionTimeInMs = transitionTimeInSec * 1000 + + const MAX_TRANSITION_TIME = updateInterval.value - 1000 + const MIN_TRANSITION_TIME = 1000 // 1 second + + updateTransitionTime.set( + Math.min( + Math.max(transitionTimeInMs, MIN_TRANSITION_TIME), + MAX_TRANSITION_TIME + ) + ) } return ( @@ -42,6 +64,18 @@ export function RandomVolumeSettings({ updateInterval, updateSteps }: Props) { className={input({ theme })} /> +
+ + handleTransitionTime(Number(e.target.value))} + className={input({ theme })} + /> +