upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/25.md
diff options
context:
space:
mode:
Diffstat (limited to '25.md')
-rw-r--r--25.md41
1 files changed, 29 insertions, 12 deletions
diff --git a/25.md b/25.md
index 3b4aa59..671c55f 100644
--- a/25.md
+++ b/25.md
@@ -25,24 +25,22 @@ consider it a "+".
25Tags 25Tags
26---- 26----
27 27
28The reaction event SHOULD include `e` and `p` tags from the note the user is 28The reaction event SHOULD include `e` and `p` tags from the note the user is reacting to (and optionally `a` tags if the target is a replaceable event). This allows users to be notified of reactions to posts they were mentioned in. Including the `e` tags enables clients to pull all the reactions associated with individual posts or all the posts in a thread. `a` tags enables clients to seek reactions for all versions of a replaceable event.
29reacting to. This allows users to be notified of reactions to posts they were
30mentioned in. Including the `e` tags enables clients to pull all the reactions
31associated with individual posts or all the posts in a thread.
32 29
33The last `e` tag MUST be the `id` of the note that is being reacted to. 30The last `e` tag MUST be the `id` of the note that is being reacted to.
34 31
35The last `p` tag MUST be the `pubkey` of the event being reacted to. 32The last `p` tag MUST be the `pubkey` of the event being reacted to.
36 33
37The reaction event MAY include a `k` tag with the stringified kind number 34The `a` tag MUST contain the coordinates (`kind:pubkey:d-tag`) of the replaceable being reacted to.
38of the reacted event as its value. 35
36The reaction event MAY include a `k` tag with the stringified kind number of the reacted event as its value.
39 37
40Example code 38Example code
41 39
42```swift 40```swift
43func make_like_event(pubkey: String, privkey: String, liked: NostrEvent) -> NostrEvent { 41func make_like_event(pubkey: String, privkey: String, liked: NostrEvent) -> NostrEvent {
44 var tags: [[String]] = liked.tags.filter { 42 var tags: [[String]] = liked.tags.filter {
45 tag in tag.count >= 2 && (tag[0] == "e" || tag[0] == "p") 43 tag in tag.count >= 2 && (tag[0] == "e" || tag[0] == "p")
46 } 44 }
47 tags.append(["e", liked.id]) 45 tags.append(["e", liked.id])
48 tags.append(["p", liked.pubkey]) 46 tags.append(["p", liked.pubkey])
@@ -54,6 +52,26 @@ func make_like_event(pubkey: String, privkey: String, liked: NostrEvent) -> Nost
54} 52}
55``` 53```
56 54
55Reactions to a website
56---------------------
57
58If the target of the reaction is a website, the reaction MUST be a `kind 17` event and MUST include an `r` tag with the website's URL.
59
60```jsonc
61{
62 "kind": 17,
63 "content": "⭐",
64 "tags": [
65 ["r", "https://example.com/"]
66 ],
67 // other fields...
68}
69```
70
71URLs SHOULD be [normalized](https://datatracker.ietf.org/doc/html/rfc3986#section-6), so that reactions to the same website are not omitted from queries.
72A fragment MAY be attached to the URL, to react to a section of the page.
73It should be noted that a URL with a fragment is not considered to be the same URL as the original.
74
57Custom Emoji Reaction 75Custom Emoji Reaction
58--------------------- 76---------------------
59 77
@@ -61,15 +79,14 @@ The client may specify a custom emoji ([NIP-30](30.md)) `:shortcode:` in the
61reaction content. The client should refer to the emoji tag and render the 79reaction content. The client should refer to the emoji tag and render the
62content as an emoji if shortcode is specified. 80content as an emoji if shortcode is specified.
63 81
64```json 82```jsonc
65{ 83{
66 "kind": 7, 84 "kind": 7,
67 "content": ":soapbox:", 85 "content": ":soapbox:",
68 "tags": [ 86 "tags": [
69 ["emoji", "soapbox", "https://gleasonator.com/emoji/Gleasonator/soapbox.png"] 87 ["emoji", "soapbox", "https://gleasonator.com/emoji/Gleasonator/soapbox.png"]
70 ], 88 ],
71 "pubkey": "79c2cae114ea28a981e7559b4fe7854a473521a8d22a66bbab9fa248eb820ff6", 89 // other fields...
72 "created_at": 1682790000
73} 90}
74``` 91```
75 92