From a4eaa50ba7034a18f7dece472f48bb127b38686f Mon Sep 17 00:00:00 2001 From: Lionello Lunesu Date: Wed, 28 Dec 2022 23:01:40 -0800 Subject: [PATCH] Make links clickable in follow user view --- damus/Util/Markdown.swift | 4 ++-- damus/Views/FollowingView.swift | 8 +++++--- damus/Views/NoteContentView.swift | 13 +++---------- damus/Views/ProfileView.swift | 4 ++-- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/damus/Util/Markdown.swift b/damus/Util/Markdown.swift index 9d6fa71..82f3d6b 100644 --- a/damus/Util/Markdown.swift +++ b/damus/Util/Markdown.swift @@ -15,7 +15,7 @@ public struct Markdown { return url.contains("://") ? url : "https://" + url } - static func parseMarkdown(content: String) -> AttributedString { + public static func parse(content: String) -> AttributedString { // Similar to the parsing in NoteContentView let md_opts: AttributedString.MarkdownParsingOptions = .init(interpretedSyntax: .inlineOnlyPreservingWhitespace) @@ -38,6 +38,6 @@ public struct Markdown { output.replaceSubrange(range, with: "[\(url)](\(Markdown.withScheme(url)))") } // TODO: escape unintentional markdown - return Markdown.parseMarkdown(content: output) + return Markdown.parse(content: output) } } diff --git a/damus/Views/FollowingView.swift b/damus/Views/FollowingView.swift index 3caf22a..f4656cc 100644 --- a/damus/Views/FollowingView.swift +++ b/damus/Views/FollowingView.swift @@ -10,7 +10,9 @@ import SwiftUI struct FollowUserView: View { let target: FollowTarget let damus_state: DamusState - + + static let markdown = Markdown() + var body: some View { HStack(alignment: .top) { let pmodel = ProfileModel(pubkey: target.pubkey, damus: damus_state) @@ -23,8 +25,8 @@ struct FollowUserView: View { VStack(alignment: .leading) { let profile = damus_state.profiles.lookup(id: target.pubkey) ProfileName(pubkey: target.pubkey, profile: profile, contacts: damus_state.contacts, show_friend_confirmed: false) - if let about = profile.flatMap { $0.about } { - Text(about) + if let about = profile?.about { + Text(FollowUserView.markdown.process(about)) } } diff --git a/damus/Views/NoteContentView.swift b/damus/Views/NoteContentView.swift index 92d80a0..ecb1c33 100644 --- a/damus/Views/NoteContentView.swift +++ b/damus/Views/NoteContentView.swift @@ -60,17 +60,10 @@ struct NoteContentView: View { let size: EventViewKind func MainContent() -> some View { - let md_opts: AttributedString.MarkdownParsingOptions = - .init(interpretedSyntax: .inlineOnlyPreservingWhitespace) - return VStack(alignment: .leading) { - if let txt = try? AttributedString(markdown: artifacts.content, options: md_opts) { - Text(txt) - .font(eventviewsize_to_font(size)) - } else { - Text(artifacts.content) - .font(eventviewsize_to_font(size)) - } + Text(Markdown.parse(content: artifacts.content)) + .font(eventviewsize_to_font(size)) + if show_images && artifacts.images.count > 0 { ImageCarousel(urls: artifacts.images) } diff --git a/damus/Views/ProfileView.swift b/damus/Views/ProfileView.swift index 34b550d..899bd9b 100644 --- a/damus/Views/ProfileView.swift +++ b/damus/Views/ProfileView.swift @@ -144,7 +144,7 @@ struct ProfileView: View { } } - static let markdownHelper = Markdown() + static let markdown = Markdown() var DMButton: some View { let dm_model = damus_state.dms.lookup_or_create(profile.pubkey) @@ -197,7 +197,7 @@ struct ProfileView: View { ProfileNameView(pubkey: profile.pubkey, profile: data, contacts: damus_state.contacts) .padding(.bottom) - Text(ProfileView.markdownHelper.process(data?.about ?? "")) + Text(ProfileView.markdown.process(data?.about ?? "")) .font(.subheadline) Divider()