Add menu ellipsis button to notes

Changelog-Added: Add ellipsis button to notes
This commit is contained in:
ericholguin
2023-02-10 23:57:20 -07:00
committed by William Casarin
parent cff98161ee
commit b6a7f52596
7 changed files with 110 additions and 62 deletions

View File

@@ -210,11 +210,11 @@ struct ImageCarousel: View {
Text(url.absoluteString) Text(url.absoluteString)
} }
.id(url.absoluteString) .id(url.absoluteString)
.contextMenu { // .contextMenu {
Button(NSLocalizedString("Copy Image", comment: "Context menu option to copy an image to clipboard.")) { // Button(NSLocalizedString("Copy Image", comment: "Context menu option to copy an image to clipboard.")) {
UIPasteboard.general.string = url.absoluteString // UIPasteboard.general.string = url.absoluteString
} // }
} // }
} }
} }
} }

View File

@@ -25,7 +25,7 @@ struct ChatroomView: View {
next_ev: ind == count-1 ? nil : thread.events[ind+1], next_ev: ind == count-1 ? nil : thread.events[ind+1],
damus_state: damus damus_state: damus
) )
.event_context_menu(ev, keypair: damus.keypair, target_pubkey: ev.pubkey, bookmarks: damus.bookmarks) .contextMenu{MenuItems(event: ev, keypair: damus.keypair, target_pubkey: ev.pubkey, bookmarks: damus.bookmarks)}
.onTapGesture { .onTapGesture {
if thread.event.id == ev.id { if thread.event.id == ev.id {
//dismiss() //dismiss()

View File

@@ -19,7 +19,7 @@ struct DMChatView: View {
VStack(alignment: .leading) { VStack(alignment: .leading) {
ForEach(Array(zip(dms.events, dms.events.indices)), id: \.0.id) { (ev, ind) in ForEach(Array(zip(dms.events, dms.events.indices)), id: \.0.id) { (ev, ind) in
DMView(event: dms.events[ind], damus_state: damus_state) DMView(event: dms.events[ind], damus_state: damus_state)
.event_context_menu(ev, keypair: damus_state.keypair, target_pubkey: ev.pubkey, bookmarks: damus_state.bookmarks) .contextMenu{MenuItems(event: ev, keypair: damus_state.keypair, target_pubkey: ev.pubkey, bookmarks: damus_state.bookmarks)}
} }
EndBlock(height: 80) EndBlock(height: 80)
} }

View File

@@ -18,12 +18,20 @@ struct EmbeddedEventView: View {
var body: some View { var body: some View {
VStack(alignment: .leading) { VStack(alignment: .leading) {
let profile = damus_state.profiles.lookup(id: pubkey) let profile = damus_state.profiles.lookup(id: pubkey)
HStack {
EventProfile(damus_state: damus_state, pubkey: pubkey, profile: profile, size: .small) EventProfile(damus_state: damus_state, pubkey: pubkey, profile: profile, size: .small)
Spacer()
EventMenuContext(event: event, keypair: damus_state.keypair, target_pubkey: event.pubkey, bookmarks: damus_state.bookmarks)
.padding([.bottom], 4)
}
.minimumScaleFactor(0.75)
.lineLimit(1)
EventBody(damus_state: damus_state, event: event, size: .small) EventBody(damus_state: damus_state, event: event, size: .small)
} }
.event_context_menu(event, keypair: damus_state.keypair, target_pubkey: pubkey, bookmarks: damus_state.bookmarks)
} }
} }

View File

@@ -13,6 +13,29 @@ struct EventMenuContext: View {
let target_pubkey: String let target_pubkey: String
let bookmarks: BookmarksManager let bookmarks: BookmarksManager
var body: some View {
HStack {
Menu {
MenuItems(event: event, keypair: keypair, target_pubkey: target_pubkey, bookmarks: bookmarks)
} label: {
Label(NSLocalizedString("", comment: "Context menu"), systemImage: "ellipsis")
.foregroundColor(Color.gray)
}
}
.contentShape(Rectangle())
.onTapGesture {}
}
}
struct MenuItems: View {
let event: NostrEvent
let keypair: Keypair
let target_pubkey: String
let bookmarks: BookmarksManager
@State private var isBookmarked: Bool = false @State private var isBookmarked: Bool = false
init(event: NostrEvent, keypair: Keypair, target_pubkey: String, bookmarks: BookmarksManager) { init(event: NostrEvent, keypair: Keypair, target_pubkey: String, bookmarks: BookmarksManager) {
@@ -27,6 +50,7 @@ struct EventMenuContext: View {
var body: some View { var body: some View {
Group {
Button { Button {
UIPasteboard.general.string = event.get_content(keypair.privkey) UIPasteboard.general.string = event.get_content(keypair.privkey)
} label: { } label: {
@@ -83,6 +107,7 @@ struct EventMenuContext: View {
} }
} }
} }
}
} }
/* /*

View File

@@ -28,7 +28,18 @@ struct SelectedEventView: View {
let profile = damus.profiles.lookup(id: pubkey) let profile = damus.profiles.lookup(id: pubkey)
VStack(alignment: .leading) { VStack(alignment: .leading) {
HStack {
EventProfile(damus_state: damus, pubkey: pubkey, profile: profile, size: .normal) EventProfile(damus_state: damus, pubkey: pubkey, profile: profile, size: .normal)
Spacer()
EventMenuContext(event: event, keypair: damus.keypair, target_pubkey: event.pubkey, bookmarks: damus.bookmarks)
.padding([.bottom], 4)
}
.minimumScaleFactor(0.75)
.lineLimit(1)
EventBody(damus_state: damus, event: event, size: .selected) EventBody(damus_state: damus, event: event, size: .selected)
if let mention = first_eref_mention(ev: event, privkey: damus.keypair.privkey) { if let mention = first_eref_mention(ev: event, privkey: damus.keypair.privkey) {
@@ -60,7 +71,6 @@ struct SelectedEventView: View {
self.bar.update(damus: self.damus, evid: target) self.bar.update(damus: self.damus, evid: target)
} }
.padding([.leading], 2) .padding([.leading], 2)
.event_context_menu(event, keypair: damus.keypair, target_pubkey: event.pubkey, bookmarks: damus.bookmarks)
} }
} }
} }

View File

@@ -44,7 +44,13 @@ struct TextEvent: View {
.foregroundColor(.gray) .foregroundColor(.gray)
Spacer() Spacer()
EventMenuContext(event: event, keypair: damus.keypair, target_pubkey: event.pubkey, bookmarks: damus.bookmarks)
.padding([.bottom], 4)
} }
.minimumScaleFactor(0.75)
.lineLimit(1)
EventBody(damus_state: damus, event: event, size: .normal) EventBody(damus_state: damus, event: event, size: .normal)
@@ -66,7 +72,6 @@ struct TextEvent: View {
.id(event.id) .id(event.id)
.frame(maxWidth: .infinity, minHeight: PFP_SIZE) .frame(maxWidth: .infinity, minHeight: PFP_SIZE)
.padding([.bottom], 2) .padding([.bottom], 2)
.event_context_menu(event, keypair: damus.keypair, target_pubkey: pubkey, bookmarks: damus.bookmarks)
} }
} }