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 }