@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.
- package/lib/module/components/StickerPicker/StickerCategoryTabs.js +86 -0
- package/lib/module/components/StickerPicker/StickerCategoryTabs.js.map +1 -0
- package/lib/module/components/StickerPicker/StickerPickerPlaceholder.js +18 -0
- package/lib/module/components/StickerPicker/StickerPickerPlaceholder.js.map +1 -0
- package/lib/module/components/StickerPicker/StickerPickerRowItem.js +35 -0
- package/lib/module/components/StickerPicker/StickerPickerRowItem.js.map +1 -0
- package/lib/module/components/StickerPicker/StickerSectionList.js +110 -0
- package/lib/module/components/StickerPicker/StickerSectionList.js.map +1 -0
- package/lib/module/components/StickerPicker/constants.js +14 -0
- package/lib/module/components/StickerPicker/constants.js.map +1 -0
- package/lib/module/components/StickerPicker/index.js +134 -0
- package/lib/module/components/StickerPicker/index.js.map +1 -0
- package/lib/module/components/ThreadCard/MuteThread.js +4 -28
- package/lib/module/components/ThreadCard/MuteThread.js.map +1 -1
- package/lib/module/components/ThreadCard/PinThread.js +45 -0
- package/lib/module/components/ThreadCard/PinThread.js.map +1 -0
- package/lib/module/components/ThreadCard/ThreadCard.js +14 -9
- package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -1
- package/lib/module/components/messages/stickerMessage/index.js +28 -0
- package/lib/module/components/messages/stickerMessage/index.js.map +1 -0
- package/lib/module/config/api-endpoints.js +4 -1
- package/lib/module/config/api-endpoints.js.map +1 -1
- package/lib/module/hooks/conversation/useGetConversationDetail.js +15 -0
- package/lib/module/hooks/conversation/useGetConversationDetail.js.map +1 -1
- package/lib/module/hooks/flows/useGetConversationFlowMainMenu.js +1 -1
- package/lib/module/hooks/flows/useGetConversationFlowMainMenu.js.map +1 -1
- package/lib/module/hooks/message/useSendMessage.js +45 -18
- package/lib/module/hooks/message/useSendMessage.js.map +1 -1
- package/lib/module/hooks/query-keys.js +7 -0
- package/lib/module/hooks/query-keys.js.map +1 -1
- package/lib/module/hooks/stickers/useFetchStickerByCategory.js +12 -0
- package/lib/module/hooks/stickers/useFetchStickerByCategory.js.map +1 -0
- package/lib/module/hooks/stickers/useStickerCategories.js +14 -0
- package/lib/module/hooks/stickers/useStickerCategories.js.map +1 -0
- package/lib/module/hooks/stickers/useStickerHistory.js +16 -0
- package/lib/module/hooks/stickers/useStickerHistory.js.map +1 -0
- package/lib/module/hooks/useChatCompose.js +1 -18
- package/lib/module/hooks/useChatCompose.js.map +1 -1
- package/lib/module/hooks/useMuteConversation.js +34 -15
- package/lib/module/hooks/useMuteConversation.js.map +1 -1
- package/lib/module/hooks/usePinConversation.js +72 -0
- package/lib/module/hooks/usePinConversation.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatComposer.js +64 -16
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetail.js +6 -20
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js +15 -4
- package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js.map +1 -1
- package/lib/module/screens/chat-detail/hooks/useChatComposerState.js +3 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerState.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +5 -6
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/services/attachmentOrchestrator.js +1 -1
- package/lib/module/services/attachmentOrchestrator.js.map +1 -1
- package/lib/module/services/endpoints.js +4 -1
- package/lib/module/services/endpoints.js.map +1 -1
- package/lib/module/store/conversation.js +1 -20
- package/lib/module/store/conversation.js.map +1 -1
- package/lib/module/translation/resources/i18n.js +10 -1
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/chat.js +6 -0
- package/lib/module/types/chat.js.map +1 -1
- package/lib/module/types/sticker.js +2 -0
- package/lib/module/types/sticker.js.map +1 -0
- package/lib/module/utils/conversation.js +1 -24
- package/lib/module/utils/conversation.js.map +1 -1
- package/lib/module/utils/messageUtils.js +2 -0
- package/lib/module/utils/messageUtils.js.map +1 -1
- package/lib/typescript/src/components/StickerPicker/StickerCategoryTabs.d.ts +9 -0
- package/lib/typescript/src/components/StickerPicker/StickerCategoryTabs.d.ts.map +1 -0
- package/lib/typescript/src/components/StickerPicker/StickerPickerPlaceholder.d.ts +2 -0
- package/lib/typescript/src/components/StickerPicker/StickerPickerPlaceholder.d.ts.map +1 -0
- package/lib/typescript/src/components/StickerPicker/StickerPickerRowItem.d.ts +8 -0
- package/lib/typescript/src/components/StickerPicker/StickerPickerRowItem.d.ts.map +1 -0
- package/lib/typescript/src/components/StickerPicker/StickerSectionList.d.ts +15 -0
- package/lib/typescript/src/components/StickerPicker/StickerSectionList.d.ts.map +1 -0
- package/lib/typescript/src/components/StickerPicker/constants.d.ts +11 -0
- package/lib/typescript/src/components/StickerPicker/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/StickerPicker/index.d.ts +7 -0
- package/lib/typescript/src/components/StickerPicker/index.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/MuteThread.d.ts.map +1 -1
- package/lib/typescript/src/components/ThreadCard/PinThread.d.ts +10 -0
- package/lib/typescript/src/components/ThreadCard/PinThread.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/stickerMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/stickerMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/config/api-endpoints.d.ts +3 -0
- package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -1
- package/lib/typescript/src/hooks/conversation/useGetConversationDetail.d.ts +2 -1
- package/lib/typescript/src/hooks/conversation/useGetConversationDetail.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts +5 -3
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/query-keys.d.ts +7 -0
- package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -1
- package/lib/typescript/src/hooks/stickers/useFetchStickerByCategory.d.ts +3 -0
- package/lib/typescript/src/hooks/stickers/useFetchStickerByCategory.d.ts.map +1 -0
- package/lib/typescript/src/hooks/stickers/useStickerCategories.d.ts +3 -0
- package/lib/typescript/src/hooks/stickers/useStickerCategories.d.ts.map +1 -0
- package/lib/typescript/src/hooks/stickers/useStickerHistory.d.ts +3 -0
- package/lib/typescript/src/hooks/stickers/useStickerHistory.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useChatCompose.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useMuteConversation.d.ts.map +1 -1
- package/lib/typescript/src/hooks/usePinConversation.d.ts +6 -0
- package/lib/typescript/src/hooks/usePinConversation.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +2 -2
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts +2 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts +3 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/services/endpoints.d.ts +4 -1
- package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
- package/lib/typescript/src/store/conversation.d.ts +0 -3
- package/lib/typescript/src/store/conversation.d.ts.map +1 -1
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +12 -19
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/types/sticker.d.ts +21 -0
- package/lib/typescript/src/types/sticker.d.ts.map +1 -0
- package/lib/typescript/src/utils/conversation.d.ts +1 -2
- package/lib/typescript/src/utils/conversation.d.ts.map +1 -1
- package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/StickerPicker/StickerCategoryTabs.tsx +103 -0
- package/src/components/StickerPicker/StickerPickerPlaceholder.tsx +16 -0
- package/src/components/StickerPicker/StickerPickerRowItem.tsx +43 -0
- package/src/components/StickerPicker/StickerSectionList.tsx +141 -0
- package/src/components/StickerPicker/constants.ts +20 -0
- package/src/components/StickerPicker/index.tsx +166 -0
- package/src/components/ThreadCard/MuteThread.tsx +4 -28
- package/src/components/ThreadCard/PinThread.tsx +58 -0
- package/src/components/ThreadCard/ThreadCard.tsx +11 -5
- package/src/components/messages/stickerMessage/index.tsx +26 -0
- package/src/config/api-endpoints.ts +6 -0
- package/src/hooks/conversation/useGetConversationDetail.ts +20 -1
- package/src/hooks/flows/useGetConversationFlowMainMenu.ts +1 -1
- package/src/hooks/message/useSendMessage.ts +49 -27
- package/src/hooks/query-keys.ts +10 -0
- package/src/hooks/stickers/useFetchStickerByCategory.ts +15 -0
- package/src/hooks/stickers/useStickerCategories.ts +17 -0
- package/src/hooks/stickers/useStickerHistory.ts +19 -0
- package/src/hooks/useChatCompose.ts +0 -19
- package/src/hooks/useMuteConversation.ts +32 -17
- package/src/hooks/usePinConversation.ts +87 -0
- package/src/screens/chat-detail/ChatComposer.tsx +106 -19
- package/src/screens/chat-detail/ChatDetail.tsx +5 -19
- package/src/screens/chat-detail/hooks/useChatComposerAnimation.ts +21 -5
- package/src/screens/chat-detail/hooks/useChatComposerState.ts +7 -0
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +4 -5
- package/src/services/attachmentOrchestrator.ts +1 -1
- package/src/services/endpoints.ts +6 -1
- package/src/store/conversation.ts +0 -24
- package/src/translation/resources/i18n.ts +11 -0
- package/src/types/chat.ts +13 -21
- package/src/types/sticker.ts +23 -0
- package/src/utils/conversation.ts +0 -28
- 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
|
-
|
|
64
|
-
|
|
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
|
-
|
|
85
|
-
|
|
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","
|
|
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,
|
|
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__*/
|
|
63
|
+
children: /*#__PURE__*/_jsxs(KContainer.VisibleView, {
|
|
63
64
|
visible: !isNotInGroup,
|
|
64
|
-
children: /*#__PURE__*/_jsx(
|
|
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:
|
|
138
|
-
provider: "
|
|
139
|
-
size:
|
|
140
|
-
color: KColors.
|
|
142
|
+
name: 'thumbtack-b',
|
|
143
|
+
provider: "DroppiiNew",
|
|
144
|
+
size: 16,
|
|
145
|
+
color: KColors.primary.normal
|
|
141
146
|
})
|
|
142
147
|
})
|
|
143
148
|
}), /*#__PURE__*/_jsx(UnreadBadge, {
|