From 0470f47460451557dcf9aa1c816e587b00190838 Mon Sep 17 00:00:00 2001 From: Kieran Date: Thu, 21 Nov 2024 15:38:10 +0000 Subject: [PATCH] fix: app dirs --- Cargo.lock | 48 +++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/bin/zap_stream_app.rs | 18 +++++++++++---- src/widgets/write_chat.rs | 8 +++++-- 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa451ab..1d9221c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1281,6 +1281,27 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -3177,6 +3198,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "orbclient" version = "0.3.48" @@ -3562,6 +3589,17 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + [[package]] name = "regex" version = "1.11.0" @@ -5227,6 +5265,15 @@ dependencies = [ "windows-targets 0.42.2", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -5574,6 +5621,7 @@ dependencies = [ "async-trait", "bech32", "chrono", + "directories", "eframe", "egui", "egui-video", diff --git a/Cargo.toml b/Cargo.toml index 5e3f4de..b65ce2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,6 +29,7 @@ serde = { version = "1.0.214", features = ["derive"] } serde_with = { version = "3.11.0", features = ["hex"] } egui-video = { git = "https://github.com/v0l/egui-video.git", rev = "d2ea3b4db21eb870a207db19e4cd21c7d1d24836" } +directories = "5.0.1" #egui-video = { path = "../egui-video" } [target.'cfg(not(target_os = "android"))'.dependencies] diff --git a/src/bin/zap_stream_app.rs b/src/bin/zap_stream_app.rs index cb6f0a1..a6f183c 100644 --- a/src/bin/zap_stream_app.rs +++ b/src/bin/zap_stream_app.rs @@ -1,4 +1,7 @@ +use anyhow::Result; +use directories::ProjectDirs; use egui::{Margin, Vec2, ViewportBuilder}; +use log::error; use nostr_sdk::serde_json; use serde::de::DeserializeOwned; use serde::Serialize; @@ -10,19 +13,26 @@ use std::sync::{Arc, RwLock}; use zap_stream_app::app::{NativeLayerOps, ZapStreamApp}; #[tokio::main] -async fn main() { +async fn main() -> Result<()> { pretty_env_logger::init(); let mut options = eframe::NativeOptions::default(); options.viewport = ViewportBuilder::default().with_inner_size(Vec2::new(1300., 900.)); - let data_path = PathBuf::from("./.data"); + let data_path = ProjectDirs::from("stream", "zap", "app") + .unwrap() + .config_dir() + .to_path_buf(); + let config = DesktopApp::new(data_path.clone()); - let _res = eframe::run_native( + if let Err(e) = eframe::run_native( "zap.stream", options, Box::new(move |cc| Ok(Box::new(ZapStreamApp::new(cc, data_path, config)))), - ); + ) { + error!("{}", e); + } + Ok(()) } #[derive(Clone)] diff --git a/src/widgets/write_chat.rs b/src/widgets/write_chat.rs index dbaceda..64afa47 100644 --- a/src/widgets/write_chat.rs +++ b/src/widgets/write_chat.rs @@ -35,9 +35,13 @@ impl NostrWidget for WriteChat { .load_bytes("send-03.svg", logo_bytes) .sense(Sense::click()) .ui(ui) - .clicked() || self.msg.ends_with('\n') + .clicked() + || self.msg.ends_with('\n') { - if let Ok(ev) = services.login.write_live_chat_msg(&self.link, &self.msg.trim()) { + if let Ok(ev) = services + .login + .write_live_chat_msg(&self.link, &self.msg.trim()) + { info!("Sending: {:?}", ev); services.broadcast_event(ev); }