Files
damus/damus/Views/DirectMessagesView.swift
2022-12-31 18:10:29 -08:00

71 lines
2.0 KiB
Swift

//
// DirectMessagesView.swift
// damus
//
// Created by William Casarin on 2022-06-29.
//
import SwiftUI
struct DirectMessagesView: View {
let damus_state: DamusState
@State var open_dm: Bool = false
@State var pubkey: String = ""
@State var active_model: DirectMessageModel = DirectMessageModel()
@EnvironmentObject var model: DirectMessagesModel
var MainContent: some View {
ScrollView {
let chat = DMChatView(damus_state: damus_state, pubkey: pubkey)
.environmentObject(active_model)
NavigationLink(destination: chat, isActive: $open_dm) {
EmptyView()
}
LazyVStack {
if model.dms.isEmpty, !model.loading {
EmptyTimelineView()
} else {
ForEach(model.dms, id: \.0) { tup in
MaybeEvent(tup)
}
}
}
.padding(.horizontal)
.padding(.top)
}
}
func MaybeEvent(_ tup: (String, DirectMessageModel)) -> some View {
Group {
if let ev = tup.1.events.last {
EventView(damus: damus_state, event: ev, pubkey: tup.0, show_friend_icon: true)
.onTapGesture {
pubkey = tup.0
active_model = tup.1
open_dm = true
}
} else {
EmptyView()
}
}
}
var body: some View {
MainContent
.navigationTitle("Encrypted DMs")
}
}
struct DirectMessagesView_Previews: PreviewProvider {
static var previews: some View {
let ev = NostrEvent(content: "encrypted stuff",
pubkey: "pubkey",
kind: 4,
tags: [])
let model = DirectMessageModel(events: [ev])
DirectMessagesView(damus_state: test_damus_state())
.environmentObject(model)
}
}