From ddadebab6de205e81c7ceb75596427b33b69d9a2 Mon Sep 17 00:00:00 2001 From: AsukaSong Date: Thu, 1 Nov 2018 18:01:17 +0800 Subject: [PATCH] fix: message detail --- src/model/message/detail.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/model/message/detail.ts b/src/model/message/detail.ts index 2757cbc..d4299a9 100644 --- a/src/model/message/detail.ts +++ b/src/model/message/detail.ts @@ -6,7 +6,6 @@ import { GET, POST } from '@/utils/fetch' import { IMessageContent } from '@cc98/api' import { Container } from '@cc98/state' import reverse from 'lodash-es/reverse' -import uniqBy from 'lodash-es/uniqBy' import global from '../global' import user from '../user' @@ -15,7 +14,7 @@ interface IMap { } interface State { - messages: IMap + messages: IMap isEnd: boolean isLoading: boolean id: string @@ -58,14 +57,14 @@ export class Detail extends Container { const res = await GET(`message/user/${this.state.id}`, { params: { - from: `${this.state.messages[this.state.id].length}`, + from: `${(this.state.messages[this.state.id] || []).length}`, size: '20', }, }) res.fail().succeed(data => { this.put(state => { - state.messages[this.state.id] = [...reverse(data), ...state.messages[this.state.id]] + state.messages[this.state.id] = [...reverse(data), ...state.messages[this.state.id] || []] state.isLoading = false if (data.length < 20) state.isEnd = true }) @@ -85,7 +84,9 @@ export class Detail extends Container { res.fail().succeed(messages => { this.put(state => { if (messages[0] && this.state.messages[this.state.id]) { - state.messages[this.state.id].push(messages[0]) + state.messages[this.state.id]!.push(messages[0]) + } else if (messages[0]) { + state.messages[this.state.id] } }) }) @@ -101,14 +102,19 @@ export class Detail extends Container { res.fail().succeed(() => { this.put(state => { - state.messages[this.state.id].push({ + const newMessage = { content, id: messageId, senderId: global.state.myInfo!.id, receiverId: parseInt(this.state.id, 10), time: new Date(Date.now()).toUTCString(), isRead: true, - }) + } + if (this.state.messages[this.state.id]) { + state.messages[this.state.id]!.push(newMessage) + } else { + state.messages[this.state.id] = [newMessage] + } messageId -= 1 }) })