Commit cb2ea05b by Sixong.Zhu

Merge branch 'master' into pre

parents f2fd5722 6431eaf6
Showing with 56 additions and 8 deletions
...@@ -59,6 +59,8 @@ export interface OrderTableListItem { ...@@ -59,6 +59,8 @@ export interface OrderTableListItem {
lastMsgContent: string; lastMsgContent: string;
lastMsgTime: string; lastMsgTime: string;
unreadCount: number; unreadCount: number;
logo?: string;
orderId?: string;
/** /**
* 付款笔数 * 付款笔数
*/ */
......
...@@ -8,13 +8,30 @@ const chatInfo: ChatInfo = {}; ...@@ -8,13 +8,30 @@ const chatInfo: ChatInfo = {};
export const getChatModel = () => chatInfo; export const getChatModel = () => chatInfo;
const loadingKeys = new Set<string>();
let waitingAction = [];
export interface ChatModelInfoData {
uniplatId: string | number;
chat_id: number;
uniplat_version: number;
data: any;
}
export async function getChatModelInfo( export async function getChatModelInfo(
modelName: string, modelName: string,
id: string | number, id: string | number,
detailname?: string, detailname?: string,
forceReload = false forceReload = false
) { ) {
const key = `${modelName}-${id}` const key = `${modelName}-${id}`;
if (loadingKeys.has(key)) {
return new Promise<ChatModelInfoData>((resolve) =>
waitingAction.push({ key, resolve })
);
}
if (chatInfo[key] && !forceReload) { if (chatInfo[key] && !forceReload) {
const d = chatInfo[key]; const d = chatInfo[key];
if (d.row && d.row.UniplatChatId) { if (d.row && d.row.UniplatChatId) {
...@@ -23,23 +40,52 @@ export async function getChatModelInfo( ...@@ -23,23 +40,52 @@ export async function getChatModelInfo(
chat_id: +d.row.UniplatImChatId.value, chat_id: +d.row.UniplatImChatId.value,
uniplat_version: 0, uniplat_version: 0,
data: d, data: d,
}); } as ChatModelInfoData);
} }
return Promise.resolve({ uniplatId: 0, chat_id: 0, uniplat_version: 0, data: d }); return Promise.resolve({
uniplatId: 0,
chat_id: 0,
uniplat_version: 0,
data: d,
});
} }
loadingKeys.add(key);
const info = await Chat.getSdk() const info = await Chat.getSdk()
.model(modelName) .model(modelName)
.detail(id + "", detailname) .detail(id + "", detailname)
.query(); .query();
const data = info; const data = info;
chatInfo[key] = data; chatInfo[key] = data;
if (info.row && info.row.UniplatChatId) { loadingKeys.delete(key);
return {
const o = (
info.row && info.row.UniplatChatId
? {
uniplatId: info.row.UniplatChatId.value, uniplatId: info.row.UniplatChatId.value,
chat_id: Number(info.row.UniplatImChatId.value), chat_id: +info.row.UniplatImChatId.value,
uniplat_version: 0,
data,
}
: {
uniplatId: 0,
chat_id: 0,
uniplat_version: 0, uniplat_version: 0,
data, data,
};
} }
return { uniplatId: 0, chat_id: 0, uniplat_version: 0, data, }; ) as ChatModelInfoData;
let removing = [];
for (const item of waitingAction) {
if (item.key === key) {
item.resolve(o);
removing.push(item.key);
}
}
for (const item of removing) {
waitingAction = waitingAction.filter((i) => i.key !== item);
}
return o;
} }
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