Compare commits
1 Commits
hide-last-
...
tyiu/selec
| Author | SHA1 | Date | |
|---|---|---|---|
|
d10e5a87de
|
@@ -23,19 +23,21 @@ 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
|
||||
@State var confirm_boost: Bool = false
|
||||
@State var show_share_sheet: Bool = false
|
||||
|
||||
|
||||
@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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
@@ -47,8 +49,8 @@ struct SelectedEventView: View {
|
||||
EventDetailBar(state: damus, target: event.id, target_pk: event.pubkey)
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user