Make status rows draggable (#2141)

This commit is contained in:
fwcd 2024-07-29 07:56:42 +02:00 committed by GitHub
parent 9af98c3921
commit 33c2646ea1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 10 additions and 6 deletions

View file

@ -124,6 +124,7 @@ public struct StatusRowView: View {
} }
} }
} }
.if(viewModel.url != nil) { $0.draggable(viewModel.url!) }
.contextMenu { .contextMenu {
contextMenu contextMenu
.onAppear { .onAppear {

View file

@ -105,7 +105,11 @@ import SwiftUI
status.reblog?.inReplyToId != nil || status.reblog?.inReplyToAccountId != nil || status.reblog?.inReplyToId != nil || status.reblog?.inReplyToAccountId != nil ||
status.inReplyToId != nil || status.inReplyToAccountId != nil status.inReplyToId != nil || status.inReplyToAccountId != nil
} }
var url: URL? {
(status.reblog?.url ?? status.url).flatMap(URL.init(string:))
}
@ViewBuilder @ViewBuilder
func makeBackgroundColor(isHomeTimeline: Bool) -> some View { func makeBackgroundColor(isHomeTimeline: Bool) -> some View {
if isHomeTimeline, theme.showContentGradient { if isHomeTimeline, theme.showContentGradient {

View file

@ -81,6 +81,7 @@ public struct StatusRowCardView: View {
.stroke(.gray.opacity(0.35), lineWidth: 1) .stroke(.gray.opacity(0.35), lineWidth: 1)
} }
} }
.draggable(url)
.contextMenu { .contextMenu {
ShareLink(item: url) { ShareLink(item: url) {
Label("status.card.share", systemImage: "square.and.arrow.up") Label("status.card.share", systemImage: "square.and.arrow.up")

View file

@ -88,9 +88,7 @@ struct StatusRowContextMenu: View {
Divider() Divider()
Menu("status.action.share-title") { Menu("status.action.share-title") {
if let urlString = viewModel.status.reblog?.url ?? viewModel.status.url, if let url = viewModel.url {
let url = URL(string: urlString)
{
ShareLink(item: url, ShareLink(item: url,
subject: Text(viewModel.status.reblog?.account.safeDisplayName ?? viewModel.status.account.safeDisplayName), subject: Text(viewModel.status.reblog?.account.safeDisplayName ?? viewModel.status.account.safeDisplayName),
message: Text(viewModel.status.reblog?.content.asRawText ?? viewModel.status.content.asRawText)) message: Text(viewModel.status.reblog?.content.asRawText ?? viewModel.status.content.asRawText))
@ -133,7 +131,7 @@ struct StatusRowContextMenu: View {
} }
} }
if let url = URL(string: viewModel.status.reblog?.url ?? viewModel.status.url ?? "") { if let url = viewModel.url {
Button { UIApplication.shared.open(url) } label: { Button { UIApplication.shared.open(url) } label: {
Label("status.action.view-in-browser", systemImage: "safari") Label("status.action.view-in-browser", systemImage: "safari")
} }
@ -152,7 +150,7 @@ struct StatusRowContextMenu: View {
} }
Button { Button {
UIPasteboard.general.string = viewModel.status.reblog?.url ?? viewModel.status.url UIPasteboard.general.url = viewModel.url
} label: { } label: {
Label("status.action.copy-link", systemImage: "link") Label("status.action.copy-link", systemImage: "link")
} }