connect-x-reactnative-livechat-sdk 1.5.1-legacy → 1.6.0-legacy

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/README.md CHANGED
@@ -9,7 +9,8 @@ An SDK for easily integrating the Connect-X Live Chat into your React Native app
9
9
  * Displays chat history with date partitions.
10
10
  * Customizable styles and colors from from [Connect-X](https://app.connect-x.tech/) by navigating to: Organization Settings → Connector → Live Chat → Style.
11
11
  * Supports custom header components.
12
- * Image preview with zoom capabilities.
12
+ * Image preview with zoom capabilities and download (Save to Files on iOS, save-as on Android).
13
+ * Supports DNG, HEIC and JFIF images.
13
14
 
14
15
  ## 🔧 Installation
15
16
 
@@ -33,7 +34,7 @@ yarn connect-x-reactnative-livechat-sdk@1.4.7-legacy
33
34
  You need to install the following peer dependencies manually:
34
35
 
35
36
  ```bash
36
- npm install @react-native-documents/picker react-native-svg@13.4.0 react-native-image-zoom-viewer react-native-device-info @react-native-community/netinfo
37
+ npm install @react-native-documents/picker react-native-image-picker react-native-svg@13.4.0 react-native-image-zoom-viewer react-native-device-info react-native-blob-util @react-native-community/netinfo
37
38
  ```
38
39
 
39
40
  If you have a problem with @react-native-documents/picker,
@@ -59,11 +60,30 @@ https://github.com/react-native-documents/document-picker/issues/777#issuecommen
59
60
  This library requires some peer dependencies. You need to install these libraries in your project as well:
60
61
 
61
62
  ```bash
62
- npm install socket.io-client @react-native-documents/picker react-native-svg react-native-image-zoom-viewer react-native-device-info @react-native-community/netinfo
63
+ npm install socket.io-client @react-native-documents/picker react-native-image-picker react-native-svg react-native-image-zoom-viewer react-native-device-info react-native-blob-util @react-native-community/netinfo
63
64
 
64
65
  #or
65
66
 
66
- yarn add socket.io-client @react-native-documents/picker react-native-svg react-native-image-zoom-viewer react-native-device-info @react-native-community/netinfo
67
+ yarn add socket.io-client @react-native-documents/picker react-native-image-picker react-native-svg react-native-image-zoom-viewer react-native-device-info react-native-blob-util @react-native-community/netinfo
68
+ ```
69
+
70
+ ### Camera & Photo Library Permissions
71
+
72
+ The chat input has **File**, **Camera** and **Gallery** buttons (via `react-native-image-picker`). Add these to your app:
73
+
74
+ **iOS** (`Info.plist`):
75
+
76
+ ```xml
77
+ <key>NSCameraUsageDescription</key>
78
+ <string>Take a photo to send in live chat</string>
79
+ <key>NSPhotoLibraryUsageDescription</key>
80
+ <string>Choose a photo to send in live chat</string>
81
+ ```
82
+
83
+ **Android** (`AndroidManifest.xml`):
84
+
85
+ ```xml
86
+ <uses-permission android:name="android.permission.CAMERA" />
67
87
  ```
68
88
 
69
89
  ## 🚀 Usage
@@ -174,6 +194,18 @@ A method to open the chat window. It accepts a `config` object with the followin
174
194
 
175
195
  ---
176
196
 
197
+ ## 📝 Changelog
198
+
199
+ ### 1.6.0-legacy
200
+
201
+ * **Attach buttons:** the chat input has separate **File** (+ icon), **Camera** and **Gallery** buttons.
202
+ * **DNG / HEIC / JFIF:** these images can be sent, viewed and downloaded. Images the device can't decode fall back to a download link.
203
+ * **Correct file types:** DNG and HEIC picked from the iOS gallery keep their real extension instead of becoming `.jpg`.
204
+ * **Image preview:** the close button sits below the notch, and a new download button saves the image through the system Save to Files / save-as sheet.
205
+ * **New dependency:** `react-native-blob-util`. Install it and run `pod install` after upgrading.
206
+
207
+ ---
208
+
177
209
  ## 📄 License
178
210
 
179
211
  [![Apache License](https://img.shields.io/badge/License-Apache-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
@@ -2,16 +2,45 @@
2
2
 
3
3
  // src/ChatScreen.tsx
4
4
  import React, { useState, useEffect, useRef, useMemo } from 'react';
5
- import { View, Text, TextInput, TouchableOpacity, SectionList, StyleSheet, SafeAreaView, KeyboardAvoidingView, Platform, Image, ActivityIndicator, Alert, Linking, Dimensions, Modal } from 'react-native';
5
+ import { View, Text, TextInput, TouchableOpacity, SectionList, StyleSheet, SafeAreaView, KeyboardAvoidingView, Platform, StatusBar, Image, ActivityIndicator, Alert, Linking, Dimensions, Modal } from 'react-native';
6
6
  import io from 'socket.io-client';
7
- import { pick, types } from '@react-native-documents/picker';
7
+ import { errorCodes, pick, saveDocuments, types } from '@react-native-documents/picker';
8
+ import ReactNativeBlobUtil from 'react-native-blob-util';
9
+ import { launchCamera, launchImageLibrary } from 'react-native-image-picker';
8
10
  import { ConnectXMobileSdk } from 'connect-x-react-native-sdk';
9
- import { apiGet, uploadFile, BASE_URL_LIVE_CHAT, apiPost, buildConnectorBody } from "./api.js";
11
+ import { apiGet, uploadFile, BASE_URL_LIVE_CHAT, apiPost, buildConnectorBody, fileMimeType, sniffImageExt } from "./api.js";
10
12
  import Svg, { ClipPath, Defs, G, Path, Rect } from 'react-native-svg';
11
13
  import hexToRgba from 'hex-to-rgba';
12
14
  import ImageViewer from 'react-native-image-zoom-viewer';
13
15
  import { mergeIncomingMessage, mergeHistory, messageSig } from "./mergeMessages.js";
14
16
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
+ // ponytail: ไอคอน SVG ในไฟล์ แทน vector-icons เพราะไม่ต้องให้แอปที่ใช้ SDK link font เพิ่ม
18
+ const ATTACH_ICONS = {
19
+ file: 'M12 5v14M5 12h14',
20
+ camera: 'M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2zM12 17a4 4 0 1 0 0-8 4 4 0 0 0 0 8z',
21
+ gallery: 'M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zM8.5 10a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM21 15l-5-5L5 21',
22
+ download: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3'
23
+ };
24
+
25
+ // ระยะจากขอบบนของ preview ให้พ้น status bar / notch
26
+ // ponytail: ค่าคงที่ ไม่ใช้ safe-area lib; iOS 60 พอสำหรับ Dynamic Island
27
+ const VIEWER_TOP = Platform.OS === 'ios' ? 60 : (StatusBar.currentHeight ?? 0) + 16;
28
+ const AttachIcon = ({
29
+ name,
30
+ color = '#525E62'
31
+ }) => /*#__PURE__*/_jsx(Svg, {
32
+ width: 22,
33
+ height: 22,
34
+ viewBox: "0 0 24 24",
35
+ fill: "none",
36
+ children: /*#__PURE__*/_jsx(Path, {
37
+ d: ATTACH_ICONS[name],
38
+ stroke: color,
39
+ strokeWidth: 2,
40
+ strokeLinecap: "round",
41
+ strokeLinejoin: "round"
42
+ })
43
+ });
15
44
  const SendIcon = ({
16
45
  size,
17
46
  backgroundColor,
@@ -64,6 +93,8 @@ export const ChatScreen = ({
64
93
  const socketRef = useRef(null);
65
94
  const hasConnectedRef = useRef(false);
66
95
  const [userId, setUserId] = useState(null);
96
+ // ponytail: url ที่ <Image> decode ไม่ผ่าน (dng/heic บน Android ฯลฯ) → ตกไปเป็นลิงก์ดาวน์โหลด
97
+ const [undecodableUrls, setUndecodableUrls] = useState({});
67
98
  const [selectedFile, setSelectedFile] = useState(null);
68
99
  const [settings, setSettings] = useState(null);
69
100
  const [styles, setStyles] = useState({});
@@ -339,10 +370,19 @@ export const ChatScreen = ({
339
370
  const handleSelectFile = async () => {
340
371
  try {
341
372
  const result = await pick({
342
- type: [types.images, types.doc, types.pdf],
373
+ // ponytail: allFiles เพราะ iOS ไม่รู้จักนามสกุลแปลก ๆ (.jfif) เลย grey out
374
+ // ถ้าปล่อยเป็น public.image; ชนิดไฟล์คัดตอนส่งด้วย mime อยู่แล้ว
375
+ type: [types.allFiles],
343
376
  allowMultiSelection: false
344
377
  });
345
- setSelectedFile(result[0]);
378
+ const file = result[0];
379
+ if (file) {
380
+ setSelectedFile({
381
+ uri: file.uri,
382
+ name: file.name || 'file',
383
+ type: file.type
384
+ });
385
+ }
346
386
  } catch (err) {
347
387
  if (err?.code !== 'DOCUMENT_PICKER_CANCELED') {
348
388
  // Alert.alert(
@@ -352,6 +392,51 @@ export const ChatScreen = ({
352
392
  }
353
393
  }
354
394
  };
395
+
396
+ // อ่านแค่ 12 byte แรกของไฟล์ ไว้เช็คชนิดจริง
397
+ const readFileHead = async uri => {
398
+ try {
399
+ const head = `${ReactNativeBlobUtil.fs.dirs.CacheDir}/head_${Date.now()}`;
400
+ await ReactNativeBlobUtil.fs.slice(uri.replace('file://', ''), head, 0, 12);
401
+ const bytes = await ReactNativeBlobUtil.fs.readFile(head, 'ascii');
402
+ ReactNativeBlobUtil.fs.unlink(head).catch(() => {});
403
+ return bytes;
404
+ } catch {
405
+ return [];
406
+ }
407
+ };
408
+ const handleImagePicked = async res => {
409
+ if (res.didCancel) return;
410
+ const asset = res.assets?.[0];
411
+ if (res.errorCode || !asset?.uri) {
412
+ if (res.errorCode === 'permission') {
413
+ Alert.alert('Permission required', 'Please allow access in Settings.');
414
+ }
415
+ return;
416
+ }
417
+ let name = asset.fileName || `image_${Date.now()}.jpg`;
418
+ let type = asset.type || 'image/jpeg';
419
+ const realExt = sniffImageExt(await readFileHead(asset.uri));
420
+ if (realExt) {
421
+ name = `${name.replace(/\.[^.]+$/, '')}.${realExt}`;
422
+ type = fileMimeType({
423
+ name
424
+ });
425
+ }
426
+ setSelectedFile({
427
+ uri: asset.uri,
428
+ name,
429
+ type
430
+ });
431
+ };
432
+ const handleOpenCamera = () => launchCamera({
433
+ mediaType: 'photo',
434
+ saveToPhotos: false
435
+ }).then(handleImagePicked);
436
+ const handleOpenGallery = () => launchImageLibrary({
437
+ mediaType: 'photo',
438
+ selectionLimit: 1
439
+ }).then(handleImagePicked);
355
440
  const MessageWithLinks = ({
356
441
  text,
357
442
  textStyle,
@@ -375,8 +460,9 @@ export const ChatScreen = ({
375
460
  })
376
461
  });
377
462
  };
463
+ const isDisplayableImage = item => item.type === 'image' && !!item.url && !undecodableUrls[item.url];
378
464
  const openImageViewer = tappedImageUrl => {
379
- const allImages = messages.filter(msg => msg.type === 'image' && msg.url).map(msg => ({
465
+ const allImages = messages.filter(isDisplayableImage).map(msg => ({
380
466
  url: msg.url
381
467
  }));
382
468
  const tappedIndex = allImages.findIndex(img => img.url === tappedImageUrl);
@@ -386,6 +472,30 @@ export const ChatScreen = ({
386
472
  setImageViewerVisible(true);
387
473
  }
388
474
  };
475
+
476
+ // โหลดรูปลง cache ก่อน แล้วเปิดหน้า "Save to Files" (iOS) / "บันทึกเป็น" (Android)
477
+ // เพราะ saveDocuments รับแค่ไฟล์ในเครื่อง
478
+ const handleDownloadImage = async url => {
479
+ try {
480
+ // ใช้ชื่อไฟล์ตอนส่ง (เช่น .dng / .jfif) ก่อน ชื่อใน url อาจถูก storage เปลี่ยนนามสกุล
481
+ const name = messages.find(m => m.url === url)?.fileName || decodeURIComponent(url.split('?')[0].split('/').pop() || 'image');
482
+ const res = await ReactNativeBlobUtil.config({
483
+ path: `${ReactNativeBlobUtil.fs.dirs.CacheDir}/${name}`
484
+ }).fetch('GET', url);
485
+ await saveDocuments({
486
+ sourceUris: [`file://${res.path()}`],
487
+ fileName: name,
488
+ mimeType: fileMimeType({
489
+ name
490
+ })
491
+ });
492
+ } catch (err) {
493
+ if (err?.code !== errorCodes.OPERATION_CANCELED) {
494
+ Alert.alert('Download Error', 'Failed to save the image.');
495
+ console.error('Download failed', err);
496
+ }
497
+ }
498
+ };
389
499
  const handleCancelUpload = () => {
390
500
  if (isUploading) return;
391
501
  setSelectedFile(null);
@@ -395,7 +505,7 @@ export const ChatScreen = ({
395
505
  setIsUploading(true);
396
506
  try {
397
507
  const fileUrl = await uploadFile(selectedFile, orgId, channelId);
398
- const type = selectedFile.type?.startsWith('image/') ? 'image' : 'file';
508
+ const type = fileMimeType(selectedFile).startsWith('image/') ? 'image' : 'file';
399
509
  const messageBody = {
400
510
  type,
401
511
  fileName: selectedFile.name || 'file',
@@ -463,16 +573,20 @@ export const ChatScreen = ({
463
573
  text: item.text || '',
464
574
  textStyle: item.sender === 'user' ? styles.customerChatText : styles.agentChatText,
465
575
  linkStyle: styles.linkTextStyle
466
- }), item.type === 'image' && /*#__PURE__*/_jsx(TouchableOpacity, {
576
+ }), isDisplayableImage(item) && /*#__PURE__*/_jsx(TouchableOpacity, {
467
577
  onPress: () => openImageViewer(item.url),
468
578
  children: /*#__PURE__*/_jsx(Image, {
469
579
  source: {
470
580
  uri: item.url
471
581
  },
472
582
  style: styles.imageMessage,
473
- resizeMode: "cover"
583
+ resizeMode: "cover",
584
+ onError: () => setUndecodableUrls(prev => ({
585
+ ...prev,
586
+ [item.url]: true
587
+ }))
474
588
  })
475
- }), item.type === 'file' && /*#__PURE__*/_jsx(TouchableOpacity, {
589
+ }), (item.type === 'file' || item.type === 'image' && !isDisplayableImage(item)) && /*#__PURE__*/_jsx(TouchableOpacity, {
476
590
  onPress: handleFilePress,
477
591
  children: /*#__PURE__*/_jsx(Text, {
478
592
  style: [styles.fileLink, item.sender === 'user' ? styles.customerChatText : styles.agentChatText],
@@ -512,7 +626,9 @@ export const ChatScreen = ({
512
626
  renderIndicator: (currentIndex, allSize) => /*#__PURE__*/_jsx(View, {
513
627
  style: {
514
628
  position: 'absolute',
515
- top: 45,
629
+ top: VIEWER_TOP,
630
+ height: 42,
631
+ justifyContent: 'center',
516
632
  width: '100%',
517
633
  alignItems: 'center',
518
634
  zIndex: 1
@@ -526,30 +642,41 @@ export const ChatScreen = ({
526
642
  children: [currentIndex, " / ", allSize]
527
643
  })
528
644
  }),
529
- renderHeader: () => /*#__PURE__*/_jsx(TouchableOpacity
530
- // FIX 1: Add dynamic top spacing and zIndex
531
- , {
532
- style: [styles.imageViewerCloseButton, {
533
- top: 30,
534
- zIndex: 9999,
535
- // Force it to be the top-most layer
536
- position: 'absolute',
537
- // Ensure it floats correctly
538
- right: 20
539
- }]
540
- // FIX 2: Add hitSlop so users don't have to hit the "X" pixel-perfectly
541
- ,
542
- hitSlop: {
543
- top: 30,
544
- bottom: 30,
545
- left: 30,
546
- right: 30
547
- },
548
- onPress: () => setImageViewerVisible(false),
549
- children: /*#__PURE__*/_jsx(Text, {
550
- style: styles.imageViewerCloseButtonText,
551
- children: "\u2715"
552
- })
645
+ renderHeader: currentIndex => /*#__PURE__*/_jsxs(View, {
646
+ pointerEvents: "box-none",
647
+ style: [styles.imageViewerHeader, {
648
+ top: VIEWER_TOP
649
+ }],
650
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
651
+ style: styles.imageViewerCloseButton,
652
+ hitSlop: {
653
+ top: 20,
654
+ bottom: 20,
655
+ left: 20,
656
+ right: 20
657
+ },
658
+ onPress: () => {
659
+ const url = viewerImages[currentIndex ?? 0]?.url;
660
+ if (url) handleDownloadImage(url);
661
+ },
662
+ children: /*#__PURE__*/_jsx(AttachIcon, {
663
+ name: "download",
664
+ color: "white"
665
+ })
666
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
667
+ style: styles.imageViewerCloseButton,
668
+ hitSlop: {
669
+ top: 20,
670
+ bottom: 20,
671
+ left: 20,
672
+ right: 20
673
+ },
674
+ onPress: () => setImageViewerVisible(false),
675
+ children: /*#__PURE__*/_jsx(Text, {
676
+ style: styles.imageViewerCloseButtonText,
677
+ children: "\u2715"
678
+ })
679
+ })]
553
680
  })
554
681
  })
555
682
  }), customHeader !== undefined ? customHeader : /*#__PURE__*/_jsxs(View, {
@@ -650,13 +777,23 @@ export const ChatScreen = ({
650
777
  children: [/*#__PURE__*/_jsx(TouchableOpacity, {
651
778
  onPress: handleSelectFile,
652
779
  style: styles.attachmentButton,
653
- children: /*#__PURE__*/_jsxs(View, {
654
- style: styles.plusIconContainer,
655
- children: [/*#__PURE__*/_jsx(View, {
656
- style: [styles.plusIconBar, styles.plusIconBarHorizontal]
657
- }), /*#__PURE__*/_jsx(View, {
658
- style: [styles.plusIconBar, styles.plusIconBarVertical]
659
- })]
780
+ accessibilityLabel: "Attach file",
781
+ children: /*#__PURE__*/_jsx(AttachIcon, {
782
+ name: "file"
783
+ })
784
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
785
+ onPress: handleOpenCamera,
786
+ style: styles.attachmentButton,
787
+ accessibilityLabel: "Take photo",
788
+ children: /*#__PURE__*/_jsx(AttachIcon, {
789
+ name: "camera"
790
+ })
791
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
792
+ onPress: handleOpenGallery,
793
+ style: styles.attachmentButton,
794
+ accessibilityLabel: "Choose from gallery",
795
+ children: /*#__PURE__*/_jsx(AttachIcon, {
796
+ name: "gallery"
660
797
  })
661
798
  }), /*#__PURE__*/_jsx(TextInput, {
662
799
  style: styles.input,
@@ -907,26 +1044,6 @@ const getDynamicStyles = (settingStyle = {}) => {
907
1044
  fontWeight: 'bold',
908
1045
  fontSize: 16
909
1046
  },
910
- plusIconContainer: {
911
- width: 10,
912
- height: 18,
913
- justifyContent: 'center',
914
- alignItems: 'center'
915
- },
916
- plusIconBar: {
917
- position: 'absolute',
918
- backgroundColor: '#525E62'
919
- },
920
- plusIconBarHorizontal: {
921
- width: 18,
922
- height: 2,
923
- borderRadius: 1
924
- },
925
- plusIconBarVertical: {
926
- width: 2,
927
- height: 18,
928
- borderRadius: 1
929
- },
930
1047
  imageMessage: {
931
1048
  width: 200,
932
1049
  height: 200,
@@ -1014,11 +1131,16 @@ const getDynamicStyles = (settingStyle = {}) => {
1014
1131
  fontSize: 12,
1015
1132
  fontWeight: 'bold'
1016
1133
  },
1017
- imageViewerCloseButton: {
1134
+ imageViewerHeader: {
1018
1135
  position: 'absolute',
1019
- top: 20,
1020
- right: 20,
1021
- zIndex: 20,
1136
+ left: 10,
1137
+ right: 10,
1138
+ zIndex: 9999,
1139
+ flexDirection: 'row',
1140
+ justifyContent: 'space-between',
1141
+ alignItems: 'center'
1142
+ },
1143
+ imageViewerCloseButton: {
1022
1144
  padding: 10
1023
1145
  },
1024
1146
  imageViewerCloseButtonText: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","useRef","useMemo","View","Text","TextInput","TouchableOpacity","SectionList","StyleSheet","SafeAreaView","KeyboardAvoidingView","Platform","Image","ActivityIndicator","Alert","Linking","Dimensions","Modal","io","pick","types","ConnectXMobileSdk","apiGet","uploadFile","BASE_URL_LIVE_CHAT","apiPost","buildConnectorBody","Svg","ClipPath","Defs","G","Path","Rect","hexToRgba","ImageViewer","mergeIncomingMessage","mergeHistory","messageSig","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SendIcon","size","backgroundColor","iconColor","width","height","viewBox","fill","children","rx","id","transform","clipPath","fillRule","clipRule","d","ChatScreen","onClose","token","orgId","channelId","externalValue","customHeader","customer","messages","setMessages","inputText","setInputText","loading","setLoading","sendError","setSendError","errorTimer","socketRef","hasConnectedRef","userId","setUserId","selectedFile","setSelectedFile","settings","setSettings","styles","setStyles","chatPhase","setChatPhase","isUploading","setIsUploading","isImageViewerVisible","setImageViewerVisible","viewerImages","setViewerImages","viewerIndex","setViewerIndex","findCustomer","_unknownId","body","console","log","res","error","alert","initializeUserId","checkAllowed","getUnknownId","initializeChat","resSettings","getDynamicStyles","history","current","socket","transports","on","emit","socketId","then","fresh","prev","catch","e","payload","message","reason","disconnect","messageSections","length","groupedMessages","reduce","acc","dateKey","Date","timestamp","toLocaleDateString","push","Object","keys","sort","reverse","map","date","title","day","month","year","data","PreChatForm","onSubmit","headerColor","formData","setFormData","consentChecked","setConsentChecked","handleInputChange","field","value","handleStartChat","style","safeArea","formContainer","formWelcomeText","formInputContainer","formLabel","formInput","placeholder","placeholderTextColor","onChangeText","text","consentContainer","onPress","checkboxBase","accessibilityRole","accessibilityState","checked","checkmark","consentText","color","consentLink","formFooter","startButton","startButtonText","showSendError","msg","clearTimeout","setTimeout","handleSendText","trim","connected","type","sender","now","timeout","organizeId","err","handleSelectFile","result","images","doc","pdf","allowMultiSelection","code","MessageWithLinks","textStyle","linkStyle","urlRegex","parts","split","part","index","match","openURL","openImageViewer","tappedImageUrl","allImages","filter","url","tappedIndex","findIndex","img","handleCancelUpload","handleConfirmUpload","fileUrl","startsWith","messageBody","fileName","name","fullMessage","formatTimestamp","messageTime","getTime","differenceInSeconds","toLocaleTimeString","hour","minute","hour12","renderMessage","item","handleFilePress","messageRow","userRow","agentRow","styleLogoUrl","source","uri","avatar","timestampText","messageAgentContainer","messageContainer","messageBubble","userBubble","agentBubble","customerChatText","agentChatText","linkTextStyle","imageMessage","resizeMode","fileLink","pop","flex","justifyContent","alignItems","visible","transparent","imageUrls","onCancel","enableSwipeDown","renderIndicator","currentIndex","allSize","position","top","zIndex","fontSize","fontWeight","renderHeader","imageViewerCloseButton","right","hitSlop","bottom","left","imageViewerCloseButtonText","undefined","header","headerProfile","headerAvatar","headerTitle","closeButtonText","container","behavior","OS","styleHeadColor","inverted","sections","renderItem","renderSectionFooter","section","datePartition","datePartitionText","keyExtractor","messageList","inputContainer","errorBanner","errorBannerText","uploadPreviewContainer","fileInfoContainer","fileNameText","numberOfLines","buttonRow","uploadButton","actionButton","disabled","uploadButtonText","cancelButton","cancelButtonText","normalInputContainer","attachmentButton","plusIconContainer","plusIconBar","plusIconBarHorizontal","plusIconBarVertical","input","sendButton","styleTextColor","settingStyle","screenWidth","get","create","centered","flexDirection","paddingVertical","paddingHorizontal","paddingTop","borderRadius","marginRight","marginVertical","maxWidth","flexWrap","alignSelf","styleAgentColor","styleCustomerColor","styleCustomerTextColor","styleAgentTextColor","textDecorationLine","marginHorizontal","borderTopWidth","borderTopColor","borderWidth","borderColor","elevation","textAlign","padding","disabledButton","opacity","paddingRight","marginLeft","marginTop","margin","marginBottom","checkboxChecked"],"sourceRoot":"../../src","sources":["ChatScreen.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","useEffect","useRef","useMemo","View","Text","TextInput","TouchableOpacity","SectionList","StyleSheet","SafeAreaView","KeyboardAvoidingView","Platform","StatusBar","Image","ActivityIndicator","Alert","Linking","Dimensions","Modal","io","errorCodes","pick","saveDocuments","types","ReactNativeBlobUtil","launchCamera","launchImageLibrary","ConnectXMobileSdk","apiGet","uploadFile","BASE_URL_LIVE_CHAT","apiPost","buildConnectorBody","fileMimeType","sniffImageExt","Svg","ClipPath","Defs","G","Path","Rect","hexToRgba","ImageViewer","mergeIncomingMessage","mergeHistory","messageSig","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ATTACH_ICONS","file","camera","gallery","download","VIEWER_TOP","OS","currentHeight","AttachIcon","name","color","width","height","viewBox","fill","children","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","SendIcon","size","backgroundColor","iconColor","rx","id","transform","clipPath","fillRule","clipRule","ChatScreen","onClose","token","orgId","channelId","externalValue","customHeader","customer","messages","setMessages","inputText","setInputText","loading","setLoading","sendError","setSendError","errorTimer","socketRef","hasConnectedRef","userId","setUserId","undecodableUrls","setUndecodableUrls","selectedFile","setSelectedFile","settings","setSettings","styles","setStyles","chatPhase","setChatPhase","isUploading","setIsUploading","isImageViewerVisible","setImageViewerVisible","viewerImages","setViewerImages","viewerIndex","setViewerIndex","findCustomer","_unknownId","body","console","log","res","error","alert","initializeUserId","checkAllowed","getUnknownId","initializeChat","resSettings","getDynamicStyles","history","current","socket","transports","on","emit","socketId","then","fresh","prev","catch","e","payload","message","reason","disconnect","messageSections","length","groupedMessages","reduce","acc","dateKey","Date","timestamp","toLocaleDateString","push","Object","keys","sort","reverse","map","date","title","day","month","year","data","PreChatForm","onSubmit","headerColor","formData","setFormData","consentChecked","setConsentChecked","handleInputChange","field","value","handleStartChat","style","safeArea","formContainer","formWelcomeText","formInputContainer","formLabel","formInput","placeholder","placeholderTextColor","onChangeText","text","consentContainer","onPress","checkboxBase","accessibilityRole","accessibilityState","checked","checkmark","consentText","consentLink","formFooter","startButton","startButtonText","showSendError","msg","clearTimeout","setTimeout","handleSendText","trim","connected","type","sender","now","timeout","organizeId","err","handleSelectFile","result","allFiles","allowMultiSelection","uri","code","readFileHead","head","fs","dirs","CacheDir","slice","replace","bytes","readFile","unlink","handleImagePicked","didCancel","asset","assets","errorCode","fileName","realExt","handleOpenCamera","mediaType","saveToPhotos","handleOpenGallery","selectionLimit","MessageWithLinks","textStyle","linkStyle","urlRegex","parts","split","part","index","match","openURL","isDisplayableImage","item","url","openImageViewer","tappedImageUrl","allImages","filter","tappedIndex","findIndex","img","handleDownloadImage","find","m","decodeURIComponent","pop","config","path","fetch","sourceUris","mimeType","OPERATION_CANCELED","handleCancelUpload","handleConfirmUpload","fileUrl","startsWith","messageBody","fullMessage","formatTimestamp","messageTime","getTime","differenceInSeconds","toLocaleTimeString","hour","minute","hour12","renderMessage","handleFilePress","messageRow","userRow","agentRow","styleLogoUrl","source","avatar","timestampText","messageAgentContainer","messageContainer","messageBubble","userBubble","agentBubble","customerChatText","agentChatText","linkTextStyle","imageMessage","resizeMode","onError","fileLink","flex","justifyContent","alignItems","visible","transparent","imageUrls","onCancel","enableSwipeDown","renderIndicator","currentIndex","allSize","position","top","zIndex","fontSize","fontWeight","renderHeader","pointerEvents","imageViewerHeader","imageViewerCloseButton","hitSlop","bottom","left","right","imageViewerCloseButtonText","undefined","header","headerProfile","headerAvatar","headerTitle","closeButtonText","container","behavior","styleHeadColor","inverted","sections","renderItem","renderSectionFooter","section","datePartition","datePartitionText","keyExtractor","messageList","inputContainer","errorBanner","errorBannerText","uploadPreviewContainer","fileInfoContainer","fileNameText","numberOfLines","buttonRow","uploadButton","actionButton","disabled","uploadButtonText","cancelButton","cancelButtonText","normalInputContainer","attachmentButton","accessibilityLabel","input","sendButton","styleTextColor","settingStyle","screenWidth","get","create","centered","flexDirection","paddingVertical","paddingHorizontal","paddingTop","borderRadius","marginRight","marginVertical","maxWidth","flexWrap","alignSelf","styleAgentColor","styleCustomerColor","styleCustomerTextColor","styleAgentTextColor","textDecorationLine","marginHorizontal","borderTopWidth","borderTopColor","borderWidth","borderColor","elevation","textAlign","padding","disabledButton","opacity","paddingRight","marginLeft","marginTop","margin","marginBottom","checkboxChecked"],"sourceRoot":"../../src","sources":["ChatScreen.tsx"],"mappings":"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","ignoreList":[]}
package/lib/module/api.js CHANGED
@@ -12,6 +12,32 @@ export const buildConnectorBody = opts => ({
12
12
  customers: opts.customer
13
13
  })
14
14
  });
15
+
16
+ // ponytail: picker บาง provider คืน type เป็น null/octet-stream สำหรับ dng, heic, jfif
17
+ // ถ้าปล่อยไป storage จะเก็บ content-type ผิด แล้ว view/download ต่อไม่ได้
18
+ const MIME_BY_EXT = {
19
+ dng: 'image/x-adobe-dng',
20
+ heic: 'image/heic',
21
+ heif: 'image/heif',
22
+ jfif: 'image/jpeg'
23
+ };
24
+ export const fileMimeType = file => {
25
+ const ext = file.name?.split('.').pop()?.toLowerCase() ?? '';
26
+ const known = file.type && file.type !== 'application/octet-stream' ? file.type : null;
27
+ return known || MIME_BY_EXT[ext] || file.type || 'application/octet-stream';
28
+ };
29
+
30
+ // ponytail: image-picker บน iOS ดูแค่ byte แรก ไฟล์ที่ไม่ใช่ png/gif เลยถูกตั้งชื่อ .jpg หมด
31
+ // (dng/heic ก็กลายเป็น .jpg) ตรงนี้ดู magic bytes เองว่าจริงๆ เป็นอะไร
32
+ // TIFF header ถือว่าเป็น dng เพราะ RAW ใน Photos ส่วนใหญ่เป็น dng
33
+ export const sniffImageExt = bytes => {
34
+ const head = String.fromCharCode(...bytes.slice(0, 12));
35
+ if (head.startsWith('II*\0') || head.startsWith('MM\0*')) return 'dng';
36
+ if (/^.{4}ftyp(heic|heix|hevc|heim|heis|mif1|msf1)/s.test(head)) {
37
+ return 'heic';
38
+ }
39
+ return null;
40
+ };
15
41
  export const apiGet = async (path, token) => {
16
42
  console.log(`GET ${BASE_URL_LIVE_CHAT}/connectx/api/${path}`);
17
43
  const headers = {
@@ -55,7 +81,7 @@ export const uploadFile = async (file, organizeId, channelId) => {
55
81
  formData.append('file', {
56
82
  uri: file.uri,
57
83
  name: file.name,
58
- type: file.type
84
+ type: fileMimeType(file)
59
85
  });
60
86
  formData.append('path', `Organizes/${organizeId}/connector/liveChat/channel/${channelId}`);
61
87
  formData.append('isPublic', 'true');
@@ -1 +1 @@
1
- {"version":3,"names":["BASE_URL_LIVE_CHAT","BASE_URL_TRACKING","buildConnectorBody","opts","externalValue","customer","Object","keys","length","customers","apiGet","path","token","console","log","headers","response","fetch","method","ok","errorData","json","catch","Error","apiPost","body","userId","JSON","stringify","uploadFile","file","organizeId","channelId","APIEndpoint","formData","FormData","append","uri","name","type","result","url"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;AAAA,OAAO,MAAMA,kBAAkB,GAAG,kCAAkC;AACpE;AACA,MAAMC,iBAAiB,GAAG,iCAAiC;AAC3D;AACA,OAAO,MAAMC,kBAAkB,GAAIC,IAGlC,KAAM;EACL,IAAIA,IAAI,CAACC,aAAa,IAAI;IAAEA,aAAa,EAAED,IAAI,CAACC;EAAc,CAAC,CAAC;EAChE,IAAID,IAAI,CAACE,QAAQ,IACfC,MAAM,CAACC,IAAI,CAACJ,IAAI,CAACE,QAAQ,CAAC,CAACG,MAAM,GAAG,CAAC,IAAI;IAAEC,SAAS,EAAEN,IAAI,CAACE;EAAS,CAAC;AACzE,CAAC,CAAC;AAEF,OAAO,MAAMK,MAAM,GAAG,MAAAA,CAAOC,IAAY,EAAEC,KAAa,KAAK;EAC3DC,OAAO,CAACC,GAAG,CAAC,OAAOd,kBAAkB,iBAAiBW,IAAI,EAAE,CAAC;EAC7D,MAAMI,OAAO,GAAG;IACd,eAAe,EAAE,UAAUH,KAAK,EAAE;IAClC,QAAQ,EAAE;EACZ,CAAC;EAED,MAAMI,QAAQ,GAAG,MAAMC,KAAK,CAAC,GAAGjB,kBAAkB,iBAAiBW,IAAI,EAAE,EAAE;IACzEO,MAAM,EAAE,KAAK;IACbH,OAAO,EAAEA;EACX,CAAC,CAAC;EAEF,IAAI,CAACC,QAAQ,CAACG,EAAE,EAAE;IAChB,MAAMC,SAAS,GAAG,MAAMJ,QAAQ,CAACK,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM,IAAI,CAAC;IACzD,MAAMF,SAAS,IAAI,IAAIG,KAAK,CAAC,oBAAoB,CAAC;EACpD;EACAV,OAAO,CAACC,GAAG,CAAC,WAAW,EAAEE,QAAQ,CAAC;EAClC,OAAOA,QAAQ,CAACK,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,OAAO,MAAMG,OAAO,GAAG,MAAAA,CAAOb,IAAY,EAAEc,IAAS,EAAEb,KAAa,KAAK;EACvEC,OAAO,CAACC,GAAG,CAAC,+BAA+B,EAAEW,IAAI,CAACC,MAAM,EAAED,IAAI,CAACrB,aAAa,CAAC;EAC7ES,OAAO,CAACC,GAAG,CAAC,QAAQd,kBAAkB,iBAAiBW,IAAI,EAAE,CAAC;EAC9DE,OAAO,CAACC,GAAG,CAAC,eAAe,EAAEW,IAAI,CAAC;EAClC,MAAMT,QAAQ,GAAG,MAAMC,KAAK,CAAC,GAAGjB,kBAAkB,iBAAiBW,IAAI,EAAE,EAAE;IACzEO,MAAM,EAAE,MAAM;IACdH,OAAO,EAAE;MACP,cAAc,EAAE,kBAAkB;MAClC,eAAe,EAAE,UAAUH,KAAK,EAAE;MAClC,QAAQ,EAAE;IACZ,CAAC;IACDa,IAAI,EAAEE,IAAI,CAACC,SAAS,CAACH,IAAI;EAC3B,CAAC,CAAC;EACF,IAAI,CAACT,QAAQ,CAACG,EAAE,EAAE;IAChB,MAAMC,SAAS,GAAG,MAAMJ,QAAQ,CAACK,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM,IAAI,CAAC;IACzD,MAAMF,SAAS,IAAI,IAAIG,KAAK,CAAC,yBAAyB,CAAC;EACzD;EACAV,OAAO,CAACC,GAAG,CAAC,WAAW,EAAEE,QAAQ,CAAC;EAClC,OAAOA,QAAQ,CAACK,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,OAAO,MAAMQ,UAAU,GAAG,MAAAA,CACxBC,IAAS,EACTC,UAAkB,EAClBC,SAAiB,KACd;EACH,MAAMC,WAAW,GAAG,GAAGhC,iBAAiB,kCAAkC;EAC1E,MAAMiC,QAAQ,GAAG,IAAIC,QAAQ,CAAC,CAAC;EAE/BD,QAAQ,CAACE,MAAM,CAAC,MAAM,EAAE;IACtBC,GAAG,EAAEP,IAAI,CAACO,GAAG;IACbC,IAAI,EAAER,IAAI,CAACQ,IAAI;IACfC,IAAI,EAAET,IAAI,CAACS;EACb,CAAC,CAAC;EACFL,QAAQ,CAACE,MAAM,CACb,MAAM,EACN,aAAaL,UAAU,+BAA+BC,SAAS,EACjE,CAAC;EACDE,QAAQ,CAACE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;EAEnC,MAAMpB,QAAQ,GAAG,MAAMC,KAAK,CAACgB,WAAW,EAAE;IACxCf,MAAM,EAAE,MAAM;IACdO,IAAI,EAAES,QAAQ;IACdnB,OAAO,EAAE;MACP,cAAc,EAAE;IAClB;EACF,CAAC,CAAC;EAEF,IAAI,CAACC,QAAQ,CAACG,EAAE,EAAE;IAChB,MAAMC,SAAS,GAAG,MAAMJ,QAAQ,CAACK,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM,IAAI,CAAC;IACzD,MAAMF,SAAS,IAAI,IAAIG,KAAK,CAAC,oBAAoB,CAAC;EACpD;EAEA,MAAMiB,MAAM,GAAG,MAAMxB,QAAQ,CAACK,IAAI,CAAC,CAAC;EACpC,OAAOmB,MAAM,EAAEC,GAAG;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["BASE_URL_LIVE_CHAT","BASE_URL_TRACKING","buildConnectorBody","opts","externalValue","customer","Object","keys","length","customers","MIME_BY_EXT","dng","heic","heif","jfif","fileMimeType","file","ext","name","split","pop","toLowerCase","known","type","sniffImageExt","bytes","head","String","fromCharCode","slice","startsWith","test","apiGet","path","token","console","log","headers","response","fetch","method","ok","errorData","json","catch","Error","apiPost","body","userId","JSON","stringify","uploadFile","organizeId","channelId","APIEndpoint","formData","FormData","append","uri","result","url"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatScreen.d.ts","sourceRoot":"","sources":["../../../src/ChatScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAgFpE,eAAO,MAAM,UAAU,GAAI,8EAQxB;IACD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC,4CAqsBA,CAAC"}
1
+ {"version":3,"file":"ChatScreen.d.ts","sourceRoot":"","sources":["../../../src/ChatScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+C,MAAM,OAAO,CAAC;AA6HpE,eAAO,MAAM,UAAU,GAAI,8EAQxB;IACD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC,4CAgzBA,CAAC"}
@@ -6,6 +6,11 @@ export declare const buildConnectorBody: (opts: {
6
6
  customers?: Record<string, any> | undefined;
7
7
  externalValue?: string | undefined;
8
8
  };
9
+ export declare const fileMimeType: (file: {
10
+ name?: string | null;
11
+ type?: string | null;
12
+ }) => string;
13
+ export declare const sniffImageExt: (bytes: number[]) => string | null;
9
14
  export declare const apiGet: (path: string, token: string) => Promise<any>;
10
15
  export declare const apiPost: (path: string, body: any, token: string) => Promise<any>;
11
16
  export declare const uploadFile: (file: any, organizeId: string, channelId: string) => Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,qCAAqC,CAAC;AAIrE,eAAO,MAAM,kBAAkB,GAAI,MAAM;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;;;CAIC,CAAC;AAEH,eAAO,MAAM,MAAM,GAAU,MAAM,MAAM,EAAE,OAAO,MAAM,iBAkBvD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,OAAO,MAAM,iBAmBnE,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,MAAM,GAAG,EACT,YAAY,MAAM,EAClB,WAAW,MAAM,iBA+BlB,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,qCAAqC,CAAC;AAIrE,eAAO,MAAM,kBAAkB,GAAI,MAAM;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;;;CAIC,CAAC;AAWH,eAAO,MAAM,YAAY,GAAI,MAAM;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,WAKA,CAAC;AAKF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,KAAG,MAAM,GAAG,IAOxD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAU,MAAM,MAAM,EAAE,OAAO,MAAM,iBAkBvD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,OAAO,MAAM,iBAmBnE,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,MAAM,GAAG,EACT,YAAY,MAAM,EAClB,WAAW,MAAM,iBA+BlB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "connect-x-reactnative-livechat-sdk",
3
- "version": "1.5.1-legacy",
3
+ "version": "1.6.0-legacy",
4
4
  "description": "for Live Chat",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -168,9 +168,11 @@
168
168
  "@react-native-vector-icons/fontawesome6": "^12.0.0",
169
169
  "connect-x-react-native-sdk": "^1.0.7",
170
170
  "hex-to-rgba": "^2.0.1",
171
+ "react-native-blob-util": "^0.24.12",
171
172
  "react-native-device-info": "^14.0.4",
173
+ "react-native-image-picker": "^8.2.1",
172
174
  "react-native-image-zoom-viewer": "^3.0.1",
173
175
  "react-native-svg": "^15.12.0",
174
176
  "socket.io-client": "^4.8.1"
175
177
  }
176
- }
178
+ }
@@ -10,6 +10,7 @@ import {
10
10
  SafeAreaView,
11
11
  KeyboardAvoidingView,
12
12
  Platform,
13
+ StatusBar,
13
14
  Image,
14
15
  ActivityIndicator,
15
16
  Alert,
@@ -19,10 +20,17 @@ import {
19
20
  } from 'react-native';
20
21
  import io from 'socket.io-client';
21
22
  import {
23
+ errorCodes,
22
24
  pick,
25
+ saveDocuments,
23
26
  types,
24
- type DocumentPickerResponse,
25
27
  } from '@react-native-documents/picker';
28
+ import ReactNativeBlobUtil from 'react-native-blob-util';
29
+ import {
30
+ launchCamera,
31
+ launchImageLibrary,
32
+ type ImagePickerResponse,
33
+ } from 'react-native-image-picker';
26
34
  import { ConnectXMobileSdk } from 'connect-x-react-native-sdk';
27
35
  import {
28
36
  apiGet,
@@ -30,6 +38,8 @@ import {
30
38
  BASE_URL_LIVE_CHAT,
31
39
  apiPost,
32
40
  buildConnectorBody,
41
+ fileMimeType,
42
+ sniffImageExt,
33
43
  } from './api';
34
44
  import Svg, { ClipPath, Defs, G, Path, Rect } from 'react-native-svg';
35
45
  import hexToRgba from 'hex-to-rgba';
@@ -52,6 +62,41 @@ interface Message {
52
62
  [key: string]: any; // for other properties
53
63
  }
54
64
 
65
+ type PickedFile = { uri: string; name: string; type?: string | null };
66
+
67
+ // ponytail: ไอคอน SVG ในไฟล์ แทน vector-icons เพราะไม่ต้องให้แอปที่ใช้ SDK link font เพิ่ม
68
+ const ATTACH_ICONS = {
69
+ file: 'M12 5v14M5 12h14',
70
+ camera:
71
+ 'M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2zM12 17a4 4 0 1 0 0-8 4 4 0 0 0 0 8z',
72
+ gallery:
73
+ 'M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zM8.5 10a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM21 15l-5-5L5 21',
74
+ download: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3',
75
+ };
76
+
77
+ // ระยะจากขอบบนของ preview ให้พ้น status bar / notch
78
+ // ponytail: ค่าคงที่ ไม่ใช้ safe-area lib; iOS 60 พอสำหรับ Dynamic Island
79
+ const VIEWER_TOP =
80
+ Platform.OS === 'ios' ? 60 : (StatusBar.currentHeight ?? 0) + 16;
81
+
82
+ const AttachIcon = ({
83
+ name,
84
+ color = '#525E62',
85
+ }: {
86
+ name: keyof typeof ATTACH_ICONS;
87
+ color?: string;
88
+ }) => (
89
+ <Svg width={22} height={22} viewBox="0 0 24 24" fill="none">
90
+ <Path
91
+ d={ATTACH_ICONS[name]}
92
+ stroke={color}
93
+ strokeWidth={2}
94
+ strokeLinecap="round"
95
+ strokeLinejoin="round"
96
+ />
97
+ </Svg>
98
+ );
99
+
55
100
  const SendIcon = ({
56
101
  size,
57
102
  backgroundColor,
@@ -105,8 +150,11 @@ export const ChatScreen = ({
105
150
  const socketRef = useRef<ReturnType<typeof io> | null>(null);
106
151
  const hasConnectedRef = useRef(false);
107
152
  const [userId, setUserId] = useState<string | null>(null);
108
- const [selectedFile, setSelectedFile] =
109
- useState<DocumentPickerResponse | null>(null);
153
+ // ponytail: url ที่ <Image> decode ไม่ผ่าน (dng/heic บน Android ฯลฯ) → ตกไปเป็นลิงก์ดาวน์โหลด
154
+ const [undecodableUrls, setUndecodableUrls] = useState<
155
+ Record<string, boolean>
156
+ >({});
157
+ const [selectedFile, setSelectedFile] = useState<PickedFile | null>(null);
110
158
  const [settings, setSettings] = useState<any>(null);
111
159
  const [styles, setStyles] = useState<any>({});
112
160
  const [chatPhase, setChatPhase] = useState<'pre-chat' | 'chatting'>(
@@ -419,10 +467,19 @@ export const ChatScreen = ({
419
467
  const handleSelectFile = async () => {
420
468
  try {
421
469
  const result = await pick({
422
- type: [types.images, types.doc, types.pdf],
470
+ // ponytail: allFiles เพราะ iOS ไม่รู้จักนามสกุลแปลก ๆ (.jfif) เลย grey out
471
+ // ถ้าปล่อยเป็น public.image; ชนิดไฟล์คัดตอนส่งด้วย mime อยู่แล้ว
472
+ type: [types.allFiles],
423
473
  allowMultiSelection: false,
424
474
  });
425
- setSelectedFile(result[0]);
475
+ const file = result[0];
476
+ if (file) {
477
+ setSelectedFile({
478
+ uri: file.uri,
479
+ name: file.name || 'file',
480
+ type: file.type,
481
+ });
482
+ }
426
483
  } catch (err) {
427
484
  if ((err as any)?.code !== 'DOCUMENT_PICKER_CANCELED') {
428
485
  // Alert.alert(
@@ -433,6 +490,53 @@ export const ChatScreen = ({
433
490
  }
434
491
  };
435
492
 
493
+ // อ่านแค่ 12 byte แรกของไฟล์ ไว้เช็คชนิดจริง
494
+ const readFileHead = async (uri: string): Promise<number[]> => {
495
+ try {
496
+ const head = `${ReactNativeBlobUtil.fs.dirs.CacheDir}/head_${Date.now()}`;
497
+ await ReactNativeBlobUtil.fs.slice(
498
+ uri.replace('file://', ''),
499
+ head,
500
+ 0,
501
+ 12
502
+ );
503
+ const bytes = await ReactNativeBlobUtil.fs.readFile(head, 'ascii');
504
+ ReactNativeBlobUtil.fs.unlink(head).catch(() => {});
505
+ return bytes;
506
+ } catch {
507
+ return [];
508
+ }
509
+ };
510
+
511
+ const handleImagePicked = async (res: ImagePickerResponse) => {
512
+ if (res.didCancel) return;
513
+ const asset = res.assets?.[0];
514
+ if (res.errorCode || !asset?.uri) {
515
+ if (res.errorCode === 'permission') {
516
+ Alert.alert('Permission required', 'Please allow access in Settings.');
517
+ }
518
+ return;
519
+ }
520
+ let name = asset.fileName || `image_${Date.now()}.jpg`;
521
+ let type = asset.type || 'image/jpeg';
522
+ const realExt = sniffImageExt(await readFileHead(asset.uri));
523
+ if (realExt) {
524
+ name = `${name.replace(/\.[^.]+$/, '')}.${realExt}`;
525
+ type = fileMimeType({ name });
526
+ }
527
+ setSelectedFile({ uri: asset.uri, name, type });
528
+ };
529
+
530
+ const handleOpenCamera = () =>
531
+ launchCamera({ mediaType: 'photo', saveToPhotos: false }).then(
532
+ handleImagePicked
533
+ );
534
+
535
+ const handleOpenGallery = () =>
536
+ launchImageLibrary({ mediaType: 'photo', selectionLimit: 1 }).then(
537
+ handleImagePicked
538
+ );
539
+
436
540
  const MessageWithLinks = ({
437
541
  text,
438
542
  textStyle,
@@ -465,9 +569,12 @@ export const ChatScreen = ({
465
569
  );
466
570
  };
467
571
 
572
+ const isDisplayableImage = (item: Message) =>
573
+ item.type === 'image' && !!item.url && !undecodableUrls[item.url];
574
+
468
575
  const openImageViewer = (tappedImageUrl: string) => {
469
576
  const allImages = messages
470
- .filter((msg) => msg.type === 'image' && msg.url)
577
+ .filter(isDisplayableImage)
471
578
  .map((msg) => ({ url: msg.url! }));
472
579
 
473
580
  const tappedIndex = allImages.findIndex(
@@ -481,6 +588,30 @@ export const ChatScreen = ({
481
588
  }
482
589
  };
483
590
 
591
+ // โหลดรูปลง cache ก่อน แล้วเปิดหน้า "Save to Files" (iOS) / "บันทึกเป็น" (Android)
592
+ // เพราะ saveDocuments รับแค่ไฟล์ในเครื่อง
593
+ const handleDownloadImage = async (url: string) => {
594
+ try {
595
+ // ใช้ชื่อไฟล์ตอนส่ง (เช่น .dng / .jfif) ก่อน ชื่อใน url อาจถูก storage เปลี่ยนนามสกุล
596
+ const name =
597
+ messages.find((m) => m.url === url)?.fileName ||
598
+ decodeURIComponent(url.split('?')[0]!.split('/').pop() || 'image');
599
+ const res = await ReactNativeBlobUtil.config({
600
+ path: `${ReactNativeBlobUtil.fs.dirs.CacheDir}/${name}`,
601
+ }).fetch('GET', url);
602
+ await saveDocuments({
603
+ sourceUris: [`file://${res.path()}`],
604
+ fileName: name,
605
+ mimeType: fileMimeType({ name }),
606
+ });
607
+ } catch (err) {
608
+ if ((err as any)?.code !== errorCodes.OPERATION_CANCELED) {
609
+ Alert.alert('Download Error', 'Failed to save the image.');
610
+ console.error('Download failed', err);
611
+ }
612
+ }
613
+ };
614
+
484
615
  const handleCancelUpload = () => {
485
616
  if (isUploading) return;
486
617
  setSelectedFile(null);
@@ -491,7 +622,9 @@ export const ChatScreen = ({
491
622
  setIsUploading(true);
492
623
  try {
493
624
  const fileUrl = await uploadFile(selectedFile, orgId, channelId);
494
- const type = selectedFile.type?.startsWith('image/') ? 'image' : 'file';
625
+ const type = fileMimeType(selectedFile).startsWith('image/')
626
+ ? 'image'
627
+ : 'file';
495
628
  const messageBody: Omit<Message, 'sender' | 'timestamp'> = {
496
629
  type,
497
630
  fileName: selectedFile.name || 'file',
@@ -586,16 +719,23 @@ export const ChatScreen = ({
586
719
  linkStyle={styles.linkTextStyle}
587
720
  />
588
721
  )}
589
- {item.type === 'image' && (
722
+ {isDisplayableImage(item) && (
590
723
  <TouchableOpacity onPress={() => openImageViewer(item.url!)}>
591
724
  <Image
592
725
  source={{ uri: item.url }}
593
726
  style={styles.imageMessage}
594
727
  resizeMode="cover"
728
+ onError={() =>
729
+ setUndecodableUrls((prev) => ({
730
+ ...prev,
731
+ [item.url!]: true,
732
+ }))
733
+ }
595
734
  />
596
735
  </TouchableOpacity>
597
736
  )}
598
- {item.type === 'file' && (
737
+ {(item.type === 'file' ||
738
+ (item.type === 'image' && !isDisplayableImage(item))) && (
599
739
  <TouchableOpacity onPress={handleFilePress}>
600
740
  <Text
601
741
  style={[
@@ -640,7 +780,9 @@ export const ChatScreen = ({
640
780
  <View
641
781
  style={{
642
782
  position: 'absolute',
643
- top: 45,
783
+ top: VIEWER_TOP,
784
+ height: 42,
785
+ justifyContent: 'center',
644
786
  width: '100%',
645
787
  alignItems: 'center',
646
788
  zIndex: 1,
@@ -653,24 +795,29 @@ export const ChatScreen = ({
653
795
  </Text>
654
796
  </View>
655
797
  )}
656
- renderHeader={() => (
657
- <TouchableOpacity
658
- // FIX 1: Add dynamic top spacing and zIndex
659
- style={[
660
- styles.imageViewerCloseButton,
661
- {
662
- top: 30,
663
- zIndex: 9999, // Force it to be the top-most layer
664
- position: 'absolute', // Ensure it floats correctly
665
- right: 20,
666
- },
667
- ]}
668
- // FIX 2: Add hitSlop so users don't have to hit the "X" pixel-perfectly
669
- hitSlop={{ top: 30, bottom: 30, left: 30, right: 30 }}
670
- onPress={() => setImageViewerVisible(false)}
798
+ renderHeader={(currentIndex) => (
799
+ <View
800
+ pointerEvents="box-none"
801
+ style={[styles.imageViewerHeader, { top: VIEWER_TOP }]}
671
802
  >
672
- <Text style={styles.imageViewerCloseButtonText}>✕</Text>
673
- </TouchableOpacity>
803
+ <TouchableOpacity
804
+ style={styles.imageViewerCloseButton}
805
+ hitSlop={{ top: 20, bottom: 20, left: 20, right: 20 }}
806
+ onPress={() => {
807
+ const url = viewerImages[currentIndex ?? 0]?.url;
808
+ if (url) handleDownloadImage(url);
809
+ }}
810
+ >
811
+ <AttachIcon name="download" color="white" />
812
+ </TouchableOpacity>
813
+ <TouchableOpacity
814
+ style={styles.imageViewerCloseButton}
815
+ hitSlop={{ top: 20, bottom: 20, left: 20, right: 20 }}
816
+ onPress={() => setImageViewerVisible(false)}
817
+ >
818
+ <Text style={styles.imageViewerCloseButtonText}>✕</Text>
819
+ </TouchableOpacity>
820
+ </View>
674
821
  )}
675
822
  />
676
823
  </Modal>
@@ -765,18 +912,23 @@ export const ChatScreen = ({
765
912
  <TouchableOpacity
766
913
  onPress={handleSelectFile}
767
914
  style={styles.attachmentButton}
915
+ accessibilityLabel="Attach file"
768
916
  >
769
- <View style={styles.plusIconContainer}>
770
- <View
771
- style={[
772
- styles.plusIconBar,
773
- styles.plusIconBarHorizontal,
774
- ]}
775
- />
776
- <View
777
- style={[styles.plusIconBar, styles.plusIconBarVertical]}
778
- />
779
- </View>
917
+ <AttachIcon name="file" />
918
+ </TouchableOpacity>
919
+ <TouchableOpacity
920
+ onPress={handleOpenCamera}
921
+ style={styles.attachmentButton}
922
+ accessibilityLabel="Take photo"
923
+ >
924
+ <AttachIcon name="camera" />
925
+ </TouchableOpacity>
926
+ <TouchableOpacity
927
+ onPress={handleOpenGallery}
928
+ style={styles.attachmentButton}
929
+ accessibilityLabel="Choose from gallery"
930
+ >
931
+ <AttachIcon name="gallery" />
780
932
  </TouchableOpacity>
781
933
  <TextInput
782
934
  style={styles.input}
@@ -1018,26 +1170,6 @@ const getDynamicStyles = (settingStyle: any = {}) => {
1018
1170
  fontWeight: 'bold',
1019
1171
  fontSize: 16,
1020
1172
  },
1021
- plusIconContainer: {
1022
- width: 10,
1023
- height: 18,
1024
- justifyContent: 'center',
1025
- alignItems: 'center',
1026
- },
1027
- plusIconBar: {
1028
- position: 'absolute',
1029
- backgroundColor: '#525E62',
1030
- },
1031
- plusIconBarHorizontal: {
1032
- width: 18,
1033
- height: 2,
1034
- borderRadius: 1,
1035
- },
1036
- plusIconBarVertical: {
1037
- width: 2,
1038
- height: 18,
1039
- borderRadius: 1,
1040
- },
1041
1173
  imageMessage: {
1042
1174
  width: 200,
1043
1175
  height: 200,
@@ -1128,11 +1260,16 @@ const getDynamicStyles = (settingStyle: any = {}) => {
1128
1260
  fontSize: 12,
1129
1261
  fontWeight: 'bold',
1130
1262
  },
1131
- imageViewerCloseButton: {
1263
+ imageViewerHeader: {
1132
1264
  position: 'absolute',
1133
- top: 20,
1134
- right: 20,
1135
- zIndex: 20,
1265
+ left: 10,
1266
+ right: 10,
1267
+ zIndex: 9999,
1268
+ flexDirection: 'row',
1269
+ justifyContent: 'space-between',
1270
+ alignItems: 'center',
1271
+ },
1272
+ imageViewerCloseButton: {
1136
1273
  padding: 10,
1137
1274
  },
1138
1275
  imageViewerCloseButtonText: {
package/src/api.ts CHANGED
@@ -11,6 +11,37 @@ export const buildConnectorBody = (opts: {
11
11
  Object.keys(opts.customer).length > 0 && { customers: opts.customer }),
12
12
  });
13
13
 
14
+ // ponytail: picker บาง provider คืน type เป็น null/octet-stream สำหรับ dng, heic, jfif
15
+ // ถ้าปล่อยไป storage จะเก็บ content-type ผิด แล้ว view/download ต่อไม่ได้
16
+ const MIME_BY_EXT: Record<string, string> = {
17
+ dng: 'image/x-adobe-dng',
18
+ heic: 'image/heic',
19
+ heif: 'image/heif',
20
+ jfif: 'image/jpeg',
21
+ };
22
+
23
+ export const fileMimeType = (file: {
24
+ name?: string | null;
25
+ type?: string | null;
26
+ }) => {
27
+ const ext = file.name?.split('.').pop()?.toLowerCase() ?? '';
28
+ const known =
29
+ file.type && file.type !== 'application/octet-stream' ? file.type : null;
30
+ return known || MIME_BY_EXT[ext] || file.type || 'application/octet-stream';
31
+ };
32
+
33
+ // ponytail: image-picker บน iOS ดูแค่ byte แรก ไฟล์ที่ไม่ใช่ png/gif เลยถูกตั้งชื่อ .jpg หมด
34
+ // (dng/heic ก็กลายเป็น .jpg) ตรงนี้ดู magic bytes เองว่าจริงๆ เป็นอะไร
35
+ // TIFF header ถือว่าเป็น dng เพราะ RAW ใน Photos ส่วนใหญ่เป็น dng
36
+ export const sniffImageExt = (bytes: number[]): string | null => {
37
+ const head = String.fromCharCode(...bytes.slice(0, 12));
38
+ if (head.startsWith('II*\0') || head.startsWith('MM\0*')) return 'dng';
39
+ if (/^.{4}ftyp(heic|heix|hevc|heim|heis|mif1|msf1)/s.test(head)) {
40
+ return 'heic';
41
+ }
42
+ return null;
43
+ };
44
+
14
45
  export const apiGet = async (path: string, token: string) => {
15
46
  console.log(`GET ${BASE_URL_LIVE_CHAT}/connectx/api/${path}`);
16
47
  const headers = {
@@ -63,7 +94,7 @@ export const uploadFile = async (
63
94
  formData.append('file', {
64
95
  uri: file.uri,
65
96
  name: file.name,
66
- type: file.type,
97
+ type: fileMimeType(file),
67
98
  });
68
99
  formData.append(
69
100
  'path',