export const metadata = { title: 'Likes Extension', description: 'The Likes extension adds support for users to like and dislike notes.', } # Likes Extension The Likes extension adds support for users to like and dislike notes. {{ className: 'lead' }} Implementations should make sure that users cannot like and dislike the same note at the same time. If a user dislikes a note they have already liked, the like should be removed, and vice versa. ## Likes Likes are a way for users to show appreciation for a note, like Twitter's "heart" button or Reddit's "upvote". ### Entity Definition Must be `pub.versia:likes/Like`. [Reference](/types#reference) to the creator of the Like. [Reference](/types#reference) to the note being liked. ```jsonc {{ 'title': 'Example Like' }} { "id": "3e7e4750-afd4-4d99-a256-02f0710a0520", "type": "pub.versia:likes/Like", "created_at": "2021-01-01T00:00:00.000Z", "author": "6e0204a2-746c-4972-8602-c4f37fc63bbe", "liked": "otherexample.org:fmKZ763jzIU8" } ``` ## Dislikes Dislikes are a way for users to show disapproval for a note, like YouTube's "dislikes" or Reddit's "downvotes". ### Entity Definition Must be `pub.versia:likes/Dislike`. [Reference](/types#reference) to the creator of the Dislike. [Reference](/types#reference) to the note being disliked. ```jsonc {{ 'title': 'Example Dislike' }} { "id": "3e7e4750-afd4-4d99-a256-02f0710a0520", "type": "pub.versia:likes/Dislike", "created_at": "2021-01-01T00:00:00.000Z", "author": "6e0204a2-746c-4972-8602-c4f37fc63bbe", "disliked": "otherexample.org:fmKZ763jzIU8" } ``` ## Undoing Likes and Dislikes To undo a like or dislike, a [Delete](/entities/delete) entity should be used. The `deleted` property of the Delete entity should link to the Like or Dislike entity to be removed. ## User Collections The Likes extension adds the following collections to the [User](/entities/user) entity: - `pub.versia:likes/Likes`: [URI Collection](/structures/collection#uri-collection) of all the notes the user has liked. - `pub.versia:likes/Dislikes`: [URI Collection](/structures/collection#uri-collection) of all the notes the user has disliked. ## Note Collections The Likes extension adds the following collections to the [Note](/entities/note) entity: - `pub.versia:likes/Likes`: [URI Collection](/structures/collection#uri-collection) of all the likes the note has received. - `pub.versia:likes/Dislikes`: [URI Collection](/structures/collection#uri-collection) of all the dislikes the note has received. ## Interaction Types This section only applies to implementors of the [Interaction Controls Extension](/extensions/interaction-controls). This extension registers the following interaction types: - `pub.versia:likes#Like`, for liking a Note - `pub.versia:likes#Dislike`, for disliking a Note