@droppii-org/chat-mobile 0.2.49 → 0.2.51

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 (159) hide show
  1. package/lib/module/components/StickerPicker/StickerCategoryTabs.js +86 -0
  2. package/lib/module/components/StickerPicker/StickerCategoryTabs.js.map +1 -0
  3. package/lib/module/components/StickerPicker/StickerPickerPlaceholder.js +18 -0
  4. package/lib/module/components/StickerPicker/StickerPickerPlaceholder.js.map +1 -0
  5. package/lib/module/components/StickerPicker/StickerPickerRowItem.js +35 -0
  6. package/lib/module/components/StickerPicker/StickerPickerRowItem.js.map +1 -0
  7. package/lib/module/components/StickerPicker/StickerSectionList.js +110 -0
  8. package/lib/module/components/StickerPicker/StickerSectionList.js.map +1 -0
  9. package/lib/module/components/StickerPicker/constants.js +14 -0
  10. package/lib/module/components/StickerPicker/constants.js.map +1 -0
  11. package/lib/module/components/StickerPicker/index.js +134 -0
  12. package/lib/module/components/StickerPicker/index.js.map +1 -0
  13. package/lib/module/components/ThreadCard/MuteThread.js +4 -28
  14. package/lib/module/components/ThreadCard/MuteThread.js.map +1 -1
  15. package/lib/module/components/ThreadCard/PinThread.js +45 -0
  16. package/lib/module/components/ThreadCard/PinThread.js.map +1 -0
  17. package/lib/module/components/ThreadCard/ThreadCard.js +14 -9
  18. package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -1
  19. package/lib/module/components/messages/stickerMessage/index.js +28 -0
  20. package/lib/module/components/messages/stickerMessage/index.js.map +1 -0
  21. package/lib/module/config/api-endpoints.js +4 -1
  22. package/lib/module/config/api-endpoints.js.map +1 -1
  23. package/lib/module/hooks/conversation/useGetConversationDetail.js +15 -0
  24. package/lib/module/hooks/conversation/useGetConversationDetail.js.map +1 -1
  25. package/lib/module/hooks/flows/useGetConversationFlowMainMenu.js +1 -1
  26. package/lib/module/hooks/flows/useGetConversationFlowMainMenu.js.map +1 -1
  27. package/lib/module/hooks/message/useSendMessage.js +45 -18
  28. package/lib/module/hooks/message/useSendMessage.js.map +1 -1
  29. package/lib/module/hooks/query-keys.js +7 -0
  30. package/lib/module/hooks/query-keys.js.map +1 -1
  31. package/lib/module/hooks/stickers/useFetchStickerByCategory.js +12 -0
  32. package/lib/module/hooks/stickers/useFetchStickerByCategory.js.map +1 -0
  33. package/lib/module/hooks/stickers/useStickerCategories.js +14 -0
  34. package/lib/module/hooks/stickers/useStickerCategories.js.map +1 -0
  35. package/lib/module/hooks/stickers/useStickerHistory.js +16 -0
  36. package/lib/module/hooks/stickers/useStickerHistory.js.map +1 -0
  37. package/lib/module/hooks/useChatCompose.js +1 -18
  38. package/lib/module/hooks/useChatCompose.js.map +1 -1
  39. package/lib/module/hooks/useMuteConversation.js +34 -15
  40. package/lib/module/hooks/useMuteConversation.js.map +1 -1
  41. package/lib/module/hooks/usePinConversation.js +72 -0
  42. package/lib/module/hooks/usePinConversation.js.map +1 -0
  43. package/lib/module/screens/chat-detail/ChatComposer.js +64 -16
  44. package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
  45. package/lib/module/screens/chat-detail/ChatDetail.js +6 -20
  46. package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
  47. package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js +15 -4
  48. package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js.map +1 -1
  49. package/lib/module/screens/chat-detail/hooks/useChatComposerState.js +3 -0
  50. package/lib/module/screens/chat-detail/hooks/useChatComposerState.js.map +1 -1
  51. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +5 -6
  52. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
  53. package/lib/module/services/attachmentOrchestrator.js +1 -1
  54. package/lib/module/services/attachmentOrchestrator.js.map +1 -1
  55. package/lib/module/services/endpoints.js +4 -1
  56. package/lib/module/services/endpoints.js.map +1 -1
  57. package/lib/module/store/conversation.js +1 -20
  58. package/lib/module/store/conversation.js.map +1 -1
  59. package/lib/module/translation/resources/i18n.js +10 -1
  60. package/lib/module/translation/resources/i18n.js.map +1 -1
  61. package/lib/module/types/chat.js +6 -0
  62. package/lib/module/types/chat.js.map +1 -1
  63. package/lib/module/types/sticker.js +2 -0
  64. package/lib/module/types/sticker.js.map +1 -0
  65. package/lib/module/utils/conversation.js +1 -24
  66. package/lib/module/utils/conversation.js.map +1 -1
  67. package/lib/module/utils/messageUtils.js +2 -0
  68. package/lib/module/utils/messageUtils.js.map +1 -1
  69. package/lib/typescript/src/components/StickerPicker/StickerCategoryTabs.d.ts +9 -0
  70. package/lib/typescript/src/components/StickerPicker/StickerCategoryTabs.d.ts.map +1 -0
  71. package/lib/typescript/src/components/StickerPicker/StickerPickerPlaceholder.d.ts +2 -0
  72. package/lib/typescript/src/components/StickerPicker/StickerPickerPlaceholder.d.ts.map +1 -0
  73. package/lib/typescript/src/components/StickerPicker/StickerPickerRowItem.d.ts +8 -0
  74. package/lib/typescript/src/components/StickerPicker/StickerPickerRowItem.d.ts.map +1 -0
  75. package/lib/typescript/src/components/StickerPicker/StickerSectionList.d.ts +15 -0
  76. package/lib/typescript/src/components/StickerPicker/StickerSectionList.d.ts.map +1 -0
  77. package/lib/typescript/src/components/StickerPicker/constants.d.ts +11 -0
  78. package/lib/typescript/src/components/StickerPicker/constants.d.ts.map +1 -0
  79. package/lib/typescript/src/components/StickerPicker/index.d.ts +7 -0
  80. package/lib/typescript/src/components/StickerPicker/index.d.ts.map +1 -0
  81. package/lib/typescript/src/components/ThreadCard/MuteThread.d.ts.map +1 -1
  82. package/lib/typescript/src/components/ThreadCard/PinThread.d.ts +10 -0
  83. package/lib/typescript/src/components/ThreadCard/PinThread.d.ts.map +1 -0
  84. package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -1
  85. package/lib/typescript/src/components/messages/stickerMessage/index.d.ts +3 -0
  86. package/lib/typescript/src/components/messages/stickerMessage/index.d.ts.map +1 -0
  87. package/lib/typescript/src/config/api-endpoints.d.ts +3 -0
  88. package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -1
  89. package/lib/typescript/src/hooks/conversation/useGetConversationDetail.d.ts +2 -1
  90. package/lib/typescript/src/hooks/conversation/useGetConversationDetail.d.ts.map +1 -1
  91. package/lib/typescript/src/hooks/message/useSendMessage.d.ts +5 -3
  92. package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
  93. package/lib/typescript/src/hooks/query-keys.d.ts +7 -0
  94. package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -1
  95. package/lib/typescript/src/hooks/stickers/useFetchStickerByCategory.d.ts +3 -0
  96. package/lib/typescript/src/hooks/stickers/useFetchStickerByCategory.d.ts.map +1 -0
  97. package/lib/typescript/src/hooks/stickers/useStickerCategories.d.ts +3 -0
  98. package/lib/typescript/src/hooks/stickers/useStickerCategories.d.ts.map +1 -0
  99. package/lib/typescript/src/hooks/stickers/useStickerHistory.d.ts +3 -0
  100. package/lib/typescript/src/hooks/stickers/useStickerHistory.d.ts.map +1 -0
  101. package/lib/typescript/src/hooks/useChatCompose.d.ts.map +1 -1
  102. package/lib/typescript/src/hooks/useMuteConversation.d.ts.map +1 -1
  103. package/lib/typescript/src/hooks/usePinConversation.d.ts +6 -0
  104. package/lib/typescript/src/hooks/usePinConversation.d.ts.map +1 -0
  105. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +2 -2
  106. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
  107. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
  108. package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts +2 -1
  109. package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts.map +1 -1
  110. package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts +3 -0
  111. package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts.map +1 -1
  112. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
  113. package/lib/typescript/src/services/endpoints.d.ts +4 -1
  114. package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
  115. package/lib/typescript/src/store/conversation.d.ts +0 -3
  116. package/lib/typescript/src/store/conversation.d.ts.map +1 -1
  117. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  118. package/lib/typescript/src/types/chat.d.ts +12 -19
  119. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  120. package/lib/typescript/src/types/sticker.d.ts +21 -0
  121. package/lib/typescript/src/types/sticker.d.ts.map +1 -0
  122. package/lib/typescript/src/utils/conversation.d.ts +1 -2
  123. package/lib/typescript/src/utils/conversation.d.ts.map +1 -1
  124. package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
  125. package/package.json +2 -2
  126. package/src/components/StickerPicker/StickerCategoryTabs.tsx +103 -0
  127. package/src/components/StickerPicker/StickerPickerPlaceholder.tsx +16 -0
  128. package/src/components/StickerPicker/StickerPickerRowItem.tsx +43 -0
  129. package/src/components/StickerPicker/StickerSectionList.tsx +141 -0
  130. package/src/components/StickerPicker/constants.ts +20 -0
  131. package/src/components/StickerPicker/index.tsx +166 -0
  132. package/src/components/ThreadCard/MuteThread.tsx +4 -28
  133. package/src/components/ThreadCard/PinThread.tsx +58 -0
  134. package/src/components/ThreadCard/ThreadCard.tsx +11 -5
  135. package/src/components/messages/stickerMessage/index.tsx +26 -0
  136. package/src/config/api-endpoints.ts +6 -0
  137. package/src/hooks/conversation/useGetConversationDetail.ts +20 -1
  138. package/src/hooks/flows/useGetConversationFlowMainMenu.ts +1 -1
  139. package/src/hooks/message/useSendMessage.ts +49 -27
  140. package/src/hooks/query-keys.ts +10 -0
  141. package/src/hooks/stickers/useFetchStickerByCategory.ts +15 -0
  142. package/src/hooks/stickers/useStickerCategories.ts +17 -0
  143. package/src/hooks/stickers/useStickerHistory.ts +19 -0
  144. package/src/hooks/useChatCompose.ts +0 -19
  145. package/src/hooks/useMuteConversation.ts +32 -17
  146. package/src/hooks/usePinConversation.ts +87 -0
  147. package/src/screens/chat-detail/ChatComposer.tsx +106 -19
  148. package/src/screens/chat-detail/ChatDetail.tsx +5 -19
  149. package/src/screens/chat-detail/hooks/useChatComposerAnimation.ts +21 -5
  150. package/src/screens/chat-detail/hooks/useChatComposerState.ts +7 -0
  151. package/src/screens/chat-detail/legend/LegendChatMessage.tsx +4 -5
  152. package/src/services/attachmentOrchestrator.ts +1 -1
  153. package/src/services/endpoints.ts +6 -1
  154. package/src/store/conversation.ts +0 -24
  155. package/src/translation/resources/i18n.ts +11 -0
  156. package/src/types/chat.ts +13 -21
  157. package/src/types/sticker.ts +23 -0
  158. package/src/utils/conversation.ts +0 -28
  159. package/src/utils/messageUtils.ts +3 -0
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ import { memo, useEffect, useRef } from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import { KContainer, KImage, KColors, KSpacingValue, KRadiusValue } from '@droppii/libs';
6
+ import { CATEGORY_TAB_HEIGHT, RECENT_CATEGORY_ID } from "./constants.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const StickerCategoryTabs = /*#__PURE__*/memo(({
9
+ categories,
10
+ activeCategory,
11
+ onSelectCategory
12
+ }) => {
13
+ const listRef = useRef(null);
14
+ const pressedFromHereRef = useRef(false);
15
+ useEffect(() => {
16
+ if (pressedFromHereRef.current) {
17
+ pressedFromHereRef.current = false;
18
+ return;
19
+ }
20
+ const index = categories.findIndex(c => c.id === activeCategory);
21
+ if (index >= 0 && listRef.current) {
22
+ try {
23
+ listRef.current.scrollToIndex({
24
+ index,
25
+ animated: true,
26
+ viewPosition: 0.5
27
+ });
28
+ } catch {}
29
+ }
30
+ }, [activeCategory, categories]);
31
+ return /*#__PURE__*/_jsx(KContainer.FlatList, {
32
+ ref: listRef,
33
+ data: categories,
34
+ horizontal: true,
35
+ showsHorizontalScrollIndicator: false,
36
+ keyExtractor: item => item.id,
37
+ renderItem: ({
38
+ item
39
+ }) => {
40
+ const isActive = item.id === activeCategory;
41
+ return /*#__PURE__*/_jsx(KContainer.Touchable, {
42
+ onPress: () => {
43
+ pressedFromHereRef.current = true;
44
+ onSelectCategory(item.id);
45
+ },
46
+ center: true,
47
+ style: [styles.tab, isActive && styles.tabActive],
48
+ children: item?.id === RECENT_CATEGORY_ID ? /*#__PURE__*/_jsx(KImage.VectorIcons, {
49
+ name: "time-circle-b",
50
+ size: 28
51
+ }) : item?.icon && /*#__PURE__*/_jsx(KImage.Base, {
52
+ uri: item?.icon?.fullUrl,
53
+ width: 28,
54
+ height: 28
55
+ })
56
+ });
57
+ },
58
+ style: styles.list,
59
+ contentContainerStyle: styles.content
60
+ });
61
+ });
62
+ const styles = StyleSheet.create({
63
+ list: {
64
+ height: CATEGORY_TAB_HEIGHT
65
+ },
66
+ content: {
67
+ alignItems: 'center',
68
+ paddingHorizontal: KSpacingValue['0.75rem'],
69
+ gap: KSpacingValue['0.75rem']
70
+ },
71
+ tab: {
72
+ justifyContent: 'center',
73
+ alignItems: 'center',
74
+ padding: KSpacingValue['0.25rem']
75
+ },
76
+ tabActive: {
77
+ borderRadius: KRadiusValue['2x'],
78
+ backgroundColor: KColors.opacity.grayDark[10],
79
+ borderWidth: 1,
80
+ borderColor: KColors.palette.gray.w700
81
+ },
82
+ recentIcon: {
83
+ fontSize: 22
84
+ }
85
+ });
86
+ //# sourceMappingURL=StickerCategoryTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useEffect","useRef","StyleSheet","KContainer","KImage","KColors","KSpacingValue","KRadiusValue","CATEGORY_TAB_HEIGHT","RECENT_CATEGORY_ID","jsx","_jsx","StickerCategoryTabs","categories","activeCategory","onSelectCategory","listRef","pressedFromHereRef","current","index","findIndex","c","id","scrollToIndex","animated","viewPosition","FlatList","ref","data","horizontal","showsHorizontalScrollIndicator","keyExtractor","item","renderItem","isActive","Touchable","onPress","center","style","styles","tab","tabActive","children","VectorIcons","name","size","icon","Base","uri","fullUrl","width","height","list","contentContainerStyle","content","create","alignItems","paddingHorizontal","gap","justifyContent","padding","borderRadius","backgroundColor","opacity","grayDark","borderWidth","borderColor","palette","gray","w700","recentIcon","fontSize"],"sourceRoot":"../../../../src","sources":["components/StickerPicker/StickerCategoryTabs.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet } from 'react-native';
4
+ import { KColors, KContainer, KRadiusValue } from '@droppii/libs';
5
+ import { STICKER_SIZE } from "./constants.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const StickerPickerPlaceholder = () => /*#__PURE__*/_jsx(KContainer.View, {
8
+ style: styles.placeholder
9
+ });
10
+ const styles = StyleSheet.create({
11
+ placeholder: {
12
+ width: STICKER_SIZE,
13
+ height: STICKER_SIZE,
14
+ borderRadius: KRadiusValue['2x'],
15
+ backgroundColor: KColors.border.light
16
+ }
17
+ });
18
+ //# sourceMappingURL=StickerPickerPlaceholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","KColors","KContainer","KRadiusValue","STICKER_SIZE","jsx","_jsx","StickerPickerPlaceholder","View","style","styles","placeholder","create","width","height","borderRadius","backgroundColor","border","light"],"sourceRoot":"../../../../src","sources":["components/StickerPicker/StickerPickerPlaceholder.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,OAAO,EAAEC,UAAU,EAAEC,YAAY,QAAQ,eAAe;AACjE,SAASC,YAAY,QAAQ,gBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,OAAO,MAAMC,wBAAwB,GAAGA,CAAA,kBACtCD,IAAA,CAACJ,UAAU,CAACM,IAAI;EAACC,KAAK,EAAEC,MAAM,CAACC;AAAY,CAAE,CAC9C;AAED,MAAMD,MAAM,GAAGV,UAAU,CAACY,MAAM,CAAC;EAC/BD,WAAW,EAAE;IACXE,KAAK,EAAET,YAAY;IACnBU,MAAM,EAAEV,YAAY;IACpBW,YAAY,EAAEZ,YAAY,CAAC,IAAI,CAAC;IAChCa,eAAe,EAAEf,OAAO,CAACgB,MAAM,CAACC;EAClC;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet } from 'react-native';
4
+ import { KContainer, KImage } from '@droppii/libs';
5
+ import { STICKER_SIZE, STICKER_GAP } from "./constants.js";
6
+ import { StickerPickerPlaceholder } from "./StickerPickerPlaceholder.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const StickerPickerRowItem = ({
9
+ row,
10
+ onSelectSticker
11
+ }) => /*#__PURE__*/_jsx(KContainer.View, {
12
+ row: true,
13
+ style: styles.row,
14
+ children: row.map((sticker, i) => /*#__PURE__*/_jsx(KContainer.View, {
15
+ style: i < row.length - 1 ? styles.cell : undefined,
16
+ children: sticker ? /*#__PURE__*/_jsx(KContainer.Touchable, {
17
+ onPress: () => onSelectSticker(sticker),
18
+ children: /*#__PURE__*/_jsx(KImage.Base, {
19
+ uri: sticker.file.fullUrl,
20
+ width: STICKER_SIZE,
21
+ height: STICKER_SIZE
22
+ })
23
+ }) : /*#__PURE__*/_jsx(StickerPickerPlaceholder, {})
24
+ }, i))
25
+ });
26
+ const styles = StyleSheet.create({
27
+ row: {
28
+ marginBottom: STICKER_GAP,
29
+ paddingHorizontal: 12
30
+ },
31
+ cell: {
32
+ marginRight: STICKER_GAP
33
+ }
34
+ });
35
+ //# sourceMappingURL=StickerPickerRowItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","KContainer","KImage","STICKER_SIZE","STICKER_GAP","StickerPickerPlaceholder","jsx","_jsx","StickerPickerRowItem","row","onSelectSticker","View","style","styles","children","map","sticker","i","length","cell","undefined","Touchable","onPress","Base","uri","file","fullUrl","width","height","create","marginBottom","paddingHorizontal","marginRight"],"sourceRoot":"../../../../src","sources":["components/StickerPicker/StickerPickerRowItem.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,YAAY,EAAEC,WAAW,QAAQ,gBAAa;AAEvD,SAASC,wBAAwB,QAAQ,+BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOtE,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EAAEC,GAAG;EAAEC;AAAuB,CAAC,kBAClEH,IAAA,CAACN,UAAU,CAACU,IAAI;EAACF,GAAG;EAACG,KAAK,EAAEC,MAAM,CAACJ,GAAI;EAAAK,QAAA,EACpCL,GAAG,CAACM,GAAG,CAAC,CAACC,OAAO,EAAEC,CAAC,kBAClBV,IAAA,CAACN,UAAU,CAACU,IAAI;IAEdC,KAAK,EAAEK,CAAC,GAAGR,GAAG,CAACS,MAAM,GAAG,CAAC,GAAGL,MAAM,CAACM,IAAI,GAAGC,SAAU;IAAAN,QAAA,EAEnDE,OAAO,gBACNT,IAAA,CAACN,UAAU,CAACoB,SAAS;MAACC,OAAO,EAAEA,CAAA,KAAMZ,eAAe,CAACM,OAAO,CAAE;MAAAF,QAAA,eAC5DP,IAAA,CAACL,MAAM,CAACqB,IAAI;QACVC,GAAG,EAAER,OAAO,CAACS,IAAI,CAACC,OAAQ;QAC1BC,KAAK,EAAExB,YAAa;QACpByB,MAAM,EAAEzB;MAAa,CACtB;IAAC,CACkB,CAAC,gBAEvBI,IAAA,CAACF,wBAAwB,IAAE;EAC5B,GAbIY,CAcU,CAClB;AAAC,CACa,CAClB;AAED,MAAMJ,MAAM,GAAGb,UAAU,CAAC6B,MAAM,CAAC;EAC/BpB,GAAG,EAAE;IACHqB,YAAY,EAAE1B,WAAW;IACzB2B,iBAAiB,EAAE;EACrB,CAAC;EACDZ,IAAI,EAAE;IACJa,WAAW,EAAE5B;EACf;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useCallback, useRef } from 'react';
4
+ import { SectionList, StyleSheet } from 'react-native';
5
+ import { KColors, KLabel, KSpacingValue } from '@droppii/libs';
6
+ import { StickerPickerRowItem } from "./StickerPickerRowItem.js";
7
+ import { STICKER_PICKER_CONTENT_HEIGHT } from "./constants.js";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const AT_BOTTOM_THRESHOLD = 8;
10
+ const VIEWABILITY_CONFIG = {
11
+ itemVisiblePercentThreshold: 10
12
+ };
13
+ export const StickerSectionList = /*#__PURE__*/forwardRef(({
14
+ sections,
15
+ onSectionVisible,
16
+ onActiveCategoryChange,
17
+ onSelectSticker
18
+ }, ref) => {
19
+ const onSectionVisibleRef = useRef(onSectionVisible);
20
+ onSectionVisibleRef.current = onSectionVisible;
21
+ const onActiveCategoryChangeRef = useRef(onActiveCategoryChange);
22
+ onActiveCategoryChangeRef.current = onActiveCategoryChange;
23
+ const sectionsRef = useRef(sections);
24
+ sectionsRef.current = sections;
25
+ const isAtBottomRef = useRef(false);
26
+ const onScroll = useCallback(e => {
27
+ const {
28
+ contentOffset,
29
+ contentSize,
30
+ layoutMeasurement
31
+ } = e.nativeEvent;
32
+ isAtBottomRef.current = contentOffset.y + layoutMeasurement.height >= contentSize.height - AT_BOTTOM_THRESHOLD;
33
+ }, []);
34
+ const renderItem = useCallback(({
35
+ item
36
+ }) => /*#__PURE__*/_jsx(StickerPickerRowItem, {
37
+ row: item,
38
+ onSelectSticker: onSelectSticker
39
+ }), [onSelectSticker]);
40
+ const renderSectionHeader = useCallback(({
41
+ section
42
+ }) => /*#__PURE__*/_jsx(KLabel.Text, {
43
+ typo: "TitleSection",
44
+ style: styles.sectionHeader,
45
+ color: KColors.gray.light,
46
+ children: section.title
47
+ }), []);
48
+ const onViewableItemsChanged = useCallback(args => {
49
+ const {
50
+ viewableItems
51
+ } = args;
52
+ if (!viewableItems.length) return;
53
+
54
+ // Trigger lazy load for all currently visible sections
55
+ const seenCategories = new Set();
56
+ viewableItems.forEach(vi => {
57
+ const cat = vi.section?.categoryId;
58
+ if (cat && !seenCategories.has(cat)) {
59
+ seenCategories.add(cat);
60
+ onSectionVisibleRef.current(cat);
61
+ }
62
+ });
63
+
64
+ // When at the bottom of the list, force the last section as active.
65
+ // This handles the edge case where the last section has few items and
66
+ // its header never reaches the top of the viewport.
67
+ if (isAtBottomRef.current) {
68
+ const lastSection = sectionsRef.current[sectionsRef.current.length - 1];
69
+ if (lastSection) {
70
+ onActiveCategoryChangeRef.current(lastSection.categoryId);
71
+ }
72
+ return;
73
+ }
74
+
75
+ // Otherwise use the first visible item's section (symmetric for both
76
+ // scroll directions: switches when the section header enters from either end).
77
+ const firstVisible = viewableItems.find(vi => vi.section != null);
78
+ const categoryId = firstVisible?.section?.categoryId;
79
+ if (categoryId) {
80
+ onActiveCategoryChangeRef.current(categoryId);
81
+ }
82
+ }, []);
83
+ return /*#__PURE__*/_jsx(SectionList, {
84
+ ref: ref,
85
+ sections: sections,
86
+ renderItem: renderItem,
87
+ renderSectionHeader: renderSectionHeader,
88
+ keyExtractor: (_, index) => String(index),
89
+ onScroll: onScroll,
90
+ scrollEventThrottle: 16,
91
+ onViewableItemsChanged: onViewableItemsChanged,
92
+ viewabilityConfig: VIEWABILITY_CONFIG,
93
+ removeClippedSubviews: true,
94
+ initialNumToRender: 8,
95
+ maxToRenderPerBatch: 8,
96
+ style: styles.list,
97
+ showsVerticalScrollIndicator: false,
98
+ stickySectionHeadersEnabled: false
99
+ });
100
+ });
101
+ const styles = StyleSheet.create({
102
+ list: {
103
+ height: STICKER_PICKER_CONTENT_HEIGHT
104
+ },
105
+ sectionHeader: {
106
+ paddingHorizontal: KSpacingValue['0.75rem'],
107
+ paddingVertical: KSpacingValue['0.25rem']
108
+ }
109
+ });
110
+ //# sourceMappingURL=StickerSectionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","useRef","SectionList","StyleSheet","KColors","KLabel","KSpacingValue","StickerPickerRowItem","STICKER_PICKER_CONTENT_HEIGHT","jsx","_jsx","AT_BOTTOM_THRESHOLD","VIEWABILITY_CONFIG","itemVisiblePercentThreshold","StickerSectionList","sections","onSectionVisible","onActiveCategoryChange","onSelectSticker","ref","onSectionVisibleRef","current","onActiveCategoryChangeRef","sectionsRef","isAtBottomRef","onScroll","e","contentOffset","contentSize","layoutMeasurement","nativeEvent","y","height","renderItem","item","row","renderSectionHeader","section","Text","typo","style","styles","sectionHeader","color","gray","light","children","title","onViewableItemsChanged","args","viewableItems","length","seenCategories","Set","forEach","vi","cat","categoryId","has","add","lastSection","firstVisible","find","keyExtractor","_","index","String","scrollEventThrottle","viewabilityConfig","removeClippedSubviews","initialNumToRender","maxToRenderPerBatch","list","showsVerticalScrollIndicator","stickySectionHeadersEnabled","create","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../src","sources":["components/StickerPicker/StickerSectionList.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ import { KDims } from '@droppii/libs';
4
+ export const STICKER_COLUMNS = 4;
5
+ export const STICKER_HORIZONTAL_PADDING = 12;
6
+ export const STICKER_GAP = 8;
7
+ export const STICKER_SIZE = Math.floor((KDims.width - STICKER_HORIZONTAL_PADDING * 2 - STICKER_GAP * (STICKER_COLUMNS - 1)) / STICKER_COLUMNS);
8
+ export const STICKER_ROW_HEIGHT = STICKER_SIZE + STICKER_GAP;
9
+ export const CATEGORY_TAB_HEIGHT = 52;
10
+ export const STICKER_SECTION_HEADER_HEIGHT = 36;
11
+ export const STICKER_PICKER_CONTENT_HEIGHT = 260;
12
+ export const STICKER_PICKER_HEIGHT = CATEGORY_TAB_HEIGHT + STICKER_PICKER_CONTENT_HEIGHT;
13
+ export const RECENT_CATEGORY_ID = 'recent';
14
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KDims","STICKER_COLUMNS","STICKER_HORIZONTAL_PADDING","STICKER_GAP","STICKER_SIZE","Math","floor","width","STICKER_ROW_HEIGHT","CATEGORY_TAB_HEIGHT","STICKER_SECTION_HEADER_HEIGHT","STICKER_PICKER_CONTENT_HEIGHT","STICKER_PICKER_HEIGHT","RECENT_CATEGORY_ID"],"sourceRoot":"../../../../src","sources":["components/StickerPicker/constants.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,eAAe;AAErC,OAAO,MAAMC,eAAe,GAAG,CAAC;AAChC,OAAO,MAAMC,0BAA0B,GAAG,EAAE;AAC5C,OAAO,MAAMC,WAAW,GAAG,CAAC;AAE5B,OAAO,MAAMC,YAAY,GAAGC,IAAI,CAACC,KAAK,CACpC,CAACN,KAAK,CAACO,KAAK,GACVL,0BAA0B,GAAG,CAAC,GAC9BC,WAAW,IAAIF,eAAe,GAAG,CAAC,CAAC,IACnCA,eACJ,CAAC;AACD,OAAO,MAAMO,kBAAkB,GAAGJ,YAAY,GAAGD,WAAW;AAC5D,OAAO,MAAMM,mBAAmB,GAAG,EAAE;AACrC,OAAO,MAAMC,6BAA6B,GAAG,EAAE;AAC/C,OAAO,MAAMC,6BAA6B,GAAG,GAAG;AAChD,OAAO,MAAMC,qBAAqB,GAChCH,mBAAmB,GAAGE,6BAA6B;AAErD,OAAO,MAAME,kBAAkB,GAAG,QAAQ","ignoreList":[]}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ import { useState, useCallback, useRef, useEffect, useMemo } from 'react';
4
+ import { KColors, KContainer } from '@droppii/libs';
5
+ import { useStickerCategories } from "../../hooks/stickers/useStickerCategories.js";
6
+ import { useStickerHistory } from "../../hooks/stickers/useStickerHistory.js";
7
+ import { useFetchStickerByCategory } from "../../hooks/stickers/useFetchStickerByCategory.js";
8
+ import { RECENT_CATEGORY_ID, STICKER_COLUMNS, STICKER_PICKER_HEIGHT } from "./constants.js";
9
+ import { StickerCategoryTabs } from "./StickerCategoryTabs.js";
10
+ import { StickerSectionList } from "./StickerSectionList.js";
11
+ import { trans } from "../../translation/index.js";
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ const chunkIntoRows = (items, columns) => {
14
+ const rows = [];
15
+ for (let i = 0; i < items.length; i += columns) {
16
+ rows.push(items.slice(i, i + columns));
17
+ }
18
+ return rows;
19
+ };
20
+ const makePlaceholderRows = (count, columns) => {
21
+ const rows = [];
22
+ for (let i = 0; i < count; i += columns) {
23
+ const rowSize = Math.min(columns, count - i);
24
+ rows.push(Array.from({
25
+ length: rowSize
26
+ }, () => null));
27
+ }
28
+ return rows;
29
+ };
30
+ export const StickerPicker = ({
31
+ onSelectSticker
32
+ }) => {
33
+ const {
34
+ data: categoriesData
35
+ } = useStickerCategories();
36
+ const {
37
+ data: recentStickers
38
+ } = useStickerHistory();
39
+ const {
40
+ mutateAsync: fetchStickersByCategory
41
+ } = useFetchStickerByCategory();
42
+ const allCategories = useMemo(() => {
43
+ const recent = {
44
+ id: RECENT_CATEGORY_ID,
45
+ name: trans('recent'),
46
+ icon: null,
47
+ stickerCount: 0
48
+ };
49
+ return [recent, ...(categoriesData || [])];
50
+ }, [categoriesData]);
51
+ const [activeCategory, setActiveCategory] = useState(RECENT_CATEGORY_ID);
52
+ const [sectionDataMap, setSectionDataMap] = useState({});
53
+ const loadedIdsRef = useRef(new Set([RECENT_CATEGORY_ID]));
54
+ const sectionListRef = useRef(null);
55
+ const suppressCategoryChangeRef = useRef(false);
56
+ const suppressTimerRef = useRef(null);
57
+
58
+ // Populate recent section when history data arrives
59
+ useEffect(() => {
60
+ if (recentStickers) {
61
+ setSectionDataMap(prev => ({
62
+ ...prev,
63
+ [RECENT_CATEGORY_ID]: chunkIntoRows(recentStickers, STICKER_COLUMNS)
64
+ }));
65
+ }
66
+ }, [recentStickers]);
67
+
68
+ // Cleanup suppress timer on unmount
69
+ useEffect(() => {
70
+ return () => {
71
+ if (suppressTimerRef.current) clearTimeout(suppressTimerRef.current);
72
+ };
73
+ }, []);
74
+ const sections = useMemo(() => allCategories.map(cat => ({
75
+ categoryId: cat.id,
76
+ title: cat.name,
77
+ data: sectionDataMap[cat.id] ?? makePlaceholderRows(cat.stickerCount, STICKER_COLUMNS)
78
+ })), [allCategories, sectionDataMap]);
79
+ const handleSectionVisible = useCallback(async categoryId => {
80
+ if (categoryId === RECENT_CATEGORY_ID) return;
81
+ if (loadedIdsRef.current.has(categoryId)) return;
82
+ loadedIdsRef.current.add(categoryId);
83
+ try {
84
+ const stickers = await fetchStickersByCategory(categoryId);
85
+ setSectionDataMap(prev => ({
86
+ ...prev,
87
+ [categoryId]: chunkIntoRows(stickers, STICKER_COLUMNS)
88
+ }));
89
+ } catch {
90
+ loadedIdsRef.current.delete(categoryId);
91
+ }
92
+ }, [fetchStickersByCategory]);
93
+ const handleActiveCategoryChange = useCallback(categoryId => {
94
+ if (suppressCategoryChangeRef.current) return;
95
+ setActiveCategory(categoryId);
96
+ }, []);
97
+ const handleCategoryPress = useCallback(categoryId => {
98
+ setActiveCategory(categoryId);
99
+ suppressCategoryChangeRef.current = true;
100
+ if (suppressTimerRef.current) clearTimeout(suppressTimerRef.current);
101
+ suppressTimerRef.current = setTimeout(() => {
102
+ suppressCategoryChangeRef.current = false;
103
+ }, 600);
104
+ const sectionIndex = allCategories.findIndex(c => c.id === categoryId);
105
+ if (sectionIndex >= 0 && sectionListRef.current) {
106
+ try {
107
+ sectionListRef.current.scrollToLocation({
108
+ sectionIndex,
109
+ itemIndex: 0,
110
+ animated: true,
111
+ viewOffset: 0
112
+ });
113
+ } catch {}
114
+ }
115
+ }, [allCategories]);
116
+ return /*#__PURE__*/_jsxs(KContainer.View, {
117
+ style: {
118
+ height: STICKER_PICKER_HEIGHT
119
+ },
120
+ background: KColors.white,
121
+ children: [/*#__PURE__*/_jsx(StickerCategoryTabs, {
122
+ categories: allCategories,
123
+ activeCategory: activeCategory,
124
+ onSelectCategory: handleCategoryPress
125
+ }), /*#__PURE__*/_jsx(StickerSectionList, {
126
+ ref: sectionListRef,
127
+ sections: sections,
128
+ onSectionVisible: handleSectionVisible,
129
+ onActiveCategoryChange: handleActiveCategoryChange,
130
+ onSelectSticker: onSelectSticker
131
+ })]
132
+ });
133
+ };
134
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useCallback","useRef","useEffect","useMemo","KColors","KContainer","useStickerCategories","useStickerHistory","useFetchStickerByCategory","RECENT_CATEGORY_ID","STICKER_COLUMNS","STICKER_PICKER_HEIGHT","StickerCategoryTabs","StickerSectionList","trans","jsx","_jsx","jsxs","_jsxs","chunkIntoRows","items","columns","rows","i","length","push","slice","makePlaceholderRows","count","rowSize","Math","min","Array","from","StickerPicker","onSelectSticker","data","categoriesData","recentStickers","mutateAsync","fetchStickersByCategory","allCategories","recent","id","name","icon","stickerCount","activeCategory","setActiveCategory","sectionDataMap","setSectionDataMap","loadedIdsRef","Set","sectionListRef","suppressCategoryChangeRef","suppressTimerRef","prev","current","clearTimeout","sections","map","cat","categoryId","title","handleSectionVisible","has","add","stickers","delete","handleActiveCategoryChange","handleCategoryPress","setTimeout","sectionIndex","findIndex","c","scrollToLocation","itemIndex","animated","viewOffset","View","style","height","background","white","children","categories","onSelectCategory","ref","onSectionVisible","onActiveCategoryChange"],"sourceRoot":"../../../../src","sources":["components/StickerPicker/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -60,20 +60,8 @@ export const MuteThread = /*#__PURE__*/memo(({
60
60
  label: trans('chat:mute_confirm_primary'),
61
61
  kind: 'primary',
62
62
  onPress: async () => {
63
- try {
64
- await muteConversation(conversation);
65
- UIUtils.toast.open({
66
- title: trans('chat:mute_toast_success'),
67
- theme: 'light'
68
- });
69
- } catch {
70
- UIUtils.toast.open({
71
- title: trans('chat:generic_error'),
72
- theme: 'error'
73
- });
74
- } finally {
75
- swipeableMethods.close();
76
- }
63
+ swipeableMethods.close();
64
+ await muteConversation(conversation);
77
65
  }
78
66
  }],
79
67
  type: 'horizontal-button'
@@ -81,20 +69,8 @@ export const MuteThread = /*#__PURE__*/memo(({
81
69
  });
82
70
  }, [swipeableMethods, conversation, muteConversation]);
83
71
  const handleUnmutePress = useCallback(async () => {
84
- try {
85
- await unmuteConversation(conversation);
86
- UIUtils.toast.open({
87
- title: trans('chat:unmute_toast_success'),
88
- theme: 'light'
89
- });
90
- } catch {
91
- UIUtils.toast.open({
92
- title: trans('chat:generic_error'),
93
- theme: 'error'
94
- });
95
- } finally {
96
- swipeableMethods.close();
97
- }
72
+ swipeableMethods.close();
73
+ await unmuteConversation(conversation);
98
74
  }, [swipeableMethods, conversation, unmuteConversation]);
99
75
  return /*#__PURE__*/_jsxs(KContainer.Touchable, {
100
76
  width: 76,
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useCallback","KContainer","KImage","KLabel","KColors","useMuteConversation","trans","UIUtils","Image","StyleSheet","Images","jsx","_jsx","jsxs","_jsxs","MuteThread","isMuted","conversation","swipeableMethods","muteConversation","unmuteConversation","handleMutePress","popup","open","header","title","text","alignment","body","renderContent","View","padding","justifyContent","alignItems","children","paddingV","source","NOTIFICATION_WARNING","style","styles","notificationWarning","RichText","typo","richTextOptions","i18nKey","components","b","Text","actions","buttons","label","kind","onPress","close","toast","theme","type","handleUnmutePress","Touchable","width","background","gray","light","VectorIcons","name","provider","size","color","white","marginT","textAlign","displayName","create","height"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/MuteThread.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useCallback","KContainer","KImage","KLabel","KColors","useMuteConversation","trans","UIUtils","Image","StyleSheet","Images","jsx","_jsx","jsxs","_jsxs","MuteThread","isMuted","conversation","swipeableMethods","muteConversation","unmuteConversation","handleMutePress","popup","open","header","title","text","alignment","body","renderContent","View","padding","justifyContent","alignItems","children","paddingV","source","NOTIFICATION_WARNING","style","styles","notificationWarning","RichText","typo","richTextOptions","i18nKey","components","b","Text","actions","buttons","label","kind","onPress","close","type","handleUnmutePress","Touchable","width","background","gray","light","VectorIcons","name","provider","size","color","white","marginT","textAlign","displayName","create","height"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/MuteThread.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback } from 'react';
4
+ import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
5
+ import { usePinConversation } from "../../hooks/usePinConversation.js";
6
+ import { trans } from "../../translation/index.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ export const PinThread = /*#__PURE__*/memo(({
9
+ isPinned,
10
+ conversation,
11
+ swipeableMethods
12
+ }) => {
13
+ const {
14
+ pinConversation,
15
+ unpinConversation
16
+ } = usePinConversation();
17
+ const handlePress = useCallback(async () => {
18
+ swipeableMethods.close();
19
+ if (isPinned) {
20
+ await unpinConversation(conversation);
21
+ } else {
22
+ await pinConversation(conversation);
23
+ }
24
+ }, [isPinned, conversation, pinConversation, unpinConversation, swipeableMethods]);
25
+ return /*#__PURE__*/_jsxs(KContainer.Touchable, {
26
+ width: 76,
27
+ alignItems: "center",
28
+ justifyContent: "center",
29
+ background: KColors.palette.primary.w400,
30
+ onPress: handlePress,
31
+ children: [/*#__PURE__*/_jsx(KImage.VectorIcons, {
32
+ name: isPinned ? 'thumbtack-off-b' : 'thumbtack-b',
33
+ provider: "DroppiiNew",
34
+ size: 16,
35
+ color: KColors.white
36
+ }), /*#__PURE__*/_jsx(KLabel.Text, {
37
+ typo: "Text2XsMedium",
38
+ color: KColors.white,
39
+ marginT: "0.25rem",
40
+ textAlign: "center",
41
+ children: isPinned ? trans('chat:unpin_thread') : trans('chat:pin_thread')
42
+ })]
43
+ });
44
+ });
45
+ //# sourceMappingURL=PinThread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","KContainer","KImage","KLabel","KColors","usePinConversation","trans","jsx","_jsx","jsxs","_jsxs","PinThread","isPinned","conversation","swipeableMethods","pinConversation","unpinConversation","handlePress","close","Touchable","width","alignItems","justifyContent","background","palette","primary","w400","onPress","children","VectorIcons","name","provider","size","color","white","Text","typo","marginT","textAlign"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/PinThread.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAEzC,SAASC,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AACnE,SAASC,kBAAkB,QAAQ,mCAAgC;AACnE,SAASC,KAAK,QAAQ,4BAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAS1C,OAAO,MAAMC,SAAS,gBAAGZ,IAAI,CAC3B,CAAC;EAAEa,QAAQ;EAAEC,YAAY;EAAEC;AAAiC,CAAC,KAAK;EAChE,MAAM;IAAEC,eAAe;IAAEC;EAAkB,CAAC,GAAGX,kBAAkB,CAAC,CAAC;EAEnE,MAAMY,WAAW,GAAGjB,WAAW,CAAC,YAAY;IAC1Cc,gBAAgB,CAACI,KAAK,CAAC,CAAC;IACxB,IAAIN,QAAQ,EAAE;MACZ,MAAMI,iBAAiB,CAACH,YAAY,CAAC;IACvC,CAAC,MAAM;MACL,MAAME,eAAe,CAACF,YAAY,CAAC;IACrC;EACF,CAAC,EAAE,CACDD,QAAQ,EACRC,YAAY,EACZE,eAAe,EACfC,iBAAiB,EACjBF,gBAAgB,CACjB,CAAC;EAEF,oBACEJ,KAAA,CAACT,UAAU,CAACkB,SAAS;IACnBC,KAAK,EAAE,EAAG;IACVC,UAAU,EAAC,QAAQ;IACnBC,cAAc,EAAC,QAAQ;IACvBC,UAAU,EAAEnB,OAAO,CAACoB,OAAO,CAACC,OAAO,CAACC,IAAK;IACzCC,OAAO,EAAEV,WAAY;IAAAW,QAAA,gBAErBpB,IAAA,CAACN,MAAM,CAAC2B,WAAW;MACjBC,IAAI,EAAElB,QAAQ,GAAG,iBAAiB,GAAG,aAAc;MACnDmB,QAAQ,EAAC,YAAY;MACrBC,IAAI,EAAE,EAAG;MACTC,KAAK,EAAE7B,OAAO,CAAC8B;IAAM,CACtB,CAAC,eACF1B,IAAA,CAACL,MAAM,CAACgC,IAAI;MACVC,IAAI,EAAC,eAAe;MACpBH,KAAK,EAAE7B,OAAO,CAAC8B,KAAM;MACrBG,OAAO,EAAC,SAAS;MACjBC,SAAS,EAAC,QAAQ;MAAAV,QAAA,EAEjBhB,QAAQ,GAAGN,KAAK,CAAC,mBAAmB,CAAC,GAAGA,KAAK,CAAC,iBAAiB;IAAC,CACtD,CAAC;EAAA,CACM,CAAC;AAE3B,CACF,CAAC","ignoreList":[]}
@@ -11,9 +11,10 @@ import { getLastMessageText, getMessagePreviewTextProps } from "../../utils/mess
11
11
  import { useConversation, useUserStore } from "../../store/index.js";
12
12
  import { MessageReceiveOptType } from '@droppii/openim-rn-client-sdk';
13
13
  import { MuteThread } from "./MuteThread.js";
14
+ import { PinThread } from "./PinThread.js";
14
15
  import { useIsJoinedGroup } from "../../hooks/useIsJoinedGroup.js";
15
16
  import isEmpty from 'lodash/isEmpty';
16
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
17
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
18
  const ThreadCard = /*#__PURE__*/memo(({
18
19
  item,
19
20
  onPress
@@ -59,15 +60,19 @@ const ThreadCard = /*#__PURE__*/memo(({
59
60
  });
60
61
  }, [item, onPress]);
61
62
  const renderRightActions = useCallback((_progress, _translation, swipeableMethods) => /*#__PURE__*/_jsx(_Fragment, {
62
- children: /*#__PURE__*/_jsx(KContainer.VisibleView, {
63
+ children: /*#__PURE__*/_jsxs(KContainer.VisibleView, {
63
64
  visible: !isNotInGroup,
64
- children: /*#__PURE__*/_jsx(MuteThread, {
65
+ children: [/*#__PURE__*/_jsx(PinThread, {
66
+ conversation: conversation,
67
+ isPinned: Boolean(isPinned),
68
+ swipeableMethods: swipeableMethods
69
+ }), /*#__PURE__*/_jsx(MuteThread, {
65
70
  conversation: conversation,
66
71
  isMuted: isMuted,
67
72
  swipeableMethods: swipeableMethods
68
- })
73
+ })]
69
74
  })
70
- }), [isMuted, conversation, isNotInGroup]);
75
+ }), [isMuted, conversation, isNotInGroup, isPinned]);
71
76
  return /*#__PURE__*/_jsx(ReanimatedSwipeable, {
72
77
  friction: 2,
73
78
  rightThreshold: 40,
@@ -134,10 +139,10 @@ const ThreadCard = /*#__PURE__*/memo(({
134
139
  children: /*#__PURE__*/_jsx(KContainer.View, {
135
140
  marginL: "0.5rem",
136
141
  children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
137
- name: "pin-outline",
138
- provider: "MaterialCommunityIcons",
139
- size: 14,
140
- color: KColors.palette.gray.w400
142
+ name: 'thumbtack-b',
143
+ provider: "DroppiiNew",
144
+ size: 16,
145
+ color: KColors.primary.normal
141
146
  })
142
147
  })
143
148
  }), /*#__PURE__*/_jsx(UnreadBadge, {