diff --git a/src/components/chat_message/chat_message.js b/src/components/chat_message/chat_message.js index 59e1db57d..b3436191b 100644 --- a/src/components/chat_message/chat_message.js +++ b/src/components/chat_message/chat_message.js @@ -1,3 +1,4 @@ +import { find } from 'lodash' import { mapState as mapPiniaState } from 'pinia' import { mapState } from 'vuex' @@ -7,6 +8,8 @@ import Gallery from 'src/components/gallery/gallery.vue' import LinkPreview from 'src/components/link-preview/link-preview.vue' import Popover from 'src/components/popover/popover.vue' import StatusContent from 'src/components/status_content/status_content.vue' +import StatusBody from 'src/components/status_body/status_body.vue' +import StatusActionButtons from 'src/components/status_action_buttons/status_action_buttons.vue' import UserAvatar from 'src/components/user_avatar/user_avatar.vue' import UserPopover from 'src/components/user_popover/user_popover.vue' @@ -25,18 +28,19 @@ library.add(faTimes, faEllipsisH, faCircleNotch) const ChatMessage = { name: 'ChatMessage', - props: ['edited', 'noHeading', 'chatItem', 'hoveredMessageChain'], - emits: ['hover'], + props: ['edited', 'noHeading', 'previousItem', 'chatItem', 'previousItem', 'hoveredMessageChain'], + emits: ['hover', 'replyRequested'], components: { Popover, Attachment, StatusContent, + StatusBody, + StatusActionButtons, UserAvatar, Gallery, LinkPreview, ChatMessageDate, - UserPopover, - }, + UserPopover,}, computed: { // Returns HH:MM (hours and minutes) in local time. createdAt() { @@ -65,6 +69,16 @@ const ChatMessage = { isMessage() { return this.chatItem.type === 'message' }, + isCustomReply() { + if (!this.previousItem) return false + console.log('==') + console.log('PREV', toValue(this.previousItem.data.raw_html)) + console.log('CURR', toValue(this.chatItem.data.raw_html)) + return this.previousItem.data.id !== this.chatItem.data.in_reply_to_status_id + }, + customReplyTo() { + return find(this.$store.state.statuses.allStatuses, { id: this.chatItem.data.in_reply_to_status_id }) + }, messageForStatusContent() { return { summary: '', diff --git a/src/components/chat_message/chat_message.scss b/src/components/chat_message/chat_message.scss index 2f65fbd11..34382c42d 100644 --- a/src/components/chat_message/chat_message.scss +++ b/src/components/chat_message/chat_message.scss @@ -11,22 +11,53 @@ } } - .chat-message-menu { + .chat-message-toolbar { transition: opacity 0.1s; opacity: 0; position: absolute; top: -0.8em; + right: 0.4rem; + z-index: 10; - button { + .quick-action-buttons { + justify-items: end; + grid-template-columns: auto auto auto; + } + + .simple-button { padding-top: 0.2em; padding-bottom: 0.2em; } + + &.-visible { + opacity: 1; + } } .menu-icon { cursor: pointer; } + .reply-to-header { + white-space: nowrap; + width: 100%; + display: flex; + align-items: baseline; + gap: 0.5em; + + .reply-label { + display: inline-block; + line-height: 1; + } + + .reply-body { + line-height: 1; + display: inline-block; + overflow-x: hidden; + text-overflow: ellipsis; + } + } + .popover { width: 12em; } @@ -66,7 +97,6 @@ font-size: 0.8em; margin: -1em 0 -0.5em; font-style: italic; - opacity: 0.8; } .without-attachment { @@ -112,14 +142,8 @@ align-items: flex-end; } - .chat-message-menu { - right: 0.4rem; - } - } - - .-incoming { - .chat-message-menu { - left: 0.4rem; + .reply-to-header { + justify-content: end; } } diff --git a/src/components/chat_message/chat_message.vue b/src/components/chat_message/chat_message.vue index 971d9ebd6..b1fa85fe7 100644 --- a/src/components/chat_message/chat_message.vue +++ b/src/components/chat_message/chat_message.vue @@ -25,6 +25,25 @@
diff --git a/src/components/status/status.scss b/src/components/status/status.scss index f710088d6..1214d8b12 100644 --- a/src/components/status/status.scss +++ b/src/components/status/status.scss @@ -385,4 +385,8 @@ text-decoration: underline; } } + + .status-action-buttons { + margin-top: var(--status-margin); + } } diff --git a/src/components/status/status.vue b/src/components/status/status.vue index 4dcc1e07d..8c7ac9429 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -512,6 +512,7 @@