R7 custom emoji in decePub: the server's own, administered, picked, suggested and shown
Administration has a Custom emoji section (EmojiPanel, data-admin-section=emoji): the server's emoji by category, added with a picture streamed from the file, changed (category, picker, disabled, picture; never the shortcode) and deleted, asked first, with PrivaPub's 409 and 422 in the dialog. EmojiService reads /clientapi/admin/emoji and, for everyone, /api/v1/custom_emojis, kept a day in localStorage (CustomEmojiCache) and read again after a change here. EmojiPicker (a DDropdown sheet on a phone, rendered only while open) offers them by category with common unicode emoji, searchable: the composer writes the choice at the caret, a card and the announcements banner react with it. The composer suggests custom emoji after `:` and two letters. Custom reactions toggle as :shortcode: and show their picture, notifications of one too; located posts, announcements and NavMenu's persona names render the server's emoji. Verified: Release build, 0 errors (the 3 warnings were there before). Not run against PrivaPub or in the pasture. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
This commit is contained in:
1 parent
c572471b88
commit
566b0e33ea
26 files changed
+1385
-56
No files matched your search
@@ -3482,4 +3482,121 @@
|
||||
<data name="Delete for good" xml:space="preserve">
|
||||
<value>Delete for good</value>
|
||||
</data>
|
||||
<data name="Custom emoji" xml:space="preserve">
|
||||
<value>Custom emoji</value>
|
||||
</data>
|
||||
<data name="Add an emoji" xml:space="preserve">
|
||||
<value>Add an emoji</value>
|
||||
</data>
|
||||
<data name="No custom emoji yet." xml:space="preserve">
|
||||
<value>No custom emoji yet.</value>
|
||||
</data>
|
||||
<data name="No category" xml:space="preserve">
|
||||
<value>No category</value>
|
||||
</data>
|
||||
<data name="Shortcode" xml:space="preserve">
|
||||
<value>Shortcode</value>
|
||||
</data>
|
||||
<data name="Category" xml:space="preserve">
|
||||
<value>Category</value>
|
||||
</data>
|
||||
<data name="In the picker" xml:space="preserve">
|
||||
<value>In the picker</value>
|
||||
</data>
|
||||
<data name="Disabled" xml:space="preserve">
|
||||
<value>Disabled</value>
|
||||
</data>
|
||||
<data name="Not in the picker" xml:space="preserve">
|
||||
<value>Not in the picker</value>
|
||||
</data>
|
||||
<data name="Animated" xml:space="preserve">
|
||||
<value>Animated</value>
|
||||
</data>
|
||||
<data name="New emoji" xml:space="preserve">
|
||||
<value>New emoji</value>
|
||||
</data>
|
||||
<data name="Edit :{0}:" xml:space="preserve">
|
||||
<value>Edit :{0}:</value>
|
||||
</data>
|
||||
<data name="Delete :{0}:?" xml:space="preserve">
|
||||
<value>Delete :{0}:?</value>
|
||||
</data>
|
||||
<data name="Emoji added." xml:space="preserve">
|
||||
<value>Emoji added.</value>
|
||||
</data>
|
||||
<data name="Emoji saved." xml:space="preserve">
|
||||
<value>Emoji saved.</value>
|
||||
</data>
|
||||
<data name="Emoji deleted." xml:space="preserve">
|
||||
<value>Emoji deleted.</value>
|
||||
</data>
|
||||
<data name="Choose a picture." xml:space="preserve">
|
||||
<value>Choose a picture.</value>
|
||||
</data>
|
||||
<data name="Everyone here can use them in posts, names and reactions, and other servers show them. The picker offers those in it; one written out as :shortcode: works too, unless it is disabled." xml:space="preserve">
|
||||
<value>Everyone here can use them in posts, names and reactions, and other servers show them. The picker offers those in it; one written out as :shortcode: works too, unless it is disabled.</value>
|
||||
</data>
|
||||
<data name="It is offered no more, and the posts and profiles that use it show the text :{0}: instead. Other servers keep their copy until they read those posts again." xml:space="preserve">
|
||||
<value>It is offered no more, and the posts and profiles that use it show the text :{0}: instead. Other servers keep their copy until they read those posts again.</value>
|
||||
</data>
|
||||
<data name="Letters, digits and underscores, 2 to 64 of them. It never changes: other servers know the emoji by it." xml:space="preserve">
|
||||
<value>Letters, digits and underscores, 2 to 64 of them. It never changes: other servers know the emoji by it.</value>
|
||||
</data>
|
||||
<data name="A shortcode never changes: other servers know the emoji by it." xml:space="preserve">
|
||||
<value>A shortcode never changes: other servers know the emoji by it.</value>
|
||||
</data>
|
||||
<data name="The picker groups the emoji by it." xml:space="preserve">
|
||||
<value>The picker groups the emoji by it.</value>
|
||||
</data>
|
||||
<data name="PNG, GIF, WebP or JPEG, {0} at most. The server fits it within 256 px and keeps a GIF's animation." xml:space="preserve">
|
||||
<value>PNG, GIF, WebP or JPEG, {0} at most. The server fits it within 256 px and keeps a GIF's animation.</value>
|
||||
</data>
|
||||
<data name="Without a new one, it keeps its picture." xml:space="preserve">
|
||||
<value>Without a new one, it keeps its picture.</value>
|
||||
</data>
|
||||
<data name="Offered in the picker of every client. Out of it, it is still taken when its shortcode is written." xml:space="preserve">
|
||||
<value>Offered in the picker of every client. Out of it, it is still taken when its shortcode is written.</value>
|
||||
</data>
|
||||
<data name="Kept, but offered nowhere, taken into no new post and shown in none." xml:space="preserve">
|
||||
<value>Kept, but offered nowhere, taken into no new post and shown in none.</value>
|
||||
</data>
|
||||
<data name="Search emoji" xml:space="preserve">
|
||||
<value>Search emoji</value>
|
||||
</data>
|
||||
<data name="No emoji matches." xml:space="preserve">
|
||||
<value>No emoji matches.</value>
|
||||
</data>
|
||||
<data name="Often used" xml:space="preserve">
|
||||
<value>Often used</value>
|
||||
</data>
|
||||
<data name="This server's emoji" xml:space="preserve">
|
||||
<value>This server's emoji</value>
|
||||
</data>
|
||||
<data name="Smileys" xml:space="preserve">
|
||||
<value>Smileys</value>
|
||||
</data>
|
||||
<data name="Animals and nature" xml:space="preserve">
|
||||
<value>Animals and nature</value>
|
||||
</data>
|
||||
<data name="Food and drink" xml:space="preserve">
|
||||
<value>Food and drink</value>
|
||||
</data>
|
||||
<data name="Activities" xml:space="preserve">
|
||||
<value>Activities</value>
|
||||
</data>
|
||||
<data name="Travel and places" xml:space="preserve">
|
||||
<value>Travel and places</value>
|
||||
</data>
|
||||
<data name="Objects" xml:space="preserve">
|
||||
<value>Objects</value>
|
||||
</data>
|
||||
<data name="Symbols" xml:space="preserve">
|
||||
<value>Symbols</value>
|
||||
</data>
|
||||
<data name="Insert an emoji" xml:space="preserve">
|
||||
<value>Insert an emoji</value>
|
||||
</data>
|
||||
<data name="{0} reacted with" xml:space="preserve">
|
||||
<value>{0} reacted with</value>
|
||||
</data>
|
||||
</root>
|
||||
Reference in new issue
Block a user