diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 8c6322017..3e8c3edef 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -742,7 +742,7 @@ class DialogController extends AbstractController * @apiName msg__forward * * @apiParam {Number} msg_id 消息ID - * @apiParam {String} emoji 回复或取消的emoji表情 + * @apiParam {String} symbol 回复或取消的emoji表情 * * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) @@ -753,9 +753,9 @@ class DialogController extends AbstractController $user = User::auth(); // $msg_id = intval(Request::input("msg_id")); - $emoji = Request::input("emoji"); + $symbol = Request::input("symbol"); // - if (!preg_match("/^[\u{d800}-\u{dbff}]|[\u{dc00}-\u{dfff}]$/", $emoji)) { + if (!preg_match("/^[\u{d800}-\u{dbff}]|[\u{dc00}-\u{dfff}]$/", $symbol)) { return Base::retError("参数错误"); } // @@ -765,7 +765,7 @@ class DialogController extends AbstractController } WebSocketDialog::checkDialog($msg->dialog_id); // - return $msg->emojiMsg($emoji, $user->userid); + return $msg->emojiMsg($symbol, $user->userid); } /** diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index d9b5236db..a4a690d4b 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -197,16 +197,16 @@ class WebSocketDialogMsg extends AbstractModel /** * emoji回复 - * @param $emoji + * @param $symbol * @param int $sender 发送的会员ID * @return mixed */ - public function emojiMsg($emoji, $sender) + public function emojiMsg($symbol, $sender) { $exist = false; $array = $this->emoji; foreach ($array as $index => &$item) { - if ($item['symbol'] === $emoji) { + if ($item['symbol'] === $symbol) { if (in_array($sender, $item['userids'])) { // 已存在 去除 $item['userids'] = array_values(array_diff($item['userids'], [$sender])); @@ -224,7 +224,7 @@ class WebSocketDialogMsg extends AbstractModel } if (!$exist) { array_unshift($array, [ - 'symbol' => $emoji, + 'symbol' => $symbol, 'userids' => [$sender] ]); } diff --git a/resources/assets/js/pages/manage/components/DialogItem.vue b/resources/assets/js/pages/manage/components/DialogItem.vue index d546c4c60..14e799a10 100644 --- a/resources/assets/js/pages/manage/components/DialogItem.vue +++ b/resources/assets/js/pages/manage/components/DialogItem.vue @@ -87,8 +87,8 @@ export default { this.dispatch("on-view-file", e) }, - onEmoji(e) { - this.dispatch("on-emoji", e) + onEmoji(data) { + this.dispatch("on-emoji", data) }, dispatch(event, arg) { diff --git a/resources/assets/js/pages/manage/components/DialogView.vue b/resources/assets/js/pages/manage/components/DialogView.vue index cb84e0639..c5faa5bc7 100644 --- a/resources/assets/js/pages/manage/components/DialogView.vue +++ b/resources/assets/js/pages/manage/components/DialogView.vue @@ -386,8 +386,11 @@ export default { this.$emit("on-view-file", e) }, - onEmoji(emoji) { - this.$emit("on-emoji", emoji) + onEmoji(symbol) { + this.$emit("on-emoji", { + msg_id: this.msgData.id, + symbol + }) }, } } diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index e7878c849..701e0716c 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -1262,24 +1262,26 @@ export default { }); }, - onEmoji(emoji) { - const msg_id = this.operateItem.id; + onEmoji(data) { + if (!$A.isJson(data)) { + data = { + msg_id: this.operateItem.id, + symbol: data, + } + } this.$store.dispatch("setLoad", { - key: `msg-${msg_id}`, + key: `msg-${data.msg_id}`, delay: 600 }) this.$store.dispatch("call", { url: 'dialog/msg/emoji', - data: { - msg_id, - emoji, - }, + data, }).then(({data}) => { this.$store.dispatch("saveDialogMsg", data); }).catch(({msg}) => { $A.messageError(msg); }).finally(_ => { - this.$store.dispatch("cancelLoad", `msg-${msg_id}`) + this.$store.dispatch("cancelLoad", `msg-${data.msg_id}`) }); } } diff --git a/resources/assets/js/pages/manage/file.vue b/resources/assets/js/pages/manage/file.vue index 9a1bf98f6..77cd2659a 100644 --- a/resources/assets/js/pages/manage/file.vue +++ b/resources/assets/js/pages/manage/file.vue @@ -79,7 +79,7 @@ :class="{ shear: shearIds.includes(item.id), highlight: selectIds.includes(item.id), - operation: contextMenuVisible && item.id === contextMenuItem.id, + operate: contextMenuVisible && item.id === contextMenuItem.id, }" :data-id="item.id" v-longpress="handleLongpress" diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index 4039bda83..bb408a555 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -44,7 +44,7 @@ :class="{ top: dialog.top_at, active: dialog.id == dialogId, - operate: dialog.id == operateItem.id && operateVisible, + operate: operateVisible && dialog.id == operateItem.id, completed: $A.dialogCompleted(dialog) }" :data-id="dialog.id" @@ -72,7 +72,10 @@
{{$L('你')}}
-
{{formatMsgDesc(dialog.last_msg)}}
+
+ {{formatMsgEmojiDesc(dialog.last_msg)}} + {{formatMsgDesc(dialog.last_msg)}} +
@@ -528,6 +531,13 @@ export default { } }, + formatMsgEmojiDesc(data) { + if ($A.isJson(data) && $A.arrayLength(data.emoji) > 0) { + return data.emoji[0].symbol; + } + return null; + }, + formatMsgDesc(data) { return msgSimpleDesc(data); }, diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 812e474ad..b21c5f7a6 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -2128,11 +2128,20 @@ export default { }); } else if ($A.isJson(data)) { const index = state.dialogMsgs.findIndex(({id}) => id == data.id); + data = Object.assign({}, state.dialogMsgs[index], data) if (index > -1) { - state.dialogMsgs.splice(index, 1, Object.assign({}, state.dialogMsgs[index], data)); + state.dialogMsgs.splice(index, 1, data); } else { state.dialogMsgs.push(data); } + // + const dialog = state.cacheDialogs.find(({id, last_msg}) => id == data.dialog_id && last_msg && last_msg.id === data.id); + if (dialog) { + dispatch("saveDialog", { + id: data.dialog_id, + last_msg: Object.assign({}, dialog.last_msg, data), + }) + } } }, diff --git a/resources/assets/sass/pages/components/chat-input.scss b/resources/assets/sass/pages/components/chat-input.scss index 903eb4b5b..d574dac44 100755 --- a/resources/assets/sass/pages/components/chat-input.scss +++ b/resources/assets/sass/pages/components/chat-input.scss @@ -269,7 +269,7 @@ position: absolute; top: 0; left: 0; - right: 0; + right: 48px; bottom: 0; z-index: 4; } diff --git a/resources/assets/sass/pages/page-file.scss b/resources/assets/sass/pages/page-file.scss index 506842198..2de1a9d3d 100644 --- a/resources/assets/sass/pages/page-file.scss +++ b/resources/assets/sass/pages/page-file.scss @@ -446,7 +446,7 @@ &.highlight { background-color: #f4f5f7; } - &.operation, + &.operate, &:hover { background-color: #f4f5f7; .file-menu, @@ -697,7 +697,7 @@ &:hover { background-color: transparent; } - &.operation { + &.operate { &:hover { background-color: #f4f5f7; } diff --git a/resources/assets/sass/pages/page-messenger.scss b/resources/assets/sass/pages/page-messenger.scss index 16f21b4d5..596470041 100644 --- a/resources/assets/sass/pages/page-messenger.scss +++ b/resources/assets/sass/pages/page-messenger.scss @@ -204,9 +204,27 @@ } .last-text { flex: 1; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + display: flex; + align-items: center; + > em { + flex-shrink: 0; + background-color: rgba($primary-desc-color, 0.3); + height: 18px; + width: 24px; + line-height: 18px; + text-align: center; + border-radius: 9px; + font-size: 14px; + font-style: normal; + margin-right: 4px; + } + > span { + flex: 1; + width: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } } }