diff --git a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx index 88dfc445c..51f160b09 100644 --- a/src/containers/floating/Settings/sections/mining/GpuDevices.tsx +++ b/src/containers/floating/Settings/sections/mining/GpuDevices.tsx @@ -19,16 +19,12 @@ 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); + const isExcludingGpuDevices = useMiningStore((s) => s.isExcludingGpuDevices); const handleSetExcludedDevice = useCallback( async (device: number) => { @@ -69,8 +65,8 @@ const GpuDevices = () => { handleSetExcludedDevice(i)} /> diff --git a/src/store/useMiningStore.ts b/src/store/useMiningStore.ts index 8a6a0a525..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,12 +86,18 @@ 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); + set({ isExcludingGpuDevices: true }); + 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 +109,11 @@ export const useMiningStore = create()((set) => ({ appStateStore.setError(e as string); set({ excludedGpuDevices: undefined }); } + + if (useMiningStore.getState().miningInitiated) { + console.info('Restarting mining...'); + await startMining(); + } + set({ isExcludingGpuDevices: false }); }, }));