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