@droppii-org/chat-mobile 0.2.34 → 0.2.37
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/hooks/useFileAttachment.js +3 -1
- package/lib/module/hooks/useFileAttachment.js.map +1 -1
- package/lib/module/hooks/useFileDownload.js +19 -17
- package/lib/module/hooks/useFileDownload.js.map +1 -1
- package/lib/module/hooks/useMuteConversation.js +4 -6
- package/lib/module/hooks/useMuteConversation.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetail.js +10 -1
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/PinnedMessageBar.js +8 -3
- package/lib/module/screens/chat-detail/PinnedMessageBar.js.map +1 -1
- package/lib/module/screens/chat-detail/PinnedMessagesSheet.js +173 -0
- package/lib/module/screens/chat-detail/PinnedMessagesSheet.js.map +1 -0
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxMenu.js +9 -1
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxMenu.js.map +1 -1
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxWrapper.js +1 -0
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxWrapper.js.map +1 -1
- package/lib/module/store/conversation.js +11 -0
- package/lib/module/store/conversation.js.map +1 -1
- package/lib/module/translation/resources/i18n.js +4 -1
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/chat.js.map +1 -1
- package/lib/module/utils/UIUtils.js +6 -0
- package/lib/module/utils/UIUtils.js.map +1 -1
- package/lib/typescript/src/hooks/useFileAttachment.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useFileDownload.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/PinnedMessageBar.d.ts +2 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessageBar.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheet.d.ts +10 -0
- package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheet.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.d.ts +9 -7
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.d.ts.map +1 -1
- package/lib/typescript/src/store/conversation.d.ts +1 -0
- 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 +3 -0
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/utils/UIUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/useFileAttachment.ts +3 -1
- package/src/hooks/useFileDownload.ts +19 -18
- package/src/hooks/useMuteConversation.ts +6 -6
- package/src/screens/chat-detail/ChatDetail.tsx +10 -0
- package/src/screens/chat-detail/PinnedMessageBar.tsx +9 -3
- package/src/screens/chat-detail/PinnedMessagesSheet.tsx +244 -0
- package/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.tsx +18 -6
- package/src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.tsx +1 -0
- package/src/store/conversation.ts +12 -0
- package/src/translation/resources/i18n.ts +6 -1
- package/src/types/chat.ts +1 -0
- package/src/utils/UIUtils.ts +5 -0
|
@@ -16,6 +16,17 @@ export const useConversationStore = create()((set, get) => ({
|
|
|
16
16
|
if (id == null) return;
|
|
17
17
|
return get().map[id];
|
|
18
18
|
},
|
|
19
|
+
updateConversation(id, data) {
|
|
20
|
+
const existing = get().map[id];
|
|
21
|
+
if (!existing) return;
|
|
22
|
+
set(sortConversation({
|
|
23
|
+
...get().map,
|
|
24
|
+
[id]: {
|
|
25
|
+
...existing,
|
|
26
|
+
...data
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
},
|
|
19
30
|
updateConversations(conversations) {
|
|
20
31
|
set(sortConversation(conversations.reduce((pre, curr) => {
|
|
21
32
|
pre[curr.conversationID] = curr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["create","sortConversation","useConversationStore","set","get","list","map","newConversationSignal","setCurrentConversation","id","currentConversationId","getCurrentConversation","updateConversations","conversations","reduce","pre","curr","conversationID","removeConversation","newMap","filter","item","reset","undefined","useConversation","state"],"sourceRoot":"../../../src","sources":["store/conversation.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,gBAAgB,QAAQ,0BAAuB;
|
|
1
|
+
{"version":3,"names":["create","sortConversation","useConversationStore","set","get","list","map","newConversationSignal","setCurrentConversation","id","currentConversationId","getCurrentConversation","updateConversation","data","existing","updateConversations","conversations","reduce","pre","curr","conversationID","removeConversation","newMap","filter","item","reset","undefined","useConversation","state"],"sourceRoot":"../../../src","sources":["store/conversation.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,gBAAgB,QAAQ,0BAAuB;AAuBxD,OAAO,MAAMC,oBAAoB,GAAGF,MAAM,CAAoB,CAAC,CAAC,CAACG,GAAG,EAAEC,GAAG,MAAM;EAC7EC,IAAI,EAAE,EAAE;EACRC,GAAG,EAAE,CAAC,CAAC;EACPC,qBAAqB,EAAE,CAAC;EACxBC,sBAAsBA,CAACC,EAAE,EAAE;IACzBN,GAAG,CAAC;MAAEO,qBAAqB,EAAED;IAAG,CAAC,CAAC;EACpC,CAAC;EACDE,sBAAsBA,CAAA,EAAG;IACvB,MAAMF,EAAE,GAAGL,GAAG,CAAC,CAAC,CAACM,qBAAqB;IACtC,IAAID,EAAE,IAAI,IAAI,EAAE;IAEhB,OAAOL,GAAG,CAAC,CAAC,CAACE,GAAG,CAACG,EAAE,CAAC;EACtB,CAAC;EACDG,kBAAkBA,CAACH,EAAE,EAAEI,IAAI,EAAE;IAC3B,MAAMC,QAAQ,GAAGV,GAAG,CAAC,CAAC,CAACE,GAAG,CAACG,EAAE,CAAC;IAC9B,IAAI,CAACK,QAAQ,EAAE;IAEfX,GAAG,CACDF,gBAAgB,CAAC;MACf,GAAGG,GAAG,CAAC,CAAC,CAACE,GAAG;MACZ,CAACG,EAAE,GAAG;QAAE,GAAGK,QAAQ;QAAE,GAAGD;MAAK;IAC/B,CAAC,CACH,CAAC;EACH,CAAC;EACDE,mBAAmBA,CAACC,aAAa,EAAE;IACjCb,GAAG,CACDF,gBAAgB,CACde,aAAa,CAACC,MAAM,CAClB,CAACC,GAAG,EAAEC,IAAI,KAAK;MACbD,GAAG,CAACC,IAAI,CAACC,cAAc,CAAC,GAAGD,IAAI;MAC/B,OAAOD,GAAG;IACZ,CAAC,EACD;MAAE,GAAGd,GAAG,CAAC,CAAC,CAACE;IAAI,CACjB,CACF,CACF,CAAC;EACH,CAAC;EACDe,kBAAkBA,CAACZ,EAAE,EAAE;IACrB,MAAMa,MAAM,GAAG;MAAE,GAAGlB,GAAG,CAAC,CAAC,CAACE;IAAI,CAAC;IAC/B,OAAOgB,MAAM,CAACb,EAAE,CAAC;IAEjBN,GAAG,CAAC;MACFG,GAAG,EAAEgB,MAAM;MACXjB,IAAI,EAAED,GAAG,CAAC,CAAC,CAACC,IAAI,CAACkB,MAAM,CAAEC,IAAI,IAAKA,IAAI,KAAKf,EAAE;IAC/C,CAAC,CAAC;EACJ,CAAC;EACDgB,KAAKA,CAAA,EAAG;IACNtB,GAAG,CAAC;MACFO,qBAAqB,EAAEgB,SAAS;MAChCrB,IAAI,EAAE,EAAE;MACRC,GAAG,EAAE,CAAC,CAAC;MACPC,qBAAqB,EAAE;IACzB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC,CAAC;AAEH,OAAO,MAAMoB,eAAe,GAAIlB,EAAU,IAAmC;EAC3E,OAAOP,oBAAoB,CAAE0B,KAAK,IAAKA,KAAK,CAACtB,GAAG,CAACG,EAAE,CAAC,CAAC;AACvD,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const i18nKey = {
|
|
4
4
|
'thread_card_bot_crm_name': 'Droppii Hỗ Trợ',
|
|
5
5
|
'thread_card_fallback_name': 'Người dùng',
|
|
6
|
-
'chat:file_too_large': 'Tệp
|
|
6
|
+
'chat:file_too_large': 'Tệp tải lên không hợp lệ. Kích thước tệp không được vượt quá {{maxSize}}MB',
|
|
7
7
|
'chat:file_max_count': 'Chỉ có thể đính kèm tối đa 3 tệp',
|
|
8
8
|
'chat:file_pick_failed': 'Không thể chọn tệp',
|
|
9
9
|
'chat:file_upload_failed': 'Lỗi tải tệp lên',
|
|
@@ -46,6 +46,9 @@ const i18nKey = {
|
|
|
46
46
|
'chat:pin_limit_title': 'Không thể ghim thêm tin nhắn',
|
|
47
47
|
'chat:pin_limit_desc': 'Chỉ được ghim tối đa 5 tin nhắn. Vui lòng bỏ ghim một tin nhắn hiện có trước khi ghim tin nhắn mới.',
|
|
48
48
|
'chat:pin_limit_primary': 'Đã hiểu',
|
|
49
|
+
'chat:pinned_messages_title': 'Tin nhắn đã ghim',
|
|
50
|
+
'chat:pinned_messages_hint': 'Nhấn giữ tin nhắn để chọn "Bỏ Ghim" hoặc "Xem tin nhắn gốc"',
|
|
51
|
+
'chat:view_original_message': 'Xem tin nhắn gốc',
|
|
49
52
|
'msg_type_image': '[Hình ảnh]',
|
|
50
53
|
'msg_type_voice': '[Tin nhắn thoại]',
|
|
51
54
|
'msg_type_video': '[Video]',
|
|
@@ -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,
|
|
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,wBAAwB;EACrD,sBAAsB,EAAE,8BAA8B;EACtD,qBAAqB,EACnB,qGAAqG;EACvG,wBAAwB,EAAE,SAAS;EACnC,4BAA4B,EAAE,kBAAkB;EAChD,2BAA2B,EACzB,6DAA6D;EAC/D,4BAA4B,EAAE,kBAAkB;EAChD,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;AACxB,CAAC;AAED,eAAe;EACbC,EAAE,EAAED;AACN,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventProvider","ga","appsflyer","netcore","DChatApplicationType","DChatCategory","DMemberRole","DFlowState","DBotStatusValue","DBotType","CustomMessageType","Order","Product"],"sourceRoot":"../../../src","sources":["types/chat.ts"],"mappings":";;AAcA,OAAO,MAAMA,aAAa,GAAG;EAC3BC,EAAE,EAAE,IAAI;EACRC,SAAS,EAAE,WAAW;EACtBC,OAAO,EAAE;AACX,CAAU;
|
|
1
|
+
{"version":3,"names":["EventProvider","ga","appsflyer","netcore","DChatApplicationType","DChatCategory","DMemberRole","DFlowState","DBotStatusValue","DBotType","CustomMessageType","Order","Product"],"sourceRoot":"../../../src","sources":["types/chat.ts"],"mappings":";;AAcA,OAAO,MAAMA,aAAa,GAAG;EAC3BC,EAAE,EAAE,IAAI;EACRC,SAAS,EAAE,WAAW;EACtBC,OAAO,EAAE;AACX,CAAU;AA8BV,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAKhC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAQzB,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAatB,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AA0HpB,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE;AACX,CAAU","ignoreList":[]}
|
|
@@ -17,6 +17,9 @@ const defaultAdapter = {
|
|
|
17
17
|
},
|
|
18
18
|
popup: {
|
|
19
19
|
open: openWithAlert
|
|
20
|
+
},
|
|
21
|
+
bottomSheet: {
|
|
22
|
+
open: openWithAlert
|
|
20
23
|
}
|
|
21
24
|
};
|
|
22
25
|
let _adapter = {};
|
|
@@ -32,6 +35,9 @@ export const UIUtils = {
|
|
|
32
35
|
},
|
|
33
36
|
popup: {
|
|
34
37
|
open: params => (_adapter.popup ?? defaultAdapter.popup).open(params)
|
|
38
|
+
},
|
|
39
|
+
bottomSheet: {
|
|
40
|
+
open: params => (_adapter.bottomSheet ?? defaultAdapter.bottomSheet).open(params)
|
|
35
41
|
}
|
|
36
42
|
};
|
|
37
43
|
//# sourceMappingURL=UIUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Alert","openWithAlert","params","title","message","alert","defaultAdapter","toast","open","popup","_adapter","registerUIUtils","adapter","UIUtils"],"sourceRoot":"../../../src","sources":["utils/UIUtils.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,cAAc;AAGpC,MAAMC,aAAa,GAAIC,MAA4C,IAAK;EACtE,MAAM;IAAEC,KAAK,GAAG,SAAS;IAAEC,OAAO,GAAG;EAAG,CAAC,GAAGF,MAAM,IAAI,CAAC,CAAC;EACxDF,KAAK,CAACK,KAAK,CAACF,KAAK,EAAEC,OAAO,CAAC;AAC7B,CAAC;AAED,MAAME,cAAuC,GAAG;EAC9CC,KAAK,EAAE;IAAEC,IAAI,EAAEP;EAAc,CAAC;EAC9BI,KAAK,EAAE;IAAEG,IAAI,EAAEP;EAAc,CAAC;EAC9BQ,KAAK,EAAE;IAAED,IAAI,EAAEP;EAAc;
|
|
1
|
+
{"version":3,"names":["Alert","openWithAlert","params","title","message","alert","defaultAdapter","toast","open","popup","bottomSheet","_adapter","registerUIUtils","adapter","UIUtils"],"sourceRoot":"../../../src","sources":["utils/UIUtils.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,cAAc;AAGpC,MAAMC,aAAa,GAAIC,MAA4C,IAAK;EACtE,MAAM;IAAEC,KAAK,GAAG,SAAS;IAAEC,OAAO,GAAG;EAAG,CAAC,GAAGF,MAAM,IAAI,CAAC,CAAC;EACxDF,KAAK,CAACK,KAAK,CAACF,KAAK,EAAEC,OAAO,CAAC;AAC7B,CAAC;AAED,MAAME,cAAuC,GAAG;EAC9CC,KAAK,EAAE;IAAEC,IAAI,EAAEP;EAAc,CAAC;EAC9BI,KAAK,EAAE;IAAEG,IAAI,EAAEP;EAAc,CAAC;EAC9BQ,KAAK,EAAE;IAAED,IAAI,EAAEP;EAAc,CAAC;EAC9BS,WAAW,EAAE;IAAEF,IAAI,EAAEP;EAAc;AACrC,CAAC;AAED,IAAIU,QAAuB,GAAG,CAAC,CAAC;AAEhC,OAAO,MAAMC,eAAe,GAAIC,OAAsB,IAAW;EAC/DF,QAAQ,GAAGE,OAAO;AACpB,CAAC;AAED,OAAO,MAAMC,OAAgC,GAAG;EAC9CP,KAAK,EAAE;IACLC,IAAI,EAAGN,MAAM,IAAK,CAACS,QAAQ,CAACJ,KAAK,IAAID,cAAc,CAACC,KAAK,EAAEC,IAAI,CAACN,MAAM;EACxE,CAAC;EACDG,KAAK,EAAE;IACLG,IAAI,EAAGN,MAAM,IAAK,CAACS,QAAQ,CAACN,KAAK,IAAIC,cAAc,CAACD,KAAK,EAAEG,IAAI,CAACN,MAAM;EACxE,CAAC;EACDO,KAAK,EAAE;IACLD,IAAI,EAAGN,MAAM,IAAK,CAACS,QAAQ,CAACF,KAAK,IAAIH,cAAc,CAACG,KAAK,EAAED,IAAI,CAACN,MAAM;EACxE,CAAC;EACDQ,WAAW,EAAE;IACXF,IAAI,EAAGN,MAAM,IACX,CAACS,QAAQ,CAACD,WAAW,IAAIJ,cAAc,CAACI,WAAW,EAAEF,IAAI,CAACN,MAAM;EACpE;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFileAttachment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useFileAttachment.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,QAAO,
|
|
1
|
+
{"version":3,"file":"useFileAttachment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useFileAttachment.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,QAAO,uBAuIpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFileDownload.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useFileDownload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFileDownload.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useFileDownload.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAaD,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,KAAK,MAAM;;;;CA0K5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatDetail.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatDetail.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChatDetail.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatDetail.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAW/C,QAAA,MAAM,UAAU,8PAgBX,eAAe,iCA6JnB,CAAC;AAQF,eAAe,UAAU,CAAC"}
|
|
@@ -2,7 +2,8 @@ import type { DMessageItem } from '../../types/chat';
|
|
|
2
2
|
interface PinnedMessageBarProps {
|
|
3
3
|
messages: DMessageItem[];
|
|
4
4
|
currentUserId?: string;
|
|
5
|
+
onPress?: () => void;
|
|
5
6
|
}
|
|
6
|
-
export declare const PinnedMessageBar: import("react").MemoExoticComponent<({ messages, currentUserId }: PinnedMessageBarProps) => import("react").JSX.Element>;
|
|
7
|
+
export declare const PinnedMessageBar: import("react").MemoExoticComponent<({ messages, currentUserId, onPress }: PinnedMessageBarProps) => import("react").JSX.Element>;
|
|
7
8
|
export {};
|
|
8
9
|
//# sourceMappingURL=PinnedMessageBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinnedMessageBar.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/PinnedMessageBar.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"PinnedMessageBar.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/PinnedMessageBar.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAwDD,eAAO,MAAM,gBAAgB,6EACY,qBAAqB,iCA4D7D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { MessageItem } from '@droppii/openim-rn-client-sdk';
|
|
3
|
+
import type { DMessageItem } from '../../types/chat';
|
|
4
|
+
export interface OpenPinnedMessagesSheetParams {
|
|
5
|
+
currentUserId?: string;
|
|
6
|
+
unpinMessage: (message: MessageItem) => void | Promise<void>;
|
|
7
|
+
customMessageItemFactory?: (item: DMessageItem) => ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export declare const openPinnedMessagesSheet: ({ currentUserId, unpinMessage, customMessageItemFactory, }: OpenPinnedMessagesSheetParams) => void;
|
|
10
|
+
//# sourceMappingURL=PinnedMessagesSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PinnedMessagesSheet.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/PinnedMessagesSheet.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAUjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmMrD,MAAM,WAAW,6BAA6B;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC;CAC9D;AAED,eAAO,MAAM,uBAAuB,GAAI,4DAIrC,6BAA6B,SAkB/B,CAAC"}
|
|
@@ -5,13 +5,15 @@ interface MessageToolboxMenuProps {
|
|
|
5
5
|
showUnpinMessage?: boolean;
|
|
6
6
|
showRetryMessage?: boolean;
|
|
7
7
|
showRevokeMessage?: boolean;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
showViewOriginalMessage?: boolean;
|
|
9
|
+
onCopyMessage?: () => void;
|
|
10
|
+
onCopyMessageLink?: () => void;
|
|
11
|
+
onPinMessage?: () => void;
|
|
12
|
+
onUnpinMessage?: () => void;
|
|
13
|
+
onRetryMessage?: () => void;
|
|
14
|
+
onRevokeMessage?: () => void;
|
|
15
|
+
onViewOriginalMessage?: () => void;
|
|
14
16
|
}
|
|
15
|
-
export declare const MessageToolboxMenu: import("react").MemoExoticComponent<({ showCopyMessage, showCopyMessageLink, showPinMessage, showUnpinMessage, showRetryMessage, showRevokeMessage, onCopyMessage, onCopyMessageLink, onPinMessage, onUnpinMessage, onRetryMessage, onRevokeMessage, }: MessageToolboxMenuProps) => import("react").JSX.Element>;
|
|
17
|
+
export declare const MessageToolboxMenu: import("react").MemoExoticComponent<({ showCopyMessage, showCopyMessageLink, showPinMessage, showUnpinMessage, showRetryMessage, showRevokeMessage, showViewOriginalMessage, onCopyMessage, onCopyMessageLink, onPinMessage, onUnpinMessage, onRetryMessage, onRevokeMessage, onViewOriginalMessage, }: MessageToolboxMenuProps) => import("react").JSX.Element>;
|
|
16
18
|
export {};
|
|
17
19
|
//# sourceMappingURL=MessageToolboxMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageToolboxMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/messageToolbox/MessageToolboxMenu.tsx"],"names":[],"mappings":"AAMA,UAAU,uBAAuB;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageToolboxMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/messageToolbox/MessageToolboxMenu.tsx"],"names":[],"mappings":"AAMA,UAAU,uBAAuB;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC;AAED,eAAO,MAAM,kBAAkB,0SAgB1B,uBAAuB,iCA6D3B,CAAC"}
|
package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageToolboxWrapper.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAO5C,KAAK,0BAA0B,GAAG;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,0FAO7B,0BAA0B,
|
|
1
|
+
{"version":3,"file":"MessageToolboxWrapper.d.ts","sourceRoot":"","sources":["../../../../../../src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAO5C,KAAK,0BAA0B,GAAG;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,0FAO7B,0BAA0B,iCA8D9B,CAAC"}
|
|
@@ -8,6 +8,7 @@ export interface ConversationStore {
|
|
|
8
8
|
map: Record<ConversationID, ConversationItem>;
|
|
9
9
|
/** Signal incremented when a truly new conversation arrives and a full refetch is needed. */
|
|
10
10
|
newConversationSignal: number;
|
|
11
|
+
updateConversation(id: ConversationID, data: Partial<ConversationItem>): void;
|
|
11
12
|
updateConversations(conversations: ConversationItem[]): void;
|
|
12
13
|
/**
|
|
13
14
|
* Patches existing conversations with real-time data from OpenIM events.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/store/conversation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,KAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,CAAC,EAAE,cAAc,CAAC;IACvC,sBAAsB,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAClD,sBAAsB,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACvD,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC9C,6FAA6F;IAC7F,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,aAAa,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAC7D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/store/conversation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,KAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,CAAC,EAAE,cAAc,CAAC;IACvC,sBAAsB,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAClD,sBAAsB,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACvD,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC9C,6FAA6F;IAC7F,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC9E,mBAAmB,CAAC,aAAa,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAC7D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,eAAO,MAAM,oBAAoB,gFAsD9B,CAAC;AAEJ,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,KAAG,gBAAgB,GAAG,SAE/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/translation/resources/i18n.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/translation/resources/i18n.ts"],"names":[],"mappings":";;;AAgFA,wBAEE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../src/types/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAErD,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAEX,KAAK,KAAK,GAAG,CACX,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,GAAG,EACZ,QAAQ,CAAC,EAAE,GAAG,MAAM,OAAO,aAAa,EAAE,KACvC,IAAI,CAAC;AAEV,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../src/types/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIUtils.d.ts","sourceRoot":"","sources":["../../../../src/utils/UIUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"UIUtils.d.ts","sourceRoot":"","sources":["../../../../src/utils/UIUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBnD,eAAO,MAAM,eAAe,GAAI,SAAS,aAAa,KAAG,IAExD,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,aAAa,CAc3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -99,7 +99,9 @@ export const useFileAttachment = (): UseFileAttachmentReturn => {
|
|
|
99
99
|
let candidates = picked;
|
|
100
100
|
if (oversized.length > 0) {
|
|
101
101
|
UIUtils.toast.open({
|
|
102
|
-
title: trans('chat:file_too_large'
|
|
102
|
+
title: trans('chat:file_too_large', {
|
|
103
|
+
maxSize: String(MAX_FILE_SIZE / 1024 / 1024),
|
|
104
|
+
}),
|
|
103
105
|
theme: 'danger',
|
|
104
106
|
});
|
|
105
107
|
candidates = picked.filter((f) => f.size <= MAX_FILE_SIZE);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
-
import { Platform, Share } from 'react-native';
|
|
3
2
|
import RNFS from 'react-native-fs';
|
|
4
3
|
import FileViewer from 'react-native-file-viewer';
|
|
4
|
+
import { saveDocuments } from '@react-native-documents/picker';
|
|
5
5
|
import { UIUtils } from '../utils/UIUtils';
|
|
6
6
|
import { trans } from '../translation';
|
|
7
|
+
import { getMimeType } from '../utils/imageUtils';
|
|
7
8
|
|
|
8
9
|
export type DownloadStatus = 'idle' | 'downloading' | 'done' | 'error';
|
|
9
10
|
|
|
@@ -26,10 +27,6 @@ const INITIAL_STATE: DownloadState = {
|
|
|
26
27
|
};
|
|
27
28
|
|
|
28
29
|
const CacheDir = RNFS.CachesDirectoryPath;
|
|
29
|
-
const DownloadDir =
|
|
30
|
-
Platform.OS === 'android'
|
|
31
|
-
? RNFS.DownloadDirectoryPath
|
|
32
|
-
: RNFS.CachesDirectoryPath;
|
|
33
30
|
|
|
34
31
|
export const useFileDownload = (fileName: string, url: string) => {
|
|
35
32
|
const [state, setState] = useState<DownloadState>(INITIAL_STATE);
|
|
@@ -145,8 +142,7 @@ export const useFileDownload = (fileName: string, url: string) => {
|
|
|
145
142
|
}
|
|
146
143
|
}
|
|
147
144
|
|
|
148
|
-
const searchDirs =
|
|
149
|
-
Platform.OS === 'android' ? [DownloadDir, CacheDir] : [CacheDir];
|
|
145
|
+
const searchDirs = [CacheDir];
|
|
150
146
|
for (const dir of searchDirs) {
|
|
151
147
|
const dirPath = `${dir}/${fileName}`;
|
|
152
148
|
try {
|
|
@@ -172,28 +168,33 @@ export const useFileDownload = (fileName: string, url: string) => {
|
|
|
172
168
|
if (path) openFile(path);
|
|
173
169
|
}, [state.status, state.localPath, fileName, openFile, runDownload]);
|
|
174
170
|
|
|
175
|
-
// Download button — cancel if in progress
|
|
176
|
-
//
|
|
177
|
-
// Android: download to Downloads dir and trigger media scan.
|
|
171
|
+
// Download button — cancel if in progress
|
|
172
|
+
// Download to cache then show "Save As" document picker
|
|
178
173
|
const handleDownload = useCallback(async () => {
|
|
179
174
|
if (state.status === 'downloading') {
|
|
180
175
|
cancel();
|
|
181
176
|
return;
|
|
182
177
|
}
|
|
183
|
-
|
|
178
|
+
try {
|
|
184
179
|
const cachedPath = `${CacheDir}/${fileName}`;
|
|
185
180
|
const exists = await RNFS.exists(cachedPath);
|
|
186
181
|
const localPath = exists ? cachedPath : await runDownload(CacheDir);
|
|
182
|
+
|
|
187
183
|
if (localPath) {
|
|
188
|
-
await
|
|
184
|
+
await saveDocuments({
|
|
185
|
+
sourceUris: [`file://${localPath}`],
|
|
186
|
+
mimeType: getMimeType(fileName),
|
|
187
|
+
fileName,
|
|
188
|
+
copy: true,
|
|
189
|
+
});
|
|
190
|
+
UIUtils.toast.open({
|
|
191
|
+
title: trans('chat:file_downloaded_success', { fileName }),
|
|
192
|
+
theme: 'info',
|
|
193
|
+
});
|
|
189
194
|
}
|
|
190
|
-
}
|
|
191
|
-
|
|
195
|
+
} catch (error) {
|
|
196
|
+
console.error(error);
|
|
192
197
|
}
|
|
193
|
-
UIUtils.toast.open({
|
|
194
|
-
title: trans('chat:file_downloaded_success', { fileName }),
|
|
195
|
-
theme: 'info',
|
|
196
|
-
});
|
|
197
198
|
}, [state.status, fileName, runDownload, cancel]);
|
|
198
199
|
|
|
199
200
|
return { state, handleView, handleDownload };
|
|
@@ -16,9 +16,9 @@ export function useMuteConversation() {
|
|
|
16
16
|
});
|
|
17
17
|
useConversationStore
|
|
18
18
|
.getState()
|
|
19
|
-
.
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
.updateConversation(conversation.conversationID, {
|
|
20
|
+
recvMsgOpt: MessageReceiveOptType.NotNotify,
|
|
21
|
+
});
|
|
22
22
|
},
|
|
23
23
|
[]
|
|
24
24
|
);
|
|
@@ -33,9 +33,9 @@ export function useMuteConversation() {
|
|
|
33
33
|
});
|
|
34
34
|
useConversationStore
|
|
35
35
|
.getState()
|
|
36
|
-
.
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
.updateConversation(conversation.conversationID, {
|
|
37
|
+
recvMsgOpt: MessageReceiveOptType.Normal,
|
|
38
|
+
});
|
|
39
39
|
},
|
|
40
40
|
[]
|
|
41
41
|
);
|
|
@@ -8,6 +8,7 @@ import { useNavigation } from '@react-navigation/native';
|
|
|
8
8
|
import { useChatMessages } from '../../hooks/useChatMessages';
|
|
9
9
|
import { usePinMessage } from '../../hooks/message/usePinMessage';
|
|
10
10
|
import { PinnedMessageBar } from './PinnedMessageBar';
|
|
11
|
+
import { openPinnedMessagesSheet } from './PinnedMessagesSheet';
|
|
11
12
|
import {
|
|
12
13
|
MediaViewerModal,
|
|
13
14
|
type MediaViewerModalHandle,
|
|
@@ -139,6 +140,14 @@ const ChatDetail = memo(
|
|
|
139
140
|
[]
|
|
140
141
|
);
|
|
141
142
|
|
|
143
|
+
const handlePressPinnedMessageBar = useCallback(() => {
|
|
144
|
+
openPinnedMessagesSheet({
|
|
145
|
+
currentUserId,
|
|
146
|
+
unpinMessage,
|
|
147
|
+
customMessageItemFactory,
|
|
148
|
+
});
|
|
149
|
+
}, [currentUserId, unpinMessage, customMessageItemFactory]);
|
|
150
|
+
|
|
142
151
|
return (
|
|
143
152
|
<KContainer.Page flex edges={['bottom']}>
|
|
144
153
|
<ChatDetailHeader
|
|
@@ -154,6 +163,7 @@ const ChatDetail = memo(
|
|
|
154
163
|
<PinnedMessageBar
|
|
155
164
|
messages={pinnedMessages}
|
|
156
165
|
currentUserId={currentUserId}
|
|
166
|
+
onPress={handlePressPinnedMessageBar}
|
|
157
167
|
/>
|
|
158
168
|
|
|
159
169
|
<KeyboardAvoidingView
|
|
@@ -18,6 +18,7 @@ import type { DMessageItem } from '../../types/chat';
|
|
|
18
18
|
interface PinnedMessageBarProps {
|
|
19
19
|
messages: DMessageItem[];
|
|
20
20
|
currentUserId?: string;
|
|
21
|
+
onPress?: () => void;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
const PinnedMessageThumbnail = memo(
|
|
@@ -75,7 +76,7 @@ const PinnedMessageThumbnail = memo(
|
|
|
75
76
|
PinnedMessageThumbnail.displayName = 'PinnedMessageThumbnail';
|
|
76
77
|
|
|
77
78
|
export const PinnedMessageBar = memo(
|
|
78
|
-
({ messages, currentUserId }: PinnedMessageBarProps) => {
|
|
79
|
+
({ messages, currentUserId, onPress }: PinnedMessageBarProps) => {
|
|
79
80
|
if (messages.length === 0) {
|
|
80
81
|
return null;
|
|
81
82
|
}
|
|
@@ -87,7 +88,11 @@ export const PinnedMessageBar = memo(
|
|
|
87
88
|
const { subtitleKey } = getPinnedMessagePreview(latest);
|
|
88
89
|
|
|
89
90
|
return (
|
|
90
|
-
<KContainer.
|
|
91
|
+
<KContainer.Touchable
|
|
92
|
+
activeOpacity={0.7}
|
|
93
|
+
onPress={onPress}
|
|
94
|
+
style={styles.container}
|
|
95
|
+
>
|
|
91
96
|
<PinnedMessageThumbnail message={latest} />
|
|
92
97
|
|
|
93
98
|
<KContainer.View row alignItems flex paddingR="0.75rem">
|
|
@@ -118,6 +123,7 @@ export const PinnedMessageBar = memo(
|
|
|
118
123
|
badge={`+${remainingCount}`}
|
|
119
124
|
skipConvertBadge
|
|
120
125
|
badgeSize={{ width: 26, height: 20 }}
|
|
126
|
+
// eslint-disable-next-line react-native/no-inline-styles
|
|
121
127
|
wrapperLabelTextStyle={{ paddingHorizontal: 3 }}
|
|
122
128
|
/>
|
|
123
129
|
)}
|
|
@@ -127,7 +133,7 @@ export const PinnedMessageBar = memo(
|
|
|
127
133
|
color={KColors.gray.normal}
|
|
128
134
|
/>
|
|
129
135
|
</KContainer.View>
|
|
130
|
-
</KContainer.
|
|
136
|
+
</KContainer.Touchable>
|
|
131
137
|
);
|
|
132
138
|
}
|
|
133
139
|
);
|