mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-22 08:25:53 -05:00
Merge pull request #26 from jb55/reactions
This commit is contained in:
commit
7fe572ec5a
49
25.md
Normal file
49
25.md
Normal file
|
@ -0,0 +1,49 @@
|
|||
|
||||
NIP-25
|
||||
======
|
||||
|
||||
Reactions
|
||||
---------
|
||||
|
||||
`draft` `optional` `author:jb55`
|
||||
|
||||
A reaction is a `kind 7` note that is used to react to `kind 1` text notes.
|
||||
|
||||
The generic reaction, represented by the `content` set to a `+` string, SHOULD
|
||||
be interpreted as a "like" or "upvote".
|
||||
|
||||
A reaction with `content` set to `-` SHOULD be interepreted as a "dislike" or
|
||||
"downvote". It SHOULD NOT be counted as a "like", and MAY be displayed as a
|
||||
downvote or dislike on a post. A client MAY also choose to tally likes against
|
||||
dislikes in a reddit-like system of upvotes and downvotes, or display them as
|
||||
separate tallys.
|
||||
|
||||
The `content` MAY be an emoji, in this case it MAY be interpreted as a "like",
|
||||
or the client MAY display this emoji reaction on the post.
|
||||
|
||||
Tags
|
||||
----
|
||||
|
||||
The reaction event SHOULD include `e` and `p` tags from the note the user is
|
||||
reacting to. 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.
|
||||
|
||||
The last `e` tag MUST be the `id` of the note that is being reacted to.
|
||||
|
||||
The last `p` tag MUST be the `pubkey` of the event being reacted to.
|
||||
|
||||
Example code
|
||||
|
||||
```swift
|
||||
func make_like_event(pubkey: String, privkey: String, liked: NostrEvent) -> NostrEvent {
|
||||
var tags: [[String]] = liked.tags.filter {
|
||||
tag in tag.count >= 2 && (tag[0] == "e" || tag[0] == "p")
|
||||
}
|
||||
tags.append(["e", liked.id])
|
||||
tags.append(["p", liked.pubkey])
|
||||
let ev = NostrEvent(content: "", pubkey: pubkey, kind: 7, tags: tags)
|
||||
ev.calculate_id()
|
||||
ev.sign(privkey: privkey)
|
||||
return ev
|
||||
}
|
|
@ -18,6 +18,7 @@ NIPs stand for **Nostr Implementation Possibilities**. They exist to document wh
|
|||
- [NIP-14: Subject tag in text events.](14.md)
|
||||
- [NIP-15: End of Stored Events Notice](15.md)
|
||||
- [NIP-16: Event Treatment](16.md)
|
||||
- [NIP-25: Reactions](25.md)
|
||||
|
||||
## Event Kinds
|
||||
|
||||
|
@ -29,6 +30,7 @@ NIPs stand for **Nostr Implementation Possibilities**. They exist to document wh
|
|||
| 3 | Contacts | 2 |
|
||||
| 4 | Encrypted Direct Messages | 4 |
|
||||
| 5 | Event Deletion | 9 |
|
||||
| 7 | Reaction | 25 |
|
||||
|
||||
Please update this list when proposing NIPs introducing new event kinds.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user