Use cached zap if we have it
This commit is contained in:
@@ -8,17 +8,15 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
class ZapsModel: ObservableObject {
|
class ZapsModel: ObservableObject {
|
||||||
let profiles: Profiles
|
let state: DamusState
|
||||||
let pool: RelayPool
|
|
||||||
let target: ZapTarget
|
let target: ZapTarget
|
||||||
var zaps: [Zap]
|
var zaps: [Zap]
|
||||||
|
|
||||||
let zaps_subid = UUID().description
|
let zaps_subid = UUID().description
|
||||||
|
|
||||||
init(profiles: Profiles, pool: RelayPool, target: ZapTarget) {
|
init(state: DamusState, target: ZapTarget) {
|
||||||
|
self.state = state
|
||||||
self.target = target
|
self.target = target
|
||||||
self.profiles = profiles
|
|
||||||
self.pool = pool
|
|
||||||
self.zaps = []
|
self.zaps = []
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,11 +28,11 @@ class ZapsModel: ObservableObject {
|
|||||||
case .note(let note_target):
|
case .note(let note_target):
|
||||||
filter.referenced_ids = [note_target.note_id]
|
filter.referenced_ids = [note_target.note_id]
|
||||||
}
|
}
|
||||||
pool.subscribe(sub_id: zaps_subid, filters: [filter], handler: handle_event)
|
state.pool.subscribe(sub_id: zaps_subid, filters: [filter], handler: handle_event)
|
||||||
}
|
}
|
||||||
|
|
||||||
func unsubscribe() {
|
func unsubscribe() {
|
||||||
pool.unsubscribe(sub_id: zaps_subid)
|
state.pool.unsubscribe(sub_id: zaps_subid)
|
||||||
}
|
}
|
||||||
|
|
||||||
func handle_event(relay_id: String, conn_ev: NostrConnectionEvent) {
|
func handle_event(relay_id: String, conn_ev: NostrConnectionEvent) {
|
||||||
@@ -54,16 +52,26 @@ class ZapsModel: ObservableObject {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let zapper = profiles.lookup_zapper(pubkey: target.pubkey) else {
|
if let zap = state.zaps.zaps[ev.id] {
|
||||||
return
|
if insert_uniq_sorted_zap(zaps: &zaps, new_zap: zap) {
|
||||||
|
objectWillChange.send()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
guard let zapper = state.profiles.lookup_zapper(pubkey: target.pubkey) else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
guard let zap = Zap.from_zap_event(zap_ev: ev, zapper: zapper) else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
state.zaps.add_zap(zap: zap)
|
||||||
|
|
||||||
|
if insert_uniq_sorted_zap(zaps: &zaps, new_zap: zap) {
|
||||||
|
objectWillChange.send()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let zap = Zap.from_zap_event(zap_ev: ev, zapper: zapper) else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if insert_uniq_sorted_zap(zaps: &zaps, new_zap: zap) {
|
|
||||||
objectWillChange.send()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ struct ZapsView: View {
|
|||||||
|
|
||||||
init(state: DamusState, target: ZapTarget) {
|
init(state: DamusState, target: ZapTarget) {
|
||||||
self.state = state
|
self.state = state
|
||||||
self._model = StateObject(wrappedValue: ZapsModel(profiles: state.profiles, pool: state.pool, target: target))
|
self._model = StateObject(wrappedValue: ZapsModel(state: state, target: target))
|
||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
|||||||
Reference in New Issue
Block a user