Commit 658a858a by Sixong.Zhu

u

parent 3d47c0d0
Showing with 57 additions and 16 deletions
......@@ -32,7 +32,7 @@ function uniqueMessages(
messages: NonNullable<ChatStore.STATE_CHAT_MSG_HISTORY>
) {
const arr = [...messages];
return unique(arr, function(item, all) {
return unique(arr, function (item, all) {
return all.findIndex((k) => k.id === item.id);
});
}
......@@ -203,8 +203,12 @@ export default {
if (chatid) {
// 移除撤回的消息
const newItems = data || [];
const withdraw = newItems.filter(i => i.type === MessageType.Withdraw).map(i => +i.msg);
const filterout = newItems.filter(i => !withdraw.includes(i.id));
const withdraw = newItems
.filter((i) => i.type === MessageType.Withdraw)
.map((i) => +i.msg);
const filterout = newItems.filter(
(i) => !withdraw.includes(i.id)
);
state[ChatStore.STATE_CHAT_MSG_HISTORY] = Object.freeze(
filterMessages([...old, ...filterout], chatid)
);
......@@ -341,7 +345,7 @@ export default {
state[ChatStore.STATE_CHAT_SENDING_MESSAGES] = [...current];
}
},
[ChatStore.MUTATION_SAVE_CURRENT_CHAT_INPUTING]: (function() {
[ChatStore.MUTATION_SAVE_CURRENT_CHAT_INPUTING]: (function () {
const setTimeoutId: { [key: string]: number } = {};
return (
state: ChatStoreState,
......@@ -483,16 +487,41 @@ export default {
return await execute().then((d) => d);
},
async [ChatStore.ACTION_FORCE_RELOAD_CHAT_LIST]({ commit }) {
return new Promise<ChatType[]>((resolve) => {
Chat.onReady(() => {
xim.fetchChatList().then((data) => {
if (!data) {
return resolve([]);
}
const chatList = filterActiveChats(
data.args[0] as RawChatItem[]
);
const items = chatList.map((chat) =>
buildChatItem(chat)
);
dbController.saveChatList(items);
commit(ChatStore.MUTATION_SAVE_CHAT_LIST, items);
resolve(items);
});
});
});
},
async [ChatStore.ACTION_REBUILD_UNREAD_MESSAGE_COUNT]({ state }) {
let items = await dbController.getChatList();
let sum = 0;
items.forEach((i) => (sum += i.unread_msg_count));
state[ChatStore.STATE_CURRENT_UNREAD_MESSAGE_COUNT] = sum;
},
async [ChatStore.ACTION_UPDATE_CHAT_UNREAD_MESSAGE_COUNT]({ dispatch }, p: { chat: number; unread: number }) {
async [ChatStore.ACTION_UPDATE_CHAT_UNREAD_MESSAGE_COUNT](
{ dispatch },
p: { chat: number; unread: number }
) {
dbController
.updateChat4UnreadCount(p.chat, p.unread)
.then(() => dispatch(ChatStore.ACTION_REBUILD_UNREAD_MESSAGE_COUNT))
.then(() =>
dispatch(ChatStore.ACTION_REBUILD_UNREAD_MESSAGE_COUNT)
);
},
async [ChatStore.ACTION_GET_CHAT_MESSAGES]({ state, commit, getters }) {
const chatId = state[ChatStore.STATE_CHAT_CURRENT_CHAT_ID];
......@@ -677,15 +706,20 @@ export default {
if (e.type === MessageType.Withdraw) {
commit(ChatStore.MUTATION_WITHDRAW, +e.msg);
}
const scroll = () => state[ChatStore.STATE_FUNC_ON_NEW_MSG](e);
const scroll = () =>
state[ChatStore.STATE_FUNC_ON_NEW_MSG](e);
if (e.chat_id === chatId) {
dispatch(ChatStore.ACTION_GET_FRESH_MESSAGE).finally(() => scroll());
dispatch(ChatStore.ACTION_GET_FRESH_MESSAGE).finally(
() => scroll()
);
} else {
scroll();
}
};
if (e.type === MessageType.Withdraw) {
dbController.removeMessage(e.chat_id, +e.msg).finally(() => thenAction());
dbController
.removeMessage(e.chat_id, +e.msg)
.finally(() => thenAction());
} else {
thenAction();
}
......@@ -863,7 +897,7 @@ export default {
}
commit(
ChatStore.MUTATION_SAVE_CURRENT_CHAT_MEMBERS,
unique(newChatMembers, function(item, all) {
unique(newChatMembers, function (item, all) {
return all.findIndex((k) => k.eid === item.eid);
})
);
......@@ -1113,8 +1147,8 @@ export default {
p.read_count = option.all
? p.total_read_count
: option.readed
? option.readed
: p.read_count + 1;
? option.readed
: p.read_count + 1;
}
}
} else {
......@@ -1123,8 +1157,8 @@ export default {
p.read_count = option.all
? p.total_read_count
: option.readed
? option.readed
: p.read_count + 1;
? option.readed
: p.read_count + 1;
}
}
}
......
......@@ -247,6 +247,9 @@ export namespace ChatStore {
keyword?: string
) => Promise<ChatType[]>;
export const ACTION_FORCE_RELOAD_CHAT_LIST = "重新获取我的会话列表";
export type ACTION_FORCE_RELOAD_CHAT_LIST = () => Promise<ChatType[]>;
export const ACTION_REBUILD_UNREAD_MESSAGE_COUNT = "重新计算未读消息数";
export type ACTION_REBUILD_UNREAD_MESSAGE_COUNT = () => void;
......@@ -379,8 +382,12 @@ export namespace ChatStore {
export const ACTION_UPDATE_CHAT = "更新会话信息";
export type ACTION_UPDATE_CHAT = (p: ChatUpdateParameter) => void;
export const ACTION_UPDATE_CHAT_UNREAD_MESSAGE_COUNT = "更新Chat会话未读消息并重新计数总数";
export type ACTION_UPDATE_CHAT_UNREAD_MESSAGE_COUNT = (p: { chat: number; unread: number }) => void;
export const ACTION_UPDATE_CHAT_UNREAD_MESSAGE_COUNT =
"更新Chat会话未读消息并重新计数总数";
export type ACTION_UPDATE_CHAT_UNREAD_MESSAGE_COUNT = (p: {
chat: number;
unread: number;
}) => void;
}
export interface ChatStoreState {
......
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 sign in to comment