@developer_tribe/react-native-comnyx 0.13.13 → 0.14.0

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 (126) hide show
  1. package/android/generated/RCTAppDependencyProvider.h +25 -0
  2. package/android/generated/RCTAppDependencyProvider.mm +55 -0
  3. package/android/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  4. package/android/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  5. package/android/generated/RCTThirdPartyComponentsProvider.h +16 -0
  6. package/android/generated/RCTThirdPartyComponentsProvider.mm +23 -0
  7. package/android/generated/ReactAppDependencyProvider.podspec +34 -0
  8. package/android/generated/jni/CMakeLists.txt +36 -0
  9. package/android/generated/jni/RNComnyxSpec-generated.cpp +22 -0
  10. package/android/generated/jni/RNComnyxSpec.h +24 -0
  11. package/android/generated/jni/react/renderer/components/RNComnyxSpec/RNComnyxSpecJSI-generated.cpp +17 -0
  12. package/android/generated/jni/react/renderer/components/RNComnyxSpec/RNComnyxSpecJSI.h +19 -0
  13. package/android/src/main/AndroidManifest.xml +15 -0
  14. package/android/src/main/AndroidManifestNew.xml +4 -0
  15. package/android/src/main/java/com/comnyx/ComnyxMediaPickerModule.kt +301 -0
  16. package/android/src/main/java/com/comnyx/ComnyxPackage.kt +1 -1
  17. package/android/src/main/java/com/comnyx/VideoPlayerActivity.kt +91 -0
  18. package/ios/ComnyxMediaPicker.m +23 -0
  19. package/ios/ComnyxMediaPicker.swift +377 -0
  20. package/lib/commonjs/NativeComnyxMediaPicker.js +62 -0
  21. package/lib/commonjs/NativeComnyxMediaPicker.js.map +1 -0
  22. package/lib/commonjs/api/index.js +19 -0
  23. package/lib/commonjs/api/index.js.map +1 -1
  24. package/lib/commonjs/api/media.js +76 -0
  25. package/lib/commonjs/api/media.js.map +1 -0
  26. package/lib/commonjs/assets/attachment-01.png +0 -0
  27. package/lib/commonjs/assets/x-circle.png +0 -0
  28. package/lib/commonjs/components/ChatList.js +48 -22
  29. package/lib/commonjs/components/ChatList.js.map +1 -1
  30. package/lib/commonjs/components/LinkifyText.js +5 -1
  31. package/lib/commonjs/components/LinkifyText.js.map +1 -1
  32. package/lib/commonjs/components/MediaMessageItem.js +333 -0
  33. package/lib/commonjs/components/MediaMessageItem.js.map +1 -0
  34. package/lib/commonjs/components/MediaPickerButton.js +47 -0
  35. package/lib/commonjs/components/MediaPickerButton.js.map +1 -0
  36. package/lib/commonjs/components/MediaViewerModal.js +157 -0
  37. package/lib/commonjs/components/MediaViewerModal.js.map +1 -0
  38. package/lib/commonjs/components/MessageInput.js +344 -73
  39. package/lib/commonjs/components/MessageInput.js.map +1 -1
  40. package/lib/commonjs/components/MessageItem.js +17 -7
  41. package/lib/commonjs/components/MessageItem.js.map +1 -1
  42. package/lib/commonjs/constants/translations.js +203 -29
  43. package/lib/commonjs/constants/translations.js.map +1 -1
  44. package/lib/commonjs/data/fake/media.js +105 -0
  45. package/lib/commonjs/data/fake/media.js.map +1 -0
  46. package/lib/commonjs/types/MediaTypes.js +2 -0
  47. package/lib/commonjs/types/MediaTypes.js.map +1 -0
  48. package/lib/commonjs/version.js +1 -1
  49. package/lib/commonjs/version.js.map +1 -1
  50. package/lib/module/NativeComnyxMediaPicker.js +54 -0
  51. package/lib/module/NativeComnyxMediaPicker.js.map +1 -0
  52. package/lib/module/api/index.js +1 -0
  53. package/lib/module/api/index.js.map +1 -1
  54. package/lib/module/api/media.js +70 -0
  55. package/lib/module/api/media.js.map +1 -0
  56. package/lib/module/assets/attachment-01.png +0 -0
  57. package/lib/module/assets/x-circle.png +0 -0
  58. package/lib/module/components/ChatList.js +48 -22
  59. package/lib/module/components/ChatList.js.map +1 -1
  60. package/lib/module/components/LinkifyText.js +5 -1
  61. package/lib/module/components/LinkifyText.js.map +1 -1
  62. package/lib/module/components/MediaMessageItem.js +330 -0
  63. package/lib/module/components/MediaMessageItem.js.map +1 -0
  64. package/lib/module/components/MediaPickerButton.js +43 -0
  65. package/lib/module/components/MediaPickerButton.js.map +1 -0
  66. package/lib/module/components/MediaViewerModal.js +153 -0
  67. package/lib/module/components/MediaViewerModal.js.map +1 -0
  68. package/lib/module/components/MessageInput.js +347 -75
  69. package/lib/module/components/MessageInput.js.map +1 -1
  70. package/lib/module/components/MessageItem.js +17 -7
  71. package/lib/module/components/MessageItem.js.map +1 -1
  72. package/lib/module/constants/translations.js +203 -29
  73. package/lib/module/constants/translations.js.map +1 -1
  74. package/lib/module/data/fake/media.js +99 -0
  75. package/lib/module/data/fake/media.js.map +1 -0
  76. package/lib/module/types/MediaTypes.js +2 -0
  77. package/lib/module/types/MediaTypes.js.map +1 -0
  78. package/lib/module/version.js +1 -1
  79. package/lib/module/version.js.map +1 -1
  80. package/lib/typescript/src/NativeComnyxMediaPicker.d.ts +7 -0
  81. package/lib/typescript/src/NativeComnyxMediaPicker.d.ts.map +1 -0
  82. package/lib/typescript/src/api/index.d.ts +1 -0
  83. package/lib/typescript/src/api/index.d.ts.map +1 -1
  84. package/lib/typescript/src/api/media.d.ts +7 -0
  85. package/lib/typescript/src/api/media.d.ts.map +1 -0
  86. package/lib/typescript/src/components/ChatList.d.ts.map +1 -1
  87. package/lib/typescript/src/components/LinkifyText.d.ts.map +1 -1
  88. package/lib/typescript/src/components/MediaMessageItem.d.ts +6 -0
  89. package/lib/typescript/src/components/MediaMessageItem.d.ts.map +1 -0
  90. package/lib/typescript/src/components/MediaPickerButton.d.ts +5 -0
  91. package/lib/typescript/src/components/MediaPickerButton.d.ts.map +1 -0
  92. package/lib/typescript/src/components/MediaViewerModal.d.ts +8 -0
  93. package/lib/typescript/src/components/MediaViewerModal.d.ts.map +1 -0
  94. package/lib/typescript/src/components/MessageInput.d.ts.map +1 -1
  95. package/lib/typescript/src/components/MessageItem.d.ts.map +1 -1
  96. package/lib/typescript/src/constants/translations.d.ts.map +1 -1
  97. package/lib/typescript/src/data/fake/media.d.ts +6 -0
  98. package/lib/typescript/src/data/fake/media.d.ts.map +1 -0
  99. package/lib/typescript/src/types/Conversation.d.ts +19 -0
  100. package/lib/typescript/src/types/Conversation.d.ts.map +1 -1
  101. package/lib/typescript/src/types/LocalizationKeys.d.ts +6 -0
  102. package/lib/typescript/src/types/LocalizationKeys.d.ts.map +1 -1
  103. package/lib/typescript/src/types/MediaTypes.d.ts +26 -0
  104. package/lib/typescript/src/types/MediaTypes.d.ts.map +1 -0
  105. package/lib/typescript/src/version.d.ts +1 -1
  106. package/lib/typescript/src/version.d.ts.map +1 -1
  107. package/package.json +1 -1
  108. package/src/NativeComnyxMediaPicker.ts +62 -0
  109. package/src/api/index.ts +1 -0
  110. package/src/api/media.ts +116 -0
  111. package/src/assets/attachment-01.png +0 -0
  112. package/src/assets/x-circle.png +0 -0
  113. package/src/components/ChatList.tsx +81 -24
  114. package/src/components/CustomerForm.tsx +1 -1
  115. package/src/components/LinkifyText.tsx +3 -2
  116. package/src/components/MediaMessageItem.tsx +390 -0
  117. package/src/components/MediaPickerButton.tsx +48 -0
  118. package/src/components/MediaViewerModal.tsx +161 -0
  119. package/src/components/MessageInput.tsx +396 -84
  120. package/src/components/MessageItem.tsx +19 -4
  121. package/src/constants/translations.ts +174 -0
  122. package/src/data/fake/media.ts +110 -0
  123. package/src/types/Conversation.ts +20 -0
  124. package/src/types/LocalizationKeys.ts +6 -0
  125. package/src/types/MediaTypes.ts +27 -0
  126. package/src/version.ts +1 -1
@@ -0,0 +1,161 @@
1
+ import {
2
+ Modal,
3
+ View,
4
+ Image,
5
+ TouchableOpacity,
6
+ StatusBar,
7
+ useWindowDimensions,
8
+ } from 'react-native';
9
+ import { useState } from 'react';
10
+ import { AppText } from './AppText';
11
+ import { ScaledSheet } from './ScaledSheet';
12
+ import { activeOpacity } from '../constants/activeOpacity';
13
+ import { openVideo } from '../NativeComnyxMediaPicker';
14
+
15
+ export function MediaViewerModal({
16
+ visible,
17
+ onClose,
18
+ mediaUri,
19
+ mediaType,
20
+ thumbnailUri,
21
+ }: {
22
+ visible: boolean;
23
+ onClose: () => void;
24
+ mediaUri: string;
25
+ mediaType: 'image' | 'video';
26
+ thumbnailUri?: string | null;
27
+ }) {
28
+ const { width, height } = useWindowDimensions();
29
+ const [imageError, setImageError] = useState(false);
30
+ const isVideo = mediaType === 'video';
31
+ const displayUri = isVideo ? thumbnailUri || undefined : mediaUri;
32
+
33
+ const handlePlayVideo = () => {
34
+ if (mediaUri) {
35
+ openVideo(mediaUri).catch((err) =>
36
+ console.warn('[Comnyx] Could not open video:', err)
37
+ );
38
+ }
39
+ };
40
+
41
+ return (
42
+ <Modal
43
+ visible={visible}
44
+ transparent
45
+ animationType="fade"
46
+ onRequestClose={onClose}
47
+ statusBarTranslucent
48
+ >
49
+ <StatusBar backgroundColor="rgba(0,0,0,0.95)" barStyle="light-content" />
50
+ <View style={styles.overlay}>
51
+ <TouchableOpacity
52
+ style={styles.closeButton}
53
+ onPress={onClose}
54
+ activeOpacity={activeOpacity}
55
+ >
56
+ <AppText style={styles.closeIcon}>✕</AppText>
57
+ </TouchableOpacity>
58
+ <View style={[styles.mediaContainer, { width, height: height * 0.7 }]}>
59
+ {displayUri && !imageError ? (
60
+ <Image
61
+ source={{ uri: displayUri }}
62
+ style={{ width, height: height * 0.9 }}
63
+ resizeMode="contain"
64
+ onError={() => setImageError(true)}
65
+ />
66
+ ) : (
67
+ <View
68
+ style={[
69
+ styles.placeholder,
70
+ { width: width * 0.6, height: width * 0.6 },
71
+ ]}
72
+ >
73
+ <AppText style={styles.placeholderIcon}>
74
+ {isVideo ? '🎬' : '🖼️'}
75
+ </AppText>
76
+ </View>
77
+ )}
78
+
79
+ {isVideo && (
80
+ <TouchableOpacity
81
+ style={styles.playOverlay}
82
+ onPress={handlePlayVideo}
83
+ activeOpacity={activeOpacity}
84
+ >
85
+ <View style={styles.playButton}>
86
+ <AppText style={styles.playIcon}>▶</AppText>
87
+ </View>
88
+ </TouchableOpacity>
89
+ )}
90
+ </View>
91
+ </View>
92
+ </Modal>
93
+ );
94
+ }
95
+
96
+ const styles = ScaledSheet.create({
97
+ overlay: {
98
+ flex: 1,
99
+ backgroundColor: 'rgba(0,0,0,0.95)',
100
+ justifyContent: 'center',
101
+ },
102
+ closeButton: {
103
+ ...({
104
+ position: 'absolute',
105
+ top: '50@vs',
106
+ left: '20@s',
107
+ zIndex: 10,
108
+ width: '40@vs',
109
+
110
+ height: '40@vs',
111
+ borderRadius: 20,
112
+ backgroundColor: 'rgba(255,255,255,0.2)',
113
+ justifyContent: 'center',
114
+ alignItems: 'center',
115
+ } as any),
116
+ },
117
+ closeIcon: {
118
+ color: '#FFFFFF',
119
+ fontSize: '20@vs',
120
+ fontWeight: '300',
121
+ },
122
+ mediaContainer: {
123
+ justifyContent: 'center',
124
+ alignItems: 'center',
125
+ },
126
+ placeholder: {
127
+ backgroundColor: 'rgba(255,255,255,0.1)',
128
+ borderRadius: 12,
129
+ justifyContent: 'center',
130
+ alignItems: 'center',
131
+ },
132
+ placeholderIcon: {
133
+ fontSize: '60@vs',
134
+ },
135
+ playOverlay: {
136
+ ...({
137
+ position: 'absolute',
138
+ top: 0,
139
+ left: 0,
140
+ right: 0,
141
+ bottom: 0,
142
+ justifyContent: 'center',
143
+ alignItems: 'center',
144
+ } as any),
145
+ },
146
+ playButton: {
147
+ width: '70@vs',
148
+ height: '70@vs',
149
+ borderRadius: '35@vs',
150
+ backgroundColor: 'rgba(0,0,0,0.6)',
151
+ justifyContent: 'center',
152
+ alignItems: 'center',
153
+ borderWidth: 2,
154
+ borderColor: 'rgba(255,255,255,0.8)',
155
+ },
156
+ playIcon: {
157
+ fontSize: '30@vs',
158
+ color: '#FFFFFF',
159
+ marginLeft: '4@s',
160
+ },
161
+ });