commit 672f95749a47f0a640c15294e8db32710ce2f8c4
parent 1ba597fc0a748b3e4040b9d6a82720b590015029
Author: William Casarin <jb55@jb55.com>
Date: Thu, 6 Jul 2023 17:50:20 -0700
Revert "json: deserialize note ids into bytes"
This reverts commit 1ba597fc0a748b3e4040b9d6a82720b590015029.
Diffstat:
9 files changed, 29 insertions(+), 84 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
@@ -1051,7 +1051,6 @@ name = "enostr"
version = "0.1.0"
dependencies = [
"ewebsock",
- "hex",
"serde",
"serde_derive",
"serde_json",
diff --git a/enostr/Cargo.lock b/enostr/Cargo.lock
@@ -108,7 +108,6 @@ name = "enostr"
version = "0.1.0"
dependencies = [
"ewebsock",
- "hex",
"serde",
"serde_derive",
"serde_json",
@@ -260,12 +259,6 @@ dependencies = [
]
[[package]]
-name = "hex"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-
-[[package]]
name = "http"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/enostr/Cargo.toml b/enostr/Cargo.toml
@@ -11,4 +11,3 @@ serde_derive = "1"
serde = { version = "1", features = ["derive"] } # You only need this if you want app persistence
serde_json = "1.0.89"
tracing = "0.1.37"
-hex = "0.4.3"
diff --git a/enostr/src/error.rs b/enostr/src/error.rs
@@ -6,7 +6,6 @@ pub enum Error {
MessageDecodeFailed,
InvalidSignature,
Json(serde_json::Error),
- Hex(hex::FromHexError),
Generic(String),
}
@@ -37,9 +36,3 @@ impl From<serde_json::Error> for Error {
Error::Json(e)
}
}
-
-impl From<hex::FromHexError> for Error {
- fn from(e: hex::FromHexError) -> Self {
- Error::Hex(e)
- }
-}
diff --git a/enostr/src/event.rs b/enostr/src/event.rs
@@ -1,5 +1,4 @@
use crate::{Error, Pubkey, Result};
-use hex;
use serde_derive::{Deserialize, Serialize};
use std::hash::{Hash, Hasher};
@@ -7,7 +6,7 @@ use std::hash::{Hash, Hasher};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Event {
/// 32-bytes sha256 of the the serialized event data
- pub id: NoteId,
+ pub id: EventId,
/// 32-bytes hex-encoded public key of the event creator
#[serde(rename = "pubkey")]
pub pubkey: Pubkey,
@@ -60,7 +59,7 @@ impl Event {
sig: &str,
) -> Result<Self> {
let event = Event {
- id: id.try_into()?,
+ id: id.to_string().into(),
pubkey: pubkey.to_string().into(),
created_at,
kind,
@@ -81,57 +80,17 @@ impl std::str::FromStr for Event {
}
}
-#[derive(Serialize, Debug, Eq, PartialEq, Clone, Hash)]
-pub struct NoteId([u8; 32]);
+#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone, Hash)]
+pub struct EventId(String);
-// Implement `Deserialize` for `NoteId`.
-impl<'de> serde::Deserialize<'de> for NoteId {
- fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
- where
- D: serde::Deserializer<'de>,
- {
- // Deserialize the JSON string
- let s = String::deserialize(deserializer)?;
-
- // Convert the hex string to bytes
- let bytes = hex::decode(&s).map_err(serde::de::Error::custom)?;
-
- // Check that the length is exactly 32
- if bytes.len() != 32 {
- return Err(serde::de::Error::custom("Expected exactly 32 bytes"));
- }
-
- // Convert the Vec<u8> to [u8; 32]
- let mut array = [0; 32];
- array.copy_from_slice(&bytes);
-
- Ok(NoteId(array))
- }
-}
-
-impl TryFrom<String> for NoteId {
- type Error = hex::FromHexError;
-
- fn try_from(s: String) -> std::result::Result<Self, Self::Error> {
- let s: &str = &s;
- NoteId::try_from(s)
- }
-}
-
-impl From<[u8; 32]> for NoteId {
- fn from(s: [u8; 32]) -> Self {
- NoteId(s)
+impl From<String> for EventId {
+ fn from(s: String) -> Self {
+ EventId(s)
}
}
-impl TryFrom<&str> for NoteId {
- type Error = hex::FromHexError;
-
- fn try_from(s: &str) -> std::result::Result<Self, Self::Error> {
- let decoded = hex::decode(s)?;
- match decoded.try_into() {
- Ok(bs) => Ok(NoteId(bs)),
- Err(_) => Err(hex::FromHexError::InvalidStringLength),
- }
+impl From<EventId> for String {
+ fn from(evid: EventId) -> Self {
+ evid.0
}
}
diff --git a/enostr/src/filter.rs b/enostr/src/filter.rs
@@ -1,17 +1,17 @@
-use crate::{NoteId, Pubkey};
+use crate::{EventId, Pubkey};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone)]
pub struct Filter {
#[serde(skip_serializing_if = "Option::is_none")]
- ids: Option<Vec<NoteId>>,
+ ids: Option<Vec<EventId>>,
#[serde(skip_serializing_if = "Option::is_none")]
authors: Option<Vec<Pubkey>>,
#[serde(skip_serializing_if = "Option::is_none")]
kinds: Option<Vec<u64>>,
#[serde(rename = "#e")]
#[serde(skip_serializing_if = "Option::is_none")]
- events: Option<Vec<NoteId>>,
+ events: Option<Vec<EventId>>,
#[serde(rename = "#p")]
#[serde(skip_serializing_if = "Option::is_none")]
pubkeys: Option<Vec<Pubkey>>,
@@ -37,7 +37,7 @@ impl Filter {
}
}
- pub fn ids(mut self, ids: Vec<NoteId>) -> Self {
+ pub fn ids(mut self, ids: Vec<EventId>) -> Self {
self.ids = Some(ids);
self
}
@@ -52,7 +52,7 @@ impl Filter {
self
}
- pub fn events(mut self, events: Vec<NoteId>) -> Self {
+ pub fn events(mut self, events: Vec<EventId>) -> Self {
self.events = Some(events);
self
}
diff --git a/enostr/src/lib.rs b/enostr/src/lib.rs
@@ -8,7 +8,7 @@ mod relay;
pub use client::ClientMessage;
pub use error::Error;
-pub use event::{Event, NoteId};
+pub use event::{Event, EventId};
pub use ewebsock;
pub use filter::Filter;
pub use profile::Profile;
diff --git a/src/app.rs b/src/app.rs
@@ -5,8 +5,8 @@ use crate::ui::padding;
use crate::Result;
use egui::containers::scroll_area::ScrollBarVisibility;
use egui::widgets::Spinner;
-use egui::{Context, Frame, TextureHandle, TextureId};
-use enostr::{ClientMessage, Filter, NoteId, Profile, Pubkey, RelayEvent, RelayMessage};
+use egui::{Color32, Context, Frame, TextureHandle, TextureId};
+use enostr::{ClientMessage, EventId, Filter, Profile, Pubkey, RelayEvent, RelayMessage};
use poll_promise::Promise;
use std::collections::{HashMap, HashSet};
use std::hash::{Hash, Hasher};
@@ -44,10 +44,11 @@ pub struct Damus {
pool: RelayPool,
- all_events: HashMap<NoteId, Event>,
- events: Vec<NoteId>,
+ all_events: HashMap<EventId, Event>,
+ events: Vec<EventId>,
img_cache: ImageCache,
+ bg_color: Color32,
}
impl Default for Damus {
@@ -57,9 +58,10 @@ impl Default for Damus {
contacts: Contacts::new(),
all_events: HashMap::new(),
pool: RelayPool::default(),
- events: Vec::with_capacity(2000),
+ events: vec![],
img_cache: HashMap::new(),
n_panels: 1,
+ bg_color: Color32::from_rgb(31, 31, 31),
}
}
}
@@ -457,8 +459,8 @@ fn add_test_events(damus: &mut Damus) {
// For inspiration and more examples, go to https://emilk.github.io/egui
let test_event = Event {
- id: "6938e3cd841f3111dbdbd909f87fd52c3d1f1e4a07fd121d1243196e532811cb".try_into().unwrap(),
- pubkey: "f0a6ff7f70b872de6d82c8daec692a433fd23b6a49f25923c6f034df715cdeec".try_into().unwrap(),
+ id: "6938e3cd841f3111dbdbd909f87fd52c3d1f1e4a07fd121d1243196e532811cb".to_string().into(),
+ pubkey: "f0a6ff7f70b872de6d82c8daec692a433fd23b6a49f25923c6f034df715cdeec".to_string().into(),
created_at: 1667781968,
kind: 1,
tags: vec![],
@@ -467,8 +469,8 @@ fn add_test_events(damus: &mut Damus) {
};
let test_event2 = Event {
- id: "6938e3cd841f3111dbdbd909f87fd52c3d1f1e4a07fd121d1243196e532811cb".try_into().unwrap(),
- pubkey: "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245".try_into().unwrap(),
+ id: "6938e3cd841f3111dbdbd909f87fd52c3d1f1e4a07fd121d1243196e532811cb".to_string().into(),
+ pubkey: "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245".to_string().into(),
created_at: 1667781968,
kind: 1,
tags: vec![],
diff --git a/src/contacts.rs b/src/contacts.rs
@@ -1,8 +1,8 @@
-use enostr::{NoteId, Profile, Pubkey};
+use enostr::{EventId, Profile, Pubkey};
use std::collections::HashMap;
pub struct Contacts {
- pub events: HashMap<Pubkey, NoteId>,
+ pub events: HashMap<Pubkey, EventId>,
pub profiles: HashMap<Pubkey, Profile>,
}