committed by
William Casarin
parent
0da10eb716
commit
9847f12c95
@@ -7,41 +7,16 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
enum InitialEvent {
|
||||
case event(NostrEvent)
|
||||
case event_id(String)
|
||||
|
||||
var is_event_id: String? {
|
||||
if case .event_id(let evid) = self {
|
||||
return evid
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var id: String {
|
||||
switch self {
|
||||
case .event(let ev):
|
||||
return ev.id
|
||||
case .event_id(let evid):
|
||||
return evid
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// manages the lifetime of a thread
|
||||
class ThreadModel: ObservableObject {
|
||||
@Published var event: NostrEvent
|
||||
var event_map: Set<NostrEvent>
|
||||
|
||||
@Published var loading: Bool = false
|
||||
|
||||
var replies: ReplyMap = ReplyMap()
|
||||
|
||||
init(event: NostrEvent, damus_state: DamusState) {
|
||||
self.damus_state = damus_state
|
||||
self.event_map = Set()
|
||||
self.event = event
|
||||
add_event(event, privkey: nil)
|
||||
add_event(event)
|
||||
}
|
||||
|
||||
let damus_state: DamusState
|
||||
@@ -65,9 +40,9 @@ class ThreadModel: ObservableObject {
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
func set_active_event(_ ev: NostrEvent, privkey: String?) -> Bool {
|
||||
func set_active_event(_ ev: NostrEvent) -> Bool {
|
||||
self.event = ev
|
||||
add_event(ev, privkey: privkey)
|
||||
add_event(ev)
|
||||
|
||||
//self.objectWillChange.send()
|
||||
return false
|
||||
@@ -96,24 +71,15 @@ class ThreadModel: ObservableObject {
|
||||
|
||||
meta_events.limit = 1000
|
||||
|
||||
/*
|
||||
if let last_ev = self.events.last {
|
||||
if last_ev.created_at <= Int64(Date().timeIntervalSince1970) {
|
||||
ref_events.since = last_ev.created_at
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
let base_filters = [event_filter, ref_events]
|
||||
let meta_filters = [meta_events]
|
||||
|
||||
print("subscribing to thread \(event.id) with sub_id \(base_subid)")
|
||||
loading = true
|
||||
damus_state.pool.subscribe(sub_id: base_subid, filters: base_filters, handler: handle_event)
|
||||
damus_state.pool.subscribe(sub_id: meta_subid, filters: meta_filters, handler: handle_event)
|
||||
}
|
||||
|
||||
func add_event(_ ev: NostrEvent, privkey: String?) {
|
||||
func add_event(_ ev: NostrEvent) {
|
||||
if event_map.contains(ev) {
|
||||
return
|
||||
}
|
||||
@@ -136,7 +102,7 @@ class ThreadModel: ObservableObject {
|
||||
if ev.known_kind == .metadata {
|
||||
process_metadata_event(events: damus_state.events, our_pubkey: damus_state.pubkey, profiles: damus_state.profiles, ev: ev)
|
||||
} else if ev.is_textlike {
|
||||
self.add_event(ev, privkey: self.damus_state.keypair.privkey)
|
||||
self.add_event(ev)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,10 +110,6 @@ class ThreadModel: ObservableObject {
|
||||
return
|
||||
}
|
||||
|
||||
if event_map.contains(event) {
|
||||
loading = false
|
||||
}
|
||||
|
||||
if sub_id == self.base_subid {
|
||||
load_profiles(profiles_subid: self.profiles_subid, relay_id: relay_id, load: .from_events(Array(event_map)), damus_state: damus_state)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user