damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit 408da2c9d2648dea6fa844b5cc4b2cce0ff16c09
parent 85914b3cbe474c7a0d377dbdebc396161a7e11d2
Author: Thomas <31560900+0xtlt@users.noreply.github.com>
Date:   Fri, 23 Dec 2022 18:25:39 +0100

Merge branch 'master' into master
Diffstat:
Mdamus/Nostr/Nostr.swift | 77++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mdamus/Views/PostView.swift | 2+-
Mdamus/Views/ProfilePicView.swift | 2+-
Mdamus/Views/ProfileView.swift | 2+-
4 files changed, 79 insertions(+), 4 deletions(-)

diff --git a/damus/Nostr/Nostr.swift b/damus/Nostr/Nostr.swift @@ -7,8 +7,82 @@ import Foundation +struct Profile: Codable { + var value: [String: String] + + init (name: String?, display_name: String?, about: String?, picture: String?, website: String?, lud06: String?, lud16: String?, nip05: String?) { + self.value = [:] + self.name = name + self.display_name = display_name + self.about = about + self.picture = picture + self.website = website + self.lud06 = lud06 + self.lud16 = lud16 + self.nip05 = nip05 + } + + var display_name: String? { + get { return value["display_name"]; } + set(s) { value["display_name"] = s } + } + + var name: String? { + get { return value["name"]; } + set(s) { value["name"] = s } + } + + var about: String? { + get { return value["about"]; } + set(s) { value["about"] = s } + } + + var picture: String? { + get { return value["picture"]; } + set(s) { value["picture"] = s } + } + + var website: String? { + get { return value["website"]; } + set(s) { value["website"] = s } + } + + var lud06: String? { + get { return value["lud06"]; } + set(s) { value["lud06"] = s } + } + + var lud16: String? { + get { return value["lud16"]; } + set(s) { value["lud16"] = s } + } + + var nip05: String? { + get { return value["nip05"]; } + set(s) { value["nip05"] = s } + } + + var lightning_uri: URL? { + return make_ln_url(self.lud06) ?? make_ln_url(self.lud16) + } + + init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + self.value = try container.decode([String: String].self) + } + + func encode(to encoder: Encoder) throws { + var container = encoder.singleValueContainer() + try container.encode(value) + } + + static func displayName(profile: Profile?, pubkey: String) -> String { + return profile?.name ?? abbrev_pubkey(pubkey) + } +} -struct Profile: Decodable, Equatable { +/* +struct Profile: Decodable { let name: String? let display_name: String? let about: String? @@ -26,6 +100,7 @@ struct Profile: Decodable, Equatable { return profile?.name ?? abbrev_pubkey(pubkey) } } + */ func make_ln_url(_ str: String?) -> URL? { return str.flatMap { URL(string: "lightning:" + $0) } diff --git a/damus/Views/PostView.swift b/damus/Views/PostView.swift @@ -77,7 +77,7 @@ struct PostView: View { if post.isEmpty { Text(POST_PLACEHOLDER) .padding(.top, 8) - .padding(.leading, 10) + .padding(.leading, 4) .foregroundColor(Color(uiColor: .placeholderText)) .allowsHitTesting(false) } diff --git a/damus/Views/ProfilePicView.swift b/damus/Views/ProfilePicView.swift @@ -101,7 +101,7 @@ struct ProfilePicView: View { func make_preview_profiles(_ pubkey: String) -> Profiles { let profiles = Profiles() let picture = "http://cdn.jb55.com/img/red-me.jpg" - let profile = Profile(name: "jb55", display_name: "William Casarin", about: "It's me", picture: picture, website: "https://jb55.com", nip05: "jb55@damus.io", lud06: nil, lud16: nil) + let profile = Profile(name: "jb55", display_name: "William Casarin", about: "It's me", picture: picture, website: "https://jb55.com", lud06: nil, lud16: nil, nip05: "jb55.com") let ts_profile = TimestampedProfile(profile: profile, timestamp: 0) profiles.add(id: pubkey, profile: ts_profile) return profiles diff --git a/damus/Views/ProfileView.swift b/damus/Views/ProfileView.swift @@ -225,7 +225,7 @@ func test_damus_state() -> DamusState { let pubkey = "3efdaebb1d8923ebd99c9e7ace3b4194ab45512e2be79c1b7d68d9243e0d2681" let damus = DamusState(pool: RelayPool(), keypair: Keypair(pubkey: pubkey, privkey: "privkey"), likes: EventCounter(our_pubkey: pubkey), boosts: EventCounter(our_pubkey: pubkey), contacts: Contacts(), tips: TipCounter(our_pubkey: pubkey), profiles: Profiles(), dms: DirectMessagesModel()) - let prof = Profile(name: "damus", display_name: "Damus", about: "iOS app!", picture: "https://damus.io/img/logo.png", website: "https://damus.io", nip05: nil, lud06: nil, lud16: "jb55@sendsats.lol") + let prof = Profile(name: "damus", display_name: "Damus", about: "iOS app!", picture: "https://damus.io/img/logo.png", website: "https://damus.io", lud06: nil, lud16: "jb55@sendsats.lol", nip05: "damus.io") let tsprof = TimestampedProfile(profile: prof, timestamp: 0) damus.profiles.add(id: pubkey, profile: tsprof) return damus