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,
FollowBech32(String, String),
FollowHex(String, String),
FollowNip35(String),
FollowNip05(String),
GeneratePrivateKey(String),
GetMissingEvents,
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, 6, "schema6.sql");
apply_sql!(db, version, 7, "schema7.sql");
apply_sql!(db, version, 8, "schema8.sql");
tracing::info!("Database is at version {}", version);
Ok(())
}

View File

@ -12,14 +12,14 @@ pub struct DbPersonRelay {
pub last_suggested_kind2: Option<u64>,
pub last_suggested_kind3: 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>,
}
impl DbPersonRelay {
/*
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 {
None => sql,
Some(crit) => format!("{} WHERE {}", sql, crit),
@ -38,7 +38,7 @@ impl DbPersonRelay {
last_suggested_kind2: row.get(3)?,
last_suggested_kind3: row.get(4)?,
last_suggested_nip23: row.get(5)?,
last_suggested_nip35: row.get(6)?,
last_suggested_nip05: row.get(6)?,
last_suggested_bytag: row.get(7)?,
})
})?;
@ -64,7 +64,7 @@ impl DbPersonRelay {
let sql = format!(
"SELECT person, relay, person_relay.last_fetched, \
last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \
last_suggested_nip35, last_suggested_bytag \
last_suggested_nip05, last_suggested_bytag \
FROM person_relay \
INNER JOIN relay ON person_relay.relay=relay.url \
WHERE person IN ({}) ORDER BY person, relay.rank DESC",
@ -86,7 +86,7 @@ impl DbPersonRelay {
last_suggested_kind2: row.get(3)?,
last_suggested_kind3: row.get(4)?,
last_suggested_nip23: row.get(5)?,
last_suggested_nip35: row.get(6)?,
last_suggested_nip05: row.get(6)?,
last_suggested_bytag: row.get(7)?,
})
})?;
@ -142,7 +142,7 @@ impl DbPersonRelay {
pub async fn insert(person_relay: DbPersonRelay) -> Result<(), Error> {
let sql = "INSERT OR IGNORE INTO person_relay (person, relay, last_fetched, \
last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \
last_suggested_nip35, last_suggested_bytag) \
last_suggested_nip05, last_suggested_bytag) \
VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
spawn_blocking(move || {
@ -157,7 +157,7 @@ impl DbPersonRelay {
&person_relay.last_suggested_kind2,
&person_relay.last_suggested_kind3,
&person_relay.last_suggested_nip23,
&person_relay.last_suggested_nip35,
&person_relay.last_suggested_nip05,
&person_relay.last_suggested_bytag,
))?;
Ok::<(), Error>(())
@ -216,14 +216,14 @@ impl DbPersonRelay {
Ok(())
}
pub async fn upsert_last_suggested_nip35(
pub async fn upsert_last_suggested_nip05(
person: PublicKeyHex,
relay: String,
last_suggested_nip35: u64,
last_suggested_nip05: u64,
) -> 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 (?, ?, ?) \
ON CONFLICT(person, relay) DO UPDATE SET last_suggested_nip35=?";
ON CONFLICT(person, relay) DO UPDATE SET last_suggested_nip05=?";
spawn_blocking(move || {
let maybe_db = GLOBALS.db.blocking_lock();
@ -233,8 +233,8 @@ impl DbPersonRelay {
stmt.execute((
&person.0,
&relay,
&last_suggested_nip35,
&last_suggested_nip35,
&last_suggested_nip05,
&last_suggested_nip05,
))?;
Ok::<(), Error>(())
})
@ -259,7 +259,7 @@ impl DbPersonRelay {
"SELECT \
person, relay, person_relay.last_fetched, \
last_suggested_kind2, last_suggested_kind3, last_suggested_nip23, \
last_suggested_nip35, last_suggested_bytag \
last_suggested_nip05, last_suggested_bytag \
FROM person_relay
INNER JOIN relay ON person_relay.relay=relay.url \
WHERE person IN ({}) and relay in ({}) \
@ -286,7 +286,7 @@ impl DbPersonRelay {
last_suggested_kind2: row.get(3)?,
last_suggested_kind3: row.get(4)?,
last_suggested_nip23: row.get(5)?,
last_suggested_nip35: row.get(6)?,
last_suggested_nip05: row.get(6)?,
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>),
#[error("NIP-05 public key not found")]
Nip05NotFound,
Nip05KeyNotFound,
#[error("NIP-05 relays not found")]
Nip35NotFound,
Nip05RelaysNotFound,
#[error("Nostr: {0}")]
Nostr(#[from] nostr_types::Error),
@ -42,7 +42,7 @@ pub enum Error {
#[error("INTERNAL: {0}")]
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,
#[error("Invalid URI: {0}")]

View File

@ -371,9 +371,9 @@ impl Overlord {
ToOverlordMessage::FollowHex(hex, relay) => {
Overlord::follow_hexkey(hex, relay).await?;
}
ToOverlordMessage::FollowNip35(dns_id) => {
ToOverlordMessage::FollowNip05(dns_id) => {
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);
}
});
@ -554,8 +554,8 @@ impl Overlord {
Ok(())
}
async fn get_and_follow_nip35(nip35: String) -> Result<(), Error> {
let mut parts: Vec<&str> = nip35.split('@').collect();
async fn get_and_follow_nip05(nip05: String) -> Result<(), Error> {
let mut parts: Vec<&str> = nip05.split('@').collect();
if parts.len() == 1 {
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 response = timeout_future.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(())
}
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 pubkey = match nip05.names.get(&user) {
Some(pk) => pk,
None => return Err(Error::Nip05NotFound),
None => return Err(Error::Nip05KeyNotFound),
};
// Save person
@ -612,7 +612,7 @@ impl Overlord {
let relays = match nip05.relays.get(pubkey) {
Some(relays) => relays,
None => return Err(Error::Nip35NotFound),
None => return Err(Error::Nip05RelaysNotFound),
};
for relay in relays.iter() {
@ -623,7 +623,7 @@ impl Overlord {
DbRelay::insert(db_relay).await?;
// Save person_relay
DbPersonRelay::upsert_last_suggested_nip35(
DbPersonRelay::upsert_last_suggested_nip05(
(*pubkey).into(),
relay.inner().to_owned(),
Unixtime::now().unwrap().0 as u64,

View File

@ -77,7 +77,7 @@ struct GossipUi {
placeholder_avatar: TextureHandle,
draft: String,
settings: Settings,
nip35follow: String,
nip05follow: String,
follow_bech32_pubkey: String,
follow_hex_pubkey: String,
follow_pubkey_at_relay: String,
@ -147,7 +147,7 @@ impl GossipUi {
placeholder_avatar: placeholder_avatar_texture_handle,
draft: "".to_owned(),
settings,
nip35follow: "".to_owned(),
nip05follow: "".to_owned(),
follow_bech32_pubkey: "".to_owned(),
follow_hex_pubkey: "".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.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() {
let _ = GLOBALS
.to_overlord
.send(ToOverlordMessage::FollowNip35(app.nip35follow.clone()));
app.nip35follow = "".to_owned();
.send(ToOverlordMessage::FollowNip05(app.nip05follow.clone()));
app.nip05follow = "".to_owned();
}
ui.add_space(10.0);