commit b03bef2f8ba9f80db978eb54b8d802ba910c0f70
parent a153515366d27b95630ad795be2e42963ebc8552
Author: William Casarin <jb55@jb55.com>
Date: Fri, 6 Jan 2023 14:01:57 -0800
Profile: Add Universal Link share button
Changelog-Added: Added share button to profile
Diffstat:
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git a/damus/Views/ProfileView.swift b/damus/Views/ProfileView.swift
@@ -113,6 +113,7 @@ struct ProfileView: View {
@State private var showingEditProfile = false
@State var showing_select_wallet: Bool = false
@State var is_zoomed: Bool = false
+ @State var show_share_sheet: Bool = false
@StateObject var user_settings = UserSettingsStore()
@Environment(\.dismiss) var dismiss
@@ -165,7 +166,19 @@ struct ProfileView: View {
}
static let markdown = Markdown()
-
+
+ var ShareButton: some View {
+ Button(action: {
+ show_share_sheet = true
+ }) {
+ Image(systemName: "square.and.arrow.up.circle.fill")
+ .symbolRenderingMode(.palette)
+ .font(.system(size: 32))
+ .padding()
+ .foregroundStyle(.white, .black, .black.opacity(0.8))
+ }
+ }
+
var DMButton: some View {
let dm_model = damus_state.dms.lookup_or_create(profile.pubkey)
let dmview = DMChatView(damus_state: damus_state, pubkey: profile.pubkey)
@@ -186,6 +199,9 @@ struct ProfileView: View {
.aspectRatio(contentMode: .fill)
.frame(width: geo.size.width, height: 150)
.clipped()
+
+ ShareButton
+ .offset(x: geo.size.width - 80.0, y: 50.0 )
}
VStack(alignment: .leading) {
let data = damus_state.profiles.lookup(id: profile.pubkey)
@@ -200,7 +216,7 @@ struct ProfileView: View {
ProfilePicView(pubkey: profile.pubkey, size: zoom_size, highlight: .none, profiles: damus_state.profiles)
}
.offset(y: -(pfp_size/2.0)) // Increase if set a frame
-
+
Spacer()
Group {
@@ -223,10 +239,12 @@ struct ProfileView: View {
EditButton(damus_state: damus_state)
}
}
+
}
.offset(y: -15.0) // Increase if set a frame
+
}
-
+
ProfileNameView(pubkey: profile.pubkey, profile: data, damus: damus_state)
//.padding(.bottom)
.padding(.top,-(pfp_size/2.0))
@@ -324,6 +342,13 @@ struct ProfileView: View {
followers.unsubscribe()
// our profilemodel needs a bit more help
}
+ .sheet(isPresented: $show_share_sheet) {
+ if let npub = bech32_pubkey(profile.pubkey) {
+ if let url = URL(string: "https://damus.io/" + npub) {
+ ShareSheet(activityItems: [url])
+ }
+ }
+ }
.ignoresSafeArea()
}
}