From e4c709f267350f9daf02a62d02055fbddc691728 Mon Sep 17 00:00:00 2001 From: stringhandler Date: Wed, 7 Aug 2024 14:19:01 +0200 Subject: [PATCH] fix: better startup paths (#33) --- src-tauri/src/cpu_miner.rs | 4 +++- src-tauri/src/main.rs | 12 ++++++---- src-tauri/src/merge_mining_adapter.rs | 7 ++---- src-tauri/src/minotari_node_adapter.rs | 4 ++-- src-tauri/src/wallet_adapter.rs | 7 ++---- src-tauri/src/xmrig/latest_release.rs | 10 ++------ src-tauri/src/xmrig_adapter.rs | 32 +++++++++++--------------- src/App.tsx | 11 +++++++-- 8 files changed, 40 insertions(+), 47 deletions(-) diff --git a/src-tauri/src/cpu_miner.rs b/src-tauri/src/cpu_miner.rs index a506b72d..4350425c 100644 --- a/src-tauri/src/cpu_miner.rs +++ b/src-tauri/src/cpu_miner.rs @@ -40,6 +40,8 @@ impl CpuMiner { cpu_miner_config: &CpuMinerConfig, local_mm_proxy: &MmProxyManager, base_path: PathBuf, + cache_dir: PathBuf, + log_dir: PathBuf, window: tauri::Window, ) -> Result<(), anyhow::Error> { if self.watcher_task.is_some() { @@ -69,7 +71,7 @@ impl CpuMiner { } }; let xmrig = XmrigAdapter::new(xmrig_node_connection, "44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A".to_string() ); - let (mut _rx, mut xmrig_child, client) = xmrig.spawn(window.clone())?; + let (mut _rx, mut xmrig_child, client) = xmrig.spawn(cache_dir, log_dir, window.clone())?; self.api_client = Some(client); self.watcher_task = Some(tauri::async_runtime::spawn(async move { diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index dbd5b809..22ee5e5e 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -65,6 +65,7 @@ async fn setup_application<'r>( }, ); let data_dir = app.path_resolver().app_local_data_dir().unwrap(); + let cache_dir = app.path_resolver().app_cache_dir().unwrap(); let task1 = state .node_manager .ensure_started(state.shutdown.to_signal(), data_dir.clone(), window.clone()) @@ -81,11 +82,10 @@ async fn setup_application<'r>( e.to_string() }); - let task3 = - XmrigAdapter::ensure_latest(cache_dir().unwrap(), false, window.clone()).map_err(|e| { - error!(target: LOG_TARGET, "Could not download xmrig: {:?}", e); - e.to_string() - }); + let task3 = XmrigAdapter::ensure_latest(cache_dir, false, window.clone()).map_err(|e| { + error!(target: LOG_TARGET, "Could not download xmrig: {:?}", e); + e.to_string() + }); match try_join!(task1, task2, task3) { Ok(_) => { @@ -133,6 +133,8 @@ async fn start_mining<'r>( &config, &mm_proxy_manager, app.path_resolver().app_local_data_dir().unwrap(), + app.path_resolver().app_cache_dir().unwrap(), + app.path_resolver().app_log_dir().unwrap(), window.clone(), ) .await diff --git a/src-tauri/src/merge_mining_adapter.rs b/src-tauri/src/merge_mining_adapter.rs index 0b1c7540..0ae03c56 100644 --- a/src-tauri/src/merge_mining_adapter.rs +++ b/src-tauri/src/merge_mining_adapter.rs @@ -30,16 +30,13 @@ impl ProcessAdapter for MergeMiningProxyAdapter { fn spawn_inner( &self, - _log_folder: PathBuf, + data_dir: PathBuf, window: tauri::Window, ) -> Result<(Self::Instance, Self::StatusMonitor), Error> { let inner_shutdown = Shutdown::new(); let shutdown_signal = inner_shutdown.to_signal(); - let working_dir = data_local_dir() - .unwrap() - .join("tari-universe") - .join("mmproxy"); + let working_dir = data_dir.join("mmproxy"); std::fs::create_dir_all(&working_dir)?; let args: Vec = vec![ "-b".to_string(), diff --git a/src-tauri/src/minotari_node_adapter.rs b/src-tauri/src/minotari_node_adapter.rs index 209a06eb..ed901eef 100644 --- a/src-tauri/src/minotari_node_adapter.rs +++ b/src-tauri/src/minotari_node_adapter.rs @@ -42,14 +42,14 @@ impl ProcessAdapter for MinotariNodeAdapter { fn spawn_inner( &self, - _log_path: PathBuf, + data_dir: PathBuf, window: tauri::Window, ) -> Result<(Self::Instance, Self::StatusMonitor), Error> { let inner_shutdown = Shutdown::new(); let shutdown_signal = inner_shutdown.to_signal(); info!(target: LOG_TARGET, "Starting minotari node"); - let working_dir = data_local_dir().unwrap().join("tari-universe").join("node"); + let working_dir = data_dir.join("node"); std::fs::create_dir_all(&working_dir)?; let mut args: Vec = vec![ diff --git a/src-tauri/src/wallet_adapter.rs b/src-tauri/src/wallet_adapter.rs index 7c6a4682..405ad9b8 100644 --- a/src-tauri/src/wallet_adapter.rs +++ b/src-tauri/src/wallet_adapter.rs @@ -46,7 +46,7 @@ impl ProcessAdapter for WalletAdapter { type StatusMonitor = WalletStatusMonitor; fn spawn_inner( &self, - _log_path: PathBuf, + data_dir: PathBuf, window: tauri::Window, ) -> Result<(Self::Instance, Self::StatusMonitor), Error> { // TODO: This was copied from node_adapter. This should be DRY'ed up @@ -54,10 +54,7 @@ impl ProcessAdapter for WalletAdapter { let shutdown_signal = inner_shutdown.to_signal(); info!(target: LOG_TARGET, "Starting read only wallet"); - let working_dir = data_local_dir() - .unwrap() - .join("tari-universe") - .join("wallet"); + let working_dir = data_dir.join("wallet"); std::fs::create_dir_all(&working_dir)?; let mut args: Vec = vec![ diff --git a/src-tauri/src/xmrig/latest_release.rs b/src-tauri/src/xmrig/latest_release.rs index 9ec6ea51..58c96472 100644 --- a/src-tauri/src/xmrig/latest_release.rs +++ b/src-tauri/src/xmrig/latest_release.rs @@ -22,16 +22,10 @@ pub struct XmrigRelease { } impl XmrigRelease { - pub fn get_asset(&self, os: &str) -> Option<&Asset> { + pub fn get_asset(&self, id: &str) -> Option<&Asset> { for asset in &self.assets { info!(target: LOG_TARGET, "Checking asset {:?}", asset); - // macos-arm64 doesn't have an os field for some reason - if asset.os.is_none() { - if asset.id == os { - return Some(asset); - } - } - if asset.os.as_deref() == Some(os) { + if asset.id == id { return Some(asset); } } diff --git a/src-tauri/src/xmrig_adapter.rs b/src-tauri/src/xmrig_adapter.rs index 3314f3c1..22a95caf 100644 --- a/src-tauri/src/xmrig_adapter.rs +++ b/src-tauri/src/xmrig_adapter.rs @@ -61,17 +61,16 @@ impl XmrigAdapter { } pub fn spawn( &self, + cache_dir: PathBuf, + logs_dir: PathBuf, window: tauri::Window, ) -> Result<(Receiver, XmrigInstance, XmrigHttpApiClient), anyhow::Error> { let (_tx, rx) = tokio::sync::mpsc::channel(100); - let cache_dir = tauri::api::path::cache_dir() - .ok_or(anyhow::anyhow!("Failed to get cache dir"))? - .join("tari-universe"); let force_download = self.force_download; let xmrig_shutdown = Shutdown::new(); let mut shutdown_signal = xmrig_shutdown.to_signal(); let mut args = self.node_connection.generate_args(); - let xmrig_log_file = cache_dir.join("log").join("xmrig.log"); + let xmrig_log_file = logs_dir.join("xmrig.log"); std::fs::create_dir_all(xmrig_log_file.parent().unwrap())?; args.push(format!("--log-file={}", &xmrig_log_file.to_str().unwrap())); args.push(format!("--http-port={}", self.http_api_port)); @@ -129,11 +128,9 @@ impl XmrigAdapter { force_download: bool, window: tauri::Window, ) -> Result { + dbg!(&cache_dir); let latest_release = fetch_latest_release().await?; - let xmrig_dir = cache_dir - .join("com.tari.universe") - .join("xmrig") - .join(&latest_release.version); + let xmrig_dir = cache_dir.join("xmrig").join(&latest_release.version); if force_download { println!("Cleaning up xmrig dir"); let _ = fs::remove_dir_all(&xmrig_dir).await; @@ -141,10 +138,7 @@ impl XmrigAdapter { if !xmrig_dir.exists() { println!("Latest version of xmrig doesn't exist"); println!("latest version is {}", latest_release.version); - let in_progress_dir = cache_dir - .join("com.tari.universe") - .join("xmrig") - .join("in_progress"); + let in_progress_dir = cache_dir.join("xmrig").join("in_progress"); if in_progress_dir.exists() { println!("Trying to delete dir {:?}", in_progress_dir); match fs::remove_dir(&in_progress_dir).await { @@ -156,10 +150,10 @@ impl XmrigAdapter { } } - let os_string = get_os_string(); - info!(target: LOG_TARGET, "Downloading xmrig for {}", &os_string); + let id = get_os_string_id(); + info!(target: LOG_TARGET, "Downloading xmrig for {}", &id); let platform = latest_release - .get_asset(&os_string) + .get_asset(&id) .ok_or(anyhow::anyhow!("Failed to get platform asset"))?; println!("Downloading file"); println!("Downloading file from {}", &platform.url); @@ -209,10 +203,10 @@ impl Drop for XmrigInstance { } #[allow(unreachable_code)] -fn get_os_string() -> String { +fn get_os_string_id() -> String { #[cfg(target_os = "windows")] { - return "windows-x64".to_string(); + return "msvc-win64".to_string(); } #[cfg(target_os = "macos")] @@ -232,12 +226,12 @@ fn get_os_string() -> String { #[cfg(target_os = "linux")] { - return "linux-x64".to_string(); + return "linux-static-x64".to_string(); } #[cfg(target_os = "freebsd")] { - return "freebsd-x64".to_string(); + return "freebsd-static-x64".to_string(); } panic!("Unsupported OS"); diff --git a/src/App.tsx b/src/App.tsx index b2c22d81..c912f5a6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -19,6 +19,8 @@ import useAppStateStore from './store/appStateStore.ts'; function App() { const background = useUIStore((s) => s.background); const view = useUIStore((s) => s.view); + const setView = useUIStore((s) => s.setView); + const setBackground = useUIStore((s) => s.setBackground); const startupInitiated = useRef(false); const setSetupDetails = useAppStateStore((s) => s.setSetupDetails); const settingUpFinished = useAppStateStore((s) => s.settingUpFinished); @@ -33,6 +35,8 @@ function App() { setSetupDetails(payload.title, payload.progress); if (payload.progress >= 1.0) { settingUpFinished(); + setView("mining"); + setBackground("mining"); } break; default: @@ -46,10 +50,13 @@ function App() { ); if (!startupInitiated.current) { startupInitiated.current = true; - invoke('setup_application').then((r) => { - console.log(r); + setView("setup"); + setBackground("onboarding"); + invoke('setup_application').catch((e) => { + console.error('Failed to setup application:', e); }); + } return () => {