@@ -95,7 +95,12 @@ struct ContentView: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationView {
|
NavigationView {
|
||||||
VStack {
|
VStack {
|
||||||
TopBar(selected: self.timeline)
|
if self.loading {
|
||||||
|
ProgressView()
|
||||||
|
.progressViewStyle(.circular)
|
||||||
|
.padding([.bottom], 4)
|
||||||
|
}
|
||||||
|
|
||||||
ZStack {
|
ZStack {
|
||||||
if let pool = self.pool {
|
if let pool = self.pool {
|
||||||
MainContent(pool: pool)
|
MainContent(pool: pool)
|
||||||
@@ -103,6 +108,7 @@ struct ContentView: View {
|
|||||||
}
|
}
|
||||||
PostButtonContainer
|
PostButtonContainer
|
||||||
}
|
}
|
||||||
|
TopBar(selected: self.timeline ?? .friends)
|
||||||
}
|
}
|
||||||
.navigationBarTitle("Damus", displayMode: .inline)
|
.navigationBarTitle("Damus", displayMode: .inline)
|
||||||
}
|
}
|
||||||
@@ -220,14 +226,14 @@ struct ContentView: View {
|
|||||||
|
|
||||||
switch ev {
|
switch ev {
|
||||||
case .connected:
|
case .connected:
|
||||||
|
self.loading = ((self.pool?.num_connecting ?? 0) > 0)
|
||||||
send_filters(relay_id: relay_id)
|
send_filters(relay_id: relay_id)
|
||||||
case .error(let merr):
|
case .error(let merr):
|
||||||
let desc = merr.debugDescription
|
let desc = merr.debugDescription
|
||||||
if desc.contains("Software caused connection abort") {
|
if desc.contains("Software caused connection abort") {
|
||||||
self.pool?.reconnect(to: [relay_id])
|
self.pool?.reconnect(to: [relay_id])
|
||||||
}
|
}
|
||||||
case .disconnected:
|
case .disconnected: fallthrough
|
||||||
self.pool?.reconnect(to: [relay_id])
|
|
||||||
case .cancelled:
|
case .cancelled:
|
||||||
self.pool?.reconnect(to: [relay_id])
|
self.pool?.reconnect(to: [relay_id])
|
||||||
case .reconnectSuggested(let t):
|
case .reconnectSuggested(let t):
|
||||||
@@ -248,10 +254,6 @@ struct ContentView: View {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.loading {
|
|
||||||
self.loading = false
|
|
||||||
}
|
|
||||||
|
|
||||||
if has_events[ev.id] == nil {
|
if has_events[ev.id] == nil {
|
||||||
has_events[ev.id] = ()
|
has_events[ev.id] = ()
|
||||||
let last_k = last_event_of_kind[ev.kind]
|
let last_k = last_event_of_kind[ev.kind]
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ class RelayPool {
|
|||||||
var descriptors: [RelayDescriptor] {
|
var descriptors: [RelayDescriptor] {
|
||||||
relays.map { $0.descriptor }
|
relays.map { $0.descriptor }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var num_connecting: Int {
|
||||||
|
return relays.reduce(0) { n, r in n + (r.connection.isConnecting ? 1 : 0) }
|
||||||
|
}
|
||||||
|
|
||||||
func remove_handler(sub_id: String) {
|
func remove_handler(sub_id: String) {
|
||||||
handlers = handlers.filter { $0.sub_id != sub_id }
|
handlers = handlers.filter { $0.sub_id != sub_id }
|
||||||
|
|||||||
Reference in New Issue
Block a user