diff --git a/src/comms.rs b/src/comms.rs index 9bbb047d..3086856d 100644 --- a/src/comms.rs +++ b/src/comms.rs @@ -5,7 +5,7 @@ use zeroize::Zeroize; /// This is a message sent to the Overlord #[derive(Debug, Clone, Serialize)] -pub struct BusMessage { +pub struct ToOverlordMessage { /// What kind of message is this pub kind: String, @@ -13,9 +13,9 @@ pub struct BusMessage { pub json_payload: String, } -/// We may send passwords through BusMessage objects, so we zeroize +/// We may send passwords through ToOverlordMessage objects, so we zeroize /// bus message payloads upon drop. -impl Drop for BusMessage { +impl Drop for ToOverlordMessage { fn drop(&mut self) { self.json_payload.zeroize(); } diff --git a/src/error.rs b/src/error.rs index 3b0d21ee..b56d84ae 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,4 +1,4 @@ -use crate::comms::{BusMessage, ToMinionMessage}; +use crate::comms::{ToMinionMessage, ToOverlordMessage}; use thiserror::Error; #[derive(Error, Debug)] @@ -19,7 +19,7 @@ pub enum Error { JoinError(#[from] tokio::task::JoinError), #[error("Error sending mpsc: {0}")] - MpscSend(#[from] tokio::sync::mpsc::error::SendError), + MpscSend(#[from] tokio::sync::mpsc::error::SendError), #[error("NIP-05 public key not found")] Nip05NotFound, diff --git a/src/globals.rs b/src/globals.rs index 87fad4f9..910240f6 100644 --- a/src/globals.rs +++ b/src/globals.rs @@ -1,4 +1,4 @@ -use crate::comms::{BusMessage, ToMinionMessage}; +use crate::comms::{ToMinionMessage, ToOverlordMessage}; use crate::db::{DbEvent, DbRelay}; use crate::error::Error; use crate::feed::Feed; @@ -25,11 +25,11 @@ pub struct Globals { /// This is a mpsc channel. The Overlord listens on it. /// To create a sender, just clone() it. - pub to_overlord: mpsc::UnboundedSender, + pub to_overlord: mpsc::UnboundedSender, /// This is ephemeral. It is filled during lazy_static initialization, /// and stolen away when the Overlord is created. - pub tmp_overlord_receiver: Mutex>>, + pub tmp_overlord_receiver: Mutex>>, /// All nostr events, keyed by the event Id pub events: RwLock>, diff --git a/src/main.rs b/src/main.rs index d350f842..559f45a9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,7 +19,7 @@ mod settings; mod signer; mod ui; -use crate::comms::BusMessage; +use crate::comms::ToOverlordMessage; use crate::error::Error; use crate::globals::GLOBALS; use std::ops::DerefMut; @@ -92,7 +92,7 @@ async fn tokio_main() { // Any task can call this to shutdown pub fn initiate_shutdown() -> Result<(), Error> { let to_overlord = GLOBALS.to_overlord.clone(); - let _ = to_overlord.send(BusMessage { + let _ = to_overlord.send(ToOverlordMessage { kind: "shutdown".to_string(), json_payload: serde_json::to_string("").unwrap(), }); // ignore errors diff --git a/src/overlord/minion/mod.rs b/src/overlord/minion/mod.rs index dbcfa9ad..58b125b3 100644 --- a/src/overlord/minion/mod.rs +++ b/src/overlord/minion/mod.rs @@ -1,7 +1,7 @@ mod handle_websocket; mod subscription; -use crate::comms::{BusMessage, ToMinionMessage, ToMinionPayload}; +use crate::comms::{ToMinionMessage, ToMinionPayload, ToOverlordMessage}; use crate::db::DbRelay; use crate::error::Error; use crate::globals::GLOBALS; @@ -23,7 +23,7 @@ use tungstenite::protocol::{Message as WsMessage, WebSocketConfig}; pub struct Minion { url: Url, - to_overlord: UnboundedSender, + to_overlord: UnboundedSender, from_overlord: Receiver, dbrelay: DbRelay, nip11: Option, @@ -221,7 +221,7 @@ impl Minion { }; #[allow(clippy::collapsible_if)] if to_minion_message.target == self.url.inner() || to_minion_message.target == "all" { - keepgoing = self.handle_bus_message(to_minion_message).await?; + keepgoing = self.handle_message(to_minion_message).await?; } }, } @@ -229,7 +229,7 @@ impl Minion { Ok(keepgoing) } - pub async fn handle_bus_message(&mut self, message: ToMinionMessage) -> Result { + pub async fn handle_message(&mut self, message: ToMinionMessage) -> Result { match message.payload { ToMinionPayload::Shutdown => { tracing::info!("{}: Websocket listener shutting down", &self.url); @@ -262,7 +262,7 @@ impl Minion { } async fn tell_overlord_we_are_ready(&self) -> Result<(), Error> { - self.to_overlord.send(BusMessage { + self.to_overlord.send(ToOverlordMessage { kind: "minion_is_ready".to_string(), json_payload: "".to_owned(), })?; diff --git a/src/overlord/mod.rs b/src/overlord/mod.rs index c121bef5..518f825e 100644 --- a/src/overlord/mod.rs +++ b/src/overlord/mod.rs @@ -1,7 +1,7 @@ mod minion; mod relay_picker; -use crate::comms::{BusMessage, ToMinionMessage, ToMinionPayload}; +use crate::comms::{ToMinionMessage, ToMinionPayload, ToOverlordMessage}; use crate::db::{DbEvent, DbPersonRelay, DbRelay}; use crate::error::Error; use crate::globals::{Globals, GLOBALS}; @@ -20,7 +20,7 @@ use zeroize::Zeroize; pub struct Overlord { to_minions: Sender, - inbox: UnboundedReceiver, + inbox: UnboundedReceiver, // All the minion tasks running. minions: task::JoinSet<()>, @@ -33,7 +33,7 @@ pub struct Overlord { } impl Overlord { - pub fn new(inbox: UnboundedReceiver) -> Overlord { + pub fn new(inbox: UnboundedReceiver) -> Overlord { let to_minions = GLOBALS.to_minions.clone(); Overlord { to_minions, @@ -276,27 +276,27 @@ impl Overlord { if self.minions.is_empty() { // Just listen on inbox - let bus_message = self.inbox.recv().await; - let bus_message = match bus_message { + let message = self.inbox.recv().await; + let message = match message { Some(bm) => bm, None => { // All senders dropped, or one of them closed. return Ok(false); } }; - keepgoing = self.handle_bus_message(bus_message).await?; + keepgoing = self.handle_message(message).await?; } else { // Listen on inbox, and dying minions select! { - bus_message = self.inbox.recv() => { - let bus_message = match bus_message { + message = self.inbox.recv() => { + let message = match message { Some(bm) => bm, None => { // All senders dropped, or one of them closed. return Ok(false); } }; - keepgoing = self.handle_bus_message(bus_message).await?; + keepgoing = self.handle_message(message).await?; }, task_nextjoined = self.minions.join_next_with_id() => { self.handle_task_nextjoined(task_nextjoined).await; @@ -355,9 +355,9 @@ impl Overlord { } } - async fn handle_bus_message(&mut self, bus_message: BusMessage) -> Result { + async fn handle_message(&mut self, message: ToOverlordMessage) -> Result { #[allow(clippy::single_match)] // because temporarily so - match &*bus_message.kind { + match &*message.kind { "shutdown" => { tracing::info!("Overlord shutting down"); return Ok(false); @@ -371,7 +371,7 @@ impl Overlord { self.get_missing_events().await?; } "follow_nip35" => { - let dns_id: String = serde_json::from_str(&bus_message.json_payload)?; + let dns_id: String = serde_json::from_str(&message.json_payload)?; let _ = tokio::spawn(async move { if let Err(e) = Overlord::get_and_follow_nip35(dns_id).await { tracing::error!("{}", e); @@ -379,15 +379,15 @@ impl Overlord { }); } "follow_bech32" => { - let data: (String, String) = serde_json::from_str(&bus_message.json_payload)?; + let data: (String, String) = serde_json::from_str(&message.json_payload)?; Overlord::follow_bech32(data.0, data.1).await?; } "follow_hexkey" => { - let data: (String, String) = serde_json::from_str(&bus_message.json_payload)?; + let data: (String, String) = serde_json::from_str(&message.json_payload)?; Overlord::follow_hexkey(data.0, data.1).await?; } "unlock_key" => { - let mut password: String = serde_json::from_str(&bus_message.json_payload)?; + let mut password: String = serde_json::from_str(&message.json_payload)?; GLOBALS .signer .write() @@ -404,7 +404,7 @@ impl Overlord { } } "generate_private_key" => { - let mut password: String = serde_json::from_str(&bus_message.json_payload)?; + let mut password: String = serde_json::from_str(&message.json_payload)?; GLOBALS .signer .write() @@ -415,7 +415,7 @@ impl Overlord { } "import_priv" => { let (mut import_priv, mut password): (String, String) = - serde_json::from_str(&bus_message.json_payload)?; + serde_json::from_str(&message.json_payload)?; let maybe_pk1 = PrivateKey::try_from_bech32_string(&import_priv); let maybe_pk2 = PrivateKey::try_from_hex_string(&import_priv); import_priv.zeroize(); @@ -435,7 +435,7 @@ impl Overlord { } } "import_pub" => { - let pubstr: String = serde_json::from_str(&bus_message.json_payload)?; + let pubstr: String = serde_json::from_str(&message.json_payload)?; let maybe_pk1 = PublicKey::try_from_bech32_string(&pubstr); let maybe_pk2 = PublicKey::try_from_hex_string(&pubstr); if maybe_pk1.is_err() && maybe_pk2.is_err() { @@ -469,17 +469,16 @@ impl Overlord { } } "post_textnote" => { - let content: String = serde_json::from_str(&bus_message.json_payload)?; + let content: String = serde_json::from_str(&message.json_payload)?; self.post_textnote(content).await?; } "post_reply" => { let (content, reply_to): (String, Id) = - serde_json::from_str(&bus_message.json_payload)?; + serde_json::from_str(&message.json_payload)?; self.post_reply(content, reply_to).await?; } "like" => { - let (id, pubkey): (Id, PublicKey) = - serde_json::from_str(&bus_message.json_payload)?; + let (id, pubkey): (Id, PublicKey) = serde_json::from_str(&message.json_payload)?; self.post_like(id, pubkey).await?; } "process_incoming_events" => { @@ -494,12 +493,12 @@ impl Overlord { }); } "add_relay" => { - let relay_str: String = serde_json::from_str(&bus_message.json_payload)?; + let relay_str: String = serde_json::from_str(&message.json_payload)?; let dbrelay = DbRelay::new(relay_str)?; DbRelay::insert(dbrelay).await?; } "update_metadata" => { - let pubkey: PublicKeyHex = serde_json::from_str(&bus_message.json_payload)?; + let pubkey: PublicKeyHex = serde_json::from_str(&message.json_payload)?; let person_relays = DbPersonRelay::fetch_for_pubkeys(&[pubkey.clone()]).await?; for person_relay in person_relays.iter() { diff --git a/src/ui/feed.rs b/src/ui/feed.rs index 3e22436a..c30aad12 100644 --- a/src/ui/feed.rs +++ b/src/ui/feed.rs @@ -1,5 +1,5 @@ use super::{GossipUi, Page}; -use crate::comms::BusMessage; +use crate::comms::ToOverlordMessage; use crate::feed::FeedKind; use crate::globals::{Globals, GLOBALS}; use crate::ui::widgets::{CopyButton, LikeButton, ReplyButton}; @@ -85,7 +85,7 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, frame: &mut eframe::Fram .clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "get_missing_events".to_string(), json_payload: serde_json::to_string("").unwrap(), }); @@ -98,7 +98,7 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, frame: &mut eframe::Fram .clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "process_incoming_events".to_string(), json_payload: serde_json::to_string("").unwrap(), }); @@ -153,7 +153,7 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, frame: &mut eframe::Fram let tx = GLOBALS.to_overlord.clone(); match app.replying_to { Some(_id) => { - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "post_reply".to_string(), json_payload: serde_json::to_string(&( &app.draft, @@ -163,7 +163,7 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, frame: &mut eframe::Fram }); } None => { - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "post_textnote".to_string(), json_payload: serde_json::to_string(&app.draft).unwrap(), }); @@ -452,7 +452,7 @@ fn render_post_actual( GLOBALS.dismissed.blocking_write().push(event.id); } if ui.button("Update Metadata").clicked() { - let _ = GLOBALS.to_overlord.send(BusMessage { + let _ = GLOBALS.to_overlord.send(ToOverlordMessage { kind: "update_metadata".to_string(), json_payload: serde_json::to_string( &event.pubkey.as_hex_string(), @@ -498,7 +498,7 @@ fn render_post_actual( if ui.add(LikeButton {}).clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "like".to_string(), json_payload: serde_json::to_string(&(&event.id, &event.pubkey)) .unwrap(), diff --git a/src/ui/people/follow.rs b/src/ui/people/follow.rs index ddd14cbb..99c90fbb 100644 --- a/src/ui/people/follow.rs +++ b/src/ui/people/follow.rs @@ -1,5 +1,5 @@ use super::GossipUi; -use crate::comms::BusMessage; +use crate::comms::ToOverlordMessage; use crate::globals::GLOBALS; use eframe::egui; use egui::{Context, TextEdit, Ui}; @@ -25,7 +25,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr }); if ui.button("follow").clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "follow_nip35".to_string(), json_payload: serde_json::to_string(&app.nip35follow).unwrap(), }); @@ -48,7 +48,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr }); if ui.button("follow").clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "follow_bech32".to_string(), json_payload: serde_json::to_string(&( &app.follow_bech32_pubkey, @@ -76,7 +76,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr }); if ui.button("follow").clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "follow_hexkey".to_string(), json_payload: serde_json::to_string(&( &app.follow_hex_pubkey, diff --git a/src/ui/people/person.rs b/src/ui/people/person.rs index c0d313a7..eefa23e1 100644 --- a/src/ui/people/person.rs +++ b/src/ui/people/person.rs @@ -1,5 +1,5 @@ use super::{GossipUi, Page}; -use crate::comms::BusMessage; +use crate::comms::ToOverlordMessage; use crate::db::DbPerson; use crate::globals::GLOBALS; use eframe::egui; @@ -57,7 +57,7 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra } if ui.button("UPDATE METADATA").clicked() { - let _ = GLOBALS.to_overlord.send(BusMessage { + let _ = GLOBALS.to_overlord.send(ToOverlordMessage { kind: "update_metadata".to_string(), json_payload: serde_json::to_string(&pubkeyhex).unwrap(), }); diff --git a/src/ui/relays.rs b/src/ui/relays.rs index 40eeb2de..bb93f624 100644 --- a/src/ui/relays.rs +++ b/src/ui/relays.rs @@ -1,5 +1,5 @@ use super::GossipUi; -use crate::comms::BusMessage; +use crate::comms::ToOverlordMessage; use crate::db::DbRelay; use crate::globals::GLOBALS; use eframe::egui; @@ -25,7 +25,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr let test_url = Url::new(&app.new_relay_url); if test_url.is_valid_relay_url() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "add_relay".to_string(), json_payload: serde_json::to_string(&app.new_relay_url).unwrap(), }); @@ -61,7 +61,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr ui.with_layout(Layout::bottom_up(Align::Center), |ui| { if ui.button("SAVE CHANGES").clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "save_relays".to_string(), json_payload: serde_json::to_string("").unwrap(), }); diff --git a/src/ui/settings.rs b/src/ui/settings.rs index 881a21dd..5848966d 100644 --- a/src/ui/settings.rs +++ b/src/ui/settings.rs @@ -1,5 +1,5 @@ use super::GossipUi; -use crate::comms::BusMessage; +use crate::comms::ToOverlordMessage; use crate::GLOBALS; use eframe::egui; use egui::widgets::{Button, Slider}; @@ -152,7 +152,7 @@ pub(super) fn update( // Tell the overlord to save them let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "save_settings".to_string(), json_payload: serde_json::to_string("").unwrap(), }); diff --git a/src/ui/you.rs b/src/ui/you.rs index f15d1bc1..8195b7fa 100644 --- a/src/ui/you.rs +++ b/src/ui/you.rs @@ -1,5 +1,5 @@ use super::GossipUi; -use crate::comms::BusMessage; +use crate::comms::ToOverlordMessage; use crate::globals::GLOBALS; use crate::ui::widgets::CopyButton; use eframe::egui; @@ -142,7 +142,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr if ui.button("Unlock Private Key").clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "unlock_key".to_string(), json_payload: serde_json::to_string(&app.password).unwrap(), }); @@ -158,7 +158,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr }); if ui.button("Generate Now").clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "generate_private_key".to_string(), json_payload: serde_json::to_string(&app.password).unwrap(), }); @@ -186,7 +186,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr }); if ui.button("import").clicked() { let tx = GLOBALS.to_overlord.clone(); - let _ = tx.send(BusMessage { + let _ = tx.send(ToOverlordMessage { kind: "import_priv".to_string(), json_payload: serde_json::to_string(&(&app.import_priv, &app.password)).unwrap(), }); @@ -224,7 +224,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr } if ui.button("Delete this public key").clicked() { - let _ = GLOBALS.to_overlord.send(BusMessage { + let _ = GLOBALS.to_overlord.send(ToOverlordMessage { kind: "delete_pub".to_string(), json_payload: serde_json::to_string(&app.import_pub).unwrap(), }); @@ -234,7 +234,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr ui.label("Enter your public key"); ui.add(TextEdit::singleline(&mut app.import_pub).hint_text("npub1 or hex")); if ui.button("Import a Public Key").clicked() { - let _ = GLOBALS.to_overlord.send(BusMessage { + let _ = GLOBALS.to_overlord.send(ToOverlordMessage { kind: "import_pub".to_string(), json_payload: serde_json::to_string(&app.import_pub).unwrap(), });