damus

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

EventProfile.swift (1893B)


      1 //
      2 //  EventProfile.swift
      3 //  damus
      4 //
      5 //  Created by William Casarin on 2023-01-23.
      6 //
      7 
      8 import SwiftUI
      9 
     10 func eventview_pfp_size(_ size: EventViewKind) -> CGFloat {
     11     switch size {
     12     case .small:
     13         return PFP_SIZE * 0.5
     14     case .normal:
     15         return PFP_SIZE
     16     case .selected:
     17         return PFP_SIZE
     18     case .title:
     19         return PFP_SIZE
     20     case .subheadline:
     21         return PFP_SIZE * 0.5
     22     }
     23 }
     24 
     25 struct EventProfile: View {
     26     let damus_state: DamusState
     27     let pubkey: Pubkey
     28     let size: EventViewKind
     29     
     30     var pfp_size: CGFloat {
     31         eventview_pfp_size(size)
     32     }
     33     
     34     var disable_animation: Bool {
     35         damus_state.settings.disable_animation
     36     }
     37     
     38     var body: some View {
     39         HStack(alignment: .center, spacing: 10) {
     40             ProfilePicView(pubkey: pubkey, size: pfp_size, highlight: .none, profiles: damus_state.profiles, disable_animation: disable_animation, show_zappability: true)
     41                 .onTapGesture {
     42                     show_profile_action_sheet_if_enabled(damus_state: damus_state, pubkey: pubkey)
     43                 }
     44                 .onLongPressGesture(minimumDuration: 0.1) {
     45                     UIImpactFeedbackGenerator(style: .medium).impactOccurred()
     46                     damus_state.nav.push(route: Route.ProfileByKey(pubkey: pubkey))
     47                 }
     48 
     49             VStack(alignment: .leading, spacing: 0) {
     50                 EventProfileName(pubkey: pubkey, damus: damus_state, size: size)
     51 
     52                 UserStatusView(status: damus_state.profiles.profile_data(pubkey).status, show_general: damus_state.settings.show_general_statuses, show_music: damus_state.settings.show_music_statuses)
     53             }
     54         }
     55     }
     56 }
     57 
     58 struct EventProfile_Previews: PreviewProvider {
     59     static var previews: some View {
     60         EventProfile(damus_state: test_damus_state, pubkey: test_note.pubkey, size: .normal)
     61     }
     62 }