@droppii-org/chat-sdk 0.1.42 → 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/biz/useBizConversationListItems.d.ts.map +1 -1
- package/dist/hooks/biz/useBizConversationListItems.js +5 -26
- package/dist/hooks/biz/useBizGlobalEvent.d.ts.map +1 -1
- package/dist/hooks/biz/useBizGlobalEvent.js +18 -2
- package/dist/store/bizConversation.d.ts +2 -0
- package/dist/store/bizConversation.d.ts.map +1 -1
- package/dist/store/bizConversation.js +5 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/bizConversation.d.ts +2 -1
- package/dist/utils/bizConversation.d.ts.map +1 -1
- package/dist/utils/bizConversation.js +15 -0
- package/dist/utils/bizMessage.d.ts +8 -1
- package/dist/utils/bizMessage.d.ts.map +1 -1
- package/dist/utils/bizMessage.js +33 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBizConversationListItems.d.ts","sourceRoot":"","sources":["../../../src/hooks/biz/useBizConversationListItems.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBizConversationListItems.d.ts","sourceRoot":"","sources":["../../../src/hooks/biz/useBizConversationListItems.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,2BAA2B,GACtC,UAAU,mBAAmB,EAAE,KAC9B,uBAAuB,EA8BzB,CAAC"}
|
|
@@ -1,35 +1,14 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
2
|
import useBizConversationStore from "../../store/bizConversation";
|
|
3
|
-
import {
|
|
4
|
-
const toLatestMsgPreview = (lastMessage) => {
|
|
5
|
-
if (!lastMessage)
|
|
6
|
-
return "";
|
|
7
|
-
return JSON.stringify(transformPulledMessage(lastMessage));
|
|
8
|
-
};
|
|
9
|
-
const resolveBizLatestPreview = (lastMessage, sdkConversation) => {
|
|
10
|
-
var _a, _b, _c;
|
|
11
|
-
const apiLatestMsgSendTime = (_a = lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.sendTime) !== null && _a !== void 0 ? _a : 0;
|
|
12
|
-
const apiLatestMsg = toLatestMsgPreview(lastMessage);
|
|
13
|
-
const sdkLatestMsgSendTime = (_b = sdkConversation === null || sdkConversation === void 0 ? void 0 : sdkConversation.latestMsgSendTime) !== null && _b !== void 0 ? _b : 0;
|
|
14
|
-
const sdkLatestMsg = (_c = sdkConversation === null || sdkConversation === void 0 ? void 0 : sdkConversation.latestMsg) !== null && _c !== void 0 ? _c : "";
|
|
15
|
-
const sdkIsNewer = sdkLatestMsgSendTime > apiLatestMsgSendTime;
|
|
16
|
-
if (sdkIsNewer) {
|
|
17
|
-
return {
|
|
18
|
-
latestMsg: sdkLatestMsg || apiLatestMsg,
|
|
19
|
-
latestMsgSendTime: sdkLatestMsgSendTime,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
return {
|
|
23
|
-
latestMsg: apiLatestMsg || sdkLatestMsg,
|
|
24
|
-
latestMsgSendTime: apiLatestMsgSendTime || sdkLatestMsgSendTime,
|
|
25
|
-
};
|
|
26
|
-
};
|
|
3
|
+
import { resolveBizLatestPreview } from "../../utils/bizMessage";
|
|
27
4
|
export const useBizConversationListItems = (apiItems) => {
|
|
28
5
|
const sdkConversations = useBizConversationStore((state) => state.sdkConversations);
|
|
6
|
+
const realtimeLatestConversationIds = useBizConversationStore((state) => state.realtimeLatestConversationIds);
|
|
29
7
|
return useMemo(() => apiItems.map((item) => {
|
|
30
8
|
var _a;
|
|
31
9
|
const sdkConversation = sdkConversations[item.conversationId];
|
|
32
|
-
const
|
|
10
|
+
const useRealtimeSdk = Boolean(realtimeLatestConversationIds[item.conversationId]);
|
|
11
|
+
const { latestMsg, latestMsgSendTime } = resolveBizLatestPreview(item.lastMessage, sdkConversation, useRealtimeSdk);
|
|
33
12
|
return Object.assign(Object.assign({}, item), { latestMsg, unreadCount: (_a = sdkConversation === null || sdkConversation === void 0 ? void 0 : sdkConversation.unreadCount) !== null && _a !== void 0 ? _a : 0, latestMsgSendTime });
|
|
34
|
-
}), [apiItems, sdkConversations]);
|
|
13
|
+
}), [apiItems, sdkConversations, realtimeLatestConversationIds]);
|
|
35
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBizGlobalEvent.d.ts","sourceRoot":"","sources":["../../../src/hooks/biz/useBizGlobalEvent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBizGlobalEvent.d.ts","sourceRoot":"","sources":["../../../src/hooks/biz/useBizGlobalEvent.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,iBAAiB,YA+D7B,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
|
-
import { CbEvents } from "@openim/wasm-client-sdk";
|
|
2
|
+
import { CbEvents, } from "@openim/wasm-client-sdk";
|
|
3
3
|
import { DChatSDK } from "../../constants/sdk";
|
|
4
4
|
import { useChatContext } from "../../context/ChatContext";
|
|
5
5
|
import { ConnectStatus } from "../../types/chat";
|
|
6
|
+
import useAuthStore from "../../store/auth";
|
|
6
7
|
import useBizConversationStore from "../../store/bizConversation";
|
|
8
|
+
import { resolveBizConversationIdFromMessage } from "../../utils/bizConversation";
|
|
7
9
|
const CONVERSATION_SPLIT_COUNT = 500;
|
|
8
10
|
const fetchAllSdkConversations = async () => {
|
|
9
11
|
const conversations = [];
|
|
@@ -23,15 +25,29 @@ const fetchAllSdkConversations = async () => {
|
|
|
23
25
|
export const useBizGlobalEvent = () => {
|
|
24
26
|
const { connectStatus } = useChatContext();
|
|
25
27
|
const updateSdkConversations = useBizConversationStore((state) => state.updateSdkConversations);
|
|
28
|
+
const markRealtimeLatestConversation = useBizConversationStore((state) => state.markRealtimeLatestConversation);
|
|
26
29
|
useEffect(() => {
|
|
27
30
|
const conversationChangeHandler = ({ data, }) => {
|
|
28
31
|
updateSdkConversations(data);
|
|
29
32
|
};
|
|
33
|
+
const newMessageHandler = ({ data }) => {
|
|
34
|
+
const currentUserId = useAuthStore.getState().userID;
|
|
35
|
+
if (!currentUserId)
|
|
36
|
+
return;
|
|
37
|
+
data === null || data === void 0 ? void 0 : data.forEach((message) => {
|
|
38
|
+
const conversationId = resolveBizConversationIdFromMessage(message, currentUserId);
|
|
39
|
+
if (conversationId) {
|
|
40
|
+
markRealtimeLatestConversation(conversationId);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
};
|
|
30
44
|
DChatSDK.on(CbEvents.OnConversationChanged, conversationChangeHandler);
|
|
45
|
+
DChatSDK.on(CbEvents.OnRecvNewMessages, newMessageHandler);
|
|
31
46
|
return () => {
|
|
32
47
|
DChatSDK.off(CbEvents.OnConversationChanged, conversationChangeHandler);
|
|
48
|
+
DChatSDK.off(CbEvents.OnRecvNewMessages, newMessageHandler);
|
|
33
49
|
};
|
|
34
|
-
}, [updateSdkConversations]);
|
|
50
|
+
}, [updateSdkConversations, markRealtimeLatestConversation]);
|
|
35
51
|
useEffect(() => {
|
|
36
52
|
if (connectStatus !== ConnectStatus.Connected)
|
|
37
53
|
return;
|
|
@@ -4,11 +4,13 @@ interface BizConversationStore {
|
|
|
4
4
|
conversationData: BizConversationItem | null;
|
|
5
5
|
selectedConversationId: string;
|
|
6
6
|
sdkConversations: Record<string, ConversationItem>;
|
|
7
|
+
realtimeLatestConversationIds: Record<string, true>;
|
|
7
8
|
setConversationData: (data: BizConversationItem | null) => void;
|
|
8
9
|
setSelectedConversationId: (id: string) => void;
|
|
9
10
|
selectConversation: (conversation: BizConversationItem) => void;
|
|
10
11
|
clearSelectedConversation: () => void;
|
|
11
12
|
updateSdkConversations: (conversations: ConversationItem[]) => void;
|
|
13
|
+
markRealtimeLatestConversation: (conversationId: string) => void;
|
|
12
14
|
resetSdkConversations: () => void;
|
|
13
15
|
}
|
|
14
16
|
declare const useBizConversationStore: import("zustand").UseBoundStore<import("zustand").StoreApi<BizConversationStore>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bizConversation.d.ts","sourceRoot":"","sources":["../../src/store/bizConversation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC7C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACnD,mBAAmB,EAAE,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;IAChE,yBAAyB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,kBAAkB,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChE,yBAAyB,EAAE,MAAM,IAAI,CAAC;IACtC,sBAAsB,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IACpE,qBAAqB,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"bizConversation.d.ts","sourceRoot":"","sources":["../../src/store/bizConversation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC7C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACnD,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,mBAAmB,EAAE,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;IAChE,yBAAyB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,kBAAkB,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChE,yBAAyB,EAAE,MAAM,IAAI,CAAC;IACtC,sBAAsB,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IACpE,8BAA8B,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,qBAAqB,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,uBAAuB,mFA6C1B,CAAC;AAEJ,eAAe,uBAAuB,CAAC"}
|
|
@@ -3,6 +3,7 @@ const useBizConversationStore = create((set) => ({
|
|
|
3
3
|
conversationData: null,
|
|
4
4
|
selectedConversationId: "",
|
|
5
5
|
sdkConversations: {},
|
|
6
|
+
realtimeLatestConversationIds: {},
|
|
6
7
|
setConversationData: (data) => {
|
|
7
8
|
var _a;
|
|
8
9
|
return set({
|
|
@@ -26,6 +27,9 @@ const useBizConversationStore = create((set) => ({
|
|
|
26
27
|
});
|
|
27
28
|
return { sdkConversations };
|
|
28
29
|
}),
|
|
29
|
-
|
|
30
|
+
markRealtimeLatestConversation: (conversationId) => set((state) => ({
|
|
31
|
+
realtimeLatestConversationIds: Object.assign(Object.assign({}, state.realtimeLatestConversationIds), { [conversationId]: true }),
|
|
32
|
+
})),
|
|
33
|
+
resetSdkConversations: () => set({ sdkConversations: {}, realtimeLatestConversationIds: {} }),
|
|
30
34
|
}));
|
|
31
35
|
export default useBizConversationStore;
|