Browse Source

global: make sure we unsubscribe after each refresh

profile-edit
William Casarin 2 years ago
parent
commit
37460f933b
  1. 9
      damus/Models/SearchHomeModel.swift
  2. 6
      damus/Views/SearchHomeView.swift

9
damus/Models/SearchHomeModel.swift

@ -35,9 +35,9 @@ class SearchHomeModel: ObservableObject {
damus_state.pool.subscribe(sub_id: base_subid, filters: [get_base_filter()], handler: handle_event) damus_state.pool.subscribe(sub_id: base_subid, filters: [get_base_filter()], handler: handle_event)
} }
func unsubscribe() { func unsubscribe(to: String? = nil) {
loading = false loading = false
damus_state.pool.unsubscribe(sub_id: base_subid) damus_state.pool.unsubscribe(sub_id: base_subid, to: to.map { [$0] })
} }
func handle_event(relay_id: String, conn_ev: NostrConnectionEvent) { func handle_event(relay_id: String, conn_ev: NostrConnectionEvent) {
@ -65,9 +65,14 @@ class SearchHomeModel: ObservableObject {
loading = false loading = false
if sub_id == self.base_subid { if sub_id == self.base_subid {
// Make sure we unsubscribe after we've fetched the global events
// global events are not realtime
unsubscribe(to: relay_id)
load_profiles(profiles_subid: profiles_subid, relay_id: relay_id, events: events, damus_state: damus_state) load_profiles(profiles_subid: profiles_subid, relay_id: relay_id, events: events, damus_state: damus_state)
} }
break break
} }
} }

6
damus/Views/SearchHomeView.swift

@ -85,7 +85,11 @@ struct SearchHomeView: View {
print("search change 1") print("search change 1")
} }
.onAppear { .onAppear {
model.subscribe() // TODO: This will always be empty when switching between tabs
// We'll need to store these in
if model.events.isEmpty {
model.subscribe()
}
} }
.onDisappear { .onDisappear {
model.unsubscribe() model.unsubscribe()

Loading…
Cancel
Save