performance: don't spam nip05 validation on startup
Since we don't show these on events anymore, we don't need to spam nip05 validation. We can just check when we go to the profile page Changelog-Fixed: Eliminate nostr address validation bandwidth on startup
This commit is contained in:
@@ -794,25 +794,14 @@ func process_metadata_profile(our_pubkey: String, profiles: Profiles, profile: P
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if old_nip05 != profile.nip05 {
|
||||||
|
// if it's been validated before, invalidate it now
|
||||||
|
profiles.invalidate_nip05(ev.pubkey)
|
||||||
|
}
|
||||||
|
|
||||||
let tprof = TimestampedProfile(profile: profile, timestamp: ev.created_at, event: ev)
|
let tprof = TimestampedProfile(profile: profile, timestamp: ev.created_at, event: ev)
|
||||||
profiles.add(id: ev.pubkey, profile: tprof)
|
profiles.add(id: ev.pubkey, profile: tprof)
|
||||||
|
|
||||||
if let nip05 = profile.nip05, old_nip05 != profile.nip05 {
|
|
||||||
|
|
||||||
Task.detached(priority: .background) {
|
|
||||||
let validated = await validate_nip05(pubkey: ev.pubkey, nip05_str: nip05)
|
|
||||||
if validated != nil {
|
|
||||||
print("validated nip05 for '\(nip05)'")
|
|
||||||
}
|
|
||||||
|
|
||||||
Task { @MainActor in
|
|
||||||
profiles.set_validated(ev.pubkey, nip05: validated)
|
|
||||||
profiles.nip05_pubkey[nip05] = ev.pubkey
|
|
||||||
notify(.profile_updated, ProfileUpdate(pubkey: ev.pubkey, profile: profile))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// load pfps asap
|
// load pfps asap
|
||||||
|
|
||||||
var changed = false
|
var changed = false
|
||||||
|
|||||||
@@ -40,6 +40,12 @@ class Profiles {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func invalidate_nip05(_ pk: String) {
|
||||||
|
validated_queue.async(flags: .barrier) {
|
||||||
|
self.validated.removeValue(forKey: pk)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func set_validated(_ pk: String, nip05: NIP05?) {
|
func set_validated(_ pk: String, nip05: NIP05?) {
|
||||||
validated_queue.async(flags: .barrier) {
|
validated_queue.async(flags: .barrier) {
|
||||||
self.validated[pk] = nip05
|
self.validated[pk] = nip05
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ func fetch_nip05(nip05: NIP05) async -> NIP05Response? {
|
|||||||
guard let url = nip05.url else {
|
guard let url = nip05.url else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print("fetching nip05 \(url.absoluteString)")
|
||||||
guard let ret = try? await URLSession.shared.data(from: url) else {
|
guard let ret = try? await URLSession.shared.data(from: url) else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -457,6 +457,7 @@ struct ProfileView: View {
|
|||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
.onAppear() {
|
.onAppear() {
|
||||||
|
check_nip05_validity(pubkey: self.profile.pubkey, profiles: self.damus_state.profiles)
|
||||||
profile.subscribe()
|
profile.subscribe()
|
||||||
//followers.subscribe()
|
//followers.subscribe()
|
||||||
}
|
}
|
||||||
@@ -565,3 +566,25 @@ extension View {
|
|||||||
.foregroundStyle(scheme == .dark ? .white : .black, scheme == .dark ? .white : .black)
|
.foregroundStyle(scheme == .dark ? .white : .black, scheme == .dark ? .white : .black)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func check_nip05_validity(pubkey: String, profiles: Profiles) {
|
||||||
|
guard let profile = profiles.lookup(id: pubkey),
|
||||||
|
let nip05 = profile.nip05,
|
||||||
|
profiles.is_validated(pubkey) == nil
|
||||||
|
else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
Task.detached(priority: .background) {
|
||||||
|
let validated = await validate_nip05(pubkey: pubkey, nip05_str: nip05)
|
||||||
|
if validated != nil {
|
||||||
|
print("validated nip05 for '\(nip05)'")
|
||||||
|
}
|
||||||
|
|
||||||
|
Task { @MainActor in
|
||||||
|
profiles.set_validated(pubkey, nip05: validated)
|
||||||
|
profiles.nip05_pubkey[nip05] = pubkey
|
||||||
|
notify(.profile_updated, ProfileUpdate(pubkey: pubkey, profile: profile))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user