damus

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

SuggestedUserView.swift (2207B)


      1 //
      2 //  SuggestedUserView.swift
      3 //  damus
      4 //
      5 //  Created by klabo on 7/18/23.
      6 //
      7 
      8 import SwiftUI
      9 
     10 struct SuggestedUser {
     11     let pubkey: Pubkey
     12     let name: String
     13     let about: String
     14     let pfp: URL
     15 
     16     init?(name: String?, about: String?, picture: String?, pubkey: Pubkey) {
     17         guard let name, let about, let picture,
     18               let pfpURL = URL(string: picture) else {
     19             return nil
     20         }
     21 
     22         self.pubkey = pubkey
     23         self.name = name
     24         self.about = about
     25         self.pfp = pfpURL
     26     }
     27 }
     28 
     29 struct SuggestedUserView: View {
     30     let user: SuggestedUser
     31     let damus_state: DamusState
     32 
     33     var body: some View {
     34         HStack {
     35             let target = FollowTarget.pubkey(user.pubkey)
     36             InnerProfilePicView(url: user.pfp,
     37                                 fallbackUrl: nil,
     38                                 pubkey: target.pubkey,
     39                                 size: 50,
     40                                 highlight: .none,
     41                                 disable_animation: false)
     42             VStack(alignment: .leading, spacing: 4) {
     43                 HStack {
     44                     ProfileName(pubkey: user.pubkey, damus: damus_state)
     45                 }
     46                 Text(user.about)
     47                     .lineLimit(3)
     48                     .foregroundColor(.gray)
     49                     .font(.caption)
     50             }
     51             Spacer()
     52             GradientFollowButton(target: target, follows_you: false, follow_state: damus_state.contacts.follow_state(target.pubkey))
     53         }
     54     }
     55 }
     56 
     57 struct SuggestedUserView_Previews: PreviewProvider {
     58     static var previews: some View {
     59         let pfp = "https://primal.b-cdn.net/media-cache?s=m&a=1&u=https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F1599994711430742017%2F33zLk9Wi_400x400.jpg"
     60         let profile = Profile(name: "klabo", about: "A person who likes nostr a lot and I like to tell people about myself in very long-winded ways that push the limits of UI and almost break things", picture: pfp)
     61 
     62         let user = SuggestedUser(name: "klabo", about: "name", picture: "about", pubkey: test_pubkey)!
     63         List {
     64             SuggestedUserView(user: user, damus_state: test_damus_state)
     65         }
     66     }
     67 }