Browse Source

用localForage代替localStorage

master
xsx 2 years ago
parent
commit
1458aa8fa7
  1. 1
      im-ui/package.json
  2. 36
      im-ui/src/store/chatStore.js

1
im-ui/package.json

@ -12,6 +12,7 @@
"core-js": "^3.6.5",
"element-ui": "^2.15.10",
"js-audio-recorder": "^1.0.7",
"localforage": "^1.10.0",
"sass": "^1.47.0",
"sass-loader": "^10.1.1",
"vue": "^2.6.11",

36
im-ui/src/store/chatStore.js

@ -1,8 +1,7 @@
import {
MESSAGE_TYPE,
MESSAGE_STATUS
} from "../api/enums.js"
import { MESSAGE_TYPE, MESSAGE_STATUS } from "../api/enums.js"
import userStore from './userStore';
import localForage from 'localforage';
export default {
state: {
@ -142,9 +141,9 @@ export default {
chat.lastContent = "[文件]";
} else if (msgInfo.type == MESSAGE_TYPE.AUDIO) {
chat.lastContent = "[语音]";
} else if (msgInfo.type == MESSAGE_TYPE.TEXT
|| msgInfo.type == MESSAGE_TYPE.RECALL
|| msgInfo.type == MESSAGE_TYPE.TIP_TEXT ) {
} else if (msgInfo.type == MESSAGE_TYPE.TEXT ||
msgInfo.type == MESSAGE_TYPE.RECALL ||
msgInfo.type == MESSAGE_TYPE.TIP_TEXT) {
chat.lastContent = msgInfo.content;
} else if (msgInfo.type == MESSAGE_TYPE.ACT_RT_VOICE) {
chat.lastContent = "[语音通话]";
@ -179,7 +178,7 @@ export default {
// 根据id顺序插入,防止消息乱序
let insertPos = chat.messages.length;
// 防止 图片、文件 在发送方 显示 在顶端 因为还没存库,id=0
if(msgInfo.id && msgInfo.id > 0){
if (msgInfo.id && msgInfo.id > 0) {
for (let idx in chat.messages) {
if (chat.messages[idx].id && msgInfo.id < chat.messages[idx].id) {
insertPos = idx;
@ -264,7 +263,7 @@ export default {
groupMsgMaxId: state.groupMsgMaxId,
chats: state.chats
}
localStorage.setItem(key, JSON.stringify(chatsData));
localForage.setItem(key, chatsData)
},
clear(state) {
state.activeChat = null;
@ -276,12 +275,19 @@ export default {
return new Promise((resolve, reject) => {
let userId = userStore.state.userInfo.id;
let key = "chats-" + userId;
let item = localStorage.getItem(key)
if (item) {
let chatsData = JSON.parse(item);
context.commit("initChats", chatsData);
}
resolve();
localForage.getItem(key).then((item)=>{
let chatsData = item;
// 兼容历史数据,以后要删除
if(!chatsData){
chatsData = JSON.parse(localStorage.getItem(key));
}
if (chatsData) {
context.commit("initChats", chatsData);
}
resolve();
}).catch(()=>{
reject();
})
})
}
},

Loading…
Cancel
Save