Thread Caching

Changelog-Added: Threads now load instantly and are cached
This commit is contained in:
William Casarin
2023-03-04 14:33:01 -05:00
parent b58baca227
commit d0a6c2e2e4
20 changed files with 433 additions and 539 deletions

View File

@@ -62,7 +62,9 @@ struct BuilderEventView: View {
VStack {
if let event = event {
let ev = event.inner_event ?? event
NavigationLink(destination: BuildThreadV2View(damus: damus, event_id: ev.id)) {
let thread = ThreadModel(event: ev, damus_state: damus)
let dest = ThreadView(state: damus, thread: thread)
NavigationLink(destination: dest) {
EmbeddedEventView(damus_state: damus, event: event)
.padding(8)
}.buttonStyle(.plain)

View File

@@ -13,18 +13,14 @@ struct MutedEventView: View {
let scroller: ScrollViewProxy?
let selected: Bool
@Binding var nav_target: String?
@Binding var navigating: Bool
@State var shown: Bool
@Environment(\.colorScheme) var colorScheme
init(damus_state: DamusState, event: NostrEvent, scroller: ScrollViewProxy?, nav_target: Binding<String?>, navigating: Binding<Bool>, selected: Bool) {
init(damus_state: DamusState, event: NostrEvent, scroller: ScrollViewProxy?, selected: Bool) {
self.damus_state = damus_state
self.event = event
self.scroller = scroller
self.selected = selected
self._nav_target = nav_target
self._navigating = navigating
self._shown = State(initialValue: should_show_event(contacts: damus_state.contacts, ev: event))
}
@@ -58,14 +54,6 @@ struct MutedEventView: View {
SelectedEventView(damus: damus_state, event: event)
} else {
EventView(damus: damus_state, event: event)
.onTapGesture {
nav_target = event.id
navigating = true
}
.onAppear {
// TODO: find another solution to prevent layout shifting and layout blocking on large responses
scroller?.scrollTo("main", anchor: .bottom)
}
}
}
}
@@ -101,12 +89,12 @@ struct MutedEventView: View {
}
struct MutedEventView_Previews: PreviewProvider {
@State static var nav_target: String? = nil
@State static var nav_target: NostrEvent = test_event
@State static var navigating: Bool = false
static var previews: some View {
MutedEventView(damus_state: test_damus_state(), event: test_event, scroller: nil, nav_target: $nav_target, navigating: $navigating, selected: false)
MutedEventView(damus_state: test_damus_state(), event: test_event, scroller: nil, selected: false)
.frame(width: .infinity, height: 50)
}
}