damus

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

BuilderEventView.swift (1634B)


      1 //
      2 //  BuilderEventView.swift
      3 //  damus
      4 //
      5 //  Created by William Casarin on 2023-01-23.
      6 //
      7 
      8 import SwiftUI
      9 
     10 struct BuilderEventView: View {
     11     let damus: DamusState
     12     let event_id: NoteId
     13     let event: NostrEvent?
     14     
     15     init(damus: DamusState, event: NostrEvent) {
     16         self.event = event
     17         self.damus = damus
     18         self.event_id = event.id
     19     }
     20     
     21     init(damus: DamusState, event_id: NoteId) {
     22         self.event_id = event_id
     23         self.damus = damus
     24         self.event = nil
     25     }
     26     
     27     func Event(event: NostrEvent) -> some View {
     28         return EventView(damus: damus, event: event, options: .embedded)
     29             .padding([.top, .bottom], 8)
     30             .onTapGesture {
     31                 let ev = event.get_inner_event(cache: damus.events) ?? event
     32                 let thread = ThreadModel(event: ev, damus_state: damus)
     33                 damus.nav.push(route: .Thread(thread: thread))
     34             }
     35     }
     36     
     37     var body: some View {
     38         VStack {
     39             if let event {
     40                 self.Event(event: event)
     41             } else {
     42                 EventLoaderView(damus_state: damus, event_id: self.event_id) { loaded_event in
     43                     self.Event(event: loaded_event)
     44                 }
     45             }
     46         }
     47         .frame(minWidth: 0, maxWidth: .infinity)
     48         .overlay(
     49             RoundedRectangle(cornerRadius: 10)
     50                 .stroke(Color.gray.opacity(0.2), lineWidth: 1.0)
     51         )
     52     }
     53 }
     54 
     55 struct BuilderEventView_Previews: PreviewProvider {
     56     static var previews: some View {
     57         BuilderEventView(damus: test_damus_state, event_id: test_note.id)
     58     }
     59 }
     60