Commit 135bc242 authored by chenqikuai's avatar chenqikuai

如果由于网络问题消息没有发送出去,就再下一次连接成功时,再次发送

parent 1f87fb1e
...@@ -27,7 +27,7 @@ import { generateToken } from "./utils/generateToken/generate-token"; ...@@ -27,7 +27,7 @@ import { generateToken } from "./utils/generateToken/generate-token";
import { defineComponent, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onUnmounted, watch } from "vue"; import { defineComponent, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onUnmounted, watch } from "vue";
import decodeChatMessage from "./utils/fzm-message-protocol-chat/decodeChatMessage"; import decodeChatMessage from "./utils/fzm-message-protocol-chat/decodeChatMessage";
import ChatDBService from "@/db/ChatDBService" import ChatDBService from "@/db/ChatDBService"
import { getMasterIdFromDisplayMsg, getTargetIdFromDisplayMsg } from "./utils/chatutils"; import { checkPendingMsgAndSendIt, getMasterIdFromDisplayMsg, getTargetIdFromDisplayMsg } from "./utils/chatutils";
import isChattingWith from "./utils/isChattingWith"; import isChattingWith from "./utils/isChattingWith";
import { ChatMessageTypes } from "@/types/chatMessageTypes" import { ChatMessageTypes } from "@/types/chatMessageTypes"
import { chatCardTimeStamp } from "./store/chatCardStore"; import { chatCardTimeStamp } from "./store/chatCardStore";
...@@ -126,6 +126,7 @@ export default defineComponent({ ...@@ -126,6 +126,7 @@ export default defineComponent({
}) })
.then((conn) => { .then((conn) => {
connectionState.connection = conn; connectionState.connection = conn;
checkPendingMsgAndSendIt();
}) })
.catch((reason) => { .catch((reason) => {
initError.value = true; initError.value = true;
......
...@@ -19,14 +19,27 @@ export default class ChatMessageDB extends MyAppDatabase { ...@@ -19,14 +19,27 @@ export default class ChatMessageDB extends MyAppDatabase {
.reverse() .reverse()
.first() .first()
return this.chatMessage.add({ /* 若消息已存在,则更新状态,否则,添加 */
...message, const msgExist =
masterId, (await this.chatMessage
hideDatetime: messageStore.shouldDisplayMessageDate( .filter((i) => i.uuid === message.uuid)
message.datetime, .count()) === 1
latestMsg?.datetime || 0, console.log(msgExist, 'msgExist')
),
}) if (msgExist) {
return this.chatMessage
.filter((i) => i.uuid === message.uuid)
.modify((i) => (i.state = message.state))
} else {
return this.chatMessage.add({
...message,
masterId,
hideDatetime: messageStore.shouldDisplayMessageDate(
message.datetime,
latestMsg?.datetime || 0,
),
})
}
} }
async deleteMsg({ uuid, logid }: { uuid?: string; logid?: string }) { async deleteMsg({ uuid, logid }: { uuid?: string; logid?: string }) {
...@@ -97,8 +110,9 @@ export default class ChatMessageDB extends MyAppDatabase { ...@@ -97,8 +110,9 @@ export default class ChatMessageDB extends MyAppDatabase {
(await this.chatMessage (await this.chatMessage
.filter( .filter(
(i) => (i) =>
(i.masterId === masterId && i.masterId === masterId &&
((i.state === null && i.from === personId) || (i.state !== null && i.target === personId))) ((i.state === null && i.from === personId) ||
(i.state !== null && i.target === personId)),
) )
.count()) !== 0 .count()) !== 0
) )
...@@ -117,6 +131,12 @@ export default class ChatMessageDB extends MyAppDatabase { ...@@ -117,6 +131,12 @@ export default class ChatMessageDB extends MyAppDatabase {
.toArray() .toArray()
} }
getPendingMessage(masterId: string) {
return this.chatMessage
.filter((i) => i.masterId === masterId && i.state === 'pending')
.toArray()
}
/* wo获取和ta之间最新的消息 */ /* wo获取和ta之间最新的消息 */
async getLatestedMessage(from: string, target: string) { async getLatestedMessage(from: string, target: string) {
const ret = await this.chatMessage const ret = await this.chatMessage
......
...@@ -325,6 +325,8 @@ class MessageStore { ...@@ -325,6 +325,8 @@ class MessageStore {
}) })
.catch(() => { .catch(() => {
message.state = 'failure' message.state = 'failure'
console.log('failure!!!');
ChatMessageDB.getInstance().updateMsg( ChatMessageDB.getInstance().updateMsg(
{ {
logid: message.logid, logid: message.logid,
......
import { DisplayMessage } from '@/store/messagesStore' import ChatMessageDB from '@/db/ChatMessageDB'
import { DisplayMessage, messageStore } from '@/store/messagesStore'
import { getUserMsg } from './userMsg'
export function getMasterIdFromDisplayMsg(msg: DisplayMessage) { export function getMasterIdFromDisplayMsg(msg: DisplayMessage) {
if (!msg.state) { if (!msg.state) {
...@@ -15,3 +17,23 @@ export function getTargetIdFromDisplayMsg(msg: DisplayMessage) { ...@@ -15,3 +17,23 @@ export function getTargetIdFromDisplayMsg(msg: DisplayMessage) {
return msg.target as string return msg.target as string
} }
} }
export async function checkPendingMsgAndSendIt() {
console.log('检查pending的消息,然后发送')
const addr = getUserMsg()?.userInfo.addr
if (addr) {
const pendingMessageList = await ChatMessageDB.getInstance().getPendingMessage(
addr,
)
pendingMessageList.forEach((i) => {
messageStore.sendMessage({
// ...i,
type: i.type,
content: i.content,
target: i.target as string,
uuid: i.uuid,
})
})
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment