From 138ef9f53f3674b2e983038842daa5ffb8eaa88a Mon Sep 17 00:00:00 2001 From: Maciej Kozuszek Date: Thu, 26 Sep 2024 16:32:37 +0200 Subject: [PATCH] Refactor binaries for clythor --- src-tauri/src/app_config.rs | 4 +++- src-tauri/src/binaries/binaries_list.rs | 8 ++++++++ src-tauri/src/binaries/binaries_resolver.rs | 13 +++++++++++++ src-tauri/src/clythor_adapter.rs | 6 ++++-- src/containers/Settings/MiningSettings.tsx | 2 ++ .../sections/experimental/RandomXCpuMiner.tsx | 9 ++++++--- src/hooks/useSetUp.ts | 2 ++ src/store/useMiningStore.ts | 3 ++- 8 files changed, 40 insertions(+), 7 deletions(-) diff --git a/src-tauri/src/app_config.rs b/src-tauri/src/app_config.rs index 6e09da961..e9d976f3c 100644 --- a/src-tauri/src/app_config.rs +++ b/src-tauri/src/app_config.rs @@ -270,7 +270,9 @@ impl AppConfig { } pub async fn set_randomx_miner(&mut self, miner: RandomXMiner) -> Result<(), anyhow::Error> { - self.randomx_miner = miner + self.randomx_miner = miner; + self.update_config_file().await?; + Ok(()) } pub fn application_language(&self) -> &str { &self.application_language diff --git a/src-tauri/src/binaries/binaries_list.rs b/src-tauri/src/binaries/binaries_list.rs index 18bb3ab34..95315b60e 100644 --- a/src-tauri/src/binaries/binaries_list.rs +++ b/src-tauri/src/binaries/binaries_list.rs @@ -10,6 +10,7 @@ pub enum Binaries { Wallet, ShaP2pool, GpuMiner, + Clythor, } impl Binaries { @@ -21,6 +22,7 @@ impl Binaries { Binaries::Wallet => "wallet", Binaries::ShaP2pool => "sha-p2pool", Binaries::GpuMiner => "xtrgpuminer", + Binaries::Clythor => "clythor", } } @@ -32,6 +34,7 @@ impl Binaries { "wallet" => Some(Binaries::Wallet), "sha-p2pool" => Some(Binaries::ShaP2pool), "xtrgpuminer" => Some(Binaries::GpuMiner), + "clythor" => Some(Binaries::Clythor), _ => None, } } @@ -62,6 +65,10 @@ impl Binaries { let file_name = "xtrgpuminer"; PathBuf::from(file_name) } + Binaries::Clythor => { + let file_name = "clythor"; + PathBuf::from(file_name) + } } } @@ -73,6 +80,7 @@ impl Binaries { Binaries::Wallet, Binaries::ShaP2pool, Binaries::GpuMiner, + Binaries::Clythor, ] .iter() .copied() diff --git a/src-tauri/src/binaries/binaries_resolver.rs b/src-tauri/src/binaries/binaries_resolver.rs index 4e8fe78cb..3ef828514 100644 --- a/src-tauri/src/binaries/binaries_resolver.rs +++ b/src-tauri/src/binaries/binaries_resolver.rs @@ -63,6 +63,19 @@ impl BinaryResolver { _ => panic!("Unsupported network"), }; + binary_manager.insert( + Binaries::Clythor, + BinaryManager::new( + Binaries::Clythor.name().to_string(), + Box::new(GithubReleasesAdapter { + repo: "clythor".to_string(), + owner: "tari-project".to_string(), + specific_name: None, + }), + None, + true, + ), + ); binary_manager.insert( Binaries::Xmrig, BinaryManager::new( diff --git a/src-tauri/src/clythor_adapter.rs b/src-tauri/src/clythor_adapter.rs index 832094f17..fe12ba52d 100644 --- a/src-tauri/src/clythor_adapter.rs +++ b/src-tauri/src/clythor_adapter.rs @@ -5,7 +5,7 @@ use async_trait::async_trait; use log::warn; use tari_shutdown::Shutdown; -use crate::binary_resolver::{Binaries, BinaryResolver}; +use crate::binaries::{Binaries, BinaryResolver}; use crate::process_adapter::{ProcessAdapter, ProcessInstance, StatusMonitor}; use crate::process_utils; use crate::xmrig::http_api::XmrigHttpApiClient; @@ -88,7 +88,9 @@ impl ProcessAdapter for ClythorAdapter { shutdown: clythor_shutdown, handle: Some(tokio::spawn(async move { let clythor_bin = BinaryResolver::current() - .resolve_path(Binaries::Clythor) + .read() + .await + .resolve_path_to_binary_files(Binaries::Clythor) .await?; crate::download_utils::set_permissions(&clythor_bin).await?; diff --git a/src/containers/Settings/MiningSettings.tsx b/src/containers/Settings/MiningSettings.tsx index b6f215927..ecf003121 100644 --- a/src/containers/Settings/MiningSettings.tsx +++ b/src/containers/Settings/MiningSettings.tsx @@ -3,11 +3,13 @@ import GpuMiningMarkup from './sections/mining/GpuMiningMarkup.tsx'; import SeedWordsMarkup from './sections/mining/SeedWordsMarkup'; import MoneroAddressMarkup from './sections/mining/MoneroAddressMarkup'; import WalletAddressMarkup from './sections/mining/WalletAddressMarkup.tsx'; +import RandomXCpuMiner from './sections/experimental/RandomXCpuMiner.tsx'; export const MiningSettings = () => { return ( <> + diff --git a/src/containers/Settings/sections/experimental/RandomXCpuMiner.tsx b/src/containers/Settings/sections/experimental/RandomXCpuMiner.tsx index 43fba4e6b..fa5016709 100644 --- a/src/containers/Settings/sections/experimental/RandomXCpuMiner.tsx +++ b/src/containers/Settings/sections/experimental/RandomXCpuMiner.tsx @@ -1,10 +1,9 @@ import { Select } from '@app/components/elements/inputs/Select'; import { useMiningStore } from '@app/store/useMiningStore'; import { CpuMiner } from '@app/types/mining'; -import { TileItem } from '../../Miner/styles'; +import { TileItem } from '@app/containers/SideBar/Miner/styles'; import { Typography } from '@app/components/elements/Typography'; import { useTranslation } from 'react-i18next'; -import { useMiningControls } from '@app/hooks/mining/useMiningControls'; import { useShallow } from 'zustand/react/shallow'; import { useAppStateStore } from '@app/store/appStateStore'; @@ -21,7 +20,11 @@ export const RandomXCpuMiner: React.FC = () => { const isMiningControlsEnabled = useMiningStore(useShallow((s) => s.miningControlsEnabled)); const isChangingMode = useMiningStore((s) => s.isChangingMode); - const { isMiningLoading } = useMiningControls(); + const isCPUMining = useMiningStore((s) => s.cpu.mining.is_mining); + const isGPUMining = useMiningStore((s) => s.gpu.mining.is_mining); + const isMiningInitiated = useMiningStore((s) => s.miningInitiated); + const isMining = isCPUMining || isGPUMining; + const isMiningLoading = (isMining && !isMiningInitiated) || (isMiningInitiated && !isMining); return ( diff --git a/src/hooks/useSetUp.ts b/src/hooks/useSetUp.ts index 42f8abed5..4a30db25f 100644 --- a/src/hooks/useSetUp.ts +++ b/src/hooks/useSetUp.ts @@ -6,6 +6,7 @@ import { invoke } from '@tauri-apps/api/tauri'; import { useUIStore } from '../store/useUIStore.ts'; import { useAppStateStore } from '../store/appStateStore.ts'; import { useAppConfigStore } from '@app/store/useAppConfigStore.ts'; +import { useMiningStore } from '@app/store/useMiningStore.ts'; export function useSetUp() { const setView = useUIStore((s) => s.setView); @@ -16,6 +17,7 @@ export function useSetUp() { const fetchAppConfig = useAppConfigStore((s) => s.fetchAppConfig); const settingUpFinished = useAppStateStore((s) => s.settingUpFinished); const setCriticalError = useAppStateStore((s) => s.setCriticalError); + const setCpuMiner = useMiningStore((s) => s.setCpuMiner); useEffect(() => { async function initialize() { diff --git a/src/store/useMiningStore.ts b/src/store/useMiningStore.ts index d957a6868..f889f9acc 100644 --- a/src/store/useMiningStore.ts +++ b/src/store/useMiningStore.ts @@ -103,8 +103,9 @@ export const useMiningStore = create()((set, getState) => ({ startMining: async () => { console.info('Mining starting....'); set({ miningInitiated: true }); + const miner = getState().cpuMiner; try { - await invoke('start_mining', {}); + await invoke('start_mining', { miner }); } catch (e) { const appStateStore = useAppStateStore.getState(); console.error(e);