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

@@ -13,21 +13,22 @@ struct InnerTimelineView: View {
let damus: DamusState
let show_friend_icon: Bool
let filter: (NostrEvent) -> Bool
@State var nav_target: NostrEvent? = nil
@State var nav_target: NostrEvent
@State var navigating: Bool = false
var MaybeBuildThreadView: some View {
Group {
if let ev = nav_target {
BuildThreadV2View(damus: damus, event_id: (ev.inner_event ?? ev).id)
} else {
EmptyView()
}
}
init(events: EventHolder, damus: DamusState, show_friend_icon: Bool, filter: @escaping (NostrEvent) -> Bool) {
self.events = events
self.damus = damus
self.show_friend_icon = show_friend_icon
self.filter = filter
// dummy event to avoid MaybeThreadView
self._nav_target = State(initialValue: test_event)
}
var body: some View {
NavigationLink(destination: MaybeBuildThreadView, isActive: $navigating) {
let thread = ThreadModel(event: nav_target, damus_state: damus)
let dest = ThreadView(state: damus, thread: thread)
NavigationLink(destination: dest, isActive: $navigating) {
EmptyView()
}
LazyVStack(spacing: 0) {
@@ -55,7 +56,7 @@ struct InnerTimelineView: View {
struct InnerTimelineView_Previews: PreviewProvider {
static var previews: some View {
InnerTimelineView(events: test_event_holder, damus: test_damus_state(), show_friend_icon: true, filter: { _ in true }, nav_target: nil, navigating: false)
InnerTimelineView(events: test_event_holder, damus: test_damus_state(), show_friend_icon: true, filter: { _ in true })
.frame(width: 300, height: 500)
.border(Color.red)
}