Add emoji reaction support
First off, thank you so much for developing Phanpy. This is by far the most well thought out client for the ActivityPub protocol. Browsing Mastodon just isn't the same without Phanpy.
Recently, emoji reactions have been slowly trickling into ActivityPub. IceShrimp has had emoji reactions for a while, so had Misskey. Mastodon glitch-soc is in line to support emoji reactions too. Mastodon mainline regularly upstreams glitch-soc features, so it won't be long for Mastodon mainline to support emoji reactions after it gets merged into glitch-soc (there are open issues for this feature request on mainline Mastodon repo as well). I myself spun up my new instance with emoji support from Essem's fork of glitch-soc.
I'd very much like to have the option to react with any arbitrary emojis (multiple emoji reactions is also supported by a single user using Essem's fork) from Phanpy. I have looked at other feature requests, and found out that nobody has asked for this yet. As much as I love Phanpy, the lack of emoji reaction support is forcing me to use the regular web app. If I had the ability to view emoji reactions, and react to toots using arbitrary emojis, I'd probably never consider any other client than Phanpy for my Mastodon instance.
I'd like to help with this in any way I can; I know very little about the front-end, so while I cannot help directly with the development, I can host test accounts on my instance, and make the logs available to you, if you want to go that route. I could also host an entirely new instance on a subdomain exclusively to test Phanpy development, with you in total control of that instance.
Soapbox has very beautiful realisation of emoji reactions (Pleroma also supported). Will be good to see this in Phanpy
Although it doesn't yet support leaving emoji reactions, Phappy does support showing emoji reactions that have already been left.
There are two kinds of emoji reaction APIs:
Pleroma/Akkoma family
POST /api/v1/statuses/:id/react/:emojiPOST /api/v1/statuses/:id/unreact/:emoji
This can be detected by looking up pleroma_emoji_reactions and custom_emoji_reactions from pleroma.metadata.features responded by GET /api/v1/instance, e.g., https://seafoam.space/api/v1/instance.
Fedibird/kmyblue family
PUT /api/v1/statuses/:id/emoji_reactions/:emojiDELETE /api/v1/statuses/:id/emoji_reactions/:emoji
This can be detected by looking up emoji_reaction from fedibird_capabilities responded by GET /api/v1/instance, e.g., https://fedibird.com/api/v1/instance, https://kmy.blue/api/v1/instance.
@dahlia thanks, this is very useful. I was kinda lazy to implement this due to:
- lack of documentation(?)
- some of these API discrepancies
- maintenance cost for supporting/testing all of them - probably could be delegated to @neet's masto.js but I'm not sure
Thanks! I was looking for information on how emoji reactions from these servers can be used.
There's a related discussion in the masto.js Issue: https://github.com/neet/masto.js/issues/939 If masto.js can handle these differences, that will benefit Elk too.
Mastodon's most widely used emoji reaction fork family added some (heavily work in progress) documentation for emoji reactions:
https://github.com/TheEssem/mastodon/wiki/API
I just found out that Phanpy partially supports this, which is awesome. (Beyond Markdown, emoji responses are something I really want). Related to that, there is some attempt to create a standard for emoji responses with FEP-c0e0:
- https://codeberg.org/fediverse/fep/src/branch/main/fep/c0e0/fep-c0e0.md
- https://socialhub.activitypub.rocks/t/fep-c0e0-emoji-reactions/4443
Since you mentioned documentation, this might be a reasonable direction?