1
0
mirror of git://jb55.com/damus synced 2024-09-18 19:23:49 +00:00

scroll to note in thread

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin 2022-04-17 06:03:37 -07:00
parent f2631bd086
commit 41911908e7
3 changed files with 37 additions and 22 deletions

View File

@ -54,7 +54,7 @@ struct ContentView: View {
.navigationBarTitle("Note")
.environmentObject(profiles)
NavigationLink(destination: evdet) {
EventView(event: ev, highlighted: false)
EventView(event: ev, highlighted: false, has_action_bar: true)
}
.buttonStyle(PlainButtonStyle())
}

View File

@ -61,29 +61,40 @@ struct EventDetailView: View {
}
var body: some View {
ScrollView {
ForEach(events, id: \.id) { ev in
if ev.id == event.id {
EventView(event: ev, highlighted: ev.id == event.id)
} else {
let evdet = EventDetailView(event: ev, pool: pool)
.navigationBarTitle("Note")
.environmentObject(profiles)
NavigationLink(destination: evdet) {
EventView(event: ev, highlighted: ev.id == event.id)
ScrollViewReader { proxy in
ScrollView {
ForEach(events, id: \.id) { ev in
let is_active_id = ev.id == event.id
if is_active_id {
EventView(event: ev, highlighted: is_active_id, has_action_bar: true)
.onAppear() {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
withAnimation {
proxy.scrollTo(event.id)
}
}
}
} else {
let evdet = EventDetailView(event: ev, pool: pool)
.navigationBarTitle("Note")
.environmentObject(profiles)
NavigationLink(destination: evdet) {
EventView(event: ev, highlighted: is_active_id, has_action_bar: true)
}
.buttonStyle(PlainButtonStyle())
}
.buttonStyle(PlainButtonStyle())
}
}
}
.padding()
.onDisappear() {
unsubscribe_to_thread()
}
.onAppear() {
self.add_event(event)
subscribe_to_thread()
.padding()
.onDisappear() {
unsubscribe_to_thread()
}
.onAppear() {
self.add_event(event)
subscribe_to_thread()
}
}
}

View File

@ -12,6 +12,7 @@ import CachedAsyncImage
struct EventView: View {
let event: NostrEvent
let highlighted: Bool
let has_action_bar: Bool
@EnvironmentObject var profiles: Profiles
@ -41,12 +42,15 @@ struct EventView: View {
Spacer()
EventActionBar(event: event, profiles: profiles)
if has_action_bar {
EventActionBar(event: event)
}
Divider()
.padding([.top], 4)
}
}
.id(event.id)
.frame(minHeight: PFP_SIZE)
.padding([.bottom], 4)
}