Add replies count to selected event action bar

This commit is contained in:
2023-02-12 02:53:48 -05:00
parent 59211bb4fd
commit d10e5a87de
4 changed files with 30 additions and 13 deletions

View File

@@ -23,6 +23,7 @@ struct EventActionBar: View {
let event: NostrEvent
let test_lnurl: String?
let generator = UIImpactFeedbackGenerator(style: .medium)
let thread: ThreadV2?
// just used for previews
@State var sheet: ActionBarSheet? = nil
@@ -31,11 +32,12 @@ struct EventActionBar: View {
@ObservedObject var bar: ActionBarModel
init(damus_state: DamusState, event: NostrEvent, bar: ActionBarModel? = nil, test_lnurl: String? = nil) {
init(damus_state: DamusState, event: NostrEvent, bar: ActionBarModel? = nil, test_lnurl: String? = nil, thread: ThreadV2? = nil) {
self.damus_state = damus_state
self.event = event
self.test_lnurl = test_lnurl
_bar = ObservedObject(wrappedValue: bar ?? make_actionbar_model(ev: event.id, damus: damus_state))
self.thread = thread
}
var lnurl: String? {
@@ -45,10 +47,18 @@ struct EventActionBar: View {
var body: some View {
HStack {
if damus_state.keypair.privkey != nil {
EventActionButton(img: "bubble.left", col: nil) {
let self_replied = (thread != nil && thread!.childEvents.first { $0.pubkey == damus_state.pubkey } != nil)
EventActionButton(img: "bubble.left", col: self_replied ? Color.blue : nil) {
notify(.reply, event)
}
.accessibilityLabel(NSLocalizedString("Reply", comment: "Accessibility label for reply button"))
if thread != nil && !thread!.childEvents.isEmpty {
Text("\(thread!.childEvents.count)")
.offset(x: -10)
.font(.footnote.weight(.medium))
.foregroundColor(self_replied ? Color.blue : Color.gray)
}
}
Spacer()
ZStack {

View File

@@ -11,6 +11,7 @@ struct MutedEventView: View {
let damus_state: DamusState
let event: NostrEvent
let scroller: ScrollViewProxy?
let thread: ThreadV2?
let selected: Bool
@Binding var nav_target: String?
@@ -18,7 +19,7 @@ struct MutedEventView: View {
@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?, nav_target: Binding<String?>, navigating: Binding<Bool>, selected: Bool, thread: ThreadV2?) {
self.damus_state = damus_state
self.event = event
self.scroller = scroller
@@ -26,6 +27,7 @@ struct MutedEventView: View {
self._nav_target = nav_target
self._navigating = navigating
self._shown = State(initialValue: should_show_event(contacts: damus_state.contacts, ev: event))
self.thread = thread
}
var should_mute: Bool {
@@ -55,7 +57,7 @@ struct MutedEventView: View {
var Event: some View {
Group {
if selected {
SelectedEventView(damus: damus_state, event: event)
SelectedEventView(damus: damus_state, event: event, thread: thread)
} else {
EventView(damus: damus_state, event: event, has_action_bar: true)
.onTapGesture {
@@ -106,7 +108,7 @@ struct MutedEventView_Previews: PreviewProvider {
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, nav_target: $nav_target, navigating: $navigating, selected: false, thread: nil)
.frame(width: .infinity, height: 50)
}
}

View File

@@ -10,6 +10,7 @@ import SwiftUI
struct SelectedEventView: View {
let damus: DamusState
let event: NostrEvent
let thread: ThreadV2?
var pubkey: String {
event.pubkey
@@ -17,10 +18,11 @@ struct SelectedEventView: View {
@StateObject var bar: ActionBarModel
init(damus: DamusState, event: NostrEvent) {
init(damus: DamusState, event: NostrEvent, thread: ThreadV2?) {
self.damus = damus
self.event = event
self._bar = StateObject(wrappedValue: make_actionbar_model(ev: event.id, damus: damus))
self.thread = thread
}
var body: some View {
@@ -48,7 +50,7 @@ struct SelectedEventView: View {
Divider()
}
EventActionBar(damus_state: damus, event: event)
EventActionBar(damus_state: damus, event: event, thread: thread)
.padding([.top], 4)
Divider()
@@ -67,7 +69,7 @@ struct SelectedEventView: View {
struct SelectedEventView_Previews: PreviewProvider {
static var previews: some View {
SelectedEventView(damus: test_damus_state(), event: test_event)
SelectedEventView(damus: test_damus_state(), event: test_event, thread: nil)
.padding()
}
}

View File

@@ -263,7 +263,8 @@ struct ThreadV2View: View {
scroller: reader,
nav_target: $nav_target,
navigating: $navigating,
selected: false
selected: false,
thread: nil
)
}
}.background(GeometryReader { geometry in
@@ -285,7 +286,8 @@ struct ThreadV2View: View {
scroller: reader,
nav_target: $nav_target,
navigating: $navigating,
selected: true
selected: true,
thread: thread
).id("main")
// MARK: - Responses of the actual event view
@@ -296,7 +298,8 @@ struct ThreadV2View: View {
scroller: reader,
nav_target: $nav_target,
navigating: $navigating,
selected: false
selected: false,
thread: nil
)
}
}.padding()