damus

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

ZapDataModel.swift (1221B)


      1 //
      2 //  ZapDataModel.swift
      3 //  damus
      4 //
      5 //  Created by Daniel D’Aquino on 2023-11-27.
      6 //
      7 
      8 import Foundation
      9 
     10 class ZapsDataModel: ObservableObject {
     11     @Published var zaps: [Zapping]
     12     
     13     init(_ zaps: [Zapping]) {
     14         self.zaps = zaps
     15     }
     16     
     17     func confirm_nwc(reqid: NoteId) {
     18         guard let zap = zaps.first(where: { z in z.request.ev.id == reqid }),
     19               case .pending(let pzap) = zap
     20         else {
     21             return
     22         }
     23         
     24         switch pzap.state {
     25         case .external:
     26             break
     27         case .nwc(let nwc_state):
     28             if nwc_state.update_state(state: .confirmed) {
     29                 self.objectWillChange.send()
     30             }
     31         }
     32     }
     33     
     34     var zap_total: Int64 {
     35         zaps.reduce(0) { total, zap in total + zap.amount }
     36     }
     37    
     38     func from(_ pubkey: Pubkey) -> [Zapping] {
     39         return self.zaps.filter { z in z.request.ev.pubkey == pubkey }
     40     }
     41     
     42     @discardableResult
     43     func remove(reqid: ZapRequestId) -> Bool {
     44         guard zaps.first(where: { z in z.request.id == reqid }) != nil else {
     45             return false
     46         }
     47         
     48         self.zaps = zaps.filter { z in z.request.id != reqid }
     49         return true
     50     }
     51 }