@droppii-org/chat-mobile 0.2.49 → 0.2.50

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 (27) hide show
  1. package/lib/module/components/ThreadCard/MuteThread.js +4 -28
  2. package/lib/module/components/ThreadCard/MuteThread.js.map +1 -1
  3. package/lib/module/components/ThreadCard/PinThread.js +45 -0
  4. package/lib/module/components/ThreadCard/PinThread.js.map +1 -0
  5. package/lib/module/components/ThreadCard/ThreadCard.js +14 -9
  6. package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -1
  7. package/lib/module/hooks/useMuteConversation.js +34 -15
  8. package/lib/module/hooks/useMuteConversation.js.map +1 -1
  9. package/lib/module/hooks/usePinConversation.js +72 -0
  10. package/lib/module/hooks/usePinConversation.js.map +1 -0
  11. package/lib/module/translation/resources/i18n.js +7 -0
  12. package/lib/module/translation/resources/i18n.js.map +1 -1
  13. package/lib/typescript/src/components/ThreadCard/MuteThread.d.ts.map +1 -1
  14. package/lib/typescript/src/components/ThreadCard/PinThread.d.ts +10 -0
  15. package/lib/typescript/src/components/ThreadCard/PinThread.d.ts.map +1 -0
  16. package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -1
  17. package/lib/typescript/src/hooks/useMuteConversation.d.ts.map +1 -1
  18. package/lib/typescript/src/hooks/usePinConversation.d.ts +6 -0
  19. package/lib/typescript/src/hooks/usePinConversation.d.ts.map +1 -0
  20. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  21. package/package.json +1 -1
  22. package/src/components/ThreadCard/MuteThread.tsx +4 -28
  23. package/src/components/ThreadCard/PinThread.tsx +58 -0
  24. package/src/components/ThreadCard/ThreadCard.tsx +11 -5
  25. package/src/hooks/useMuteConversation.ts +32 -17
  26. package/src/hooks/usePinConversation.ts +87 -0
  27. package/src/translation/resources/i18n.ts +8 -0
@@ -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, {
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useCallback","useMemo","ReanimatedSwipeable","KContainer","KImage","KLabel","KColors","AvatarSection","NamePrefixIcon","UnreadBadge","formatTimestamp","getLastMessageText","getMessagePreviewTextProps","useConversation","useUserStore","MessageReceiveOptType","MuteThread","useIsJoinedGroup","isEmpty","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ThreadCard","item","onPress","conversation","peerType","showName","faceURL","unreadCount","recvMsgOpt","Normal","isPinned","latestMsgSendTime","latestMsg","groupID","data","isJoinedGroup","isNotInGroup","latestMsgData","result","JSON","parse","error","console","fullName","hasUnread","isMuted","timestamp","sendTime","currentUserId","s","user","userID","lastMessageText","handlePress","event","renderRightActions","_progress","_translation","swipeableMethods","children","VisibleView","visible","friction","rightThreshold","Touchable","row","alignItems","paddingH","paddingV","activeOpacity","background","white","avatar","View","flex","marginL","paddingB","Text","typo","numberOfLines","color","black","VectorIcons","name","provider","size","palette","gray","w500","Boolean","w400","normal","count","displayName"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/ThreadCard.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useCallback","useMemo","ReanimatedSwipeable","KContainer","KImage","KLabel","KColors","AvatarSection","NamePrefixIcon","UnreadBadge","formatTimestamp","getLastMessageText","getMessagePreviewTextProps","useConversation","useUserStore","MessageReceiveOptType","MuteThread","PinThread","useIsJoinedGroup","isEmpty","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ThreadCard","item","onPress","conversation","peerType","showName","faceURL","unreadCount","recvMsgOpt","Normal","isPinned","latestMsgSendTime","latestMsg","groupID","data","isJoinedGroup","isNotInGroup","latestMsgData","result","JSON","parse","error","console","fullName","hasUnread","isMuted","timestamp","sendTime","currentUserId","s","user","userID","lastMessageText","handlePress","event","renderRightActions","_progress","_translation","swipeableMethods","children","VisibleView","visible","Boolean","friction","rightThreshold","Touchable","row","alignItems","paddingH","paddingV","activeOpacity","background","white","avatar","View","flex","marginL","paddingB","Text","typo","numberOfLines","color","black","VectorIcons","name","provider","size","palette","gray","w500","w400","normal","primary","count","displayName"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/ThreadCard.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,27 +2,46 @@
2
2
 
3
3
  import { useCallback } from 'react';
4
4
  import OpenIMSDK, { MessageReceiveOptType } from '@droppii/openim-rn-client-sdk';
5
- import { useConversationStore } from "../store/index.js";
5
+ import { UIUtils } from "../utils/UIUtils.js";
6
+ import { trans } from "../translation/index.js";
6
7
  export function useMuteConversation() {
7
8
  const muteConversation = useCallback(async conversation => {
8
9
  if (conversation == null) return;
9
- await OpenIMSDK.setConversationRecvMessageOpt({
10
- conversationID: conversation.conversationID,
11
- opt: MessageReceiveOptType.NotNotify
12
- });
13
- useConversationStore.getState().updateConversation(conversation.conversationID, {
14
- recvMsgOpt: MessageReceiveOptType.NotNotify
15
- });
10
+ try {
11
+ await OpenIMSDK.setConversationRecvMessageOpt({
12
+ conversationID: conversation.conversationID,
13
+ opt: MessageReceiveOptType.NotNotify
14
+ });
15
+ UIUtils.toast.open({
16
+ title: trans('chat:mute_toast_success'),
17
+ theme: 'light'
18
+ });
19
+ } catch (error) {
20
+ console.error('muteConversation failed', error);
21
+ UIUtils.toast.open({
22
+ title: trans('chat:generic_error'),
23
+ theme: 'error'
24
+ });
25
+ }
16
26
  }, []);
17
27
  const unmuteConversation = useCallback(async conversation => {
18
28
  if (conversation == null) return;
19
- await OpenIMSDK.setConversationRecvMessageOpt({
20
- conversationID: conversation.conversationID,
21
- opt: MessageReceiveOptType.Normal
22
- });
23
- useConversationStore.getState().updateConversation(conversation.conversationID, {
24
- recvMsgOpt: MessageReceiveOptType.Normal
25
- });
29
+ try {
30
+ await OpenIMSDK.setConversationRecvMessageOpt({
31
+ conversationID: conversation.conversationID,
32
+ opt: MessageReceiveOptType.Normal
33
+ });
34
+ UIUtils.toast.open({
35
+ title: trans('chat:unmute_toast_success'),
36
+ theme: 'light'
37
+ });
38
+ } catch (error) {
39
+ console.error('unmuteConversation failed', error);
40
+ UIUtils.toast.open({
41
+ title: trans('chat:generic_error'),
42
+ theme: 'error'
43
+ });
44
+ }
26
45
  }, []);
27
46
  return {
28
47
  muteConversation,
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","OpenIMSDK","MessageReceiveOptType","useConversationStore","useMuteConversation","muteConversation","conversation","setConversationRecvMessageOpt","conversationID","opt","NotNotify","getState","updateConversation","recvMsgOpt","unmuteConversation","Normal"],"sourceRoot":"../../../src","sources":["hooks/useMuteConversation.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,OAAOC,SAAS,IACdC,qBAAqB,QAChB,+BAA+B;AAEtC,SAASC,oBAAoB,QAAQ,mBAAU;AAE/C,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpC,MAAMC,gBAAgB,GAAGL,WAAW,CAClC,MAAOM,YAA+B,IAAK;IACzC,IAAIA,YAAY,IAAI,IAAI,EAAE;IAE1B,MAAML,SAAS,CAACM,6BAA6B,CAAC;MAC5CC,cAAc,EAAEF,YAAY,CAACE,cAAc;MAC3CC,GAAG,EAAEP,qBAAqB,CAACQ;IAC7B,CAAC,CAAC;IACFP,oBAAoB,CACjBQ,QAAQ,CAAC,CAAC,CACVC,kBAAkB,CAACN,YAAY,CAACE,cAAc,EAAE;MAC/CK,UAAU,EAAEX,qBAAqB,CAACQ;IACpC,CAAC,CAAC;EACN,CAAC,EACD,EACF,CAAC;EAED,MAAMI,kBAAkB,GAAGd,WAAW,CACpC,MAAOM,YAA+B,IAAK;IACzC,IAAIA,YAAY,IAAI,IAAI,EAAE;IAE1B,MAAML,SAAS,CAACM,6BAA6B,CAAC;MAC5CC,cAAc,EAAEF,YAAY,CAACE,cAAc;MAC3CC,GAAG,EAAEP,qBAAqB,CAACa;IAC7B,CAAC,CAAC;IACFZ,oBAAoB,CACjBQ,QAAQ,CAAC,CAAC,CACVC,kBAAkB,CAACN,YAAY,CAACE,cAAc,EAAE;MAC/CK,UAAU,EAAEX,qBAAqB,CAACa;IACpC,CAAC,CAAC;EACN,CAAC,EACD,EACF,CAAC;EAED,OAAO;IAAEV,gBAAgB;IAAES;EAAmB,CAAC;AACjD","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","OpenIMSDK","MessageReceiveOptType","UIUtils","trans","useMuteConversation","muteConversation","conversation","setConversationRecvMessageOpt","conversationID","opt","NotNotify","toast","open","title","theme","error","console","unmuteConversation","Normal"],"sourceRoot":"../../../src","sources":["hooks/useMuteConversation.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,OAAOC,SAAS,IACdC,qBAAqB,QAChB,+BAA+B;AAEtC,SAASC,OAAO,QAAQ,qBAAkB;AAC1C,SAASC,KAAK,QAAQ,yBAAgB;AAEtC,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpC,MAAMC,gBAAgB,GAAGN,WAAW,CAClC,MAAOO,YAA+B,IAAK;IACzC,IAAIA,YAAY,IAAI,IAAI,EAAE;IAE1B,IAAI;MACF,MAAMN,SAAS,CAACO,6BAA6B,CAAC;QAC5CC,cAAc,EAAEF,YAAY,CAACE,cAAc;QAC3CC,GAAG,EAAER,qBAAqB,CAACS;MAC7B,CAAC,CAAC;MACFR,OAAO,CAACS,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAEV,KAAK,CAAC,yBAAyB,CAAC;QACvCW,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,yBAAyB,EAAEA,KAAK,CAAC;MAC/Cb,OAAO,CAACS,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAEV,KAAK,CAAC,oBAAoB,CAAC;QAClCW,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMG,kBAAkB,GAAGlB,WAAW,CACpC,MAAOO,YAA+B,IAAK;IACzC,IAAIA,YAAY,IAAI,IAAI,EAAE;IAE1B,IAAI;MACF,MAAMN,SAAS,CAACO,6BAA6B,CAAC;QAC5CC,cAAc,EAAEF,YAAY,CAACE,cAAc;QAC3CC,GAAG,EAAER,qBAAqB,CAACiB;MAC7B,CAAC,CAAC;MACFhB,OAAO,CAACS,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAEV,KAAK,CAAC,2BAA2B,CAAC;QACzCW,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC;MACjDb,OAAO,CAACS,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAEV,KAAK,CAAC,oBAAoB,CAAC;QAClCW,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EACD,EACF,CAAC;EAED,OAAO;IAAET,gBAAgB;IAAEY;EAAmB,CAAC;AACjD","ignoreList":[]}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ import { useCallback } from 'react';
4
+ import OpenIMSDK from '@droppii/openim-rn-client-sdk';
5
+ import { useConversationStore } from "../store/index.js";
6
+ import { UIUtils } from "../utils/UIUtils.js";
7
+ import { trans } from "../translation/index.js";
8
+ const MAX_PINNED_THREADS = 5;
9
+ const showPinThreadLimitModal = () => {
10
+ UIUtils.alert.open({
11
+ title: trans('chat:pin_thread_limit_title'),
12
+ message: trans('chat:pin_thread_limit_desc', {
13
+ maxCount: MAX_PINNED_THREADS
14
+ }),
15
+ primaryIndex: 0,
16
+ buttonType: 'horizontal-button',
17
+ buttons: [{
18
+ label: trans('chat:pin_thread_limit_button'),
19
+ kind: 'primary'
20
+ }]
21
+ });
22
+ };
23
+ export function usePinConversation() {
24
+ const pinConversation = useCallback(async conversation => {
25
+ if (conversation == null) return;
26
+ try {
27
+ const pinnedCount = Object.values(useConversationStore.getState().map).filter(c => c.isPinned).length;
28
+ if (pinnedCount >= MAX_PINNED_THREADS) {
29
+ showPinThreadLimitModal();
30
+ return;
31
+ }
32
+ await OpenIMSDK.pinConversation({
33
+ conversationID: conversation.conversationID,
34
+ isPinned: true
35
+ });
36
+ UIUtils.toast.open({
37
+ title: trans('chat:pin_thread_success'),
38
+ theme: 'light'
39
+ });
40
+ } catch (error) {
41
+ console.error('pinConversation failed', error);
42
+ UIUtils.toast.open({
43
+ title: trans('chat:generic_error'),
44
+ theme: 'error'
45
+ });
46
+ }
47
+ }, []);
48
+ const unpinConversation = useCallback(async conversation => {
49
+ if (conversation == null) return;
50
+ try {
51
+ await OpenIMSDK.pinConversation({
52
+ conversationID: conversation.conversationID,
53
+ isPinned: false
54
+ });
55
+ UIUtils.toast.open({
56
+ title: trans('chat:unpin_thread_success'),
57
+ theme: 'light'
58
+ });
59
+ } catch (error) {
60
+ console.error('unpinConversation failed', error);
61
+ UIUtils.toast.open({
62
+ title: trans('chat:generic_error'),
63
+ theme: 'error'
64
+ });
65
+ }
66
+ }, []);
67
+ return {
68
+ pinConversation,
69
+ unpinConversation
70
+ };
71
+ }
72
+ //# sourceMappingURL=usePinConversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","OpenIMSDK","useConversationStore","UIUtils","trans","MAX_PINNED_THREADS","showPinThreadLimitModal","alert","open","title","message","maxCount","primaryIndex","buttonType","buttons","label","kind","usePinConversation","pinConversation","conversation","pinnedCount","Object","values","getState","map","filter","c","isPinned","length","conversationID","toast","theme","error","console","unpinConversation"],"sourceRoot":"../../../src","sources":["hooks/usePinConversation.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,OAAOC,SAAS,MAAM,+BAA+B;AAErD,SAASC,oBAAoB,QAAQ,mBAAU;AAC/C,SAASC,OAAO,QAAQ,qBAAkB;AAC1C,SAASC,KAAK,QAAQ,yBAAgB;AAEtC,MAAMC,kBAAkB,GAAG,CAAC;AAE5B,MAAMC,uBAAuB,GAAGA,CAAA,KAAM;EACpCH,OAAO,CAACI,KAAK,CAACC,IAAI,CAAC;IACjBC,KAAK,EAAEL,KAAK,CAAC,6BAA6B,CAAC;IAC3CM,OAAO,EAAEN,KAAK,CAAC,4BAA4B,EAAE;MAC3CO,QAAQ,EAAEN;IACZ,CAAC,CAAC;IACFO,YAAY,EAAE,CAAC;IACfC,UAAU,EAAE,mBAAmB;IAC/BC,OAAO,EAAE,CACP;MACEC,KAAK,EAAEX,KAAK,CAAC,8BAA8B,CAAC;MAC5CY,IAAI,EAAE;IACR,CAAC;EAEL,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,MAAMC,eAAe,GAAGlB,WAAW,CACjC,MAAOmB,YAA+B,IAAK;IACzC,IAAIA,YAAY,IAAI,IAAI,EAAE;IAE1B,IAAI;MACF,MAAMC,WAAW,GAAGC,MAAM,CAACC,MAAM,CAC/BpB,oBAAoB,CAACqB,QAAQ,CAAC,CAAC,CAACC,GAClC,CAAC,CAACC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAAC,CAACC,MAAM;MAClC,IAAIR,WAAW,IAAIf,kBAAkB,EAAE;QACrCC,uBAAuB,CAAC,CAAC;QACzB;MACF;MAEA,MAAML,SAAS,CAACiB,eAAe,CAAC;QAC9BW,cAAc,EAAEV,YAAY,CAACU,cAAc;QAC3CF,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEFxB,OAAO,CAAC2B,KAAK,CAACtB,IAAI,CAAC;QACjBC,KAAK,EAAEL,KAAK,CAAC,yBAAyB,CAAC;QACvC2B,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;MAC9C7B,OAAO,CAAC2B,KAAK,CAACtB,IAAI,CAAC;QACjBC,KAAK,EAAEL,KAAK,CAAC,oBAAoB,CAAC;QAClC2B,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMG,iBAAiB,GAAGlC,WAAW,CACnC,MAAOmB,YAA+B,IAAK;IACzC,IAAIA,YAAY,IAAI,IAAI,EAAE;IAE1B,IAAI;MACF,MAAMlB,SAAS,CAACiB,eAAe,CAAC;QAC9BW,cAAc,EAAEV,YAAY,CAACU,cAAc;QAC3CF,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEFxB,OAAO,CAAC2B,KAAK,CAACtB,IAAI,CAAC;QACjBC,KAAK,EAAEL,KAAK,CAAC,2BAA2B,CAAC;QACzC2B,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,0BAA0B,EAAEA,KAAK,CAAC;MAChD7B,OAAO,CAAC2B,KAAK,CAACtB,IAAI,CAAC;QACjBC,KAAK,EAAEL,KAAK,CAAC,oBAAoB,CAAC;QAClC2B,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EACD,EACF,CAAC;EAED,OAAO;IAAEb,eAAe;IAAEgB;EAAkB,CAAC;AAC/C","ignoreList":[]}
@@ -48,6 +48,13 @@ const i18nKey = {
48
48
  'chat:pin_limit_primary': 'Đã hiểu',
49
49
  'chat:pinned_messages_title': 'Tin nhắn đã ghim',
50
50
  'chat:pinned_messages_hint': 'Nhấn vào tin nhắn để xem tin nhắn gốc, nhấn vào biểu tượng để bỏ ghim',
51
+ 'chat:pin_thread': 'Ghim',
52
+ 'chat:unpin_thread': 'Bỏ ghim',
53
+ 'chat:pin_thread_success': 'Đã ghim đoạn chat thành công',
54
+ 'chat:unpin_thread_success': 'Đã bỏ ghim đoạn chat thành công',
55
+ 'chat:pin_thread_limit_title': 'Không thể ghim đoạn chat',
56
+ 'chat:pin_thread_limit_desc': 'Bạn đã ghim số đoạn chat tối đa. Để ghim đoạn chat này, trước tiên bạn phải bỏ ghim đoạn chat khác.',
57
+ 'chat:pin_thread_limit_button': 'OK',
51
58
  'chat:view_original_message': 'Xem tin nhắn gốc',
52
59
  'chat:scroll_to_message_todo': 'Tính năng di chuyển đến tin nhắn gốc sẽ sớm được cập nhật',
53
60
  'msg_type_image': '[Hình ảnh]',
@@ -1 +1 @@
1
- {"version":3,"names":["i18nKey","vi"],"sourceRoot":"../../../../src","sources":["translation/resources/i18n.ts"],"mappings":";;AAAA,MAAMA,OAA+B,GAAG;EACtC,0BAA0B,EAAE,gBAAgB;EAC5C,2BAA2B,EAAE,YAAY;EACzC,qBAAqB,EACnB,4EAA4E;EAC9E,qBAAqB,EAAE,kCAAkC;EACzD,uBAAuB,EAAE,oBAAoB;EAC7C,yBAAyB,EAAE,iBAAiB;EAC5C,+BAA+B,EAAE,6BAA6B;EAC9D,uBAAuB,EAAE,oCAAoC;EAC7D,8BAA8B,EAAE,gCAAgC;EAChE,2BAA2B,EAAE,kBAAkB;EAC/C,uBAAuB,EAAE,sBAAsB;EAC/C,oBAAoB,EAAE,eAAe;EACrC,sBAAsB,EACpB,sFAAsF;EACxF,sBAAsB,EACpB,gFAAgF;EAClF,iBAAiB,EAAE,YAAY;EAC/B,0BAA0B,EAAE,gCAAgC;EAC5D,oBAAoB,EAAE,gCAAgC;EACtD,6BAA6B,EAAE,kCAAkC;EACjE,eAAe,EAAE,SAAS;EAC1B,gBAAgB,EAAE,YAAY;EAC9B,iBAAiB,EAAE,SAAS;EAC5B,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,SAAS;EACvB,2BAA2B,EAAE,6BAA6B;EAC1D,mBAAmB,EAAE,kBAAkB;EACvC,yBAAyB,EAAE,kBAAkB;EAC7C,qBAAqB,EAAE,0BAA0B;EACjD,mBAAmB,EAAE,mBAAmB;EACxC,wBAAwB,EAAE,6BAA6B;EACvD,2BAA2B,EAAE,8BAA8B;EAC3D,gCAAgC,EAAE,wCAAwC;EAC1E,oBAAoB,EAAE,SAAS;EAC/B,qBAAqB,EAAE,SAAS;EAChC,kBAAkB,EAAE,MAAM;EAC1B,oBAAoB,EAAE,SAAS;EAC/B,0BAA0B,EAAE,kBAAkB;EAC9C,4BAA4B,EAAE,qBAAqB;EACnD,8BAA8B,EAAE,wBAAwB;EACxD,4BAA4B,EAAE,wBAAwB;EACtD,4BAA4B,EAAE,qBAAqB;EACnD,2BAA2B,EAAE,wBAAwB;EACrD,2BAA2B,EAAE,eAAe;EAC5C,sBAAsB,EAAE,8BAA8B;EACtD,qBAAqB,EACnB,gHAAgH;EAClH,wBAAwB,EAAE,SAAS;EACnC,4BAA4B,EAAE,kBAAkB;EAChD,2BAA2B,EACzB,uEAAuE;EACzE,4BAA4B,EAAE,kBAAkB;EAChD,6BAA6B,EAC3B,2DAA2D;EAC7D,gBAAgB,EAAE,YAAY;EAC9B,gBAAgB,EAAE,kBAAkB;EACpC,gBAAgB,EAAE,SAAS;EAC3B,eAAe,EAAE,iBAAiB;EAClC,eAAe,EAAE,YAAY;EAC7B,iBAAiB,EAAE,qBAAqB;EACxC,wBAAwB,EAAE,gCAAgC;EAC1D,kBAAkB,EAAE,eAAe;EACnC,oBAAoB,EAAE,eAAe;EACrC,yBAAyB,EAAE,eAAe;EAC1C,wBAAwB,EACtB,qGAAqG;EACvG,2BAA2B,EAAE,eAAe;EAC5C,6BAA6B,EAAE,UAAU;EACzC,yBAAyB,EAAE,kBAAkB;EAC7C,2BAA2B,EAAE,kBAAkB;EAC/C,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,aAAa;EACxB,SAAS,EAAE,WAAW;EACtB,QAAQ,EAAE,UAAU;EACpB,WAAW,EAAE,UAAU;EACvB,YAAY,EAAE,cAAc;EAC5B,cAAc,EAAE,cAAc;EAC9B,oBAAoB,EAAE,cAAc;EACpC,oBAAoB,EAAE,SAAS;EAC/B,eAAe,EAAE,kBAAkB;EACnC,UAAU,EAAE,YAAY;EACxB,KAAK,EAAE;AACT,CAAC;AAED,eAAe;EACbC,EAAE,EAAED;AACN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["i18nKey","vi"],"sourceRoot":"../../../../src","sources":["translation/resources/i18n.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MuteThread.d.ts","sourceRoot":"","sources":["../../../../../src/components/ThreadCard/MuteThread.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAKzF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,eAAO,MAAM,UAAU,oFACyB,eAAe,iCA2G9D,CAAC"}
1
+ {"version":3,"file":"MuteThread.d.ts","sourceRoot":"","sources":["../../../../../src/components/ThreadCard/MuteThread.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAKzF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,eAAO,MAAM,UAAU,oFACyB,eAAe,iCAmF9D,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { SwipeableMethods } from 'react-native-gesture-handler/ReanimatedSwipeable';
2
+ import { type ConversationItem } from '@droppii/openim-rn-client-sdk';
3
+ interface PinThreadProps {
4
+ isPinned: boolean;
5
+ conversation?: ConversationItem;
6
+ swipeableMethods: SwipeableMethods;
7
+ }
8
+ export declare const PinThread: import("react").MemoExoticComponent<({ isPinned, conversation, swipeableMethods }: PinThreadProps) => import("react").JSX.Element>;
9
+ export {};
10
+ //# sourceMappingURL=PinThread.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinThread.d.ts","sourceRoot":"","sources":["../../../../../src/components/ThreadCard/PinThread.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAIzF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,UAAU,cAAc;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,eAAO,MAAM,SAAS,qFAC2B,cAAc,iCA2C9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/ThreadCard/ThreadCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAqB1D,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,qBAAqB,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5E;AAED,QAAA,MAAM,UAAU,0DAA4B,eAAe,iCAwJzD,CAAC;AAIH,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/ThreadCard/ThreadCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAsB1D,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,qBAAqB,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5E;AAED,QAAA,MAAM,UAAU,0DAA4B,eAAe,iCA6JzD,CAAC;AAIH,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMuteConversation.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useMuteConversation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,wBAAgB,mBAAmB;sCAET,gBAAgB;wCAiBhB,gBAAgB;EAiBzC"}
1
+ {"version":3,"file":"useMuteConversation.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useMuteConversation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE,wBAAgB,mBAAmB;sCAET,gBAAgB;wCAwBhB,gBAAgB;EAwBzC"}
@@ -0,0 +1,6 @@
1
+ import type { ConversationItem } from '@droppii/openim-rn-client-sdk';
2
+ export declare function usePinConversation(): {
3
+ pinConversation: (conversation?: ConversationItem) => Promise<void>;
4
+ unpinConversation: (conversation?: ConversationItem) => Promise<void>;
5
+ };
6
+ //# sourceMappingURL=usePinConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePinConversation.d.ts","sourceRoot":"","sources":["../../../../src/hooks/usePinConversation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAwBtE,wBAAgB,kBAAkB;qCAER,gBAAgB;uCAiChB,gBAAgB;EAyBzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/translation/resources/i18n.ts"],"names":[],"mappings":";;;AAsFA,wBAEE"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/translation/resources/i18n.ts"],"names":[],"mappings":";;;AA8FA,wBAEE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@droppii-org/chat-mobile",
3
- "version": "0.2.49",
3
+ "version": "0.2.50",
4
4
  "description": "Droppii chat mobile",
5
5
  "keywords": [
6
6
  "react-native",
@@ -58,20 +58,8 @@ export const MuteThread = memo(
58
58
  label: trans('chat:mute_confirm_primary'),
59
59
  kind: 'primary',
60
60
  onPress: async () => {
61
- try {
62
- await muteConversation(conversation);
63
- UIUtils.toast.open({
64
- title: trans('chat:mute_toast_success'),
65
- theme: 'light',
66
- });
67
- } catch {
68
- UIUtils.toast.open({
69
- title: trans('chat:generic_error'),
70
- theme: 'error',
71
- });
72
- } finally {
73
- swipeableMethods.close();
74
- }
61
+ swipeableMethods.close();
62
+ await muteConversation(conversation);
75
63
  },
76
64
  },
77
65
  ],
@@ -81,20 +69,8 @@ export const MuteThread = memo(
81
69
  }, [swipeableMethods, conversation, muteConversation]);
82
70
 
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
 
100
76
  return (
@@ -0,0 +1,58 @@
1
+ import { memo, useCallback } from 'react';
2
+ import type { SwipeableMethods } from 'react-native-gesture-handler/ReanimatedSwipeable';
3
+ import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
4
+ import { usePinConversation } from '../../hooks/usePinConversation';
5
+ import { trans } from '../../translation';
6
+ import { type ConversationItem } from '@droppii/openim-rn-client-sdk';
7
+
8
+ interface PinThreadProps {
9
+ isPinned: boolean;
10
+ conversation?: ConversationItem;
11
+ swipeableMethods: SwipeableMethods;
12
+ }
13
+
14
+ export const PinThread = memo(
15
+ ({ isPinned, conversation, swipeableMethods }: PinThreadProps) => {
16
+ const { pinConversation, unpinConversation } = usePinConversation();
17
+
18
+ const handlePress = useCallback(async () => {
19
+ swipeableMethods.close();
20
+ if (isPinned) {
21
+ await unpinConversation(conversation);
22
+ } else {
23
+ await pinConversation(conversation);
24
+ }
25
+ }, [
26
+ isPinned,
27
+ conversation,
28
+ pinConversation,
29
+ unpinConversation,
30
+ swipeableMethods,
31
+ ]);
32
+
33
+ return (
34
+ <KContainer.Touchable
35
+ width={76}
36
+ alignItems="center"
37
+ justifyContent="center"
38
+ background={KColors.palette.primary.w400}
39
+ onPress={handlePress}
40
+ >
41
+ <KImage.VectorIcons
42
+ name={isPinned ? 'thumbtack-off-b' : 'thumbtack-b'}
43
+ provider="DroppiiNew"
44
+ size={16}
45
+ color={KColors.white}
46
+ />
47
+ <KLabel.Text
48
+ typo="Text2XsMedium"
49
+ color={KColors.white}
50
+ marginT="0.25rem"
51
+ textAlign="center"
52
+ >
53
+ {isPinned ? trans('chat:unpin_thread') : trans('chat:pin_thread')}
54
+ </KLabel.Text>
55
+ </KContainer.Touchable>
56
+ );
57
+ }
58
+ );
@@ -17,6 +17,7 @@ import {
17
17
  type MessageItem,
18
18
  } from '@droppii/openim-rn-client-sdk';
19
19
  import { MuteThread } from './MuteThread';
20
+ import { PinThread } from './PinThread';
20
21
  import { useIsJoinedGroup } from '../../hooks/useIsJoinedGroup';
21
22
  import isEmpty from 'lodash/isEmpty';
22
23
 
@@ -84,6 +85,11 @@ const ThreadCard = memo(({ item, onPress }: ThreadCardProps) => {
84
85
  ) => (
85
86
  <>
86
87
  <KContainer.VisibleView visible={!isNotInGroup}>
88
+ <PinThread
89
+ conversation={conversation}
90
+ isPinned={Boolean(isPinned)}
91
+ swipeableMethods={swipeableMethods}
92
+ />
87
93
  <MuteThread
88
94
  conversation={conversation}
89
95
  isMuted={isMuted}
@@ -92,7 +98,7 @@ const ThreadCard = memo(({ item, onPress }: ThreadCardProps) => {
92
98
  </KContainer.VisibleView>
93
99
  </>
94
100
  ),
95
- [isMuted, conversation, isNotInGroup]
101
+ [isMuted, conversation, isNotInGroup, isPinned]
96
102
  );
97
103
 
98
104
  return (
@@ -164,10 +170,10 @@ const ThreadCard = memo(({ item, onPress }: ThreadCardProps) => {
164
170
  <KContainer.VisibleView visible={Boolean(isPinned)}>
165
171
  <KContainer.View marginL="0.5rem">
166
172
  <KImage.VectorIcons
167
- name="pin-outline"
168
- provider="MaterialCommunityIcons"
169
- size={14}
170
- color={KColors.palette.gray.w400}
173
+ name={'thumbtack-b'}
174
+ provider="DroppiiNew"
175
+ size={16}
176
+ color={KColors.primary.normal}
171
177
  />
172
178
  </KContainer.View>
173
179
  </KContainer.VisibleView>
@@ -3,22 +3,30 @@ import OpenIMSDK, {
3
3
  MessageReceiveOptType,
4
4
  } from '@droppii/openim-rn-client-sdk';
5
5
  import type { ConversationItem } from '@droppii/openim-rn-client-sdk';
6
- import { useConversationStore } from '../store';
6
+ import { UIUtils } from '../utils/UIUtils';
7
+ import { trans } from '../translation';
7
8
 
8
9
  export function useMuteConversation() {
9
10
  const muteConversation = useCallback(
10
11
  async (conversation?: ConversationItem) => {
11
12
  if (conversation == null) return;
12
13
 
13
- await OpenIMSDK.setConversationRecvMessageOpt({
14
- conversationID: conversation.conversationID,
15
- opt: MessageReceiveOptType.NotNotify,
16
- });
17
- useConversationStore
18
- .getState()
19
- .updateConversation(conversation.conversationID, {
20
- recvMsgOpt: MessageReceiveOptType.NotNotify,
14
+ try {
15
+ await OpenIMSDK.setConversationRecvMessageOpt({
16
+ conversationID: conversation.conversationID,
17
+ opt: MessageReceiveOptType.NotNotify,
21
18
  });
19
+ UIUtils.toast.open({
20
+ title: trans('chat:mute_toast_success'),
21
+ theme: 'light',
22
+ });
23
+ } catch (error) {
24
+ console.error('muteConversation failed', error);
25
+ UIUtils.toast.open({
26
+ title: trans('chat:generic_error'),
27
+ theme: 'error',
28
+ });
29
+ }
22
30
  },
23
31
  []
24
32
  );
@@ -27,15 +35,22 @@ export function useMuteConversation() {
27
35
  async (conversation?: ConversationItem) => {
28
36
  if (conversation == null) return;
29
37
 
30
- await OpenIMSDK.setConversationRecvMessageOpt({
31
- conversationID: conversation.conversationID,
32
- opt: MessageReceiveOptType.Normal,
33
- });
34
- useConversationStore
35
- .getState()
36
- .updateConversation(conversation.conversationID, {
37
- recvMsgOpt: MessageReceiveOptType.Normal,
38
+ try {
39
+ await OpenIMSDK.setConversationRecvMessageOpt({
40
+ conversationID: conversation.conversationID,
41
+ opt: MessageReceiveOptType.Normal,
42
+ });
43
+ UIUtils.toast.open({
44
+ title: trans('chat:unmute_toast_success'),
45
+ theme: 'light',
46
+ });
47
+ } catch (error) {
48
+ console.error('unmuteConversation failed', error);
49
+ UIUtils.toast.open({
50
+ title: trans('chat:generic_error'),
51
+ theme: 'error',
38
52
  });
53
+ }
39
54
  },
40
55
  []
41
56
  );
@@ -0,0 +1,87 @@
1
+ import { useCallback } from 'react';
2
+ import OpenIMSDK from '@droppii/openim-rn-client-sdk';
3
+ import type { ConversationItem } from '@droppii/openim-rn-client-sdk';
4
+ import { useConversationStore } from '../store';
5
+ import { UIUtils } from '../utils/UIUtils';
6
+ import { trans } from '../translation';
7
+
8
+ const MAX_PINNED_THREADS = 5;
9
+
10
+ const showPinThreadLimitModal = () => {
11
+ UIUtils.alert.open({
12
+ title: trans('chat:pin_thread_limit_title'),
13
+ message: trans('chat:pin_thread_limit_desc', {
14
+ maxCount: MAX_PINNED_THREADS,
15
+ }),
16
+ primaryIndex: 0,
17
+ buttonType: 'horizontal-button',
18
+ buttons: [
19
+ {
20
+ label: trans('chat:pin_thread_limit_button'),
21
+ kind: 'primary',
22
+ },
23
+ ],
24
+ });
25
+ };
26
+
27
+ export function usePinConversation() {
28
+ const pinConversation = useCallback(
29
+ async (conversation?: ConversationItem) => {
30
+ if (conversation == null) return;
31
+
32
+ try {
33
+ const pinnedCount = Object.values(
34
+ useConversationStore.getState().map
35
+ ).filter((c) => c.isPinned).length;
36
+ if (pinnedCount >= MAX_PINNED_THREADS) {
37
+ showPinThreadLimitModal();
38
+ return;
39
+ }
40
+
41
+ await OpenIMSDK.pinConversation({
42
+ conversationID: conversation.conversationID,
43
+ isPinned: true,
44
+ });
45
+
46
+ UIUtils.toast.open({
47
+ title: trans('chat:pin_thread_success'),
48
+ theme: 'light',
49
+ });
50
+ } catch (error) {
51
+ console.error('pinConversation failed', error);
52
+ UIUtils.toast.open({
53
+ title: trans('chat:generic_error'),
54
+ theme: 'error',
55
+ });
56
+ }
57
+ },
58
+ []
59
+ );
60
+
61
+ const unpinConversation = useCallback(
62
+ async (conversation?: ConversationItem) => {
63
+ if (conversation == null) return;
64
+
65
+ try {
66
+ await OpenIMSDK.pinConversation({
67
+ conversationID: conversation.conversationID,
68
+ isPinned: false,
69
+ });
70
+
71
+ UIUtils.toast.open({
72
+ title: trans('chat:unpin_thread_success'),
73
+ theme: 'light',
74
+ });
75
+ } catch (error) {
76
+ console.error('unpinConversation failed', error);
77
+ UIUtils.toast.open({
78
+ title: trans('chat:generic_error'),
79
+ theme: 'error',
80
+ });
81
+ }
82
+ },
83
+ []
84
+ );
85
+
86
+ return { pinConversation, unpinConversation };
87
+ }
@@ -51,6 +51,14 @@ const i18nKey: Record<string, string> = {
51
51
  'chat:pinned_messages_title': 'Tin nhắn đã ghim',
52
52
  'chat:pinned_messages_hint':
53
53
  'Nhấn vào tin nhắn để xem tin nhắn gốc, nhấn vào biểu tượng để bỏ ghim',
54
+ 'chat:pin_thread': 'Ghim',
55
+ 'chat:unpin_thread': 'Bỏ ghim',
56
+ 'chat:pin_thread_success': 'Đã ghim đoạn chat thành công',
57
+ 'chat:unpin_thread_success': 'Đã bỏ ghim đoạn chat thành công',
58
+ 'chat:pin_thread_limit_title': 'Không thể ghim đoạn chat',
59
+ 'chat:pin_thread_limit_desc':
60
+ 'Bạn đã ghim số đoạn chat tối đa. Để ghim đoạn chat này, trước tiên bạn phải bỏ ghim đoạn chat khác.',
61
+ 'chat:pin_thread_limit_button': 'OK',
54
62
  'chat:view_original_message': 'Xem tin nhắn gốc',
55
63
  'chat:scroll_to_message_todo':
56
64
  'Tính năng di chuyển đến tin nhắn gốc sẽ sớm được cập nhật',