From 10b6ca1fe928c865c1c84ae39ff23dd24686542c Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Sat, 24 Aug 2024 13:10:58 +0200 Subject: [PATCH] feat: :sparkles: Add Reactions extension --- app/extensions/reactions/page.mdx | 95 +++++++++++++++++++++++++++++++ components/Navigation.tsx | 2 + 2 files changed, 97 insertions(+) create mode 100644 app/extensions/reactions/page.mdx diff --git a/app/extensions/reactions/page.mdx b/app/extensions/reactions/page.mdx new file mode 100644 index 0000000..33f7168 --- /dev/null +++ b/app/extensions/reactions/page.mdx @@ -0,0 +1,95 @@ +export const metadata = { + title: "Reactions Extension", + description: "The Reactions Extension allows users to react to posts with emojis", +} + +# Reactions Extension + +The Reactions Extension allows users to express their reactions ("react") to posts with emojis. {{ className: 'lead' }} + +## Federation + +User reactions are (like every other entity) federated to all followers, and can be displayed to clients depending on the privacy settings of the associated [Note](/entities/note). + +## Entity Definition + + + + + + Must be `pub.versia:reactions/Reaction`. + + + URI of the [User](/entities/user) that is reacting. + + + URI of the [Note](/entities/note) attached to the reaction. + + + Emoji content of reaction. May also be arbitrary text, or [Custom Emoji](/extensions/custom-emojis) if supported. + + Clients are encouraged to disfavour text in favour of emoji where possible. + + + + + + + ```jsonc {{ title: "Example Entity" }} + { + "id": "6f27bc77-58ee-4c9b-b804-8cc1c1182fa9", + "type": "Extension", // [!code focus:2] + "extension_type": "pub.versia:reactions/Reaction", + "uri": "https://example.com/actions/6f27bc77-58ee-4c9b-b804-8cc1c1182fa9", + "created_at": "2021-01-01T00:00:00.000Z", + "author": "https://example.com/users/6e0204a2-746c-4972-8602-c4f37fc63bbe", // [!code focus:3] + "object": "https://example.com/publications/f08a124e-fe90-439e-8be4-15a428a72a19", + "content": "😀", + } + ``` + + + + +## Extensions to Note + +The Reactions Extension extends the [Note](/entities/note) entity with the following fields: + + + + + + URI to a [Collection](/entities/collection) of the [Reactions](#entity-definition) attached to the note. + + + + + + + ```jsonc {{ title: "Example Note" }} + { + "id": "01902e09-0f8b-72de-8ee3-9afc0cf5eae1", + "type": "Note", // [!code focus] + "uri": "https://versia.social/notes/01902e09-0f8b-72de-8ee3-9afc0cf5eae1", + "created_at": "2024-06-19T01:07:44.139Z", + "author": "https://versia.social/users/018eb863-753f-76ff-83d6-fd590de7740a", + "category": "microblog", + "content": { + "text/plain": { + "content": "Bababooey." + } + }, + "extensions": { // [!code focus:5] + "pub.versia:reactions": { + "reactions": "https://versia.social/notes/01902e09-0f8b-72de-8ee3-9afc0cf5eae1/reactions" + } + }, + "group": "public", + "is_sensitive": false, + "mentions": [], + } + + ``` + + + \ No newline at end of file diff --git a/components/Navigation.tsx b/components/Navigation.tsx index 850acbc..fc9e49f 100644 --- a/components/Navigation.tsx +++ b/components/Navigation.tsx @@ -290,6 +290,8 @@ export const navigation: NavGroup[] = [ links: [ { title: "Custom Emojis", href: "/extensions/custom-emojis" }, { title: "Likes", href: "/extensions/likes" }, + { title: "Polls", href: "/extensions/polls" }, + { title: "Reactions", href: "/extensions/reactions" }, { title: "Share", href: "/extensions/share" }, { title: "Vanity", href: "/extensions/vanity" }, { title: "WebSockets", href: "/extensions/websockets" },