diff --git a/src/components/home.rs b/src/components/home.rs index e511ba91..bbe5ef1d 100644 --- a/src/components/home.rs +++ b/src/components/home.rs @@ -15,7 +15,7 @@ use crate::text::shorten_hex; use crate::{ action::Action, config::Config, - nostr::{nip10::ReplyTagsBuilder, Metadata, Profile, SortableEvent}, + nostr::{nip10::ReplyTagsBuilder, Profile, SortableEvent}, widgets::ScrollableList, widgets::TextNote, }; diff --git a/src/components/status_bar.rs b/src/components/status_bar.rs index 13e16fb2..063e0651 100644 --- a/src/components/status_bar.rs +++ b/src/components/status_bar.rs @@ -4,7 +4,6 @@ use ratatui::{prelude::*, widgets::*}; use crate::action::Action; use crate::components::Component; -use crate::nostr::Metadata; use crate::nostr::Profile; use crate::tui::Frame; use crate::widgets::PublicKey; diff --git a/src/nostr.rs b/src/nostr.rs index 2d6408d8..ffa3cc15 100644 --- a/src/nostr.rs +++ b/src/nostr.rs @@ -1,7 +1,6 @@ mod connection; mod connection_process; mod event; -mod metadata; pub mod nip10; pub mod nip27; mod profile; @@ -9,5 +8,4 @@ mod profile; pub use connection::Connection; pub use connection_process::ConnectionProcess; pub use event::SortableEvent; -pub use metadata::Metadata; pub use profile::Profile; diff --git a/src/nostr/metadata.rs b/src/nostr/metadata.rs deleted file mode 100644 index 6a2ffbf0..00000000 --- a/src/nostr/metadata.rs +++ /dev/null @@ -1,136 +0,0 @@ -use serde::{Deserialize, Serialize}; - -use nostr_sdk::prelude::{Metadata as NostrMetadata, *}; - -#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] -pub struct Metadata { - pub name: Option, - pub display_name: Option, - pub about: Option, - pub nip05: Option, -} - -impl Metadata { - pub fn new() -> Self { - Self::default() - } - - pub fn name(self, name: T) -> Self - where - T: Into, - { - Self { - name: Some(name.into()), - ..self - } - } - - pub fn display_name(self, display_name: T) -> Self - where - T: Into, - { - Self { - display_name: Some(display_name.into()), - ..self - } - } - - pub fn about(self, about: T) -> Self - where - T: Into, - { - Self { - about: Some(about.into()), - ..self - } - } - - pub fn nip05(self, nip05: T) -> Self - where - T: Into, - { - Self { - nip05: Some(nip05.into()), - ..self - } - } -} - -#[derive(Debug)] -pub enum Error { - Json(serde_json::Error), -} - -impl From for Error { - fn from(e: serde_json::Error) -> Self { - Self::Json(e) - } -} - -impl From for NostrMetadata { - fn from(value: Metadata) -> Self { - let mut metadata = NostrMetadata::new(); - - if let Some(ref name) = value.name { - metadata = metadata.name(name); - } - if let Some(ref display_name) = value.display_name { - metadata = metadata.display_name(display_name); - } - if let Some(ref about) = value.about { - metadata = metadata.about(about); - } - if let Some(ref nip05) = value.nip05 { - metadata = metadata.nip05(nip05); - } - - metadata - } -} - -impl JsonUtil for Metadata { - type Err = Error; -} - -#[cfg(test)] -mod tests { - use pretty_assertions::assert_eq; - - use super::*; - - #[test] - fn test_from_json() { - let json = r#" - { - "nip05": "_@0m1.io", - "lud16": "akiomik@getalby.com", - "picture": "https://image.nostr.build/7e99a1f30f59aa981057a5a910a62d43e600cd5bbc47f00130ca284f1914cc27.jpg", - "website": "https://github.com/akiomik", - "about": "鎌倉→軽井沢\nBird lover.\n~\nNostrends: https://nostrends.vercel.app\nNosli: https://nosli.vercel.app\nNosey: https://nosey.vercel.app\nnosvelte: https://github.com/akiomik/nosvelte\n~\nenglish: npub12gtrhfv04634qsyfm6l3m7a06l04qta6yefkuwezwcw6z4qe5nvqddy5qj", - "name": "omi", - "display_name": "kamakura", - "displayName": "foobar", - "banner": "https://github.com/akiomik/akiomik.github.io/raw/main/raindrop/raindrop.gif", - "created_at": 1689299849, - "nip05valid": true, - "identities": [ - { - "type": "github", - "claim": "akiomik", - "proof": "https://github.com/akiomik" - } - ] - } - "#; - let actual = Metadata::from_json(json).unwrap(); - let expected = Metadata::new().name("omi").display_name("kamakura").about("鎌倉→軽井沢\nBird lover.\n~\nNostrends: https://nostrends.vercel.app\nNosli: https://nosli.vercel.app\nNosey: https://nosey.vercel.app\nnosvelte: https://github.com/akiomik/nosvelte\n~\nenglish: npub12gtrhfv04634qsyfm6l3m7a06l04qta6yefkuwezwcw6z4qe5nvqddy5qj").nip05("_@0m1.io"); - assert_eq!(actual, expected); - } - - #[test] - fn test_from_for_nostr_metadata() { - let actual = Metadata::new().name("omi").display_name("kamakura").about("鎌倉→軽井沢\nBird lover.\n~\nNostrends: https://nostrends.vercel.app\nNosli: https://nosli.vercel.app\nNosey: https://nosey.vercel.app\nnosvelte: https://github.com/akiomik/nosvelte\n~\nenglish: npub12gtrhfv04634qsyfm6l3m7a06l04qta6yefkuwezwcw6z4qe5nvqddy5qj").nip05("_@0m1.io"); - let expected = NostrMetadata::new().name("omi").display_name("kamakura").about("鎌倉→軽井沢\nBird lover.\n~\nNostrends: https://nostrends.vercel.app\nNosli: https://nosli.vercel.app\nNosey: https://nosey.vercel.app\nnosvelte: https://github.com/akiomik/nosvelte\n~\nenglish: npub12gtrhfv04634qsyfm6l3m7a06l04qta6yefkuwezwcw6z4qe5nvqddy5qj").nip05("_@0m1.io"); - assert_eq!(NostrMetadata::from(actual), expected); - } -} diff --git a/src/nostr/profile.rs b/src/nostr/profile.rs index 4d0f9708..a5d4a415 100644 --- a/src/nostr/profile.rs +++ b/src/nostr/profile.rs @@ -1,6 +1,5 @@ use nostr_sdk::prelude::*; -use crate::nostr::Metadata; use crate::text::shorten_hex; #[derive(Clone, Debug)] diff --git a/src/widgets/text_note.rs b/src/widgets/text_note.rs index aa579ac8..d56d6db2 100644 --- a/src/widgets/text_note.rs +++ b/src/widgets/text_note.rs @@ -255,7 +255,7 @@ mod tests { use rstest::*; use super::*; - use crate::nostr::Metadata; + use crate::nostr::Profile; #[fixture] fn event() -> Event {