@droppii-org/chat-mobile 0.2.63 → 0.2.64

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.
Files changed (112) hide show
  1. package/lib/module/components/flows/inputButtons/index.js +11 -6
  2. package/lib/module/components/flows/inputButtons/index.js.map +1 -1
  3. package/lib/module/components/messages/linkMessage/index.js +4 -2
  4. package/lib/module/components/messages/linkMessage/index.js.map +1 -1
  5. package/lib/module/components/messages/quotedMessage/index.js +3 -2
  6. package/lib/module/components/messages/quotedMessage/index.js.map +1 -1
  7. package/lib/module/components/messages/styles.js +6 -1
  8. package/lib/module/components/messages/styles.js.map +1 -1
  9. package/lib/module/components/messages/textMessage/index.js +3 -2
  10. package/lib/module/components/messages/textMessage/index.js.map +1 -1
  11. package/lib/module/components/messages/types.js.map +1 -1
  12. package/lib/module/context/ChatDetailContext.js +5 -3
  13. package/lib/module/context/ChatDetailContext.js.map +1 -1
  14. package/lib/module/hooks/flows/useFlow.js +1 -1
  15. package/lib/module/hooks/flows/useFlow.js.map +1 -1
  16. package/lib/module/hooks/message/useSearchMessage.js +39 -14
  17. package/lib/module/hooks/message/useSearchMessage.js.map +1 -1
  18. package/lib/module/screens/SearchConversation/SearchAllResult.js +25 -10
  19. package/lib/module/screens/SearchConversation/SearchAllResult.js.map +1 -1
  20. package/lib/module/screens/SearchConversation/SearchEmpty.js +22 -3
  21. package/lib/module/screens/SearchConversation/SearchEmpty.js.map +1 -1
  22. package/lib/module/screens/SearchConversation/SearchMessagesResult.js +23 -7
  23. package/lib/module/screens/SearchConversation/SearchMessagesResult.js.map +1 -1
  24. package/lib/module/screens/SearchConversation/SearchResultItem.js +53 -12
  25. package/lib/module/screens/SearchConversation/SearchResultItem.js.map +1 -1
  26. package/lib/module/screens/SearchMessage/SearchMessageResult.js +24 -7
  27. package/lib/module/screens/SearchMessage/SearchMessageResult.js.map +1 -1
  28. package/lib/module/screens/SearchMessage/SearchResultItem.js +31 -3
  29. package/lib/module/screens/SearchMessage/SearchResultItem.js.map +1 -1
  30. package/lib/module/screens/chat-detail/ChatListLegend.js +26 -17
  31. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  32. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +4 -2
  33. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
  34. package/lib/module/store/message.js +3 -0
  35. package/lib/module/store/message.js.map +1 -1
  36. package/lib/module/translation/resources/i18n.js +6 -2
  37. package/lib/module/translation/resources/i18n.js.map +1 -1
  38. package/lib/module/types/chat.js.map +1 -1
  39. package/lib/module/types/events.js +1 -0
  40. package/lib/module/types/events.js.map +1 -1
  41. package/lib/module/utils/flows.js +4 -4
  42. package/lib/module/utils/flows.js.map +1 -1
  43. package/lib/module/utils/highlightSearch.js +38 -0
  44. package/lib/module/utils/highlightSearch.js.map +1 -0
  45. package/lib/module/utils/messageUtils.js +5 -1
  46. package/lib/module/utils/messageUtils.js.map +1 -1
  47. package/lib/typescript/src/components/flows/inputButtons/index.d.ts +1 -1
  48. package/lib/typescript/src/components/flows/inputButtons/index.d.ts.map +1 -1
  49. package/lib/typescript/src/components/messages/linkMessage/index.d.ts +1 -1
  50. package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -1
  51. package/lib/typescript/src/components/messages/quotedMessage/index.d.ts.map +1 -1
  52. package/lib/typescript/src/components/messages/styles.d.ts +5 -0
  53. package/lib/typescript/src/components/messages/styles.d.ts.map +1 -1
  54. package/lib/typescript/src/components/messages/textMessage/index.d.ts +1 -1
  55. package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -1
  56. package/lib/typescript/src/components/messages/types.d.ts +1 -0
  57. package/lib/typescript/src/components/messages/types.d.ts.map +1 -1
  58. package/lib/typescript/src/context/ChatDetailContext.d.ts.map +1 -1
  59. package/lib/typescript/src/hooks/flows/useFlow.d.ts.map +1 -1
  60. package/lib/typescript/src/hooks/message/useSearchMessage.d.ts.map +1 -1
  61. package/lib/typescript/src/screens/SearchConversation/SearchAllResult.d.ts.map +1 -1
  62. package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts +7 -1
  63. package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts.map +1 -1
  64. package/lib/typescript/src/screens/SearchConversation/SearchMessagesResult.d.ts.map +1 -1
  65. package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts +1 -0
  66. package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts.map +1 -1
  67. package/lib/typescript/src/screens/SearchMessage/SearchMessageResult.d.ts.map +1 -1
  68. package/lib/typescript/src/screens/SearchMessage/SearchResultItem.d.ts +1 -0
  69. package/lib/typescript/src/screens/SearchMessage/SearchResultItem.d.ts.map +1 -1
  70. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  71. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +2 -1
  72. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
  73. package/lib/typescript/src/store/message.d.ts.map +1 -1
  74. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  75. package/lib/typescript/src/types/chat.d.ts +1 -1
  76. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  77. package/lib/typescript/src/types/events.d.ts +5 -1
  78. package/lib/typescript/src/types/events.d.ts.map +1 -1
  79. package/lib/typescript/src/types/flows.d.ts +4 -0
  80. package/lib/typescript/src/types/flows.d.ts.map +1 -1
  81. package/lib/typescript/src/utils/flows.d.ts +1 -1
  82. package/lib/typescript/src/utils/flows.d.ts.map +1 -1
  83. package/lib/typescript/src/utils/highlightSearch.d.ts +7 -0
  84. package/lib/typescript/src/utils/highlightSearch.d.ts.map +1 -0
  85. package/lib/typescript/src/utils/messageUtils.d.ts +1 -0
  86. package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/src/components/flows/inputButtons/index.tsx +20 -12
  89. package/src/components/messages/linkMessage/index.tsx +3 -0
  90. package/src/components/messages/quotedMessage/index.tsx +2 -1
  91. package/src/components/messages/styles.ts +6 -1
  92. package/src/components/messages/textMessage/index.tsx +7 -1
  93. package/src/components/messages/types.ts +1 -0
  94. package/src/context/ChatDetailContext.tsx +23 -10
  95. package/src/hooks/flows/useFlow.ts +5 -1
  96. package/src/hooks/message/useSearchMessage.ts +46 -15
  97. package/src/screens/SearchConversation/SearchAllResult.tsx +24 -10
  98. package/src/screens/SearchConversation/SearchEmpty.tsx +38 -14
  99. package/src/screens/SearchConversation/SearchMessagesResult.tsx +39 -18
  100. package/src/screens/SearchConversation/SearchResultItem.tsx +72 -13
  101. package/src/screens/SearchMessage/SearchMessageResult.tsx +47 -20
  102. package/src/screens/SearchMessage/SearchResultItem.tsx +37 -5
  103. package/src/screens/chat-detail/ChatListLegend.tsx +48 -21
  104. package/src/screens/chat-detail/legend/LegendChatMessage.tsx +3 -0
  105. package/src/store/message.ts +2 -0
  106. package/src/translation/resources/i18n.ts +6 -2
  107. package/src/types/chat.ts +5 -1
  108. package/src/types/events.ts +5 -0
  109. package/src/types/flows.ts +4 -0
  110. package/src/utils/flows.ts +5 -6
  111. package/src/utils/highlightSearch.ts +48 -0
  112. package/src/utils/messageUtils.ts +16 -7
@@ -4,8 +4,27 @@ import { KContainer, KImage, KLabel, KSpacingValue } from '@droppii/libs';
4
4
  import { StyleSheet } from 'react-native';
5
5
  import Images from "../../assets/images/index.js";
6
6
  import { trans } from "../../translation/index.js";
7
+ import { memo, useMemo } from 'react';
8
+ import { isEmpty } from 'lodash';
9
+ import { SearchConversationTabResultType } from "./types.js";
7
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
- export const SearchEmpty = () => {
11
+ export const SearchEmpty = /*#__PURE__*/memo(({
12
+ searchTerm,
13
+ searchType
14
+ }) => {
15
+ const emptyHint = useMemo(() => {
16
+ if (!isEmpty(searchTerm?.trim())) {
17
+ return 'search:empty_description';
18
+ }
19
+ switch (searchType) {
20
+ case SearchConversationTabResultType.Messages:
21
+ return 'search_message:empty_hint';
22
+ case SearchConversationTabResultType.Conversations:
23
+ return 'search_conversation:empty_hint';
24
+ default:
25
+ return 'search:empty_hint';
26
+ }
27
+ }, [searchTerm, searchType]);
9
28
  return /*#__PURE__*/_jsxs(KContainer.View, {
10
29
  style: styles.container,
11
30
  children: [/*#__PURE__*/_jsx(KImage.Base, {
@@ -16,10 +35,10 @@ export const SearchEmpty = () => {
16
35
  }), /*#__PURE__*/_jsx(KLabel.Text, {
17
36
  typo: "TextMdNormal",
18
37
  textAlign: "center",
19
- children: trans('search:empty_description')
38
+ children: trans(emptyHint)
20
39
  })]
21
40
  });
22
- };
41
+ });
23
42
  const styles = StyleSheet.create({
24
43
  container: {
25
44
  paddingHorizontal: KSpacingValue['2rem'],
@@ -1 +1 @@
1
- {"version":3,"names":["KContainer","KImage","KLabel","KSpacingValue","StyleSheet","Images","trans","jsx","_jsx","jsxs","_jsxs","SearchEmpty","View","style","styles","container","children","Base","uri","SEARCH_EMPTY","width","height","resizeMode","Text","typo","textAlign","create","paddingHorizontal","paddingVertical","justifyContent","alignItems","gap"],"sourceRoot":"../../../../src","sources":["screens/SearchConversation/SearchEmpty.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,aAAa,QAAQ,eAAe;AACzE,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,MAAM,MAAM,8BAAqB;AACxC,SAASC,KAAK,QAAQ,4BAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE1C,OAAO,MAAMC,WAAW,GAAGA,CAAA,KAAM;EAC/B,oBACED,KAAA,CAACV,UAAU,CAACY,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,gBACvCR,IAAA,CAACP,MAAM,CAACgB,IAAI;MACVC,GAAG,EAAEb,MAAM,CAACc,YAAa;MACzBC,KAAK,EAAE,GAAI;MACXC,MAAM,EAAE,GAAI;MACZC,UAAU,EAAC;IAAS,CACrB,CAAC,eACFd,IAAA,CAACN,MAAM,CAACqB,IAAI;MAACC,IAAI,EAAC,cAAc;MAACC,SAAS,EAAC,QAAQ;MAAAT,QAAA,EAChDV,KAAK,CAAC,0BAA0B;IAAC,CACvB,CAAC;EAAA,CACC,CAAC;AAEtB,CAAC;AAED,MAAMQ,MAAM,GAAGV,UAAU,CAACsB,MAAM,CAAC;EAC/BX,SAAS,EAAE;IACTY,iBAAiB,EAAExB,aAAa,CAAC,MAAM,CAAC;IACxCyB,eAAe,EAAE,EAAE;IACnBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE5B,aAAa,CAAC,SAAS;EAC9B;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["KContainer","KImage","KLabel","KSpacingValue","StyleSheet","Images","trans","memo","useMemo","isEmpty","SearchConversationTabResultType","jsx","_jsx","jsxs","_jsxs","SearchEmpty","searchTerm","searchType","emptyHint","trim","Messages","Conversations","View","style","styles","container","children","Base","uri","SEARCH_EMPTY","width","height","resizeMode","Text","typo","textAlign","create","paddingHorizontal","paddingVertical","justifyContent","alignItems","gap"],"sourceRoot":"../../../../src","sources":["screens/SearchConversation/SearchEmpty.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,aAAa,QAAQ,eAAe;AACzE,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,MAAM,MAAM,8BAAqB;AACxC,SAASC,KAAK,QAAQ,4BAAmB;AACzC,SAASC,IAAI,EAAEC,OAAO,QAAQ,OAAO;AACrC,SAASC,OAAO,QAAQ,QAAQ;AAChC,SAASC,+BAA+B,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAO1D,OAAO,MAAMC,WAAW,gBAAGR,IAAI,CAC7B,CAAC;EAAES,UAAU;EAAEC;AAA6B,CAAC,KAAK;EAChD,MAAMC,SAAS,GAAGV,OAAO,CAAC,MAAM;IAC9B,IAAI,CAACC,OAAO,CAACO,UAAU,EAAEG,IAAI,CAAC,CAAC,CAAC,EAAE;MAChC,OAAO,0BAA0B;IACnC;IACA,QAAQF,UAAU;MAChB,KAAKP,+BAA+B,CAACU,QAAQ;QAC3C,OAAO,2BAA2B;MACpC,KAAKV,+BAA+B,CAACW,aAAa;QAChD,OAAO,gCAAgC;MACzC;QACE,OAAO,mBAAmB;IAC9B;EACF,CAAC,EAAE,CAACL,UAAU,EAAEC,UAAU,CAAC,CAAC;EAE5B,oBACEH,KAAA,CAACd,UAAU,CAACsB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,gBACvCd,IAAA,CAACX,MAAM,CAAC0B,IAAI;MACVC,GAAG,EAAEvB,MAAM,CAACwB,YAAa;MACzBC,KAAK,EAAE,GAAI;MACXC,MAAM,EAAE,GAAI;MACZC,UAAU,EAAC;IAAS,CACrB,CAAC,eACFpB,IAAA,CAACV,MAAM,CAAC+B,IAAI;MAACC,IAAI,EAAC,cAAc;MAACC,SAAS,EAAC,QAAQ;MAAAT,QAAA,EAChDpB,KAAK,CAACY,SAAS;IAAC,CACN,CAAC;EAAA,CACC,CAAC;AAEtB,CACF,CAAC;AAED,MAAMM,MAAM,GAAGpB,UAAU,CAACgC,MAAM,CAAC;EAC/BX,SAAS,EAAE;IACTY,iBAAiB,EAAElC,aAAa,CAAC,MAAM,CAAC;IACxCmC,eAAe,EAAE,EAAE;IACnBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAEtC,aAAa,CAAC,SAAS;EAC9B;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import { KContainer, KDivider, KSpacingValue } from '@droppii/libs';
3
+ import { KColors, KContainer, KDivider, KSpacingValue } from '@droppii/libs';
4
4
  import { memo, useCallback } from 'react';
5
5
  import { useSearchMessage } from "../../hooks/message/useSearchMessage.js";
6
6
  import { useChatContext } from "../../context/index.js";
7
- import { FlatList, StyleSheet } from 'react-native';
7
+ import { FlatList, StyleSheet, ActivityIndicator } from 'react-native';
8
8
  import SearchResultItem from "./SearchResultItem.js";
9
9
  import { SearchConversationTabResultType } from "./types.js";
10
10
  import { SearchEmpty } from "./SearchEmpty.js";
@@ -20,7 +20,10 @@ const SearchMessagesResult = /*#__PURE__*/memo(({
20
20
  dataFlatten,
21
21
  hasNextPage,
22
22
  fetchNextPage,
23
- isFetchingNextPage
23
+ isFetchingNextPage,
24
+ isFetching,
25
+ isRefetching,
26
+ refetch
24
27
  } = useSearchMessage({
25
28
  query: searchTerm,
26
29
  applicationType
@@ -31,9 +34,10 @@ const SearchMessagesResult = /*#__PURE__*/memo(({
31
34
  return /*#__PURE__*/_jsx(SearchResultItem, {
32
35
  item: item,
33
36
  tabResultType: SearchConversationTabResultType.Messages,
34
- onPressItem: onPressItem
37
+ onPressItem: onPressItem,
38
+ searchTerm: searchTerm
35
39
  });
36
- }, [onPressItem]);
40
+ }, [onPressItem, searchTerm]);
37
41
  const keyExtractor = useCallback(item => {
38
42
  return `${item?.conversation?.conversationID}-${item?.chatLog?.clientMsgID}`;
39
43
  }, []);
@@ -50,7 +54,14 @@ const SearchMessagesResult = /*#__PURE__*/memo(({
50
54
  }, []);
51
55
  return /*#__PURE__*/_jsx(KContainer.View, {
52
56
  flex: true,
53
- children: /*#__PURE__*/_jsx(FlatList, {
57
+ children: isFetching && !isFetchingNextPage && !isRefetching ? /*#__PURE__*/_jsx(KContainer.View, {
58
+ flex: true,
59
+ center: true,
60
+ children: /*#__PURE__*/_jsx(ActivityIndicator, {
61
+ color: KColors.primary.normal,
62
+ size: 'small'
63
+ })
64
+ }) : /*#__PURE__*/_jsx(FlatList, {
54
65
  data: dataFlatten,
55
66
  renderItem: renderItem,
56
67
  keyExtractor: keyExtractor,
@@ -58,7 +69,12 @@ const SearchMessagesResult = /*#__PURE__*/memo(({
58
69
  showsVerticalScrollIndicator: false,
59
70
  onEndReached: onEndReached,
60
71
  ItemSeparatorComponent: ItemSeparatorComponent,
61
- ListEmptyComponent: /*#__PURE__*/_jsx(SearchEmpty, {})
72
+ ListEmptyComponent: /*#__PURE__*/_jsx(SearchEmpty, {
73
+ searchTerm: searchTerm,
74
+ searchType: SearchConversationTabResultType.Messages
75
+ }),
76
+ refreshing: isFetching,
77
+ onRefresh: refetch
62
78
  })
63
79
  });
64
80
  });
@@ -1 +1 @@
1
- {"version":3,"names":["KContainer","KDivider","KSpacingValue","memo","useCallback","useSearchMessage","useChatContext","FlatList","StyleSheet","SearchResultItem","SearchConversationTabResultType","SearchEmpty","jsx","_jsx","SearchMessagesResult","searchTerm","onPressItem","applicationType","dataFlatten","hasNextPage","fetchNextPage","isFetchingNextPage","query","renderItem","item","tabResultType","Messages","keyExtractor","conversation","conversationID","chatLog","clientMsgID","onEndReached","ItemSeparatorComponent","size","vertical","View","flex","children","data","contentContainerStyle","styles","container","showsVerticalScrollIndicator","ListEmptyComponent","create","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["screens/SearchConversation/SearchMessagesResult.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,aAAa,QAAQ,eAAe;AACnE,SAASC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,gBAAgB,QAAQ,yCAAsC;AACvE,SAASC,cAAc,QAAQ,wBAAe;AAC9C,SAASC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAEnD,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,SAASC,+BAA+B,QAAQ,YAAS;AACzD,SAASC,WAAW,QAAQ,kBAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM5C,MAAMC,oBAAoB,gBAAGX,IAAI,CAC/B,CAAC;EAAEY,UAAU;EAAEC;AAAwC,CAAC,KAAK;EAC3D,MAAM;IAAEC;EAAgB,CAAC,GAAGX,cAAc,CAAC,CAAC;EAC5C,MAAM;IAAEY,WAAW;IAAEC,WAAW;IAAEC,aAAa;IAAEC;EAAmB,CAAC,GACnEhB,gBAAgB,CAAC;IACfiB,KAAK,EAAEP,UAAU;IACjBE;EACF,CAAC,CAAC;EAEJ,MAAMM,UAAU,GAAGnB,WAAW,CAC5B,CAAC;IAAEoB;EAAmC,CAAC,KAAK;IAC1C,oBACEX,IAAA,CAACJ,gBAAgB;MACfe,IAAI,EAAEA,IAAK;MACXC,aAAa,EAAEf,+BAA+B,CAACgB,QAAS;MACxDV,WAAW,EAAEA;IAAY,CAC1B,CAAC;EAEN,CAAC,EACD,CAACA,WAAW,CACd,CAAC;EAED,MAAMW,YAAY,GAAGvB,WAAW,CAAEoB,IAAwB,IAAK;IAC7D,OAAO,GAAGA,IAAI,EAAEI,YAAY,EAAEC,cAAc,IAAIL,IAAI,EAAEM,OAAO,EAAEC,WAAW,EAAE;EAC9E,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,YAAY,GAAG5B,WAAW,CAAC,MAAM;IACrC,IAAIe,WAAW,IAAI,CAACE,kBAAkB,EAAE;MACtCD,aAAa,CAAC,CAAC;IACjB;EACF,CAAC,EAAE,CAACD,WAAW,EAAEE,kBAAkB,EAAED,aAAa,CAAC,CAAC;EAEpD,MAAMa,sBAAsB,GAAG7B,WAAW,CAAC,MAAM;IAC/C,oBAAOS,IAAA,CAACZ,QAAQ;MAACiC,IAAI,EAAE,UAAW;MAACC,QAAQ,EAAE;IAAM,CAAE,CAAC;EACxD,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEtB,IAAA,CAACb,UAAU,CAACoC,IAAI;IAACC,IAAI;IAAAC,QAAA,eACnBzB,IAAA,CAACN,QAAQ;MACPgC,IAAI,EAAErB,WAAY;MAClBK,UAAU,EAAEA,UAAW;MACvBI,YAAY,EAAEA,YAAa;MAC3Ba,qBAAqB,EAAEC,MAAM,CAACC,SAAU;MACxCC,4BAA4B,EAAE,KAAM;MACpCX,YAAY,EAAEA,YAAa;MAC3BC,sBAAsB,EAAEA,sBAAuB;MAC/CW,kBAAkB,eAAE/B,IAAA,CAACF,WAAW,IAAE;IAAE,CACrC;EAAC,CACa,CAAC;AAEtB,CACF,CAAC;AAED,eAAeG,oBAAoB;AAEnC,MAAM2B,MAAM,GAAGjC,UAAU,CAACqC,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,iBAAiB,EAAE5C,aAAa,CAAC,SAAS;EAC5C;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["KColors","KContainer","KDivider","KSpacingValue","memo","useCallback","useSearchMessage","useChatContext","FlatList","StyleSheet","ActivityIndicator","SearchResultItem","SearchConversationTabResultType","SearchEmpty","jsx","_jsx","SearchMessagesResult","searchTerm","onPressItem","applicationType","dataFlatten","hasNextPage","fetchNextPage","isFetchingNextPage","isFetching","isRefetching","refetch","query","renderItem","item","tabResultType","Messages","keyExtractor","conversation","conversationID","chatLog","clientMsgID","onEndReached","ItemSeparatorComponent","size","vertical","View","flex","children","center","color","primary","normal","data","contentContainerStyle","styles","container","showsVerticalScrollIndicator","ListEmptyComponent","searchType","refreshing","onRefresh","create","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["screens/SearchConversation/SearchMessagesResult.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,28 +1,45 @@
1
1
  "use strict";
2
2
 
3
3
  import { KColors, KContainer, KImage, KLabel, KSpacingValue } from '@droppii/libs';
4
- import { memo, useCallback } from 'react';
4
+ import { memo, useCallback, useMemo } from 'react';
5
5
  import { StyleSheet } from 'react-native';
6
6
  import { SearchConversationTabResultType } from "./types.js";
7
7
  import { AvatarSection, NamePrefixIcon } from "../../components/ThreadCard/index.js";
8
- import { getLastMessageText } from "../../utils/messageUtils.js";
8
+ import { getMessagePreview, getSenderName } from "../../utils/messageUtils.js";
9
9
  import { useUserStore } from "../../store/index.js";
10
10
  import { formatTimestamp } from "../../utils/dateTimeUtils.js";
11
+ import { highlightSearch } from "../../utils/highlightSearch.js";
12
+ import isEmpty from 'lodash/isEmpty';
13
+ import { MessageType } from '@droppii/openim-rn-client-sdk';
14
+ import { UIUtils } from "../../utils/UIUtils.js";
15
+ import { trans } from "../../translation/index.js";
11
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
17
  const SearchResultItem = /*#__PURE__*/memo(props => {
13
18
  const {
14
19
  item,
15
20
  tabResultType,
16
- onPressItem
21
+ onPressItem,
22
+ searchTerm
17
23
  } = props || {};
18
24
  const currentUserId = useUserStore(s => s.user?.userID);
19
25
  const timestamp = formatTimestamp(item?.chatLog?.sendTime ?? null);
20
- const lastMessageText = getLastMessageText({
21
- message: item?.chatLog,
22
- currentUserId,
23
- conversation: item?.conversation
24
- });
26
+ const senderName = getSenderName(item?.chatLog, currentUserId, item?.conversation);
27
+ const lastMessageText = getMessagePreview(item?.chatLog);
28
+ const highlightResult = useMemo(() => {
29
+ if (isEmpty(searchTerm?.trim())) return null;
30
+ if (tabResultType === SearchConversationTabResultType.Conversations) {
31
+ return highlightSearch(item?.conversation?.showName || '', searchTerm || '');
32
+ }
33
+ return highlightSearch(lastMessageText, searchTerm || '');
34
+ }, [lastMessageText, searchTerm, tabResultType, item?.conversation?.showName]);
25
35
  const handlePressItem = useCallback(() => {
36
+ const isRevoked = item?.chatLog?.contentType === MessageType.RevokeMessage;
37
+ if (isRevoked) {
38
+ UIUtils.toast.open({
39
+ title: trans('search_message:revoked_message')
40
+ });
41
+ return;
42
+ }
26
43
  onPressItem?.({
27
44
  conversation: item?.conversation,
28
45
  chatLog: item?.chatLog
@@ -44,21 +61,45 @@ const SearchResultItem = /*#__PURE__*/memo(props => {
44
61
  style: styles.messageContainer,
45
62
  children: [/*#__PURE__*/_jsx(NamePrefixIcon, {
46
63
  peerType: item?.conversation?.peerType
47
- }), /*#__PURE__*/_jsx(KLabel.Text, {
64
+ }), !!highlightResult && tabResultType === SearchConversationTabResultType.Conversations ? /*#__PURE__*/_jsxs(KLabel.Text, {
65
+ typo: "TextMdMedium",
66
+ numberOfLines: 1,
67
+ flex: true,
68
+ children: [highlightResult?.before || '', /*#__PURE__*/_jsx(KLabel.Text, {
69
+ typo: "TextMdMedium",
70
+ color: KColors.primary.normal,
71
+ children: highlightResult?.match || ''
72
+ }), /*#__PURE__*/_jsx(KLabel.Text, {
73
+ typo: "TextMdMedium",
74
+ children: highlightResult?.after || ''
75
+ })]
76
+ }) : /*#__PURE__*/_jsx(KLabel.Text, {
48
77
  typo: "TextMdMedium",
49
78
  numberOfLines: 1,
50
79
  flex: true,
51
- children: item?.conversation?.showName
80
+ children: item?.conversation?.showName || ''
52
81
  }), /*#__PURE__*/_jsx(KLabel.Text, {
53
82
  typo: "TextXsNormal",
54
83
  color: KColors.gray.light,
55
84
  children: timestamp
56
85
  })]
57
- }), /*#__PURE__*/_jsx(KLabel.Text, {
86
+ }), !!highlightResult && tabResultType === SearchConversationTabResultType.Messages ? /*#__PURE__*/_jsxs(KLabel.Text, {
87
+ typo: "TextNmNormal",
88
+ numberOfLines: 1,
89
+ flex: true,
90
+ children: [`${senderName}: ${highlightResult?.before || ''}`, /*#__PURE__*/_jsx(KLabel.Text, {
91
+ typo: "TextNmNormal",
92
+ color: KColors.primary.normal,
93
+ children: highlightResult?.match || ''
94
+ }), /*#__PURE__*/_jsx(KLabel.Text, {
95
+ typo: "TextNmNormal",
96
+ children: highlightResult?.after || ''
97
+ })]
98
+ }) : /*#__PURE__*/_jsx(KLabel.Text, {
58
99
  typo: "TextNmNormal",
59
100
  numberOfLines: 1,
60
101
  flex: true,
61
- children: lastMessageText
102
+ children: `${senderName}: ${lastMessageText}`
62
103
  })]
63
104
  })]
64
105
  }), /*#__PURE__*/_jsx(KContainer.VisibleView, {
@@ -1 +1 @@
1
- {"version":3,"names":["KColors","KContainer","KImage","KLabel","KSpacingValue","memo","useCallback","StyleSheet","SearchConversationTabResultType","AvatarSection","NamePrefixIcon","getLastMessageText","useUserStore","formatTimestamp","jsx","_jsx","jsxs","_jsxs","SearchResultItem","props","item","tabResultType","onPressItem","currentUserId","s","user","userID","timestamp","chatLog","sendTime","lastMessageText","message","conversation","handlePressItem","Touchable","style","styles","container","onPress","children","View","leftContainer","avatar","faceURL","fullName","showName","peerType","size","contentContainer","messageContainer","Text","typo","numberOfLines","flex","color","gray","light","VisibleView","visible","Conversations","rightContainer","VectorIcons","name","normal","create","flexDirection","justifyContent","alignItems","gap","paddingVertical"],"sourceRoot":"../../../../src","sources":["screens/SearchConversation/SearchResultItem.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["KColors","KContainer","KImage","KLabel","KSpacingValue","memo","useCallback","useMemo","StyleSheet","SearchConversationTabResultType","AvatarSection","NamePrefixIcon","getMessagePreview","getSenderName","useUserStore","formatTimestamp","highlightSearch","isEmpty","MessageType","UIUtils","trans","jsx","_jsx","jsxs","_jsxs","SearchResultItem","props","item","tabResultType","onPressItem","searchTerm","currentUserId","s","user","userID","timestamp","chatLog","sendTime","senderName","conversation","lastMessageText","highlightResult","trim","Conversations","showName","handlePressItem","isRevoked","contentType","RevokeMessage","toast","open","title","Touchable","style","styles","container","onPress","children","View","leftContainer","avatar","faceURL","fullName","peerType","size","contentContainer","messageContainer","Text","typo","numberOfLines","flex","before","color","primary","normal","match","after","gray","light","Messages","VisibleView","visible","rightContainer","VectorIcons","name","create","flexDirection","justifyContent","alignItems","gap","paddingVertical"],"sourceRoot":"../../../../src","sources":["screens/SearchConversation/SearchResultItem.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import { KContainer, KDivider, KSpacingValue } from '@droppii/libs';
3
+ import { KColors, KContainer, KDivider, KSpacingValue } from '@droppii/libs';
4
4
  import { memo, useCallback } from 'react';
5
5
  import { useSearchMessage } from "../../hooks/message/useSearchMessage.js";
6
6
  import { useChatContext } from "../../context/index.js";
7
- import { FlatList, StyleSheet } from 'react-native';
7
+ import { ActivityIndicator, FlatList, StyleSheet } from 'react-native';
8
8
  import { SearchEmpty } from "../SearchConversation/SearchEmpty.js";
9
9
  import SearchResultItem from "./SearchResultItem.js";
10
+ import { SearchConversationTabResultType } from "../SearchConversation/types.js";
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
12
  const SearchMessagesResult = /*#__PURE__*/memo(({
12
13
  searchTerm,
@@ -20,7 +21,10 @@ const SearchMessagesResult = /*#__PURE__*/memo(({
20
21
  dataFlatten,
21
22
  hasNextPage,
22
23
  fetchNextPage,
23
- isFetchingNextPage
24
+ isFetchingNextPage,
25
+ isFetching,
26
+ isRefetching,
27
+ refetch
24
28
  } = useSearchMessage({
25
29
  query: searchTerm,
26
30
  applicationType,
@@ -31,9 +35,10 @@ const SearchMessagesResult = /*#__PURE__*/memo(({
31
35
  }) => {
32
36
  return /*#__PURE__*/_jsx(SearchResultItem, {
33
37
  item: item,
34
- onPressItem: onPressItem
38
+ onPressItem: onPressItem,
39
+ searchTerm: searchTerm
35
40
  });
36
- }, [onPressItem]);
41
+ }, [onPressItem, searchTerm]);
37
42
  const keyExtractor = useCallback(item => {
38
43
  return `${item?.conversation?.conversationID}-${item?.chatLog?.clientMsgID}`;
39
44
  }, []);
@@ -50,7 +55,14 @@ const SearchMessagesResult = /*#__PURE__*/memo(({
50
55
  }, []);
51
56
  return /*#__PURE__*/_jsx(KContainer.View, {
52
57
  flex: true,
53
- children: /*#__PURE__*/_jsx(FlatList, {
58
+ children: isFetching && !isFetchingNextPage && !isRefetching ? /*#__PURE__*/_jsx(KContainer.View, {
59
+ flex: true,
60
+ center: true,
61
+ children: /*#__PURE__*/_jsx(ActivityIndicator, {
62
+ color: KColors.primary.normal,
63
+ size: 'small'
64
+ })
65
+ }) : /*#__PURE__*/_jsx(FlatList, {
54
66
  data: dataFlatten,
55
67
  renderItem: renderItem,
56
68
  keyExtractor: keyExtractor,
@@ -58,7 +70,12 @@ const SearchMessagesResult = /*#__PURE__*/memo(({
58
70
  showsVerticalScrollIndicator: false,
59
71
  onEndReached: onEndReached,
60
72
  ItemSeparatorComponent: ItemSeparatorComponent,
61
- ListEmptyComponent: /*#__PURE__*/_jsx(SearchEmpty, {})
73
+ ListEmptyComponent: /*#__PURE__*/_jsx(SearchEmpty, {
74
+ searchTerm: searchTerm,
75
+ searchType: SearchConversationTabResultType.Messages
76
+ }),
77
+ refreshing: isFetching,
78
+ onRefresh: refetch
62
79
  })
63
80
  });
64
81
  });
@@ -1 +1 @@
1
- {"version":3,"names":["KContainer","KDivider","KSpacingValue","memo","useCallback","useSearchMessage","useChatContext","FlatList","StyleSheet","SearchEmpty","SearchResultItem","jsx","_jsx","SearchMessagesResult","searchTerm","onPressItem","conversationId","applicationType","dataFlatten","hasNextPage","fetchNextPage","isFetchingNextPage","query","renderItem","item","keyExtractor","conversation","conversationID","chatLog","clientMsgID","onEndReached","ItemSeparatorComponent","size","vertical","View","flex","children","data","contentContainerStyle","styles","container","showsVerticalScrollIndicator","ListEmptyComponent","create","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["screens/SearchMessage/SearchMessageResult.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,aAAa,QAAQ,eAAe;AACnE,SAASC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,gBAAgB,QAAQ,yCAAsC;AACvE,SAASC,cAAc,QAAQ,wBAAe;AAC9C,SAASC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAEnD,SAASC,WAAW,QAAQ,sCAAmC;AAC/D,OAAOC,gBAAgB,MAAM,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOlD,MAAMC,oBAAoB,gBAAGV,IAAI,CAC/B,CAAC;EAAEW,UAAU;EAAEC,WAAW;EAAEC;AAA2C,CAAC,KAAK;EAC3E,MAAM;IAAEC;EAAgB,CAAC,GAAGX,cAAc,CAAC,CAAC;EAC5C,MAAM;IAAEY,WAAW;IAAEC,WAAW;IAAEC,aAAa;IAAEC;EAAmB,CAAC,GACnEhB,gBAAgB,CAAC;IACfiB,KAAK,EAAER,UAAU;IACjBG,eAAe;IACfD;EACF,CAAC,CAAC;EAEJ,MAAMO,UAAU,GAAGnB,WAAW,CAC5B,CAAC;IAAEoB;EAAmC,CAAC,KAAK;IAC1C,oBAAOZ,IAAA,CAACF,gBAAgB;MAACc,IAAI,EAAEA,IAAK;MAACT,WAAW,EAAEA;IAAY,CAAE,CAAC;EACnE,CAAC,EACD,CAACA,WAAW,CACd,CAAC;EAED,MAAMU,YAAY,GAAGrB,WAAW,CAAEoB,IAAwB,IAAK;IAC7D,OAAO,GAAGA,IAAI,EAAEE,YAAY,EAAEC,cAAc,IAAIH,IAAI,EAAEI,OAAO,EAAEC,WAAW,EAAE;EAC9E,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,YAAY,GAAG1B,WAAW,CAAC,MAAM;IACrC,IAAIe,WAAW,IAAI,CAACE,kBAAkB,EAAE;MACtCD,aAAa,CAAC,CAAC;IACjB;EACF,CAAC,EAAE,CAACD,WAAW,EAAEE,kBAAkB,EAAED,aAAa,CAAC,CAAC;EAEpD,MAAMW,sBAAsB,GAAG3B,WAAW,CAAC,MAAM;IAC/C,oBAAOQ,IAAA,CAACX,QAAQ;MAAC+B,IAAI,EAAE,UAAW;MAACC,QAAQ,EAAE;IAAM,CAAE,CAAC;EACxD,CAAC,EAAE,EAAE,CAAC;EAEN,oBACErB,IAAA,CAACZ,UAAU,CAACkC,IAAI;IAACC,IAAI;IAAAC,QAAA,eACnBxB,IAAA,CAACL,QAAQ;MACP8B,IAAI,EAAEnB,WAAY;MAClBK,UAAU,EAAEA,UAAW;MACvBE,YAAY,EAAEA,YAAa;MAC3Ba,qBAAqB,EAAEC,MAAM,CAACC,SAAU;MACxCC,4BAA4B,EAAE,KAAM;MACpCX,YAAY,EAAEA,YAAa;MAC3BC,sBAAsB,EAAEA,sBAAuB;MAC/CW,kBAAkB,eAAE9B,IAAA,CAACH,WAAW,IAAE;IAAE,CACrC;EAAC,CACa,CAAC;AAEtB,CACF,CAAC;AAED,eAAeI,oBAAoB;AAEnC,MAAM0B,MAAM,GAAG/B,UAAU,CAACmC,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,iBAAiB,EAAE1C,aAAa,CAAC,SAAS;EAC5C;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["KColors","KContainer","KDivider","KSpacingValue","memo","useCallback","useSearchMessage","useChatContext","ActivityIndicator","FlatList","StyleSheet","SearchEmpty","SearchResultItem","SearchConversationTabResultType","jsx","_jsx","SearchMessagesResult","searchTerm","onPressItem","conversationId","applicationType","dataFlatten","hasNextPage","fetchNextPage","isFetchingNextPage","isFetching","isRefetching","refetch","query","renderItem","item","keyExtractor","conversation","conversationID","chatLog","clientMsgID","onEndReached","ItemSeparatorComponent","size","vertical","View","flex","children","center","color","primary","normal","data","contentContainerStyle","styles","container","showsVerticalScrollIndicator","ListEmptyComponent","searchType","Messages","refreshing","onRefresh","create","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["screens/SearchMessage/SearchMessageResult.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,12 +6,17 @@ import { StyleSheet } from 'react-native';
6
6
  import { AvatarSection, NamePrefixIcon } from "../../components/ThreadCard/index.js";
7
7
  import { getMessagePreview } from "../../utils/messageUtils.js";
8
8
  import { formatTimestamp } from "../../utils/dateTimeUtils.js";
9
- import { PeerType } from '@droppii/openim-rn-client-sdk';
9
+ import { MessageType, PeerType } from '@droppii/openim-rn-client-sdk';
10
+ import { highlightSearch } from "../../utils/highlightSearch.js";
11
+ import isEmpty from 'lodash/isEmpty';
12
+ import { UIUtils } from "../../utils/UIUtils.js";
13
+ import { trans } from "../../translation/index.js";
10
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
15
  const SearchResultItem = /*#__PURE__*/memo(props => {
12
16
  const {
13
17
  item,
14
- onPressItem
18
+ onPressItem,
19
+ searchTerm
15
20
  } = props || {};
16
21
  const isBotConversation = useMemo(() => {
17
22
  return item?.conversation?.peerType === PeerType.Bot;
@@ -20,7 +25,18 @@ const SearchResultItem = /*#__PURE__*/memo(props => {
20
25
  const lastMessageText = getMessagePreview(item?.chatLog);
21
26
  const faceURL = isBotConversation ? item?.conversation?.faceURL : item?.chatLog?.senderFaceUrl;
22
27
  const showName = isBotConversation ? item?.conversation?.showName : item?.chatLog?.senderNickname;
28
+ const highlightResult = useMemo(() => {
29
+ if (isEmpty(searchTerm?.trim())) return null;
30
+ return highlightSearch(lastMessageText, searchTerm || '');
31
+ }, [lastMessageText, searchTerm]);
23
32
  const handlePressItem = useCallback(() => {
33
+ const isRevoked = item?.chatLog?.contentType === MessageType.RevokeMessage;
34
+ if (isRevoked) {
35
+ UIUtils.toast.open({
36
+ title: trans('search_message:revoked_message')
37
+ });
38
+ return;
39
+ }
24
40
  onPressItem?.({
25
41
  conversation: item?.conversation,
26
42
  chatLog: item?.chatLog
@@ -52,7 +68,19 @@ const SearchResultItem = /*#__PURE__*/memo(props => {
52
68
  color: KColors.gray.light,
53
69
  children: timestamp
54
70
  })]
55
- }), /*#__PURE__*/_jsx(KLabel.Text, {
71
+ }), highlightResult ? /*#__PURE__*/_jsxs(KLabel.Text, {
72
+ typo: "TextNmNormal",
73
+ numberOfLines: 1,
74
+ flex: true,
75
+ children: [highlightResult?.before || '', /*#__PURE__*/_jsx(KLabel.Text, {
76
+ typo: "TextNmNormal",
77
+ color: KColors.primary.normal,
78
+ children: highlightResult?.match || ''
79
+ }), /*#__PURE__*/_jsx(KLabel.Text, {
80
+ typo: "TextNmNormal",
81
+ children: highlightResult?.after || ''
82
+ })]
83
+ }) : /*#__PURE__*/_jsx(KLabel.Text, {
56
84
  typo: "TextNmNormal",
57
85
  numberOfLines: 1,
58
86
  flex: true,
@@ -1 +1 @@
1
- {"version":3,"names":["KColors","KContainer","KLabel","KSpacingValue","memo","useCallback","useMemo","StyleSheet","AvatarSection","NamePrefixIcon","getMessagePreview","formatTimestamp","PeerType","jsx","_jsx","jsxs","_jsxs","SearchResultItem","props","item","onPressItem","isBotConversation","conversation","peerType","Bot","timestamp","chatLog","sendTime","lastMessageText","faceURL","senderFaceUrl","showName","senderNickname","handlePressItem","Touchable","style","styles","container","onPress","children","View","leftContainer","avatar","fullName","size","contentContainer","messageContainer","Text","typo","numberOfLines","flex","color","gray","light","create","flexDirection","justifyContent","alignItems","gap","paddingVertical","rightContainer"],"sourceRoot":"../../../../src","sources":["screens/SearchMessage/SearchResultItem.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["KColors","KContainer","KLabel","KSpacingValue","memo","useCallback","useMemo","StyleSheet","AvatarSection","NamePrefixIcon","getMessagePreview","formatTimestamp","MessageType","PeerType","highlightSearch","isEmpty","UIUtils","trans","jsx","_jsx","jsxs","_jsxs","SearchResultItem","props","item","onPressItem","searchTerm","isBotConversation","conversation","peerType","Bot","timestamp","chatLog","sendTime","lastMessageText","faceURL","senderFaceUrl","showName","senderNickname","highlightResult","trim","handlePressItem","isRevoked","contentType","RevokeMessage","toast","open","title","Touchable","style","styles","container","onPress","children","View","leftContainer","avatar","fullName","size","contentContainer","messageContainer","Text","typo","numberOfLines","flex","color","gray","light","before","primary","normal","match","after","create","flexDirection","justifyContent","alignItems","gap","paddingVertical","rightContainer"],"sourceRoot":"../../../../src","sources":["screens/SearchMessage/SearchResultItem.tsx"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,7 @@ import { LegendChatMessage } from "./legend/LegendChatMessage.js";
11
11
  import { LegendChatDay } from "./legend/LegendChatDay.js";
12
12
  import { LegendChatLoadEarlier } from "./legend/LegendChatLoadEarlier.js";
13
13
  import { useChatDetailContext } from "../../context/ChatDetailContext.js";
14
- import { getFlowInputButtonsNode } from "../../utils/flows.js";
14
+ import { getFlowInputButtonsNodes } from "../../utils/flows.js";
15
15
  import { InputButtonFlow } from "../../components/flows/inputButtons/index.js";
16
16
  import { useResetFlow, useRunFlow } from "../../hooks/flows/useFlow.js";
17
17
  import { useSendMessage } from "../../hooks/message/useSendMessage.js";
@@ -29,7 +29,7 @@ import ChatImageDimens, { CHAT_IMAGE_VIEW_SOURCE } from "../../utils/chatImageDi
29
29
  // Row wrapper (`messageRowLeft`/`messageRowRight` in `components/messages/styles.ts`)
30
30
  // adds only a bottom margin — no vertical padding — so a fixed-size item's true
31
31
  // rendered height is `content height + this margin`.
32
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
32
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
33
33
  const ROW_MARGIN_BOTTOM = KSpacingValue['0.25rem'];
34
34
 
35
35
  // KeyboardAwareLegendList auto scroll when modal opened
@@ -79,6 +79,8 @@ export const ChatListLegend = /*#__PURE__*/memo(({
79
79
  const scrollDebounceRef = useRef(undefined);
80
80
  const rowRefsMap = useRef(new Map());
81
81
  const [showBadge, setShowBadge] = useState(false);
82
+ const [highlightedId, setHighlightedId] = useState(null);
83
+ const highlightTimerRef = useRef(null);
82
84
  const {
83
85
  applicationType
84
86
  } = useChatContext();
@@ -109,7 +111,8 @@ export const ChatListLegend = /*#__PURE__*/memo(({
109
111
  if (!item) return null;
110
112
  const message = item;
111
113
  const isOutgoing = message.sendID === currentUserId;
112
- const isLastIncoming = !isOutgoing && (message.clientMsgID || message.serverMsgID) === lastMessageId;
114
+ const isLastMessage = (message.clientMsgID || message.serverMsgID) === lastMessageId;
115
+ const isLastIncoming = !isOutgoing && isLastMessage;
113
116
  const messageId = message.clientMsgID || message.serverMsgID || `temp-${message.sendTime || message.createTime}-${index}`;
114
117
  const messageData = messageDataMap.get(messageId);
115
118
  if (!messageData) {
@@ -119,20 +122,20 @@ export const ChatListLegend = /*#__PURE__*/memo(({
119
122
  dayStart,
120
123
  createdAt
121
124
  } = messageData;
122
- let flowInputButtonsNode = null;
123
- if (isLastIncoming && isBotConversation) {
124
- flowInputButtonsNode = getFlowInputButtonsNode(conversationFlow?.flowCurrentStep);
125
+ let flowInputButtonsNodes = [];
126
+ if ((isLastMessage && conversationFlow?.havingBotMessage === false || isLastIncoming) && isBotConversation) {
127
+ flowInputButtonsNodes = getFlowInputButtonsNodes(conversationFlow?.flowCurrentStep);
125
128
  }
126
129
  return /*#__PURE__*/_jsxs(_Fragment, {
127
130
  children: [dayStart && /*#__PURE__*/_jsx(LegendChatDay, {
128
131
  createdAt: createdAt
129
- }), /*#__PURE__*/_jsxs(KContainer.View, {
132
+ }), /*#__PURE__*/_jsx(KContainer.View, {
130
133
  ref: node => {
131
134
  if (node) rowRefsMap.current.set(messageId, node);else rowRefsMap.current.delete(messageId);
132
135
  },
133
136
  style: isOutgoing ? messageStyles.messageRowRight : messageStyles.messageRowLeft,
134
137
  collapsable: false,
135
- children: [/*#__PURE__*/_jsx(LegendChatMessage, {
138
+ children: /*#__PURE__*/_jsx(LegendChatMessage, {
136
139
  message: message,
137
140
  isOutgoing: isOutgoing,
138
141
  createdAtTime: createdAt,
@@ -140,12 +143,13 @@ export const ChatListLegend = /*#__PURE__*/memo(({
140
143
  onPressUrl: onPressUrl,
141
144
  onRetry: retryMessage,
142
145
  onLongPress: onLongPress ? () => handleMessageLongPress(messageId, message) : undefined,
143
- customMessageItemFactory: customMessageItemFactory
144
- }), !!flowInputButtonsNode && /*#__PURE__*/_jsx(InputButtonFlow, {
145
- nodeData: flowInputButtonsNode,
146
- onResetFlow: onResetFlow,
147
- onRunFlow: onRunFlow
148
- })]
146
+ customMessageItemFactory: customMessageItemFactory,
147
+ isHighlighted: highlightedId === messageId
148
+ })
149
+ }), flowInputButtonsNodes && flowInputButtonsNodes.length > 0 && /*#__PURE__*/_jsx(InputButtonFlow, {
150
+ nodeData: flowInputButtonsNodes,
151
+ onResetFlow: onResetFlow,
152
+ onRunFlow: onRunFlow
149
153
  })]
150
154
  });
151
155
  } catch (error) {
@@ -158,7 +162,7 @@ export const ChatListLegend = /*#__PURE__*/memo(({
158
162
  })
159
163
  });
160
164
  }
161
- }, [currentUserId, lastMessageId, messageDataMap, isBotConversation, onMediaPress, onPressUrl, onLongPress, handleMessageLongPress, customMessageItemFactory, onResetFlow, onRunFlow, conversationFlow?.flowCurrentStep, retryMessage]);
165
+ }, [currentUserId, lastMessageId, messageDataMap, isBotConversation, onMediaPress, onPressUrl, onLongPress, handleMessageLongPress, customMessageItemFactory, onResetFlow, onRunFlow, conversationFlow?.flowCurrentStep, conversationFlow?.havingBotMessage, retryMessage, highlightedId]);
162
166
 
163
167
  // const maintainScrollConfig = useMemo(
164
168
  // () => ({
@@ -235,7 +239,8 @@ export const ChatListLegend = /*#__PURE__*/memo(({
235
239
  if (customMessageItemFactory?.(message)) return undefined;
236
240
  const isOutgoing = message.sendID === currentUserId;
237
241
  const isLastIncoming = !isOutgoing && messageId === lastMessageId;
238
- if (isLastIncoming && isBotConversation && getFlowInputButtonsNode(conversationFlow?.flowCurrentStep)) {
242
+ const flowInputButtonsNodes = getFlowInputButtonsNodes(conversationFlow?.flowCurrentStep);
243
+ if (isLastIncoming && isBotConversation && flowInputButtonsNodes.length > 0) {
239
244
  return undefined;
240
245
  }
241
246
  return candidateSize;
@@ -321,6 +326,10 @@ export const ChatListLegend = /*#__PURE__*/memo(({
321
326
  index,
322
327
  animated: true,
323
328
  viewPosition: 0.5
329
+ }).finally(() => {
330
+ if (highlightTimerRef.current) clearTimeout(highlightTimerRef.current);
331
+ setHighlightedId(clientMessageId);
332
+ highlightTimerRef.current = setTimeout(() => setHighlightedId(null), 5000);
324
333
  });
325
334
  } catch {
326
335
  // scrollToIndex throws if item not rendered yet — force refetch messages
@@ -368,7 +377,7 @@ export const ChatListLegend = /*#__PURE__*/memo(({
368
377
  getFixedItemSize: getFixedItemSize,
369
378
  keyExtractor: item => String(item.clientMsgID || item.serverMsgID),
370
379
  recycleItems: false,
371
- extraData: `${conversationFlow?.flowCurrentStep?.id ?? ''}-${lastMessageId ?? ''}`,
380
+ extraData: `${conversationFlow?.flowCurrentStep?.id ?? ''}-${lastMessageId ?? ''}-${highlightedId ?? ''}`,
372
381
  alignItemsAtEnd: true,
373
382
  maintainVisibleContentPosition: maintainVisiblePositionConfig,
374
383
  maintainScrollAtEnd: true,