Add DM button to profile

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2022-07-03 09:23:08 -07:00
parent 471f29f7ea
commit 366293315d
10 changed files with 102 additions and 37 deletions

View File

@@ -9,26 +9,33 @@ import SwiftUI
struct DirectMessagesView: View {
let damus_state: DamusState
@Binding var dms: [(String, [NostrEvent])]
@EnvironmentObject var model: DirectMessagesModel
var MainContent: some View {
ScrollView {
VStack {
ForEach(dms, id: \.0) { tup in
let evs = Binding<[NostrEvent]>.init(
get: { tup.1 },
set: { _ in }
)
let chat = DMChatView(damus_state: damus_state, pubkey: tup.0, events: evs)
NavigationLink(destination: chat) {
EventView(damus: damus_state, event: tup.1.last!, pubkey: tup.0)
}
.buttonStyle(PlainButtonStyle())
ForEach(model.dms, id: \.0) { tup in
MaybeEvent(tup)
}
}
}
}
func MaybeEvent(_ tup: (String, DirectMessageModel)) -> some View {
Group {
if let ev = tup.1.events.last {
let chat = DMChatView(damus_state: damus_state, pubkey: tup.0)
.environmentObject(tup.1)
NavigationLink(destination: chat) {
EventView(damus: damus_state, event: ev, pubkey: tup.0)
}
.buttonStyle(PlainButtonStyle())
} else {
EmptyView()
}
}
}
var body: some View {
MainContent
.navigationTitle("Encrypted DMs")
@@ -41,12 +48,8 @@ struct DirectMessagesView_Previews: PreviewProvider {
pubkey: "pubkey",
kind: 4,
tags: [])
let dms = Binding<[(String, [NostrEvent])]>.init(
get: {
return [ ("pubkey", [ ev ]) ]
},
set: { _ in }
)
DirectMessagesView(damus_state: test_damus_state(), dms: dms)
let model = DirectMessageModel(events: [ev])
DirectMessagesView(damus_state: test_damus_state())
.environmentObject(model)
}
}