Rename nip35 references to nip05

This commit is contained in:
Mike Dilger 2023-01-07 02:56:36 +13:00
parent f094c27ca6
commit 5204cf7a1c
8 changed files with 35 additions and 33 deletions

View File

@ -7,7 +7,7 @@ pub enum ToOverlordMessage {
DeletePub, DeletePub,
FollowBech32(String, String), FollowBech32(String, String),
FollowHex(String, String), FollowHex(String, String),
FollowNip35(String), FollowNip05(String),
GeneratePrivateKey(String), GeneratePrivateKey(String),
GetMissingEvents, GetMissingEvents,
ImportPriv(String, String), ImportPriv(String, String),

View File

@ -109,6 +109,7 @@ fn upgrade(db: &Connection, mut version: u16) -> Result<(), Error> {
apply_sql!(db, version, 5, "schema5.sql"); apply_sql!(db, version, 5, "schema5.sql");
apply_sql!(db, version, 6, "schema6.sql"); apply_sql!(db, version, 6, "schema6.sql");
apply_sql!(db, version, 7, "schema7.sql"); apply_sql!(db, version, 7, "schema7.sql");
apply_sql!(db, version, 8, "schema8.sql");
tracing::info!("Database is at version {}", version); tracing::info!("Database is at version {}", version);
Ok(()) Ok(())
} }

View File

@ -12,14 +12,14 @@ pub struct DbPersonRelay {
pub last_suggested_kind2: Option<u64>, pub last_suggested_kind2: Option<u64>,
pub last_suggested_kind3: Option<u64>, pub last_suggested_kind3: Option<u64>,
pub last_suggested_nip23: Option<u64>, pub last_suggested_nip23: Option<u64>,
pub last_suggested_nip35: Option<u64>, pub last_suggested_nip05: Option<u64>,
pub last_suggested_bytag: Option<u64>, pub last_suggested_bytag: Option<u64>,
} }
impl DbPersonRelay { impl DbPersonRelay {
/* /*
pub async fn fetch(criteria: Option<&str>) -> Result<Vec<DbPersonRelay>, Error> { pub async fn fetch(criteria: Option<&str>) -> Result<Vec<DbPersonRelay>, Error> {
let sql = "SELECT person, relay, last_fetched, last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, last_suggested_nip35, last_suggested_bytag FROM person_relay".to_owned(); let sql = "SELECT person, relay, last_fetched, last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, last_suggested_nip05, last_suggested_bytag FROM person_relay".to_owned();
let sql = match criteria { let sql = match criteria {
None => sql, None => sql,
Some(crit) => format!("{} WHERE {}", sql, crit), Some(crit) => format!("{} WHERE {}", sql, crit),
@ -38,7 +38,7 @@ impl DbPersonRelay {
last_suggested_kind2: row.get(3)?, last_suggested_kind2: row.get(3)?,
last_suggested_kind3: row.get(4)?, last_suggested_kind3: row.get(4)?,
last_suggested_nip23: row.get(5)?, last_suggested_nip23: row.get(5)?,
last_suggested_nip35: row.get(6)?, last_suggested_nip05: row.get(6)?,
last_suggested_bytag: row.get(7)?, last_suggested_bytag: row.get(7)?,
}) })
})?; })?;
@ -64,7 +64,7 @@ impl DbPersonRelay {
let sql = format!( let sql = format!(
"SELECT person, relay, person_relay.last_fetched, \ "SELECT person, relay, person_relay.last_fetched, \
last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \ last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \
last_suggested_nip35, last_suggested_bytag \ last_suggested_nip05, last_suggested_bytag \
FROM person_relay \ FROM person_relay \
INNER JOIN relay ON person_relay.relay=relay.url \ INNER JOIN relay ON person_relay.relay=relay.url \
WHERE person IN ({}) ORDER BY person, relay.rank DESC", WHERE person IN ({}) ORDER BY person, relay.rank DESC",
@ -86,7 +86,7 @@ impl DbPersonRelay {
last_suggested_kind2: row.get(3)?, last_suggested_kind2: row.get(3)?,
last_suggested_kind3: row.get(4)?, last_suggested_kind3: row.get(4)?,
last_suggested_nip23: row.get(5)?, last_suggested_nip23: row.get(5)?,
last_suggested_nip35: row.get(6)?, last_suggested_nip05: row.get(6)?,
last_suggested_bytag: row.get(7)?, last_suggested_bytag: row.get(7)?,
}) })
})?; })?;
@ -142,7 +142,7 @@ impl DbPersonRelay {
pub async fn insert(person_relay: DbPersonRelay) -> Result<(), Error> { pub async fn insert(person_relay: DbPersonRelay) -> Result<(), Error> {
let sql = "INSERT OR IGNORE INTO person_relay (person, relay, last_fetched, \ let sql = "INSERT OR IGNORE INTO person_relay (person, relay, last_fetched, \
last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \ last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \
last_suggested_nip35, last_suggested_bytag) \ last_suggested_nip05, last_suggested_bytag) \
VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
spawn_blocking(move || { spawn_blocking(move || {
@ -157,7 +157,7 @@ impl DbPersonRelay {
&person_relay.last_suggested_kind2, &person_relay.last_suggested_kind2,
&person_relay.last_suggested_kind3, &person_relay.last_suggested_kind3,
&person_relay.last_suggested_nip23, &person_relay.last_suggested_nip23,
&person_relay.last_suggested_nip35, &person_relay.last_suggested_nip05,
&person_relay.last_suggested_bytag, &person_relay.last_suggested_bytag,
))?; ))?;
Ok::<(), Error>(()) Ok::<(), Error>(())
@ -216,14 +216,14 @@ impl DbPersonRelay {
Ok(()) Ok(())
} }
pub async fn upsert_last_suggested_nip35( pub async fn upsert_last_suggested_nip05(
person: PublicKeyHex, person: PublicKeyHex,
relay: String, relay: String,
last_suggested_nip35: u64, last_suggested_nip05: u64,
) -> Result<(), Error> { ) -> Result<(), Error> {
let sql = "INSERT INTO person_relay (person, relay, last_suggested_nip35) \ let sql = "INSERT INTO person_relay (person, relay, last_suggested_nip05) \
VALUES (?, ?, ?) \ VALUES (?, ?, ?) \
ON CONFLICT(person, relay) DO UPDATE SET last_suggested_nip35=?"; ON CONFLICT(person, relay) DO UPDATE SET last_suggested_nip05=?";
spawn_blocking(move || { spawn_blocking(move || {
let maybe_db = GLOBALS.db.blocking_lock(); let maybe_db = GLOBALS.db.blocking_lock();
@ -233,8 +233,8 @@ impl DbPersonRelay {
stmt.execute(( stmt.execute((
&person.0, &person.0,
&relay, &relay,
&last_suggested_nip35, &last_suggested_nip05,
&last_suggested_nip35, &last_suggested_nip05,
))?; ))?;
Ok::<(), Error>(()) Ok::<(), Error>(())
}) })
@ -259,7 +259,7 @@ impl DbPersonRelay {
"SELECT \ "SELECT \
person, relay, person_relay.last_fetched, \ person, relay, person_relay.last_fetched, \
last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \ last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \
last_suggested_nip35, last_suggested_bytag \ last_suggested_nip05, last_suggested_bytag \
FROM person_relay FROM person_relay
INNER JOIN relay ON person_relay.relay=relay.url \ INNER JOIN relay ON person_relay.relay=relay.url \
WHERE person IN ({}) and relay in ({}) \ WHERE person IN ({}) and relay in ({}) \
@ -286,7 +286,7 @@ impl DbPersonRelay {
last_suggested_kind2: row.get(3)?, last_suggested_kind2: row.get(3)?,
last_suggested_kind3: row.get(4)?, last_suggested_kind3: row.get(4)?,
last_suggested_nip23: row.get(5)?, last_suggested_nip23: row.get(5)?,
last_suggested_nip35: row.get(6)?, last_suggested_nip05: row.get(6)?,
last_suggested_bytag: row.get(7)?, last_suggested_bytag: row.get(7)?,
}) })
})?; })?;

1
src/db/schema8.sql Normal file
View File

@ -0,0 +1 @@
ALTER TABLE person_relay RENAME COLUMN last_suggested_nip35 TO last_suggested_nip05;

View File

@ -22,10 +22,10 @@ pub enum Error {
MpscSend(#[from] tokio::sync::mpsc::error::SendError<ToOverlordMessage>), MpscSend(#[from] tokio::sync::mpsc::error::SendError<ToOverlordMessage>),
#[error("NIP-05 public key not found")] #[error("NIP-05 public key not found")]
Nip05NotFound, Nip05KeyNotFound,
#[error("NIP-05 relays not found")] #[error("NIP-05 relays not found")]
Nip35NotFound, Nip05RelaysNotFound,
#[error("Nostr: {0}")] #[error("Nostr: {0}")]
Nostr(#[from] nostr_types::Error), Nostr(#[from] nostr_types::Error),
@ -42,7 +42,7 @@ pub enum Error {
#[error("INTERNAL: {0}")] #[error("INTERNAL: {0}")]
Internal(String), Internal(String),
#[error("Invalid DNS ID (nip-05 / nip-35), should be user@domain")] #[error("Invalid DNS ID (nip-05), should be user@domain")]
InvalidDnsId, InvalidDnsId,
#[error("Invalid URI: {0}")] #[error("Invalid URI: {0}")]

View File

@ -371,9 +371,9 @@ impl Overlord {
ToOverlordMessage::FollowHex(hex, relay) => { ToOverlordMessage::FollowHex(hex, relay) => {
Overlord::follow_hexkey(hex, relay).await?; Overlord::follow_hexkey(hex, relay).await?;
} }
ToOverlordMessage::FollowNip35(dns_id) => { ToOverlordMessage::FollowNip05(dns_id) => {
let _ = tokio::spawn(async move { let _ = tokio::spawn(async move {
if let Err(e) = Overlord::get_and_follow_nip35(dns_id).await { if let Err(e) = Overlord::get_and_follow_nip05(dns_id).await {
tracing::error!("{}", e); tracing::error!("{}", e);
} }
}); });
@ -554,8 +554,8 @@ impl Overlord {
Ok(()) Ok(())
} }
async fn get_and_follow_nip35(nip35: String) -> Result<(), Error> { async fn get_and_follow_nip05(nip05: String) -> Result<(), Error> {
let mut parts: Vec<&str> = nip35.split('@').collect(); let mut parts: Vec<&str> = nip05.split('@').collect();
if parts.len() == 1 { if parts.len() == 1 {
parts = Vec::from(["_", parts.first().unwrap()]) parts = Vec::from(["_", parts.first().unwrap()])
} }
@ -575,16 +575,16 @@ impl Overlord {
let timeout_future = tokio::time::timeout(std::time::Duration::new(15, 0), nip05_future); let timeout_future = tokio::time::timeout(std::time::Duration::new(15, 0), nip05_future);
let response = timeout_future.await??; let response = timeout_future.await??;
let nip05 = response.json::<Nip05>().await?; let nip05 = response.json::<Nip05>().await?;
Overlord::follow_nip35(nip05, user.to_string(), domain.to_string()).await?; Overlord::follow_nip05(nip05, user.to_string(), domain.to_string()).await?;
Ok(()) Ok(())
} }
async fn follow_nip35(nip05: Nip05, user: String, domain: String) -> Result<(), Error> { async fn follow_nip05(nip05: Nip05, user: String, domain: String) -> Result<(), Error> {
let dns_id = format!("{}@{}", user, domain); let dns_id = format!("{}@{}", user, domain);
let pubkey = match nip05.names.get(&user) { let pubkey = match nip05.names.get(&user) {
Some(pk) => pk, Some(pk) => pk,
None => return Err(Error::Nip05NotFound), None => return Err(Error::Nip05KeyNotFound),
}; };
// Save person // Save person
@ -612,7 +612,7 @@ impl Overlord {
let relays = match nip05.relays.get(pubkey) { let relays = match nip05.relays.get(pubkey) {
Some(relays) => relays, Some(relays) => relays,
None => return Err(Error::Nip35NotFound), None => return Err(Error::Nip05RelaysNotFound),
}; };
for relay in relays.iter() { for relay in relays.iter() {
@ -623,7 +623,7 @@ impl Overlord {
DbRelay::insert(db_relay).await?; DbRelay::insert(db_relay).await?;
// Save person_relay // Save person_relay
DbPersonRelay::upsert_last_suggested_nip35( DbPersonRelay::upsert_last_suggested_nip05(
(*pubkey).into(), (*pubkey).into(),
relay.inner().to_owned(), relay.inner().to_owned(),
Unixtime::now().unwrap().0 as u64, Unixtime::now().unwrap().0 as u64,

View File

@ -77,7 +77,7 @@ struct GossipUi {
placeholder_avatar: TextureHandle, placeholder_avatar: TextureHandle,
draft: String, draft: String,
settings: Settings, settings: Settings,
nip35follow: String, nip05follow: String,
follow_bech32_pubkey: String, follow_bech32_pubkey: String,
follow_hex_pubkey: String, follow_hex_pubkey: String,
follow_pubkey_at_relay: String, follow_pubkey_at_relay: String,
@ -147,7 +147,7 @@ impl GossipUi {
placeholder_avatar: placeholder_avatar_texture_handle, placeholder_avatar: placeholder_avatar_texture_handle,
draft: "".to_owned(), draft: "".to_owned(),
settings, settings,
nip35follow: "".to_owned(), nip05follow: "".to_owned(),
follow_bech32_pubkey: "".to_owned(), follow_bech32_pubkey: "".to_owned(),
follow_hex_pubkey: "".to_owned(), follow_hex_pubkey: "".to_owned(),
follow_pubkey_at_relay: "".to_owned(), follow_pubkey_at_relay: "".to_owned(),

View File

@ -21,13 +21,13 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr
ui.horizontal(|ui| { ui.horizontal(|ui| {
ui.label("Enter user@domain"); ui.label("Enter user@domain");
ui.add(TextEdit::singleline(&mut app.nip35follow).hint_text("user@domain")); ui.add(TextEdit::singleline(&mut app.nip05follow).hint_text("user@domain"));
}); });
if ui.button("follow").clicked() { if ui.button("follow").clicked() {
let _ = GLOBALS let _ = GLOBALS
.to_overlord .to_overlord
.send(ToOverlordMessage::FollowNip35(app.nip35follow.clone())); .send(ToOverlordMessage::FollowNip05(app.nip05follow.clone()));
app.nip35follow = "".to_owned(); app.nip05follow = "".to_owned();
} }
ui.add_space(10.0); ui.add_space(10.0);