Browse Source

用localForage代替localStorage

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

1
im-ui/package.json

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

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

@ -1,8 +1,7 @@
import { import { MESSAGE_TYPE, MESSAGE_STATUS } from "../api/enums.js"
MESSAGE_TYPE,
MESSAGE_STATUS
} from "../api/enums.js"
import userStore from './userStore'; import userStore from './userStore';
import localForage from 'localforage';
export default { export default {
state: { state: {
@ -142,9 +141,9 @@ export default {
chat.lastContent = "[文件]"; chat.lastContent = "[文件]";
} else if (msgInfo.type == MESSAGE_TYPE.AUDIO) { } else if (msgInfo.type == MESSAGE_TYPE.AUDIO) {
chat.lastContent = "[语音]"; chat.lastContent = "[语音]";
} else if (msgInfo.type == MESSAGE_TYPE.TEXT } else if (msgInfo.type == MESSAGE_TYPE.TEXT ||
|| msgInfo.type == MESSAGE_TYPE.RECALL msgInfo.type == MESSAGE_TYPE.RECALL ||
|| msgInfo.type == MESSAGE_TYPE.TIP_TEXT ) { msgInfo.type == MESSAGE_TYPE.TIP_TEXT) {
chat.lastContent = msgInfo.content; chat.lastContent = msgInfo.content;
} else if (msgInfo.type == MESSAGE_TYPE.ACT_RT_VOICE) { } else if (msgInfo.type == MESSAGE_TYPE.ACT_RT_VOICE) {
chat.lastContent = "[语音通话]"; chat.lastContent = "[语音通话]";
@ -264,7 +263,7 @@ export default {
groupMsgMaxId: state.groupMsgMaxId, groupMsgMaxId: state.groupMsgMaxId,
chats: state.chats chats: state.chats
} }
localStorage.setItem(key, JSON.stringify(chatsData)); localForage.setItem(key, chatsData)
}, },
clear(state) { clear(state) {
state.activeChat = null; state.activeChat = null;
@ -276,12 +275,19 @@ export default {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let userId = userStore.state.userInfo.id; let userId = userStore.state.userInfo.id;
let key = "chats-" + userId; let key = "chats-" + userId;
let item = localStorage.getItem(key) localForage.getItem(key).then((item)=>{
if (item) { let chatsData = item;
let chatsData = JSON.parse(item); // 兼容历史数据,以后要删除
if(!chatsData){
chatsData = JSON.parse(localStorage.getItem(key));
}
if (chatsData) {
context.commit("initChats", chatsData); context.commit("initChats", chatsData);
} }
resolve(); resolve();
}).catch(()=>{
reject();
})
}) })
} }
}, },

Loading…
Cancel
Save