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);