Refactor NIP05 badge into its own view
Also only make it clickable in profile view
This commit is contained in:
@@ -116,6 +116,7 @@
|
|||||||
4CB55EF3295E5D59007FD187 /* RecommendedRelayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB55EF2295E5D59007FD187 /* RecommendedRelayView.swift */; };
|
4CB55EF3295E5D59007FD187 /* RecommendedRelayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB55EF2295E5D59007FD187 /* RecommendedRelayView.swift */; };
|
||||||
4CB55EF5295E679D007FD187 /* UserRelaysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB55EF4295E679D007FD187 /* UserRelaysView.swift */; };
|
4CB55EF5295E679D007FD187 /* UserRelaysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB55EF4295E679D007FD187 /* UserRelaysView.swift */; };
|
||||||
4CB8838629656C8B00DC99E7 /* NIP05.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB8838529656C8B00DC99E7 /* NIP05.swift */; };
|
4CB8838629656C8B00DC99E7 /* NIP05.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB8838529656C8B00DC99E7 /* NIP05.swift */; };
|
||||||
|
4CB8838B296F6E1E00DC99E7 /* NIP05Badge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB8838A296F6E1E00DC99E7 /* NIP05Badge.swift */; };
|
||||||
4CD7641B28A1641400B6928F /* EndBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CD7641A28A1641400B6928F /* EndBlock.swift */; };
|
4CD7641B28A1641400B6928F /* EndBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CD7641A28A1641400B6928F /* EndBlock.swift */; };
|
||||||
4CE4F8CD281352B30009DFBB /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F8CC281352B30009DFBB /* Notifications.swift */; };
|
4CE4F8CD281352B30009DFBB /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F8CC281352B30009DFBB /* Notifications.swift */; };
|
||||||
4CE4F9DE2852768D00C00DD9 /* ConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F9DD2852768D00C00DD9 /* ConfigView.swift */; };
|
4CE4F9DE2852768D00C00DD9 /* ConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F9DD2852768D00C00DD9 /* ConfigView.swift */; };
|
||||||
@@ -308,6 +309,7 @@
|
|||||||
4CB55EF2295E5D59007FD187 /* RecommendedRelayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendedRelayView.swift; sourceTree = "<group>"; };
|
4CB55EF2295E5D59007FD187 /* RecommendedRelayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendedRelayView.swift; sourceTree = "<group>"; };
|
||||||
4CB55EF4295E679D007FD187 /* UserRelaysView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserRelaysView.swift; sourceTree = "<group>"; };
|
4CB55EF4295E679D007FD187 /* UserRelaysView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserRelaysView.swift; sourceTree = "<group>"; };
|
||||||
4CB8838529656C8B00DC99E7 /* NIP05.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NIP05.swift; sourceTree = "<group>"; };
|
4CB8838529656C8B00DC99E7 /* NIP05.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NIP05.swift; sourceTree = "<group>"; };
|
||||||
|
4CB8838A296F6E1E00DC99E7 /* NIP05Badge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NIP05Badge.swift; sourceTree = "<group>"; };
|
||||||
4CD7641A28A1641400B6928F /* EndBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndBlock.swift; sourceTree = "<group>"; };
|
4CD7641A28A1641400B6928F /* EndBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndBlock.swift; sourceTree = "<group>"; };
|
||||||
4CE4F8CC281352B30009DFBB /* Notifications.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notifications.swift; sourceTree = "<group>"; };
|
4CE4F8CC281352B30009DFBB /* Notifications.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notifications.swift; sourceTree = "<group>"; };
|
||||||
4CE4F9DD2852768D00C00DD9 /* ConfigView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigView.swift; sourceTree = "<group>"; };
|
4CE4F9DD2852768D00C00DD9 /* ConfigView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigView.swift; sourceTree = "<group>"; };
|
||||||
@@ -570,6 +572,7 @@
|
|||||||
4C06670528FCB08600038D2A /* ImageCarousel.swift */,
|
4C06670528FCB08600038D2A /* ImageCarousel.swift */,
|
||||||
4C3EA67C28FFBBA200C48A62 /* InvoicesView.swift */,
|
4C3EA67C28FFBBA200C48A62 /* InvoicesView.swift */,
|
||||||
4C3EA67E28FFC01D00C48A62 /* InvoiceView.swift */,
|
4C3EA67E28FFC01D00C48A62 /* InvoiceView.swift */,
|
||||||
|
4CB8838A296F6E1E00DC99E7 /* NIP05Badge.swift */,
|
||||||
);
|
);
|
||||||
path = Components;
|
path = Components;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -841,6 +844,7 @@
|
|||||||
4C363A9A28283854006E126D /* Reply.swift in Sources */,
|
4C363A9A28283854006E126D /* Reply.swift in Sources */,
|
||||||
BA693074295D649800ADDB87 /* UserSettingsStore.swift in Sources */,
|
BA693074295D649800ADDB87 /* UserSettingsStore.swift in Sources */,
|
||||||
4C90BD18283A9EE5008EE7EF /* LoginView.swift in Sources */,
|
4C90BD18283A9EE5008EE7EF /* LoginView.swift in Sources */,
|
||||||
|
4CB8838B296F6E1E00DC99E7 /* NIP05Badge.swift in Sources */,
|
||||||
4C3EA66828FF5F9900C48A62 /* hex.c in Sources */,
|
4C3EA66828FF5F9900C48A62 /* hex.c in Sources */,
|
||||||
E9E4ED0B295867B900DD7078 /* ThreadV2View.swift in Sources */,
|
E9E4ED0B295867B900DD7078 /* ThreadV2View.swift in Sources */,
|
||||||
4C3BEFDC281DCE6100B3DE84 /* Liked.swift in Sources */,
|
4C3BEFDC281DCE6100B3DE84 /* Liked.swift in Sources */,
|
||||||
|
|||||||
65
damus/Components/NIP05Badge.swift
Normal file
65
damus/Components/NIP05Badge.swift
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
//
|
||||||
|
// NIP05Badge.swift
|
||||||
|
// damus
|
||||||
|
//
|
||||||
|
// Created by William Casarin on 2023-01-11.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct NIP05Badge: View {
|
||||||
|
let nip05: NIP05
|
||||||
|
let pubkey: String
|
||||||
|
let contacts: Contacts
|
||||||
|
let show_domain: Bool
|
||||||
|
let clickable: Bool
|
||||||
|
|
||||||
|
@Environment(\.openURL) var openURL
|
||||||
|
|
||||||
|
init (nip05: NIP05, pubkey: String, contacts: Contacts, show_domain: Bool, clickable: Bool) {
|
||||||
|
self.nip05 = nip05
|
||||||
|
self.pubkey = pubkey
|
||||||
|
self.contacts = contacts
|
||||||
|
self.show_domain = show_domain
|
||||||
|
self.clickable = clickable
|
||||||
|
}
|
||||||
|
|
||||||
|
var nip05_color: Color {
|
||||||
|
return get_nip05_color(pubkey: pubkey, contacts: contacts)
|
||||||
|
}
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
HStack(spacing: 2) {
|
||||||
|
Image(systemName: "checkmark.seal.fill")
|
||||||
|
.font(.footnote)
|
||||||
|
.foregroundColor(nip05_color)
|
||||||
|
if show_domain {
|
||||||
|
if clickable {
|
||||||
|
Text(nip05.host)
|
||||||
|
.foregroundColor(nip05_color)
|
||||||
|
.onTapGesture {
|
||||||
|
if let nip5url = nip05.siteUrl {
|
||||||
|
openURL(nip5url)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Text(nip05.host)
|
||||||
|
.foregroundColor(nip05_color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func get_nip05_color(pubkey: String, contacts: Contacts) -> Color {
|
||||||
|
return contacts.is_friend_or_self(pubkey) ? .accentColor : .gray
|
||||||
|
}
|
||||||
|
|
||||||
|
struct NIP05Badge_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
let test_state = test_damus_state()
|
||||||
|
NIP05Badge(nip05: NIP05(username: "jb55", host: "jb55.com"), pubkey: test_state.pubkey, contacts: test_state.contacts, show_domain: true, clickable: false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -73,18 +73,7 @@ struct ProfileName: View {
|
|||||||
.font(.body)
|
.font(.body)
|
||||||
.fontWeight(prefix == "@" ? .none : .bold)
|
.fontWeight(prefix == "@" ? .none : .bold)
|
||||||
if let nip05 = current_nip05 {
|
if let nip05 = current_nip05 {
|
||||||
Image(systemName: "checkmark.seal.fill")
|
NIP05Badge(nip05: nip05, pubkey: pubkey, contacts: damus_state.contacts, show_domain: show_nip5_domain, clickable: true)
|
||||||
.foregroundColor(nip05_color)
|
|
||||||
|
|
||||||
if show_nip5_domain {
|
|
||||||
Text(nip05.host)
|
|
||||||
.foregroundColor(nip05_color)
|
|
||||||
.onTapGesture {
|
|
||||||
if let nip5url = nip05.siteUrl {
|
|
||||||
openURL(nip5url)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if let friend = friend_icon, current_nip05 == nil {
|
if let friend = friend_icon, current_nip05 == nil {
|
||||||
Image(systemName: friend)
|
Image(systemName: friend)
|
||||||
@@ -158,9 +147,8 @@ struct EventProfileName: View {
|
|||||||
.fontWeight(.bold)
|
.fontWeight(.bold)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let _ = current_nip05 {
|
if let nip05 = current_nip05 {
|
||||||
Image(systemName: "checkmark.seal.fill")
|
NIP05Badge(nip05: nip05, pubkey: pubkey, contacts: damus_state.contacts, show_domain: false, clickable: false)
|
||||||
.foregroundColor(get_nip05_color(pubkey: pubkey, contacts: damus_state.contacts))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if let frend = friend_icon, current_nip05 == nil {
|
if let frend = friend_icon, current_nip05 == nil {
|
||||||
@@ -180,6 +168,3 @@ struct EventProfileName: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func get_nip05_color(pubkey: String, contacts: Contacts) -> Color {
|
|
||||||
return contacts.is_friend_or_self(pubkey) ? .accentColor : .gray
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user