diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 4669be74b..b4bd52071 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -2297,7 +2297,7 @@ class DialogController extends AbstractController */ public function toplist() { - $user = User::auth(); + User::auth(); // $dialog_id = intval(Request::input('dialog_id')); // diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index 31ba8fc40..fe388a33a 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -426,7 +426,6 @@ class WebSocketDialogMsg extends AbstractModel } } $data['add'] = $res['data']; - $resData['tops'] = self::whereDialogId($dialog->id)->whereNotNull('top_at')->orderByDesc('top_at')->take(50)->get(); $dialog->pushMsg('update', $resData); } else { $this->top = $before; diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index b7ddfafd9..58f3317fe 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -3444,11 +3444,20 @@ export default { }).then(({ data, msg }) => { resolve(msg) this.tagOrTodoOrTopSuccess(data) - this.$store.dialogTops = this.dialogMsgs.filter(item => item.dialog_id != this.dialogId) - const index = this.dialogMsgs.findIndex(({id}) => id == data.update?.id); - if (index > -1) { - const update = Object.assign({}, this.dialogMsgs[index], data.update) - this.$store.dispatch("saveDialogTop", update) + // 取消所有置顶 + const dialogTops = this.dialogTops.filter(item => item.dialog_id == this.dialogId); + this.$store.dispatch("saveDialogTop", dialogTops.map(item => { + item.top = 0; + item.top_at = ""; + return item; + })) + // 置顶 + if (data.update?.top) { + const index = this.dialogMsgs.findIndex(({ id }) => id == data.update.id && data.update.top); + if (index > -1) { + const update = Object.assign({}, this.dialogMsgs[index], data.update) + this.$store.dispatch("saveDialogTop", update) + } } }).catch(({ msg }) => { reject(msg); diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index b9ec5d2a0..29b3b1627 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -2563,7 +2563,7 @@ export default { dialog_id, }, }).then(({data}) => { - if ($A.arrayLength(data) > 0) { + if ($A.isArray(data)) { state.dialogTops = state.dialogTops.filter(item => item.dialog_id != dialog_id) dispatch("saveDialogTop", data) } @@ -3476,9 +3476,8 @@ export default { dispatch("getDialogTodo", dialog_id) } // 更新置顶 - if ($A.isArray(data.tops)) { - state.dialogTops = state.dialogTops.filter(item => item.dialog_id != data.dialog_id) - dispatch("saveDialogTop", data.tops) + if (typeof data.top !== "undefined") { + dispatch("getDialogTop", dialog_id) } return; }