diff --git a/changelog.d/emoji-copying-post.add b/changelog.d/emoji-copying-post.add new file mode 100644 index 000000000..f25ce9792 --- /dev/null +++ b/changelog.d/emoji-copying-post.add @@ -0,0 +1 @@ +Allow copying an emoji from a remote post into a local pack diff --git a/changelog.d/emoji-copying.add b/changelog.d/emoji-copying.add new file mode 100644 index 000000000..875e04401 --- /dev/null +++ b/changelog.d/emoji-copying.add @@ -0,0 +1 @@ +Allow copying one emoji from a remote pack into a local pack diff --git a/changelog.d/emoji-popover.add b/changelog.d/emoji-popover.add new file mode 100644 index 000000000..f55ad10a3 --- /dev/null +++ b/changelog.d/emoji-popover.add @@ -0,0 +1 @@ +When an emoji is clicked in a post, show a popover with its name and a bigger image. Admins can also copy it to a local pack diff --git a/src/components/chat_title/chat_title.vue b/src/components/chat_title/chat_title.vue index 72660cca0..00521260f 100644 --- a/src/components/chat_title/chat_title.vue +++ b/src/components/chat_title/chat_title.vue @@ -19,6 +19,7 @@ :title="'@'+(user && user.screen_name_ui)" :html="htmlTitle" :emoji="user.emoji || []" + :is-local="user.is_local" /> diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue index c9b557970..51b5d4620 100644 --- a/src/components/notification/notification.vue +++ b/src/components/notification/notification.vue @@ -70,6 +70,7 @@ :title="'@'+notification.from_profile.screen_name_ui" :html="notification.from_profile.name_html" :emoji="notification.from_profile.emoji" + :is-local="notification.from_profile.is_local" /> diff --git a/src/components/rich_content/rich_content.jsx b/src/components/rich_content/rich_content.jsx index 9466603cd..cdad60f74 100644 --- a/src/components/rich_content/rich_content.jsx +++ b/src/components/rich_content/rich_content.jsx @@ -2,7 +2,7 @@ import { unescape, flattenDeep } from 'lodash' import { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js' import { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js' import { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js' -import StillImage from 'src/components/still-image/still-image.vue' +import StillImageEmojiPopover from 'src/components/still-image/still-image-emoji-popover.vue' import MentionsLine from 'src/components/mentions_line/mentions_line.vue' import { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.js' import HashtagLink from 'src/components/hashtag_link/hashtag_link.vue' @@ -86,6 +86,12 @@ export default { required: false, type: Boolean, default: false + }, + // Assume is local to be true if unspecified, so the button isn't show where it probably should not be + isLocal: { + required: false, + type: Boolean, + default: true } }, // NEVER EVER TOUCH DATA INSIDE RENDER @@ -162,11 +168,14 @@ export default { item, this.emoji, ({ shortcode, url }) => { - return } )] diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js index a315756e8..d8f769e0b 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.js +++ b/src/components/settings_modal/admin_tabs/emoji_tab.js @@ -145,9 +145,9 @@ const EmojiTab = { }) }, - updatePackFiles (newFiles) { - this.pack.files = newFiles - this.sortPackFiles(this.packName) + updatePackFiles (newFiles, packName) { + this.knownPacks[packName].files = newFiles + this.sortPackFiles(packName) }, loadPacksPaginated (listFunction) { diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.vue b/src/components/settings_modal/admin_tabs/emoji_tab.vue index 333ff8b0e..9095192fe 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.vue +++ b/src/components/settings_modal/admin_tabs/emoji_tab.vue @@ -387,11 +387,12 @@ ref="emojiPopovers" :key="shortcode" placement="top" - :title="$t('admin_dash.emoji.editing', [shortcode])" - :disabled="pack.remote !== undefined" + :title="$t(`admin_dash.emoji.${pack.remote === undefined ? 'editing' : 'copying'}`, [shortcode])" :shortcode="shortcode" :file="file" :pack-name="packName" + :remote="pack.remote" + :known-local-packs="knownLocalPacks" @update-pack-files="updatePackFiles" @display-error="displayError" > diff --git a/src/components/settings_modal/helpers/emoji_editing_popover.vue b/src/components/settings_modal/helpers/emoji_editing_popover.vue index 33c52da4d..e466822b3 100644 --- a/src/components/settings_modal/helpers/emoji_editing_popover.vue +++ b/src/components/settings_modal/helpers/emoji_editing_popover.vue @@ -7,7 +7,6 @@ popover-class="emoji-tab-edit-popover popover-default" :bound-to="{ x: 'container' }" :offset="{ y: 5 }" - :disabled="disabled" :class="{'emoji-unsaved': isEdited}" >