commit 14accd222ed27182a2d2e800073590cfeb999186
parent abcff3b92851cb25f2f3a41e99e749abea0cb329
Author: Terry Yiu <terryyiu@gmail.com>
Date: Sun, 25 Jun 2023 09:27:57 -0400
Fix taps on mentions in note drafts to not redirect to other Nostr clients
Changelog-Fixed: Fix taps on mentions in note drafts to not redirect to other Nostr clients
Closes: #1319
Diffstat:
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/damus/Views/PostView.swift b/damus/Views/PostView.swift
@@ -84,13 +84,27 @@ struct PostView: View {
post.enumerateAttributes(in: NSRange(location: 0, length: post.length), options: []) { attributes, range, stop in
if let link = attributes[.link] as? String {
- post.replaceCharacters(in: range, with: link)
+ let normalized_link: String
+ if link.hasPrefix("damus:nostr:") {
+ // Replace damus:nostr: URI prefix with nostr: since the former is for internal navigation and not meant to be posted.
+ normalized_link = String(link.dropFirst(6))
+ } else {
+ normalized_link = link
+ }
+
+ // Add zero-width space in case text preceding the mention is not a whitespace.
+ // In the case where the character preceding the mention is a whitespace, the added zero-width space will be stripped out.
+ post.replaceCharacters(in: range, with: "\u{200B}\(normalized_link)\u{200B}")
}
}
var content = self.post.string
+ // If two zero-width spaces are next to each other, normalize it to just one zero-width space.
+ .replacingOccurrences(of: "\u{200B}\u{200B}", with: "\u{200B}")
+ // If zero-width space is next to an actual whitespace, remove the zero-width space.
+ .replacingOccurrences(of: " \u{200B}", with: " ")
+ .replacingOccurrences(of: "\u{200B} ", with: " ")
.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
- .replacingOccurrences(of: "\u{200B}", with: "") // these characters are added when adding mentions.
let imagesString = uploadedMedias.map { $0.uploadedURL.absoluteString }.joined(separator: " ")