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 }