Show zap comments in threads and show top zap

Changelog-Added: Top zaps
Changelog-Added: Show zap comments in threads
This commit is contained in:
William Casarin
2023-06-09 10:10:33 +02:00
parent 8f237b47eb
commit 043eb5b436
19 changed files with 258 additions and 140 deletions

View File

@@ -10,9 +10,18 @@ import SwiftUI
struct ThreadView: View {
let state: DamusState
@StateObject var thread: ThreadModel
@ObservedObject var thread: ThreadModel
@ObservedObject var zaps: ZapsDataModel
@Environment(\.dismiss) var dismiss
init(state: DamusState, thread: ThreadModel) {
self.state = state
self._thread = ObservedObject(wrappedValue: thread)
let zaps = state.events.get_cache_data(thread.event.id).zaps_model
self._zaps = ObservedObject(wrappedValue: zaps)
}
var parent_events: [NostrEvent] {
state.events.parent_events(event: thread.event)
}
@@ -22,23 +31,28 @@ struct ThreadView: View {
}
var body: some View {
let top_zap = get_top_zap(events: state.events, evid: thread.event.id)
ScrollViewReader { reader in
ScrollView {
LazyVStack {
// MARK: - Parents events view
ForEach(parent_events, id: \.id) { parent_event in
MutedEventView(damus_state: state,
event: parent_event,
selected: false)
.padding(.horizontal)
.onTapGesture {
thread.set_active_event(parent_event)
scroll_to_event(scroller: reader, id: parent_event.id, delay: 0.1, animate: false)
if top_zap?.event?.id != parent_event.id {
MutedEventView(damus_state: state,
event: parent_event,
selected: false)
.padding(.horizontal)
.onTapGesture {
thread.set_active_event(parent_event)
scroll_to_event(scroller: reader, id: parent_event.id, delay: 0.1, animate: false)
}
Divider()
.padding(.top, 4)
.padding(.leading, 25 * 2)
}
Divider()
.padding(.top, 4)
.padding(.leading, 25 * 2)
}.background(GeometryReader { geometry in
// get the height and width of the EventView view
let eventHeight = geometry.frame(in: .global).height
@@ -59,20 +73,27 @@ struct ThreadView: View {
)
.id(self.thread.event.id)
if let top_zap {
ZapEvent(damus: state, zap: top_zap, is_top_zap: true)
.padding(.horizontal)
}
ForEach(child_events, id: \.id) { child_event in
MutedEventView(
damus_state: state,
event: child_event,
selected: false
)
.padding(.horizontal)
.onTapGesture {
thread.set_active_event(child_event)
scroll_to_event(scroller: reader, id: child_event.id, delay: 0.1, animate: false)
if top_zap?.event?.id != child_event.id {
MutedEventView(
damus_state: state,
event: child_event,
selected: false
)
.padding(.horizontal)
.onTapGesture {
thread.set_active_event(child_event)
scroll_to_event(scroller: reader, id: child_event.id, delay: 0.1, animate: false)
}
Divider()
.padding([.top], 4)
}
Divider()
.padding([.top], 4)
}
}
}.navigationBarTitle(NSLocalizedString("Thread", comment: "Navigation bar title for note thread."))