react-native-chatbot-ai 0.1.56 → 0.1.58
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/lib/module/components/chat/ChatEmpty.js +7 -2
- package/lib/module/components/chat/ChatEmpty.js.map +1 -1
- package/lib/module/components/chat/ChatMessageList.js +36 -34
- package/lib/module/components/chat/ChatMessageList.js.map +1 -1
- package/lib/module/components/chat/index.js +1 -2
- package/lib/module/components/chat/index.js.map +1 -1
- package/lib/module/context/ChatContext.js +21 -1
- package/lib/module/context/ChatContext.js.map +1 -1
- package/lib/module/hooks/message/useMessage.js +6 -6
- package/lib/module/hooks/message/useMessage.js.map +1 -1
- package/lib/module/types/chat.js.map +1 -1
- package/lib/typescript/src/components/chat/ChatMessageList.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/index.d.ts.map +1 -1
- package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useMessage.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +1 -0
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/ChatEmpty.tsx +2 -1
- package/src/components/chat/ChatMessageList.tsx +34 -38
- package/src/components/chat/index.tsx +1 -4
- package/src/context/ChatContext.tsx +23 -0
- package/src/hooks/message/useMessage.ts +9 -6
- package/src/types/chat.ts +1 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { KColors, KContainer, KLabel, KSpacingValue } from '@droppii/libs';
|
|
4
|
-
import { StyleSheet } from 'react-native';
|
|
4
|
+
import { StyleSheet, Platform } from 'react-native';
|
|
5
5
|
import SuggestionItem from "./SuggestionItem.js";
|
|
6
6
|
import { useSendMessage } from "../../hooks/message/useSendMessage.js";
|
|
7
7
|
import debounce from 'lodash/debounce';
|
|
@@ -65,7 +65,12 @@ const styles = StyleSheet.create({
|
|
|
65
65
|
justifyContent: 'center',
|
|
66
66
|
alignItems: 'center',
|
|
67
67
|
padding: KSpacingValue['0.75rem'],
|
|
68
|
-
gap: KSpacingValue['0.5rem']
|
|
68
|
+
gap: KSpacingValue['0.5rem'],
|
|
69
|
+
transform: [Platform.OS === 'android' ? {
|
|
70
|
+
scale: -1
|
|
71
|
+
} : {
|
|
72
|
+
scaleY: -1
|
|
73
|
+
}]
|
|
69
74
|
},
|
|
70
75
|
disclaimer: {
|
|
71
76
|
fontSize: 11,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["KColors","KContainer","KLabel","KSpacingValue","StyleSheet","SuggestionItem","useSendMessage","debounce","SendActionLogType","trans","useChatContext","GAEvents","jsx","_jsx","jsxs","_jsxs","ChatEmpty","suggestions","onSendMessage","logGA","onPress","item","index","newChatNewChatPrmSuggTap","suggestion_id","suggestion_content","content","slice","suggestion_cate","category","order","undefined","promptSuggestion","View","style","styles","container","children","Text","typo","center","color","gray","normal","map","onPressItem","light","textAlign","disclaimer","create","flexGrow","justifyContent","alignItems","padding","gap","fontSize","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["components/chat/ChatEmpty.tsx"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,UAAU,EAAEC,MAAM,EAAEC,aAAa,QAAQ,eAAe;AAC1E,SAASC,UAAU,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["KColors","KContainer","KLabel","KSpacingValue","StyleSheet","Platform","SuggestionItem","useSendMessage","debounce","SendActionLogType","trans","useChatContext","GAEvents","jsx","_jsx","jsxs","_jsxs","ChatEmpty","suggestions","onSendMessage","logGA","onPress","item","index","newChatNewChatPrmSuggTap","suggestion_id","suggestion_content","content","slice","suggestion_cate","category","order","undefined","promptSuggestion","View","style","styles","container","children","Text","typo","center","color","gray","normal","map","onPressItem","light","textAlign","disclaimer","create","flexGrow","justifyContent","alignItems","padding","gap","transform","OS","scale","scaleY","fontSize","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["components/chat/ChatEmpty.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,41 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { StyleSheet, View, DeviceEventEmitter } from 'react-native';
|
|
3
|
+
import { FlatList, StyleSheet, View, DeviceEventEmitter } from 'react-native';
|
|
4
4
|
import { useCallback, useRef, useEffect, useState } from 'react';
|
|
5
5
|
import ChatEmpty from "./ChatEmpty.js";
|
|
6
6
|
import ChatItem from "./item/index.js";
|
|
7
7
|
import { KSpacingValue, KColors, KImage, KContainer } from '@droppii/libs';
|
|
8
8
|
import { events } from "../../constants/events.js";
|
|
9
|
-
import { FlashList } from '@shopify/flash-list';
|
|
10
9
|
import { useFetchSuggestions } from "../../hooks/suggestions/useFetchSuggestions.js";
|
|
10
|
+
import useSessionStore from "../../store/session.js";
|
|
11
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
-
const
|
|
12
|
+
const FlatListComponent = FlatList;
|
|
13
13
|
const ChatMessageList = ({
|
|
14
14
|
messageList = []
|
|
15
15
|
}) => {
|
|
16
16
|
const {
|
|
17
17
|
data: suggestions
|
|
18
18
|
} = useFetchSuggestions();
|
|
19
|
+
const sessionId = useSessionStore(state => state.sessionId);
|
|
19
20
|
const flatListRef = useRef(null);
|
|
20
21
|
const scrollOffsetRef = useRef(0);
|
|
21
|
-
const contentHeightRef = useRef(0);
|
|
22
|
-
const viewportHeightRef = useRef(0);
|
|
23
22
|
const [showScrollToBottom, setShowScrollToBottom] = useState(false);
|
|
24
23
|
const onScroll = useCallback(event => {
|
|
25
24
|
const offsetY = event?.nativeEvent?.contentOffset?.y ?? 0;
|
|
26
|
-
const layoutHeight = event?.nativeEvent?.layoutMeasurement?.height ?? 0;
|
|
27
|
-
const contentHeight = event?.nativeEvent?.contentSize?.height ?? 0;
|
|
28
25
|
scrollOffsetRef.current = offsetY;
|
|
29
26
|
const threshold = 20;
|
|
30
|
-
|
|
31
|
-
setShowScrollToBottom(!atBottom);
|
|
27
|
+
setShowScrollToBottom(offsetY > threshold);
|
|
32
28
|
}, []);
|
|
33
29
|
const scrollToBottom = useCallback(async () => {
|
|
34
30
|
await new Promise(resolve => setTimeout(resolve, 300));
|
|
35
|
-
const offset = Math.max(0, contentHeightRef.current - viewportHeightRef.current);
|
|
36
31
|
flatListRef.current?.scrollToOffset({
|
|
37
32
|
animated: true,
|
|
38
|
-
offset
|
|
33
|
+
offset: 0
|
|
34
|
+
});
|
|
35
|
+
}, []);
|
|
36
|
+
const renderItem = useCallback(({
|
|
37
|
+
item,
|
|
38
|
+
index
|
|
39
|
+
}) => {
|
|
40
|
+
return /*#__PURE__*/_jsx(ChatItem, {
|
|
41
|
+
item: item,
|
|
42
|
+
isLastItem: index === 0
|
|
39
43
|
});
|
|
40
44
|
}, []);
|
|
41
45
|
useEffect(() => {
|
|
@@ -46,11 +50,14 @@ const ChatMessageList = ({
|
|
|
46
50
|
useEffect(() => {
|
|
47
51
|
const subScrollToMessage = DeviceEventEmitter.addListener(events.scrollToMessage, messageId => {
|
|
48
52
|
const index = messageList.findIndex(m => m.id === messageId);
|
|
49
|
-
if
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
//scroll to previous message if it exists because of the flatlist scroll to the bottom of item
|
|
54
|
+
if (messageList?.[index + 1]) {
|
|
55
|
+
flatListRef.current?.scrollToIndex({
|
|
56
|
+
animated: true,
|
|
57
|
+
index: index + 1,
|
|
58
|
+
viewPosition: 1
|
|
59
|
+
});
|
|
60
|
+
}
|
|
54
61
|
});
|
|
55
62
|
return () => {
|
|
56
63
|
subScrollToMessage.remove();
|
|
@@ -58,31 +65,25 @@ const ChatMessageList = ({
|
|
|
58
65
|
}, [messageList]);
|
|
59
66
|
return /*#__PURE__*/_jsxs(View, {
|
|
60
67
|
style: styles.flex,
|
|
61
|
-
children: [/*#__PURE__*/_jsx(
|
|
68
|
+
children: [/*#__PURE__*/_jsx(FlatListComponent, {
|
|
62
69
|
ref: flatListRef,
|
|
63
70
|
data: messageList,
|
|
64
|
-
renderItem:
|
|
65
|
-
item,
|
|
66
|
-
index
|
|
67
|
-
}) => /*#__PURE__*/_jsx(ChatItem, {
|
|
68
|
-
item: item,
|
|
69
|
-
isLastItem: index === messageList.length - 1
|
|
70
|
-
}),
|
|
71
|
+
renderItem: renderItem,
|
|
71
72
|
keyExtractor: item => item.id,
|
|
72
|
-
contentContainerStyle: styles.container,
|
|
73
73
|
ListEmptyComponent: /*#__PURE__*/_jsx(ChatEmpty, {
|
|
74
74
|
suggestions: suggestions?.suggestions || []
|
|
75
75
|
}),
|
|
76
76
|
onScroll: onScroll,
|
|
77
77
|
scrollEventThrottle: 16,
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
78
|
+
inverted: true,
|
|
79
|
+
contentContainerStyle: styles.container,
|
|
80
|
+
maintainVisibleContentPosition: messageList?.length > 1 ? {
|
|
81
|
+
minIndexForVisible: 1
|
|
82
|
+
} : undefined,
|
|
83
|
+
showsVerticalScrollIndicator: false,
|
|
84
|
+
maxToRenderPerBatch: 6,
|
|
85
|
+
initialNumToRender: 6
|
|
86
|
+
}, sessionId), showScrollToBottom && /*#__PURE__*/_jsx(KContainer.Touchable, {
|
|
86
87
|
style: styles.scrollButton,
|
|
87
88
|
onPress: scrollToBottom,
|
|
88
89
|
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
@@ -101,7 +102,8 @@ const styles = StyleSheet.create({
|
|
|
101
102
|
container: {
|
|
102
103
|
flexGrow: 1,
|
|
103
104
|
gap: KSpacingValue['0.5rem'],
|
|
104
|
-
|
|
105
|
+
paddingTop: KSpacingValue['1rem'],
|
|
106
|
+
justifyContent: 'flex-end'
|
|
105
107
|
},
|
|
106
108
|
scrollButton: {
|
|
107
109
|
position: 'absolute',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","View","DeviceEventEmitter","useCallback","useRef","useEffect","useState","ChatEmpty","ChatItem","KSpacingValue","KColors","KImage","KContainer","events","
|
|
1
|
+
{"version":3,"names":["FlatList","StyleSheet","View","DeviceEventEmitter","useCallback","useRef","useEffect","useState","ChatEmpty","ChatItem","KSpacingValue","KColors","KImage","KContainer","events","useFetchSuggestions","useSessionStore","jsx","_jsx","jsxs","_jsxs","FlatListComponent","ChatMessageList","messageList","data","suggestions","sessionId","state","flatListRef","scrollOffsetRef","showScrollToBottom","setShowScrollToBottom","onScroll","event","offsetY","nativeEvent","contentOffset","y","current","threshold","scrollToBottom","Promise","resolve","setTimeout","scrollToOffset","animated","offset","renderItem","item","index","isLastItem","length","subScrollToMessage","addListener","scrollToMessage","messageId","findIndex","m","id","scrollToIndex","viewPosition","remove","style","styles","flex","children","ref","keyExtractor","ListEmptyComponent","scrollEventThrottle","inverted","contentContainerStyle","container","maintainVisibleContentPosition","minIndexForVisible","undefined","showsVerticalScrollIndicator","maxToRenderPerBatch","initialNumToRender","Touchable","scrollButton","onPress","VectorIcons","name","size","color","black","create","flexGrow","gap","paddingTop","justifyContent","position","bottom","right","backgroundColor","white","width","height","borderRadius","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","alignItems"],"sourceRoot":"../../../../src","sources":["components/chat/ChatMessageList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,8 +40,7 @@ const ChatBotAI = () => {
|
|
|
40
40
|
const sourceTabCount = useMemo(() => {
|
|
41
41
|
return externalSessionInfo?.sources?.count || 0;
|
|
42
42
|
}, [externalSessionInfo?.sources?.count]);
|
|
43
|
-
const
|
|
44
|
-
const lastMessage = messageLength > 0 ? messageState?.messages?.[messageLength - 1] : undefined;
|
|
43
|
+
const lastMessage = messageState?.messages?.[0];
|
|
45
44
|
const renderScene = useCallback(({
|
|
46
45
|
route
|
|
47
46
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["KColors","KContainer","KLabel","KRadiusValue","KSpacingValue","ChatHeader","ChatMessageList","ChatFooter","KeyboardAvoidingView","KeyboardAvoidingViewAndroid","Platform","StyleSheet","useWindowDimensions","KeyboardAvoidingViewIOS","useMessage","TabView","useCallback","useEffect","useMemo","useSessionStore","useGetExternalSessionInfo","ChatProductList","useChatContext","GAEvents","ChatSessionTab","getRouteKey","routes","LinearGradient","jsx","_jsx","jsxs","_jsxs","OS","ChatBotAI","messageState","layout","tabIndex","setTabIndex","logGA","sessionId","state","data","externalSessionInfo","productTabCount","products","count","sourceTabCount","sources","
|
|
1
|
+
{"version":3,"names":["KColors","KContainer","KLabel","KRadiusValue","KSpacingValue","ChatHeader","ChatMessageList","ChatFooter","KeyboardAvoidingView","KeyboardAvoidingViewAndroid","Platform","StyleSheet","useWindowDimensions","KeyboardAvoidingViewIOS","useMessage","TabView","useCallback","useEffect","useMemo","useSessionStore","useGetExternalSessionInfo","ChatProductList","useChatContext","GAEvents","ChatSessionTab","getRouteKey","routes","LinearGradient","jsx","_jsx","jsxs","_jsxs","OS","ChatBotAI","messageState","layout","tabIndex","setTabIndex","logGA","sessionId","state","data","externalSessionInfo","productTabCount","products","count","sourceTabCount","sources","lastMessage","messages","renderScene","route","key","answer","messageList","source","product","items","newChatPageView","chatDetailPageView","conversation_id","tab_type","Page","flex","children","style","styles","container","behavior","keyboardVerticalOffset","VisibleView","visible","View","tabContainer","map","index","isCurTab","borderColor","primary","normal","transparent","textColor","gray","light","bagdeColor","gradients","Touchable","onPress","tabContent","Text","typo","color","title","colors","badge","white","tabBorder","background","navigationState","onIndexChange","initialLayout","width","renderTabBar","swipeEnabled","create","flexGrow","flexDirection","gap","paddingHorizontal","borderBottomWidth","borderBottomColor","border","marginTop","alignItems","height","borderRadius","x","minWidth","justifyContent","round"],"sourceRoot":"../../../../src","sources":["components/chat/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ import ChatBotAI from "../components/chat/index.js";
|
|
|
5
5
|
import Portal from "../components/portal/index.js";
|
|
6
6
|
import ReanimatedDrawerExample from "../components/Drawer/index.js";
|
|
7
7
|
import useSessionStore from "../store/session.js";
|
|
8
|
+
import useStreamMessageStore from "../store/streamMessage.js";
|
|
8
9
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
10
|
export const ChatContext = /*#__PURE__*/createContext({
|
|
10
11
|
apiAddress: '',
|
|
@@ -26,8 +27,10 @@ export const ChatContext = /*#__PURE__*/createContext({
|
|
|
26
27
|
export const useChatContext = () => useContext(ChatContext);
|
|
27
28
|
export const ChatProvider = props => {
|
|
28
29
|
const ref = useRef(null);
|
|
30
|
+
const spanRef = useRef(null);
|
|
29
31
|
const [tabIndex, setTabIndex] = useState(0);
|
|
30
32
|
const sessionId = useSessionStore(state => state.sessionId);
|
|
33
|
+
const isStreaming = useStreamMessageStore(state => state.isStreaming);
|
|
31
34
|
const openDrawer = () => {
|
|
32
35
|
ref.current?.openDrawer();
|
|
33
36
|
};
|
|
@@ -46,11 +49,28 @@ export const ChatProvider = props => {
|
|
|
46
49
|
pushLinkTo,
|
|
47
50
|
chatbotUrl,
|
|
48
51
|
logGA,
|
|
49
|
-
notifyError
|
|
52
|
+
notifyError,
|
|
53
|
+
startCustomSpan
|
|
50
54
|
} = props;
|
|
51
55
|
useEffect(() => {
|
|
52
56
|
setTabIndex(0);
|
|
53
57
|
}, [sessionId]);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
const run = async () => {
|
|
60
|
+
if (isStreaming) {
|
|
61
|
+
const span = await startCustomSpan?.('chatbot.streaming');
|
|
62
|
+
spanRef.current = span;
|
|
63
|
+
} else {
|
|
64
|
+
spanRef.current?.end();
|
|
65
|
+
spanRef.current = null;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
run();
|
|
69
|
+
return () => {
|
|
70
|
+
spanRef.current?.end();
|
|
71
|
+
spanRef.current = null;
|
|
72
|
+
};
|
|
73
|
+
}, [isStreaming, startCustomSpan]);
|
|
54
74
|
return /*#__PURE__*/_jsx(ChatContext.Provider, {
|
|
55
75
|
value: {
|
|
56
76
|
apiAddress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","useEffect","useRef","useState","ChatBotAI","Portal","ReanimatedDrawerExample","useSessionStore","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ChatContext","apiAddress","userId","cartButton","undefined","onAddToCart","onBuyNow","onNavigateToProduct","csTeamId","pushLinkTo","openDrawer","closeDrawer","chatbotUrl","logGA","notifyError","tabIndex","setTabIndex","useChatContext","ChatProvider","props","ref","sessionId","state","current","openImageViewer","Provider","value","children"],"sourceRoot":"../../../src","sources":["context/ChatContext.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAE9E,OAAOC,SAAS,MAAM,6BAAoB;AAC1C,OAAOC,MAAM,MAAM,+BAAsB;AACzC,OAAOC,uBAAuB,MAAM,+BAAsB;AAC1D,OAAOC,eAAe,MAAM,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["createContext","useContext","useEffect","useRef","useState","ChatBotAI","Portal","ReanimatedDrawerExample","useSessionStore","useStreamMessageStore","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ChatContext","apiAddress","userId","cartButton","undefined","onAddToCart","onBuyNow","onNavigateToProduct","csTeamId","pushLinkTo","openDrawer","closeDrawer","chatbotUrl","logGA","notifyError","tabIndex","setTabIndex","useChatContext","ChatProvider","props","ref","spanRef","sessionId","state","isStreaming","current","openImageViewer","startCustomSpan","run","span","end","Provider","value","children"],"sourceRoot":"../../../src","sources":["context/ChatContext.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -32,7 +32,7 @@ export const useMessage = () => {
|
|
|
32
32
|
if (!res) return;
|
|
33
33
|
setLoadState(prev => ({
|
|
34
34
|
...res,
|
|
35
|
-
messages: res?.messages?.length > 0 ? res.messages : prev.messages
|
|
35
|
+
messages: res?.messages?.length > 0 ? res.messages.reverse() : prev.messages
|
|
36
36
|
}));
|
|
37
37
|
}, [sessionId, getSessionById]);
|
|
38
38
|
useEffect(() => {
|
|
@@ -59,7 +59,7 @@ export const useMessage = () => {
|
|
|
59
59
|
}
|
|
60
60
|
return {
|
|
61
61
|
...prev,
|
|
62
|
-
messages: [...prev.messages
|
|
62
|
+
messages: [messageItem, ...prev.messages]
|
|
63
63
|
};
|
|
64
64
|
});
|
|
65
65
|
});
|
|
@@ -69,10 +69,10 @@ export const useMessage = () => {
|
|
|
69
69
|
return prev;
|
|
70
70
|
}
|
|
71
71
|
const existingIds = new Set(prev.messages.map(m => m?.id));
|
|
72
|
-
const filtered = messageItems.filter(m => !existingIds.has(m?.id));
|
|
72
|
+
const filtered = messageItems.filter(m => !existingIds.has(m?.id)).reverse();
|
|
73
73
|
return {
|
|
74
74
|
...prev,
|
|
75
|
-
messages: [...prev.messages
|
|
75
|
+
messages: [...filtered, ...prev.messages]
|
|
76
76
|
};
|
|
77
77
|
});
|
|
78
78
|
});
|
|
@@ -92,7 +92,7 @@ export const useMessage = () => {
|
|
|
92
92
|
const newItems = messages.filter(u => !existingIds.has(u.id));
|
|
93
93
|
return {
|
|
94
94
|
...prev,
|
|
95
|
-
messages: [...
|
|
95
|
+
messages: [...newItems, ...merged]
|
|
96
96
|
};
|
|
97
97
|
});
|
|
98
98
|
useStreamMessageStore.getState().clearStreamMessageRecordById(messages.map(m => m.id));
|
|
@@ -107,7 +107,7 @@ export const useMessage = () => {
|
|
|
107
107
|
}
|
|
108
108
|
const messageIndex = prev.messages.findIndex(m => m.id === messageId);
|
|
109
109
|
if (messageIndex === -1) return prev;
|
|
110
|
-
const updatedMessages = prev.messages.slice(messageIndex).map((m, i) => i ===
|
|
110
|
+
const updatedMessages = prev.messages.slice(messageIndex).map((m, i) => i === 0 ? {
|
|
111
111
|
...m,
|
|
112
112
|
metadata: {
|
|
113
113
|
...m.metadata,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useState","useSessionStore","useFetchSessionById","DeviceEventEmitter","events","useStreamMessageStore","useQueryClient","QUERY_KEYS","initialState","id","title","created_at","updated_at","metadata","source","shared","messages","useMessage","queryClient","sessionId","state","mutateAsync","getSessionById","loadState","setLoadState","onGetSessionById","res","prev","length","subOneMessage","addListener","updateOneMessage","messageItem","messageIndex","findIndex","m","updatedMessages","subMultipleMessage","updateMultipleMessage","messageItems","sID","existingIds","Set","map","filtered","filter","has","subForceUpdateMessages","forceUpdateMessages","merged","msg","update","find","u","newItems","getState","clearStreamMessageRecordById","refetchQueries","queryKey","GET_EXTERNAL_SESSION_INFO","subUpdateMessageError","updateMessageError","messageId","slice","i","remove","messageState"],"sourceRoot":"../../../../src","sources":["hooks/message/useMessage.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AACxD,OAAOC,eAAe,MAAM,wBAAqB;AACjD,SAASC,mBAAmB,QAAQ,mCAAgC;AAEpE,SAASC,kBAAkB,QAAQ,cAAc;AACjD,SAASC,MAAM,QAAQ,2BAAwB;AAC/C,OAAOC,qBAAqB,MAAM,8BAA2B;AAC7D,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,UAAU,QAAQ,0BAAuB;AAElD,MAAMC,YAAY,GAAG;EACnBC,EAAE,EAAE,EAAE;EACNC,KAAK,EAAE,EAAE;EACTC,UAAU,EAAE,EAAE;EACdC,UAAU,EAAE,EAAE;EACdC,QAAQ,EAAE;IACRC,MAAM,EAAE;EACV,CAAC;EACDC,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE;AACZ,CAAC;AACD,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAAM;EAC9B,MAAMC,WAAW,GAAGZ,cAAc,CAAC,CAAC;EACpC,MAAMa,SAAS,GAAGlB,eAAe,CAAEmB,KAAK,IAAKA,KAAK,CAACD,SAAS,CAAC;EAC7D,MAAM;IAAEE,WAAW,EAAEC;EAAe,CAAC,GAAGpB,mBAAmB,CAAC,CAAC;EAC7D,MAAM,CAACqB,SAAS,EAAEC,YAAY,CAAC,GAC7BxB,QAAQ,CAAwBQ,YAAY,CAAC;EAE/C,MAAMiB,gBAAgB,GAAG3B,WAAW,CAAC,YAAY;IAC/C,IAAI,CAACqB,SAAS,EAAE;IAChB,MAAMO,GAAG,GAAG,MAAMJ,cAAc,CAACH,SAAS,CAAC;IAC3C,IAAI,CAACO,GAAG,EAAE;IACVF,YAAY,CAAEG,IAAI,KAAM;MACtB,GAAGD,GAAG;MACNV,QAAQ,
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useState","useSessionStore","useFetchSessionById","DeviceEventEmitter","events","useStreamMessageStore","useQueryClient","QUERY_KEYS","initialState","id","title","created_at","updated_at","metadata","source","shared","messages","useMessage","queryClient","sessionId","state","mutateAsync","getSessionById","loadState","setLoadState","onGetSessionById","res","prev","length","reverse","subOneMessage","addListener","updateOneMessage","messageItem","messageIndex","findIndex","m","updatedMessages","subMultipleMessage","updateMultipleMessage","messageItems","sID","existingIds","Set","map","filtered","filter","has","subForceUpdateMessages","forceUpdateMessages","merged","msg","update","find","u","newItems","getState","clearStreamMessageRecordById","refetchQueries","queryKey","GET_EXTERNAL_SESSION_INFO","subUpdateMessageError","updateMessageError","messageId","slice","i","remove","messageState"],"sourceRoot":"../../../../src","sources":["hooks/message/useMessage.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SessionLogType","SendActionLogType"],"sourceRoot":"../../../src","sources":["types/chat.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["SessionLogType","SendActionLogType"],"sourceRoot":"../../../src","sources":["types/chat.ts"],"mappings":";;AAkDA,WAAYA,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAM1B,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../../../../src/components/chat/ChatMessageList.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;CAC9B;AAED,QAAA,MAAM,eAAe,GAAI,iBAAsB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../../../../src/components/chat/ChatMessageList.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;CAC9B;AAED,QAAA,MAAM,eAAe,GAAI,iBAAsB,qBAAqB,4CA4FnE,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/chat/index.tsx"],"names":[],"mappings":"AA+BA,QAAA,MAAM,SAAS,+
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/chat/index.tsx"],"names":[],"mappings":"AA+BA,QAAA,MAAM,SAAS,+CAmHd,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../../src/context/ChatContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../../src/context/ChatContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOxE,eAAO,MAAM,WAAW,0CAgBtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,4CAkFpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAkBtE,eAAO,MAAM,UAAU;;
|
|
1
|
+
{"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAkBtE,eAAO,MAAM,UAAU;;CAmJtB,CAAC"}
|
|
@@ -36,6 +36,7 @@ export interface ChatProviderProps {
|
|
|
36
36
|
chatbotUrl: string;
|
|
37
37
|
logGA: (event: string, params?: any) => void;
|
|
38
38
|
notifyError?: ErrorLogger;
|
|
39
|
+
startCustomSpan?: (name: string) => Promise<void>;
|
|
39
40
|
}
|
|
40
41
|
export type ErrorLogger = (p: {
|
|
41
42
|
errorClass: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../src/types/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../src/types/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,CAAC,EAAE;IACD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,EACD,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,KAC3C,IAAI,CAAC;AAEV,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,UAAU,iBAAiB;IAC3B,OAAO,YAAY;CACpB;AAED,oBAAY,iBAAiB;IAC3B,OAAO,aAAa;IACpB,gBAAgB,sBAAsB;IACtC,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CACZ,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,cAAc,CAAC,EAAE,cAAc,KAC5B,IAAI,CAAC;IACV,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5C,gBAAgB,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,4BAA4B,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;IACnD,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;CACjD"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { KColors, KContainer, KLabel, KSpacingValue } from '@droppii/libs';
|
|
2
|
-
import { StyleSheet } from 'react-native';
|
|
2
|
+
import { StyleSheet, Platform } from 'react-native';
|
|
3
3
|
import SuggestionItem from './SuggestionItem';
|
|
4
4
|
import { useSendMessage } from '../../hooks/message/useSendMessage';
|
|
5
5
|
import debounce from 'lodash/debounce';
|
|
@@ -69,6 +69,7 @@ const styles = StyleSheet.create({
|
|
|
69
69
|
alignItems: 'center',
|
|
70
70
|
padding: KSpacingValue['0.75rem'],
|
|
71
71
|
gap: KSpacingValue['0.5rem'],
|
|
72
|
+
transform: [Platform.OS === 'android' ? { scale: -1 } : { scaleY: -1 }],
|
|
72
73
|
},
|
|
73
74
|
disclaimer: {
|
|
74
75
|
fontSize: 11,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StyleSheet, View, DeviceEventEmitter } from 'react-native';
|
|
1
|
+
import { FlatList, StyleSheet, View, DeviceEventEmitter } from 'react-native';
|
|
2
2
|
import type { ComponentType } from 'react';
|
|
3
3
|
import { useCallback, useRef, useEffect, useState } from 'react';
|
|
4
4
|
import ChatEmpty from './ChatEmpty';
|
|
@@ -6,10 +6,10 @@ import ChatItem from './item';
|
|
|
6
6
|
import { KSpacingValue, KColors, KImage, KContainer } from '@droppii/libs';
|
|
7
7
|
import type { IMessageItem } from '../../types';
|
|
8
8
|
import { events } from '../../constants/events';
|
|
9
|
-
import { FlashList } from '@shopify/flash-list';
|
|
10
9
|
import { useFetchSuggestions } from '../../hooks/suggestions/useFetchSuggestions';
|
|
10
|
+
import useSessionStore from '../../store/session';
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const FlatListComponent = FlatList as unknown as ComponentType<any>;
|
|
13
13
|
|
|
14
14
|
interface IChatMessageListProps {
|
|
15
15
|
messageList?: IMessageItem[];
|
|
@@ -17,33 +17,32 @@ interface IChatMessageListProps {
|
|
|
17
17
|
|
|
18
18
|
const ChatMessageList = ({ messageList = [] }: IChatMessageListProps) => {
|
|
19
19
|
const { data: suggestions } = useFetchSuggestions();
|
|
20
|
+
const sessionId = useSessionStore((state) => state.sessionId);
|
|
20
21
|
|
|
21
22
|
const flatListRef = useRef<any>(null);
|
|
22
23
|
const scrollOffsetRef = useRef(0);
|
|
23
|
-
const contentHeightRef = useRef(0);
|
|
24
|
-
const viewportHeightRef = useRef(0);
|
|
25
24
|
const [showScrollToBottom, setShowScrollToBottom] = useState(false);
|
|
26
25
|
|
|
27
26
|
const onScroll = useCallback((event: any) => {
|
|
28
27
|
const offsetY = event?.nativeEvent?.contentOffset?.y ?? 0;
|
|
29
|
-
const layoutHeight = event?.nativeEvent?.layoutMeasurement?.height ?? 0;
|
|
30
|
-
const contentHeight = event?.nativeEvent?.contentSize?.height ?? 0;
|
|
31
28
|
scrollOffsetRef.current = offsetY;
|
|
32
29
|
|
|
33
30
|
const threshold = 20;
|
|
34
|
-
|
|
35
|
-
setShowScrollToBottom(!atBottom);
|
|
31
|
+
setShowScrollToBottom(offsetY > threshold);
|
|
36
32
|
}, []);
|
|
37
33
|
|
|
38
34
|
const scrollToBottom = useCallback(async () => {
|
|
39
35
|
await new Promise((resolve) => setTimeout(resolve, 300));
|
|
40
|
-
|
|
41
|
-
0,
|
|
42
|
-
contentHeightRef.current - viewportHeightRef.current
|
|
43
|
-
);
|
|
44
|
-
flatListRef.current?.scrollToOffset({ animated: true, offset });
|
|
36
|
+
flatListRef.current?.scrollToOffset({ animated: true, offset: 0 });
|
|
45
37
|
}, []);
|
|
46
38
|
|
|
39
|
+
const renderItem = useCallback(
|
|
40
|
+
({ item, index }: { item: IMessageItem; index: number }) => {
|
|
41
|
+
return <ChatItem item={item} isLastItem={index === 0} />;
|
|
42
|
+
},
|
|
43
|
+
[]
|
|
44
|
+
);
|
|
45
|
+
|
|
47
46
|
useEffect(() => {
|
|
48
47
|
if (messageList.length > 0) {
|
|
49
48
|
scrollToBottom();
|
|
@@ -55,11 +54,14 @@ const ChatMessageList = ({ messageList = [] }: IChatMessageListProps) => {
|
|
|
55
54
|
events.scrollToMessage,
|
|
56
55
|
(messageId: string) => {
|
|
57
56
|
const index = messageList.findIndex((m) => m.id === messageId);
|
|
58
|
-
if
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
//scroll to previous message if it exists because of the flatlist scroll to the bottom of item
|
|
58
|
+
if (messageList?.[index + 1]) {
|
|
59
|
+
flatListRef.current?.scrollToIndex({
|
|
60
|
+
animated: true,
|
|
61
|
+
index: index + 1,
|
|
62
|
+
viewPosition: 1,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
63
65
|
}
|
|
64
66
|
);
|
|
65
67
|
|
|
@@ -70,32 +72,25 @@ const ChatMessageList = ({ messageList = [] }: IChatMessageListProps) => {
|
|
|
70
72
|
|
|
71
73
|
return (
|
|
72
74
|
<View style={styles.flex}>
|
|
73
|
-
<
|
|
75
|
+
<FlatListComponent
|
|
76
|
+
key={sessionId}
|
|
74
77
|
ref={flatListRef}
|
|
75
78
|
data={messageList}
|
|
76
|
-
renderItem={
|
|
77
|
-
item,
|
|
78
|
-
index,
|
|
79
|
-
}: {
|
|
80
|
-
item: IMessageItem;
|
|
81
|
-
index: number;
|
|
82
|
-
}) => (
|
|
83
|
-
<ChatItem item={item} isLastItem={index === messageList.length - 1} />
|
|
84
|
-
)}
|
|
79
|
+
renderItem={renderItem}
|
|
85
80
|
keyExtractor={(item: IMessageItem) => item.id}
|
|
86
|
-
contentContainerStyle={styles.container}
|
|
87
81
|
ListEmptyComponent={
|
|
88
82
|
<ChatEmpty suggestions={suggestions?.suggestions || []} />
|
|
89
83
|
}
|
|
90
84
|
onScroll={onScroll}
|
|
91
85
|
scrollEventThrottle={16}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
86
|
+
inverted
|
|
87
|
+
contentContainerStyle={styles.container}
|
|
88
|
+
maintainVisibleContentPosition={
|
|
89
|
+
messageList?.length > 1 ? { minIndexForVisible: 1 } : undefined
|
|
90
|
+
}
|
|
91
|
+
showsVerticalScrollIndicator={false}
|
|
92
|
+
maxToRenderPerBatch={6}
|
|
93
|
+
initialNumToRender={6}
|
|
99
94
|
/>
|
|
100
95
|
|
|
101
96
|
{showScrollToBottom && (
|
|
@@ -123,7 +118,8 @@ const styles = StyleSheet.create({
|
|
|
123
118
|
container: {
|
|
124
119
|
flexGrow: 1,
|
|
125
120
|
gap: KSpacingValue['0.5rem'],
|
|
126
|
-
|
|
121
|
+
paddingTop: KSpacingValue['1rem'],
|
|
122
|
+
justifyContent: 'flex-end',
|
|
127
123
|
},
|
|
128
124
|
scrollButton: {
|
|
129
125
|
position: 'absolute',
|
|
@@ -46,10 +46,7 @@ const ChatBotAI = () => {
|
|
|
46
46
|
return externalSessionInfo?.sources?.count || 0;
|
|
47
47
|
}, [externalSessionInfo?.sources?.count]);
|
|
48
48
|
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
const lastMessage =
|
|
52
|
-
messageLength > 0 ? messageState?.messages?.[messageLength - 1] : undefined;
|
|
49
|
+
const lastMessage = messageState?.messages?.[0];
|
|
53
50
|
|
|
54
51
|
const renderScene = useCallback(
|
|
55
52
|
({ route }: { route: any }) => {
|
|
@@ -4,6 +4,7 @@ import ChatBotAI from '../components/chat';
|
|
|
4
4
|
import Portal from '../components/portal';
|
|
5
5
|
import ReanimatedDrawerExample from '../components/Drawer';
|
|
6
6
|
import useSessionStore from '../store/session';
|
|
7
|
+
import useStreamMessageStore from '../store/streamMessage';
|
|
7
8
|
|
|
8
9
|
export const ChatContext = createContext<ChatContextType>({
|
|
9
10
|
apiAddress: '',
|
|
@@ -27,8 +28,10 @@ export const useChatContext = () => useContext(ChatContext);
|
|
|
27
28
|
|
|
28
29
|
export const ChatProvider = (props: ChatProviderProps) => {
|
|
29
30
|
const ref = useRef<any>(null);
|
|
31
|
+
const spanRef = useRef<any>(null);
|
|
30
32
|
const [tabIndex, setTabIndex] = useState(0);
|
|
31
33
|
const sessionId = useSessionStore((state) => state.sessionId);
|
|
34
|
+
const isStreaming = useStreamMessageStore((state) => state.isStreaming);
|
|
32
35
|
|
|
33
36
|
const openDrawer = () => {
|
|
34
37
|
ref.current?.openDrawer();
|
|
@@ -50,12 +53,32 @@ export const ChatProvider = (props: ChatProviderProps) => {
|
|
|
50
53
|
chatbotUrl,
|
|
51
54
|
logGA,
|
|
52
55
|
notifyError,
|
|
56
|
+
startCustomSpan,
|
|
53
57
|
} = props;
|
|
54
58
|
|
|
55
59
|
useEffect(() => {
|
|
56
60
|
setTabIndex(0);
|
|
57
61
|
}, [sessionId]);
|
|
58
62
|
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
const run = async () => {
|
|
65
|
+
if (isStreaming) {
|
|
66
|
+
const span: any = await startCustomSpan?.('chatbot.streaming');
|
|
67
|
+
spanRef.current = span;
|
|
68
|
+
} else {
|
|
69
|
+
spanRef.current?.end();
|
|
70
|
+
spanRef.current = null;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
run();
|
|
75
|
+
|
|
76
|
+
return () => {
|
|
77
|
+
spanRef.current?.end();
|
|
78
|
+
spanRef.current = null;
|
|
79
|
+
};
|
|
80
|
+
}, [isStreaming, startCustomSpan]);
|
|
81
|
+
|
|
59
82
|
return (
|
|
60
83
|
<ChatContext.Provider
|
|
61
84
|
value={{
|
|
@@ -32,7 +32,8 @@ export const useMessage = () => {
|
|
|
32
32
|
if (!res) return;
|
|
33
33
|
setLoadState((prev) => ({
|
|
34
34
|
...res,
|
|
35
|
-
messages:
|
|
35
|
+
messages:
|
|
36
|
+
res?.messages?.length > 0 ? res.messages.reverse() : prev.messages,
|
|
36
37
|
}));
|
|
37
38
|
}, [sessionId, getSessionById]);
|
|
38
39
|
|
|
@@ -68,7 +69,7 @@ export const useMessage = () => {
|
|
|
68
69
|
|
|
69
70
|
return {
|
|
70
71
|
...prev,
|
|
71
|
-
messages: [...prev.messages
|
|
72
|
+
messages: [messageItem, ...prev.messages],
|
|
72
73
|
};
|
|
73
74
|
});
|
|
74
75
|
}
|
|
@@ -83,10 +84,12 @@ export const useMessage = () => {
|
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
const existingIds = new Set(prev.messages.map((m) => m?.id));
|
|
86
|
-
const filtered = messageItems
|
|
87
|
+
const filtered = messageItems
|
|
88
|
+
.filter((m) => !existingIds.has(m?.id))
|
|
89
|
+
.reverse();
|
|
87
90
|
return {
|
|
88
91
|
...prev,
|
|
89
|
-
messages: [...prev.messages
|
|
92
|
+
messages: [...filtered, ...prev.messages],
|
|
90
93
|
};
|
|
91
94
|
});
|
|
92
95
|
}
|
|
@@ -108,7 +111,7 @@ export const useMessage = () => {
|
|
|
108
111
|
const newItems = messages.filter((u) => !existingIds.has(u.id));
|
|
109
112
|
return {
|
|
110
113
|
...prev,
|
|
111
|
-
messages: [...
|
|
114
|
+
messages: [...newItems, ...merged],
|
|
112
115
|
};
|
|
113
116
|
});
|
|
114
117
|
useStreamMessageStore
|
|
@@ -134,7 +137,7 @@ export const useMessage = () => {
|
|
|
134
137
|
const updatedMessages: IMessageItem[] = prev.messages
|
|
135
138
|
.slice(messageIndex)
|
|
136
139
|
.map((m, i) =>
|
|
137
|
-
i ===
|
|
140
|
+
i === 0
|
|
138
141
|
? {
|
|
139
142
|
...m,
|
|
140
143
|
metadata: {
|
package/src/types/chat.ts
CHANGED