From a5a6a8b1a64a4344bbd0a9dc51c0619688b680bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Papie=C5=BC?= Date: Mon, 24 Feb 2025 15:52:35 +0100 Subject: [PATCH 1/4] fix: exclude gpu devices while mining --- .../Settings/sections/mining/GpuDevices.tsx | 9 ++------- src/store/useMiningStore.ts | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx index 88dfc445c..db7e8cb12 100644 --- a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx +++ b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx @@ -19,14 +19,9 @@ import { useMiningMetricsStore } from '@app/store/useMiningMetricsStore.ts'; const GpuDevices = () => { const { t } = useTranslation(['common', 'settings'], { useSuspense: false }); const miningAllowed = useAppStateStore((s) => s.setupComplete); - const isCPUMining = useMiningMetricsStore((s) => s.cpu_mining_status.is_mining); - const isGPUMining = useMiningMetricsStore((s) => s.gpu_mining_status.is_mining); const gpuDevices = useMiningMetricsStore((s) => s.gpu_devices); - const miningInitiated = useMiningStore((s) => s.miningInitiated); const isGpuMiningEnabled = useAppConfigStore((s) => s.gpu_mining_enabled); - const isMiningInProgress = isCPUMining || isGPUMining; - const isDisabled = isMiningInProgress || miningInitiated || !miningAllowed || !isGpuMiningEnabled; const excludedDevices = useMiningStore((s) => s.excludedGpuDevices); const setExcludedDevice = useMiningStore((s) => s.setExcludedGpuDevice); @@ -69,8 +64,8 @@ const GpuDevices = () => { handleSetExcludedDevice(i)} /> diff --git a/src/store/useMiningStore.ts b/src/store/useMiningStore.ts index 8a6a0a525..4fd75fa21 100644 --- a/src/store/useMiningStore.ts +++ b/src/store/useMiningStore.ts @@ -84,12 +84,17 @@ export const useMiningStore = create()((set) => ({ }; }), setExcludedGpuDevice: async (excludedGpuDevices) => { - const hardware = useMiningMetricsStore.getState().gpu_devices; - const totalGpuDevices = hardware.length; - console.error('Excluded GPU devices: ', excludedGpuDevices); - console.error('Hardware: ', hardware); + const metricsState = useMiningMetricsStore.getState(); + + if (metricsState.cpu_mining_status.is_mining || metricsState.gpu_mining_status.is_mining) { + console.info('Pausing mining...'); + await pauseMining(); + } + try { await invoke('set_excluded_gpu_devices', { excludedGpuDevices }); + + const totalGpuDevices = useMiningMetricsStore.getState().gpu_devices?.length || 0; if (excludedGpuDevices.length === totalGpuDevices) { const appConfigStore = useAppConfigStore.getState(); appConfigStore.setGpuMiningEnabled(false); @@ -101,5 +106,10 @@ export const useMiningStore = create()((set) => ({ appStateStore.setError(e as string); set({ excludedGpuDevices: undefined }); } + + if (useMiningStore.getState().miningInitiated) { + console.info('Restarting mining...'); + await startMining(); + } }, })); From b5573a80fdfcec2f38886b112903248198345785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Papie=C5=BC?= Date: Mon, 24 Feb 2025 16:28:14 +0100 Subject: [PATCH 2/4] disable when loading --- .../floating/Settings/sections/mining/GpuDevices.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx index db7e8cb12..a6ef75961 100644 --- a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx +++ b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx @@ -1,4 +1,4 @@ -import { useCallback } from 'react'; +import { useCallback, useState } from 'react'; import { useAppStateStore } from '@app/store/appStateStore.ts'; import { useMiningStore } from '@app/store/useMiningStore.ts'; @@ -17,6 +17,7 @@ import { useAppConfigStore } from '@app/store/useAppConfigStore'; import { useMiningMetricsStore } from '@app/store/useMiningMetricsStore.ts'; const GpuDevices = () => { + const [isLoading, setIsLoading] = useState(false); const { t } = useTranslation(['common', 'settings'], { useSuspense: false }); const miningAllowed = useAppStateStore((s) => s.setupComplete); const gpuDevices = useMiningMetricsStore((s) => s.gpu_devices); @@ -27,6 +28,7 @@ const GpuDevices = () => { const handleSetExcludedDevice = useCallback( async (device: number) => { + setIsLoading(true); if (!excludedDevices.includes(device)) { excludedDevices.push(device); await setExcludedDevice([...excludedDevices]); @@ -34,6 +36,7 @@ const GpuDevices = () => { excludedDevices.splice(excludedDevices.indexOf(device), 1); await setExcludedDevice([...excludedDevices]); } + setIsLoading(false); }, [excludedDevices, setExcludedDevice] ); @@ -65,7 +68,7 @@ const GpuDevices = () => { handleSetExcludedDevice(i)} /> From 8b216bbbd2fb41e43fc5c88ac1026be7fa6ee212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Papie=C5=BC?= Date: Mon, 24 Feb 2025 16:51:37 +0100 Subject: [PATCH 3/4] isExcludingGpuDevices inside store --- .../floating/Settings/sections/mining/GpuDevices.tsx | 6 ++---- src/store/useMiningStore.ts | 4 ++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx index a6ef75961..61d5d51a7 100644 --- a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx +++ b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx @@ -17,7 +17,6 @@ import { useAppConfigStore } from '@app/store/useAppConfigStore'; import { useMiningMetricsStore } from '@app/store/useMiningMetricsStore.ts'; const GpuDevices = () => { - const [isLoading, setIsLoading] = useState(false); const { t } = useTranslation(['common', 'settings'], { useSuspense: false }); const miningAllowed = useAppStateStore((s) => s.setupComplete); const gpuDevices = useMiningMetricsStore((s) => s.gpu_devices); @@ -25,10 +24,10 @@ const GpuDevices = () => { const isGpuMiningEnabled = useAppConfigStore((s) => s.gpu_mining_enabled); const excludedDevices = useMiningStore((s) => s.excludedGpuDevices); const setExcludedDevice = useMiningStore((s) => s.setExcludedGpuDevice); + const isExcludingGpuDevices = useMiningStore((s) => s.isExcludingGpuDevices); const handleSetExcludedDevice = useCallback( async (device: number) => { - setIsLoading(true); if (!excludedDevices.includes(device)) { excludedDevices.push(device); await setExcludedDevice([...excludedDevices]); @@ -36,7 +35,6 @@ const GpuDevices = () => { excludedDevices.splice(excludedDevices.indexOf(device), 1); await setExcludedDevice([...excludedDevices]); } - setIsLoading(false); }, [excludedDevices, setExcludedDevice] ); @@ -68,7 +66,7 @@ const GpuDevices = () => { handleSetExcludedDevice(i)} /> diff --git a/src/store/useMiningStore.ts b/src/store/useMiningStore.ts index 4fd75fa21..698c0990c 100644 --- a/src/store/useMiningStore.ts +++ b/src/store/useMiningStore.ts @@ -12,6 +12,7 @@ interface State { miningInitiated: boolean; miningControlsEnabled: boolean; isChangingMode: boolean; + isExcludingGpuDevices: boolean; excludedGpuDevices: number[]; counter: number; customLevelsDialogOpen: boolean; @@ -35,6 +36,7 @@ const initialState: State = { hashrateReady: false, miningInitiated: false, isChangingMode: false, + isExcludingGpuDevices: false, miningControlsEnabled: true, network: 'unknown', excludedGpuDevices: [], @@ -84,6 +86,7 @@ export const useMiningStore = create()((set) => ({ }; }), setExcludedGpuDevice: async (excludedGpuDevices) => { + set({ isExcludingGpuDevices: true }); const metricsState = useMiningMetricsStore.getState(); if (metricsState.cpu_mining_status.is_mining || metricsState.gpu_mining_status.is_mining) { @@ -111,5 +114,6 @@ export const useMiningStore = create()((set) => ({ console.info('Restarting mining...'); await startMining(); } + set({ isExcludingGpuDevices: false }); }, })); From 7442c1f06b945c715c9d1c403d744c5dedb82d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Papie=C5=BC?= Date: Mon, 24 Feb 2025 16:57:24 +0100 Subject: [PATCH 4/4] remove unused useState --- src/containers/floating/Settings/sections/mining/GpuDevices.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx index 61d5d51a7..51f160b09 100644 --- a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx +++ b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx @@ -1,4 +1,4 @@ -import { useCallback, useState } from 'react'; +import { useCallback } from 'react'; import { useAppStateStore } from '@app/store/appStateStore.ts'; import { useMiningStore } from '@app/store/useMiningStore.ts';