Replace indexed mentions with NIP-27

Changelog-Fixed: Replace indexed mentions with NIP-27
Closes: #1213
This commit is contained in:
2023-05-30 23:41:41 -04:00
committed by William Casarin
parent 1d3c181b85
commit 14977fe3dd
6 changed files with 24 additions and 29 deletions

View File

@@ -10,7 +10,7 @@ import Foundation
enum MentionType {
case pubkey
case event
var ref: String {
switch self {
case .pubkey:
@@ -495,14 +495,17 @@ func make_post_tags(post_blocks: [PostBlock], tags: [[String]], silent_mentions:
continue
}
if let ind = find_tag_ref(type: ref.key, id: ref.ref_id, tags: tags) {
let mention = Mention(index: ind, type: mention_type, ref: ref)
if find_tag_ref(type: ref.key, id: ref.ref_id, tags: tags) != nil {
// Mention index is nil because indexed mentions from NIP-08 is deprecated.
// It has been replaced with NIP-27 text note references with nostr: prefixed URIs.
let mention = Mention(index: nil, type: mention_type, ref: ref)
let block = Block.mention(mention)
blocks.append(block)
} else {
let ind = new_tags.count
new_tags.append(refid_to_tag(ref))
let mention = Mention(index: ind, type: mention_type, ref: ref)
// Mention index is nil because indexed mentions from NIP-08 is deprecated.
// It has been replaced with NIP-27 text note references with nostr: prefixed URIs.
let mention = Mention(index: nil, type: mention_type, ref: ref)
let block = Block.mention(mention)
blocks.append(block)
}

View File

@@ -21,7 +21,6 @@ struct NostrPost {
}
}
// TODO: parse nostr:{e,p}:pubkey uris as well
func parse_post_mention_type(_ p: Parser) -> MentionType? {
if parse_char(p, "@") {
return .pubkey

View File

@@ -60,24 +60,13 @@ func parse_nostr_ref_uri(_ p: Parser) -> ReferencedId? {
if !parse_str(p, "nostr:") {
return nil
}
guard let typ = parse_nostr_ref_uri_type(p) else {
guard let ref = parse_post_bech32_mention(p) else {
p.pos = start
return nil
}
if !parse_char(p, ":") {
p.pos = start
return nil
}
guard let pk = parse_hexstr(p, len: 64) else {
p.pos = start
return nil
}
// TODO: parse relays from nostr uris
return ReferencedId(ref_id: pk, relay_id: nil, key: typ)
return ref
}
func decode_universal_link(_ s: String) -> NostrLink? {

View File

@@ -83,7 +83,9 @@ struct PostView: View {
}
}
var content = self.post.string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
var content = self.post.string
.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: " ")

View File

@@ -63,7 +63,7 @@ struct UserSearch: View {
let tagAttributedString = NSMutableAttributedString(string: tagString,
attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18.0),
NSAttributedString.Key.link: "@\(pk)"])
NSAttributedString.Key.link: "nostr:\(pk)"])
tagAttributedString.removeAttribute(.link, range: NSRange(location: tagAttributedString.length - 2, length: 2))
tagAttributedString.addAttributes([NSAttributedString.Key.foregroundColor: UIColor.label], range: NSRange(location: tagAttributedString.length - 2, length: 2))