@messenger-box/platform-mobile 10.0.3-alpha.182 → 10.0.3-alpha.187
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/screens/inbox/components/GiftedChatInboxComponent.js +6 -4
- package/lib/screens/inbox/components/GiftedChatInboxComponent.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +5 -4
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
- package/lib/screens/inbox/containers/ConversationView.js +3 -3
- package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/Dialogs.js +69 -116
- package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default,{forwardRef,useCallback}from'react';import {Platform,View,TouchableOpacity,TextInput,ScrollView,KeyboardAvoidingView,Animated}from'react-native';import {Image,Box,Spinner,Text}from'@admin-layout/gluestack-ui-mobile';import {GiftedChat}from'react-native-gifted-chat';import {MaterialIcons,MaterialCommunityIcons,Ionicons}from'@expo/vector-icons';import colors from'tailwindcss/colors';var __defProp = Object.defineProperty;
|
|
1
|
+
import React__default,{forwardRef,useCallback}from'react';import {Platform,View,TouchableOpacity,TextInput,ScrollView,KeyboardAvoidingView,Animated}from'react-native';import {useSafeAreaInsets}from'react-native-safe-area-context';import {Image,Box,Spinner,Text}from'@admin-layout/gluestack-ui-mobile';import {GiftedChat}from'react-native-gifted-chat';import {MaterialIcons,MaterialCommunityIcons,Ionicons}from'@expo/vector-icons';import colors from'tailwindcss/colors';var __defProp = Object.defineProperty;
|
|
2
2
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
3
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
4
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -33,6 +33,8 @@ function getRefCurrent(ref) {
|
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
35
|
const GiftedChatInboxComponent = forwardRef((props, ref) => {
|
|
36
|
+
const insets = useSafeAreaInsets();
|
|
37
|
+
const bottomSafeArea = Platform.OS === "ios" ? insets.bottom : 0;
|
|
36
38
|
const _a = props, {
|
|
37
39
|
messages,
|
|
38
40
|
onSend,
|
|
@@ -165,7 +167,7 @@ const GiftedChatInboxComponent = forwardRef((props, ref) => {
|
|
|
165
167
|
};
|
|
166
168
|
const renderInputToolbarDefault = useCallback((props2) => /* @__PURE__ */ React__default.createElement(View, { style: {
|
|
167
169
|
backgroundColor: "#fff",
|
|
168
|
-
paddingBottom: 4,
|
|
170
|
+
paddingBottom: Math.max(4, bottomSafeArea),
|
|
169
171
|
paddingTop: 4
|
|
170
172
|
} }, /* @__PURE__ */ React__default.createElement(View, { style: {
|
|
171
173
|
flexDirection: "row",
|
|
@@ -245,7 +247,7 @@ const GiftedChatInboxComponent = forwardRef((props, ref) => {
|
|
|
245
247
|
height: 20,
|
|
246
248
|
alignItems: "center",
|
|
247
249
|
justifyContent: "center"
|
|
248
|
-
} }, /* @__PURE__ */ React__default.createElement(Ionicons, { name: "close", size: 14, color: "white" })))))), [onSelectImages, text, images, isUploadingImage, loading, onSend, onRemoveImage, placeholder, ref]);
|
|
250
|
+
} }, /* @__PURE__ */ React__default.createElement(Ionicons, { name: "close", size: 14, color: "white" })))))), [onSelectImages, text, images, isUploadingImage, loading, onSend, onRemoveImage, placeholder, ref, bottomSafeArea, onInputTextChanged]);
|
|
249
251
|
const renderAccessoryDefault = useCallback(() => {
|
|
250
252
|
if (!images.length) return null;
|
|
251
253
|
return /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
@@ -309,5 +311,5 @@ const GiftedChatInboxComponent = forwardRef((props, ref) => {
|
|
|
309
311
|
backgroundColor: "#fff",
|
|
310
312
|
position: "relative",
|
|
311
313
|
marginBottom: bottomMargin
|
|
312
|
-
} }, renderErrorNotification(), loading && /* @__PURE__ */ React__default.createElement(Spinner, { color: colors.blue[500] }), /* @__PURE__ */ React__default.createElement(GiftedChat, __spreadValues({ ref, wrapInSafeArea, messages, onSend, text, onInputTextChanged, user, renderMessageText, renderActions: renderActions || null, renderAccessory: renderAccessory || renderAccessoryDefault, renderMessage, renderInputToolbar: renderInputToolbar || renderInputToolbarDefault, renderLoading: props.renderLoading || null, renderChatFooter, renderLoadEarlier, listViewProps, loadEarlier, isLoadingEarlier, bottomOffset: props.bottomOffset || 0, isKeyboardInternallyHandled: props.isKeyboardInternallyHandled || false, renderFooter: () => renderFooter ? renderFooter() : null, minComposerHeight, maxComposerHeight, placeholder: placeholder || "Jot something down", lightboxProps, infiniteScroll, alwaysShowSend, minInputToolbarHeight, textInputProps, messagesContainerStyle, isTyping: props.isTyping || false, renderChatEmpty: props.renderChatEmpty || null }, rest))));
|
|
314
|
+
} }, renderErrorNotification(), loading && /* @__PURE__ */ React__default.createElement(Spinner, { color: colors.blue[500] }), /* @__PURE__ */ React__default.createElement(GiftedChat, __spreadValues({ ref, wrapInSafeArea, messages, onSend, text, onInputTextChanged, user, renderMessageText, renderActions: renderActions || null, renderAccessory: renderAccessory || renderAccessoryDefault, renderMessage, renderInputToolbar: renderInputToolbar || renderInputToolbarDefault, renderLoading: props.renderLoading || null, renderChatFooter, renderLoadEarlier, listViewProps, loadEarlier, isLoadingEarlier, bottomOffset: (props.bottomOffset || 0) + bottomSafeArea, isKeyboardInternallyHandled: props.isKeyboardInternallyHandled || false, renderFooter: () => renderFooter ? renderFooter() : null, minComposerHeight, maxComposerHeight, placeholder: placeholder || "Jot something down", lightboxProps, infiniteScroll, alwaysShowSend, minInputToolbarHeight, textInputProps, messagesContainerStyle, isTyping: props.isTyping || false, renderChatEmpty: props.renderChatEmpty || null }, rest))));
|
|
313
315
|
});export{GiftedChatInboxComponent,GiftedChatInboxComponent as default};//# sourceMappingURL=GiftedChatInboxComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GiftedChatInboxComponent.js","sources":["../../../../src/screens/inbox/components/GiftedChatInboxComponent.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo } from 'react';\nimport { Platform, View, KeyboardAvoidingView, TouchableOpacity, TextInput, ScrollView, Animated } from 'react-native';\nimport { Spinner, Box, Image, HStack, Text } from '@admin-layout/gluestack-ui-mobile';\nimport { GiftedChat, Send } from 'react-native-gifted-chat';\nimport { Ionicons, MaterialCommunityIcons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\n// If you have a SlackMessage component, import it:\n// import SlackMessage from './SlackMessage';\n\nexport interface GiftedChatInboxComponentProps {\n messages: any[];\n onSend: (messages: any[]) => void;\n text: string;\n onInputTextChanged: (text: string) => void;\n user: any;\n images: any[];\n onSelectImages: () => void;\n onRemoveImage: (index: number) => void;\n selectedImage: string;\n setSelectedImage: (img: string) => void;\n isUploadingImage: boolean;\n loading: boolean;\n errorMessage: string;\n notificationType?: string;\n onCloseError?: () => void;\n inputToolbarHeight?: number;\n bottomMargin?: number;\n renderMessageText?: any;\n renderActions?: any;\n renderAccessory?: any;\n renderMessage?: any;\n renderInputToolbar?: any;\n renderChatFooter?: any;\n renderLoadEarlier?: any;\n loadEarlier?: boolean;\n isLoadingEarlier?: boolean;\n totalCount?: number;\n channelMessagesLength?: number;\n keyboardVerticalOffset?: number;\n placeholder?: string;\n listViewProps?: any;\n wrapInSafeArea?: boolean;\n minComposerHeight?: number;\n maxComposerHeight?: number;\n renderFooter?: any;\n lightboxProps?: any;\n infiniteScroll?: boolean;\n alwaysShowSend?: boolean;\n minInputToolbarHeight?: number;\n textInputProps?: any;\n messagesContainerStyle?: any;\n renderHeader?: any;\n [key: string]: any;\n}\n\n// Helper to get the current ref if it's an object\nfunction getRefCurrent(ref: React.ForwardedRef<any>) {\n if (ref && typeof ref === 'object' && 'current' in ref) {\n return ref.current;\n }\n return null;\n}\n\nexport const GiftedChatInboxComponent = forwardRef<any, GiftedChatInboxComponentProps>((props, ref) => {\n const {\n messages,\n onSend,\n text,\n onInputTextChanged,\n user,\n images,\n setImages,\n onSelectImages,\n onRemoveImage,\n selectedImage,\n setSelectedImage,\n isUploadingImage,\n loading,\n errorMessage,\n notificationType = 'error',\n onCloseError,\n inputToolbarHeight = 56,\n bottomMargin = 0,\n renderMessageText,\n renderActions,\n renderAccessory,\n renderMessage,\n renderInputToolbar,\n renderChatFooter,\n renderLoadEarlier,\n loadEarlier,\n isLoadingEarlier,\n keyboardVerticalOffset = Platform.OS === 'ios' ? 64 : 0,\n placeholder = 'Jot something down',\n listViewProps,\n wrapInSafeArea = true,\n minComposerHeight = 36,\n maxComposerHeight = 100,\n renderFooter,\n lightboxProps = {\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n },\n infiniteScroll = false,\n alwaysShowSend = true,\n minInputToolbarHeight = 30,\n textInputProps = {\n multiline: true,\n returnKeyType: 'default',\n enablesReturnKeyAutomatically: true,\n placeholderTextColor: colors.gray[400],\n },\n messagesContainerStyle = { paddingTop: 8 },\n renderHeader,\n ...rest\n } = props;\n\n // Error Notification\n const renderErrorNotification = () => {\n if (!errorMessage) return null;\n return (\n <Animated.View\n style={{\n position: 'absolute',\n top: 10,\n left: 10,\n right: 10,\n backgroundColor: notificationType === 'error' ? '#f44336' : '#ff9800',\n padding: 15,\n borderRadius: 8,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.25,\n shadowRadius: 3.84,\n elevation: 5,\n zIndex: 1000,\n }}\n >\n <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <View>\n <Text style={{ color: 'white', fontWeight: 'bold' }}>\n {notificationType === 'error' ? 'Error' : 'Warning'}\n </Text>\n </View>\n <View>\n <TouchableOpacity onPress={onCloseError}>\n <Ionicons name=\"close\" size={20} color=\"white\" />\n </TouchableOpacity>\n </View>\n </View>\n <Text style={{ color: 'white', marginTop: 5 }}>{errorMessage}</Text>\n </Animated.View>\n );\n };\n\n const renderInputToolbarDefault = useCallback(\n (props) => (\n <View style={{ backgroundColor: '#fff', paddingBottom: 4, paddingTop: 4 }}>\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n minHeight: 44,\n maxHeight: 56,\n backgroundColor: '#fff',\n borderRadius: 22,\n marginHorizontal: 8,\n paddingHorizontal: 8,\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n }}\n >\n <TouchableOpacity\n onPress={onSelectImages}\n style={{\n width: 32,\n height: 32,\n borderRadius: 16,\n backgroundColor: '#fff',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 8,\n }}\n >\n <MaterialIcons name=\"add\" size={24} color=\"#888\" />\n </TouchableOpacity>\n <TextInput\n ref={ref}\n style={{\n flex: 1,\n //minHeight: 36,\n maxHeight: 44,\n backgroundColor: 'transparent',\n color: '#444',\n paddingHorizontal: 8,\n paddingVertical: 0,\n alignSelf: 'center',\n textAlignVertical: 'center',\n }}\n placeholder={placeholder || 'Jot something down'}\n placeholderTextColor={colors.gray[400]}\n multiline\n value={text}\n onChangeText={onInputTextChanged}\n />\n <TouchableOpacity\n onPress={() => onSend([{ text: text }])}\n // disabled={(!messageText.trim() && images.length === 0) || isUploadingImage || loading}\n disabled={false}\n style={{\n marginLeft: 8,\n // opacity: (!messageText.trim() && images.length === 0) || isUploadingImage || loading ? 0.5 : 1,\n opacity: !text.trim() && images.length === 0 ? 0.5 : 1,\n }}\n >\n <MaterialCommunityIcons\n name=\"send-circle\"\n size={32}\n color={!text.trim() && images.length === 0 ? colors.gray[400] : colors.blue[500]}\n // color={\n // (!messageText.trim() && images.length === 0) || isUploadingImage || loading\n // ? colors.gray[400]\n // : colors.blue[500]\n // }\n />\n </TouchableOpacity>\n </View>\n {/* Selected Images Row */}\n {images && images.length > 0 && (\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={{ marginTop: 4, marginLeft: 8 }}\n >\n {images.map((img, index) => (\n <View\n key={`image-preview-${index}`}\n style={{\n width: 48,\n height: 48,\n marginRight: 8,\n borderRadius: 6,\n overflow: 'hidden',\n position: 'relative',\n backgroundColor: colors.gray[200],\n }}\n >\n <Image\n source={{ uri: img.uri || img.url }}\n style={{ width: '100%', height: '100%' }}\n alt={`selected image ${index + 1}`}\n />\n <TouchableOpacity\n onPress={() => {\n onRemoveImage(index);\n }}\n style={{\n position: 'absolute',\n top: 2,\n right: 2,\n backgroundColor: 'rgba(0,0,0,0.6)',\n borderRadius: 10,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Ionicons name=\"close\" size={14} color=\"white\" />\n </TouchableOpacity>\n </View>\n ))}\n </ScrollView>\n )}\n </View>\n ),\n [onSelectImages, text, images, isUploadingImage, loading, onSend, onRemoveImage, placeholder, ref],\n );\n\n const renderAccessoryDefault = useCallback(() => {\n if (!images.length) return null;\n return (\n <Box style={{ position: 'relative', height: 70, backgroundColor: 'transparent', justifyContent: 'center' }}>\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={{\n flexDirection: 'row',\n paddingLeft: 15,\n paddingRight: 5,\n }}\n contentContainerStyle={{\n alignItems: 'center',\n height: '100%',\n }}\n >\n {images.map((img, index) => (\n <View\n key={`image-preview-${index}`}\n style={{\n width: 40,\n height: 40,\n marginRight: 15,\n borderRadius: 4,\n backgroundColor: colors.gray[200],\n overflow: 'hidden',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n position: 'relative',\n zIndex: 10,\n }}\n >\n <Image\n source={{ uri: img.uri || img.url }}\n style={{ width: '100%', height: '100%' }}\n alt={`selected image ${index + 1}`}\n />\n {/* Cross button at top right */}\n <TouchableOpacity\n onPress={() => {\n const newImages = [...images];\n newImages.splice(index, 1);\n setImages(newImages);\n if (newImages.length === 0) {\n setSelectedImage('');\n const inputRef = getRefCurrent(ref);\n if (inputRef && typeof inputRef.focus === 'function') {\n inputRef.focus();\n }\n }\n }}\n style={{\n position: 'absolute',\n top: -1,\n right: -1,\n backgroundColor: 'rgba(0,0,0,0.6)',\n borderRadius: 12,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999,\n }}\n >\n <Ionicons name=\"close\" size={16} color=\"white\" />\n </TouchableOpacity>\n </View>\n ))}\n </ScrollView>\n </Box>\n );\n }, [images, setImages, setSelectedImage, ref]);\n\n return (\n <KeyboardAvoidingView\n style={{ flex: 1, justifyContent: 'flex-end', backgroundColor: '#fff' }}\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n keyboardVerticalOffset={keyboardVerticalOffset}\n >\n <View\n style={{\n flex: 1,\n backgroundColor: '#fff',\n position: 'relative',\n marginBottom: bottomMargin,\n }}\n >\n {renderErrorNotification()}\n {loading && <Spinner color={colors.blue[500]} />}\n <GiftedChat\n ref={ref}\n wrapInSafeArea={wrapInSafeArea}\n messages={messages}\n onSend={onSend}\n text={text}\n onInputTextChanged={onInputTextChanged}\n user={user}\n renderMessageText={renderMessageText}\n renderActions={renderActions || null}\n renderAccessory={renderAccessory || renderAccessoryDefault}\n renderMessage={renderMessage}\n renderInputToolbar={renderInputToolbar || renderInputToolbarDefault}\n renderLoading={props.renderLoading || null}\n renderChatFooter={renderChatFooter}\n renderLoadEarlier={renderLoadEarlier}\n listViewProps={listViewProps}\n loadEarlier={loadEarlier}\n isLoadingEarlier={isLoadingEarlier}\n bottomOffset={props.bottomOffset || 0}\n isKeyboardInternallyHandled={props.isKeyboardInternallyHandled || false}\n renderFooter={() => (renderFooter ? renderFooter() : null)}\n minComposerHeight={minComposerHeight}\n maxComposerHeight={maxComposerHeight}\n placeholder={placeholder || 'Jot something down'}\n lightboxProps={lightboxProps}\n infiniteScroll={infiniteScroll}\n alwaysShowSend={alwaysShowSend}\n minInputToolbarHeight={minInputToolbarHeight}\n textInputProps={textInputProps}\n messagesContainerStyle={messagesContainerStyle}\n isTyping={props.isTyping || false}\n renderChatEmpty={props.renderChatEmpty || null}\n {...rest}\n />\n </View>\n </KeyboardAvoidingView>\n );\n});\n\nexport default GiftedChatInboxComponent;\n"],"names":["React","props"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GiftedChatInboxComponent.js","sources":["../../../../src/screens/inbox/components/GiftedChatInboxComponent.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo } from 'react';\nimport { Platform, View, KeyboardAvoidingView, TouchableOpacity, TextInput, ScrollView, Animated } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { Spinner, Box, Image, HStack, Text } from '@admin-layout/gluestack-ui-mobile';\nimport { GiftedChat, Send } from 'react-native-gifted-chat';\nimport { Ionicons, MaterialCommunityIcons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\n// If you have a SlackMessage component, import it:\n// import SlackMessage from './SlackMessage';\n\nexport interface GiftedChatInboxComponentProps {\n messages: any[];\n onSend: (messages: any[]) => void;\n text: string;\n onInputTextChanged: (text: string) => void;\n user: any;\n images: any[];\n onSelectImages: () => void;\n onRemoveImage: (index: number) => void;\n selectedImage: string;\n setSelectedImage: (img: string) => void;\n isUploadingImage: boolean;\n loading: boolean;\n errorMessage: string;\n notificationType?: string;\n onCloseError?: () => void;\n inputToolbarHeight?: number;\n bottomMargin?: number;\n renderMessageText?: any;\n renderActions?: any;\n renderAccessory?: any;\n renderMessage?: any;\n renderInputToolbar?: any;\n renderChatFooter?: any;\n renderLoadEarlier?: any;\n loadEarlier?: boolean;\n isLoadingEarlier?: boolean;\n totalCount?: number;\n channelMessagesLength?: number;\n keyboardVerticalOffset?: number;\n placeholder?: string;\n listViewProps?: any;\n wrapInSafeArea?: boolean;\n minComposerHeight?: number;\n maxComposerHeight?: number;\n renderFooter?: any;\n lightboxProps?: any;\n infiniteScroll?: boolean;\n alwaysShowSend?: boolean;\n minInputToolbarHeight?: number;\n textInputProps?: any;\n messagesContainerStyle?: any;\n renderHeader?: any;\n [key: string]: any;\n}\n\n// Helper to get the current ref if it's an object\nfunction getRefCurrent(ref: React.ForwardedRef<any>) {\n if (ref && typeof ref === 'object' && 'current' in ref) {\n return ref.current;\n }\n return null;\n}\n\nexport const GiftedChatInboxComponent = forwardRef<any, GiftedChatInboxComponentProps>((props, ref) => {\n // Get safe area insets for proper bottom padding on iOS\n const insets = useSafeAreaInsets();\n const bottomSafeArea = Platform.OS === 'ios' ? insets.bottom : 0;\n\n const {\n messages,\n onSend,\n text,\n onInputTextChanged,\n user,\n images,\n setImages,\n onSelectImages,\n onRemoveImage,\n selectedImage,\n setSelectedImage,\n isUploadingImage,\n loading,\n errorMessage,\n notificationType = 'error',\n onCloseError,\n inputToolbarHeight = 56,\n bottomMargin = 0,\n renderMessageText,\n renderActions,\n renderAccessory,\n renderMessage,\n renderInputToolbar,\n renderChatFooter,\n renderLoadEarlier,\n loadEarlier,\n isLoadingEarlier,\n keyboardVerticalOffset = Platform.OS === 'ios' ? 64 : 0,\n placeholder = 'Jot something down',\n listViewProps,\n wrapInSafeArea = true,\n minComposerHeight = 36,\n maxComposerHeight = 100,\n renderFooter,\n lightboxProps = {\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n },\n infiniteScroll = false,\n alwaysShowSend = true,\n minInputToolbarHeight = 30,\n textInputProps = {\n multiline: true,\n returnKeyType: 'default',\n enablesReturnKeyAutomatically: true,\n placeholderTextColor: colors.gray[400],\n },\n messagesContainerStyle = { paddingTop: 8 },\n renderHeader,\n ...rest\n } = props;\n\n // Error Notification\n const renderErrorNotification = () => {\n if (!errorMessage) return null;\n return (\n <Animated.View\n style={{\n position: 'absolute',\n top: 10,\n left: 10,\n right: 10,\n backgroundColor: notificationType === 'error' ? '#f44336' : '#ff9800',\n padding: 15,\n borderRadius: 8,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.25,\n shadowRadius: 3.84,\n elevation: 5,\n zIndex: 1000,\n }}\n >\n <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <View>\n <Text style={{ color: 'white', fontWeight: 'bold' }}>\n {notificationType === 'error' ? 'Error' : 'Warning'}\n </Text>\n </View>\n <View>\n <TouchableOpacity onPress={onCloseError}>\n <Ionicons name=\"close\" size={20} color=\"white\" />\n </TouchableOpacity>\n </View>\n </View>\n <Text style={{ color: 'white', marginTop: 5 }}>{errorMessage}</Text>\n </Animated.View>\n );\n };\n\n const renderInputToolbarDefault = useCallback(\n (props) => (\n <View style={{ backgroundColor: '#fff', paddingBottom: Math.max(4, bottomSafeArea), paddingTop: 4 }}>\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n minHeight: 44,\n maxHeight: 56,\n backgroundColor: '#fff',\n borderRadius: 22,\n marginHorizontal: 8,\n paddingHorizontal: 8,\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n }}\n >\n <TouchableOpacity\n onPress={onSelectImages}\n style={{\n width: 32,\n height: 32,\n borderRadius: 16,\n backgroundColor: '#fff',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 8,\n }}\n >\n <MaterialIcons name=\"add\" size={24} color=\"#888\" />\n </TouchableOpacity>\n <TextInput\n ref={ref}\n style={{\n flex: 1,\n //minHeight: 36,\n maxHeight: 44,\n backgroundColor: 'transparent',\n color: '#444',\n paddingHorizontal: 8,\n paddingVertical: 0,\n alignSelf: 'center',\n textAlignVertical: 'center',\n }}\n placeholder={placeholder || 'Jot something down'}\n placeholderTextColor={colors.gray[400]}\n multiline\n value={text}\n onChangeText={onInputTextChanged}\n />\n <TouchableOpacity\n onPress={() => onSend([{ text: text }])}\n // disabled={(!messageText.trim() && images.length === 0) || isUploadingImage || loading}\n disabled={false}\n style={{\n marginLeft: 8,\n // opacity: (!messageText.trim() && images.length === 0) || isUploadingImage || loading ? 0.5 : 1,\n opacity: !text.trim() && images.length === 0 ? 0.5 : 1,\n }}\n >\n <MaterialCommunityIcons\n name=\"send-circle\"\n size={32}\n color={!text.trim() && images.length === 0 ? colors.gray[400] : colors.blue[500]}\n // color={\n // (!messageText.trim() && images.length === 0) || isUploadingImage || loading\n // ? colors.gray[400]\n // : colors.blue[500]\n // }\n />\n </TouchableOpacity>\n </View>\n {/* Selected Images Row */}\n {images && images.length > 0 && (\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={{ marginTop: 4, marginLeft: 8 }}\n >\n {images.map((img, index) => (\n <View\n key={`image-preview-${index}`}\n style={{\n width: 48,\n height: 48,\n marginRight: 8,\n borderRadius: 6,\n overflow: 'hidden',\n position: 'relative',\n backgroundColor: colors.gray[200],\n }}\n >\n <Image\n source={{ uri: img.uri || img.url }}\n style={{ width: '100%', height: '100%' }}\n alt={`selected image ${index + 1}`}\n />\n <TouchableOpacity\n onPress={() => {\n onRemoveImage(index);\n }}\n style={{\n position: 'absolute',\n top: 2,\n right: 2,\n backgroundColor: 'rgba(0,0,0,0.6)',\n borderRadius: 10,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Ionicons name=\"close\" size={14} color=\"white\" />\n </TouchableOpacity>\n </View>\n ))}\n </ScrollView>\n )}\n </View>\n ),\n [\n onSelectImages,\n text,\n images,\n isUploadingImage,\n loading,\n onSend,\n onRemoveImage,\n placeholder,\n ref,\n bottomSafeArea,\n onInputTextChanged,\n ],\n );\n\n const renderAccessoryDefault = useCallback(() => {\n if (!images.length) return null;\n return (\n <Box style={{ position: 'relative', height: 70, backgroundColor: 'transparent', justifyContent: 'center' }}>\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={{\n flexDirection: 'row',\n paddingLeft: 15,\n paddingRight: 5,\n }}\n contentContainerStyle={{\n alignItems: 'center',\n height: '100%',\n }}\n >\n {images.map((img, index) => (\n <View\n key={`image-preview-${index}`}\n style={{\n width: 40,\n height: 40,\n marginRight: 15,\n borderRadius: 4,\n backgroundColor: colors.gray[200],\n overflow: 'hidden',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n position: 'relative',\n zIndex: 10,\n }}\n >\n <Image\n source={{ uri: img.uri || img.url }}\n style={{ width: '100%', height: '100%' }}\n alt={`selected image ${index + 1}`}\n />\n {/* Cross button at top right */}\n <TouchableOpacity\n onPress={() => {\n const newImages = [...images];\n newImages.splice(index, 1);\n setImages(newImages);\n if (newImages.length === 0) {\n setSelectedImage('');\n const inputRef = getRefCurrent(ref);\n if (inputRef && typeof inputRef.focus === 'function') {\n inputRef.focus();\n }\n }\n }}\n style={{\n position: 'absolute',\n top: -1,\n right: -1,\n backgroundColor: 'rgba(0,0,0,0.6)',\n borderRadius: 12,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999,\n }}\n >\n <Ionicons name=\"close\" size={16} color=\"white\" />\n </TouchableOpacity>\n </View>\n ))}\n </ScrollView>\n </Box>\n );\n }, [images, setImages, setSelectedImage, ref]);\n\n return (\n <KeyboardAvoidingView\n style={{ flex: 1, justifyContent: 'flex-end', backgroundColor: '#fff' }}\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n keyboardVerticalOffset={keyboardVerticalOffset}\n >\n <View\n style={{\n flex: 1,\n backgroundColor: '#fff',\n position: 'relative',\n marginBottom: bottomMargin,\n }}\n >\n {renderErrorNotification()}\n {loading && <Spinner color={colors.blue[500]} />}\n <GiftedChat\n ref={ref}\n wrapInSafeArea={wrapInSafeArea}\n messages={messages}\n onSend={onSend}\n text={text}\n onInputTextChanged={onInputTextChanged}\n user={user}\n renderMessageText={renderMessageText}\n renderActions={renderActions || null}\n renderAccessory={renderAccessory || renderAccessoryDefault}\n renderMessage={renderMessage}\n renderInputToolbar={renderInputToolbar || renderInputToolbarDefault}\n renderLoading={props.renderLoading || null}\n renderChatFooter={renderChatFooter}\n renderLoadEarlier={renderLoadEarlier}\n listViewProps={listViewProps}\n loadEarlier={loadEarlier}\n isLoadingEarlier={isLoadingEarlier}\n bottomOffset={(props.bottomOffset || 0) + bottomSafeArea}\n isKeyboardInternallyHandled={props.isKeyboardInternallyHandled || false}\n renderFooter={() => (renderFooter ? renderFooter() : null)}\n minComposerHeight={minComposerHeight}\n maxComposerHeight={maxComposerHeight}\n placeholder={placeholder || 'Jot something down'}\n lightboxProps={lightboxProps}\n infiniteScroll={infiniteScroll}\n alwaysShowSend={alwaysShowSend}\n minInputToolbarHeight={minInputToolbarHeight}\n textInputProps={textInputProps}\n messagesContainerStyle={messagesContainerStyle}\n isTyping={props.isTyping || false}\n renderChatEmpty={props.renderChatEmpty || null}\n {...rest}\n />\n </View>\n </KeyboardAvoidingView>\n );\n});\n\nexport default GiftedChatInboxComponent;\n"],"names":["React","props"],"mappings":"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"}
|
|
@@ -41,12 +41,13 @@ class Bubble extends React__default.Component {
|
|
|
41
41
|
super(props);
|
|
42
42
|
}
|
|
43
43
|
renderMessageText() {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
var _a;
|
|
45
|
+
if ((_a = this.props.currentMessage) == null ? void 0 : _a.text) {
|
|
46
|
+
const _b = this.props, {
|
|
46
47
|
containerStyle,
|
|
47
48
|
wrapperStyle,
|
|
48
49
|
messageTextStyle
|
|
49
|
-
} =
|
|
50
|
+
} = _b, messageTextProps = __objRest(_b, [
|
|
50
51
|
"containerStyle",
|
|
51
52
|
"wrapperStyle",
|
|
52
53
|
"messageTextStyle"
|
|
@@ -291,7 +292,7 @@ class Bubble extends React__default.Component {
|
|
|
291
292
|
},
|
|
292
293
|
underlayColor: "transparent",
|
|
293
294
|
disabled: true,
|
|
294
|
-
|
|
295
|
+
accessibilityRole: "text"
|
|
295
296
|
}, this.props.touchableProps),
|
|
296
297
|
/* @__PURE__ */ React__default.createElement(View, { style: [styles.wrapper, this.props.wrapperStyle] }, /* @__PURE__ */ React__default.createElement(View, null, this.renderCustomView(), messageHeader, this.renderMessageImage(), this.renderMessageText()))
|
|
297
298
|
));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlackBubble.js","sources":["../../../../../src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx"],"sourcesContent":["/* eslint-disable no-underscore-dangle, no-use-before-define */\nimport React from 'react';\nimport { Text, StyleSheet, TouchableOpacity, TouchableHighlight, View, Platform, Dimensions } from 'react-native';\n\nimport { MessageText, MessageImage, Time, utils } from 'react-native-gifted-chat';\nimport CachedImage from '../CachedImage';\nconst { isSameUser, isSameDay } = utils;\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nexport default class Bubble extends React.Component<any> {\n static defaultProps: {\n touchableProps: {};\n onLongPress: null;\n renderMessageImage: null;\n renderMessageText: null;\n renderCustomView: null;\n renderTime: null;\n currentMessage: { text: null; createdAt: null; image: null };\n nextMessage: {};\n previousMessage: {};\n containerStyle: {};\n wrapperStyle: {};\n tickStyle: {};\n containerToNextStyle: {};\n containerToPreviousStyle: {};\n isShowImageViewer: false;\n setImageViewer: (obj: any, v: boolean) => void;\n };\n static propTypes: any;\n constructor(props: any) {\n super(props);\n }\n\n renderMessageText() {\n if (this.props.currentMessage.text) {\n const { containerStyle, wrapperStyle, messageTextStyle, ...messageTextProps } = this.props;\n if (this.props.renderMessageText) {\n return this.props.renderMessageText(messageTextProps);\n }\n return (\n <MessageText\n {...messageTextProps}\n textStyle={{\n left: [\n styles.standardFont,\n styles.slackMessageText,\n messageTextProps.textStyle,\n messageTextStyle,\n ],\n }}\n />\n );\n }\n return null;\n }\n\n renderMessageImage() {\n const { currentMessage, containerStyle, wrapperStyle, ...messageImageProps } = this.props;\n\n // Check if we have multiple images\n if (currentMessage.images && Array.isArray(currentMessage.images) && currentMessage.images.length > 0) {\n // Filter out any invalid or empty image URLs first\n const validImages = currentMessage.images.filter((url) => url && typeof url === 'string');\n\n // If no valid images after filtering, don't render anything\n if (validImages.length === 0) {\n return null;\n }\n\n // Render multiple images in a scrollable horizontal row\n return (\n <View style={{ marginVertical: 0 }}>\n <View\n style={{\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n }}\n >\n {validImages.map((imageUrl, index) => {\n // Check if this is a local image\n const isLocalImage =\n imageUrl.startsWith('file:') ||\n imageUrl.startsWith('data:') ||\n imageUrl.startsWith('content:') ||\n (!imageUrl.startsWith('http://') && !imageUrl.startsWith('https://'));\n\n const imageSize =\n validImages.length === 1\n ? { width: windowWidth * 0.6, height: windowWidth * 0.4 }\n : { width: windowWidth * 0.3, height: windowWidth * 0.3 };\n\n // Show upload indicator if this message is uploading\n const isUploading = currentMessage.isUploading;\n\n return (\n <TouchableHighlight\n key={`image-${index}-${currentMessage._id}`}\n underlayColor={'transparent'}\n onPress={() => {\n // Don't allow viewing while uploading\n if (isUploading) return;\n\n // Create a message-like object with this image for the viewer\n const imageObject = {\n _id: `${currentMessage._id}-img-${index}`,\n image: imageUrl,\n };\n this.props.setImageViewer(imageObject, true);\n }}\n >\n <View\n style={{\n ...imageSize,\n maxHeight: 200,\n borderRadius: 8,\n overflow: 'hidden',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n backgroundColor: '#f7f7f7',\n }}\n >\n {isLocalImage ? (\n // For local images, use direct Image component with no loading state\n <View style={{ width: '100%', height: '100%' }}>\n <MessageImage\n {...messageImageProps}\n currentMessage={{ ...currentMessage, image: imageUrl }}\n imageStyle={{\n width: '100%',\n height: '100%',\n borderRadius: 8,\n }}\n />\n\n {/* Show upload indicator if needed */}\n {isUploading && (\n <View\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0,0,0,0.2)',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Text style={{ color: 'white', fontWeight: 'bold' }}>\n Uploading...\n </Text>\n </View>\n )}\n </View>\n ) : (\n // For remote images, use CachedImage with loading placeholder\n <CachedImage\n style={[styles.slackImage, { width: '100%', height: '100%' }]}\n cacheKey={`${currentMessage._id}-img-${index}-slack-bubble-imageKey`}\n source={{\n uri: imageUrl,\n expiresIn: 86400,\n }}\n resizeMode={'cover'}\n alt={'image'}\n placeholderContent={\n <View\n style={[\n styles.slackImage,\n {\n width: '100%',\n height: '100%',\n backgroundColor: '#e1e1e1',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 8,\n },\n ]}\n >\n <Text>{isUploading ? 'Uploading...' : 'Loading...'}</Text>\n </View>\n }\n />\n )}\n </View>\n </TouchableHighlight>\n );\n })}\n </View>\n </View>\n );\n }\n\n // Fall back to single image rendering if no images array\n if (currentMessage.image) {\n if (this.props.renderMessageImage) {\n return this.props.renderMessageImage(messageImageProps);\n }\n const { image, _id } = currentMessage;\n\n // Add validation for image URL\n if (!image || typeof image !== 'string') {\n return null;\n }\n\n // Check if this is a local image (from device camera/library)\n const isLocalImage =\n image.startsWith('file:') ||\n image.startsWith('data:') ||\n image.startsWith('content:') ||\n // Check if the image is a pendingUpload by checking if it doesn't start with http/https\n (!image.startsWith('http://') && !image.startsWith('https://'));\n\n // Check uploading state\n const isUploading = currentMessage.isUploading;\n\n // Class components can't use hooks like useMemo\n // Directly render the CachedImage instead\n return (\n <TouchableHighlight\n underlayColor={'transparent'}\n style={{ width: '100%', marginVertical: 0 }}\n onPress={() => {\n // Don't allow viewing while uploading\n if (isUploading) return;\n this.props.setImageViewer(currentMessage, true);\n }}\n >\n <View\n style={{\n width: windowWidth * 0.6, // 60% of screen width\n height: windowWidth * 0.4, // Maintain aspect ratio\n maxHeight: 200,\n borderRadius: 8,\n overflow: 'hidden',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n backgroundColor: '#f7f7f7',\n }}\n >\n {isLocalImage ? (\n // For local images, use direct Image component with no loading state\n <View style={{ width: '100%', height: '100%', position: 'relative' }}>\n <MessageImage\n {...messageImageProps}\n imageStyle={{\n width: '100%',\n height: '100%',\n borderRadius: 8,\n }}\n />\n\n {/* Show upload indicator if needed */}\n {isUploading && (\n <View\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0,0,0,0.2)',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Text style={{ color: 'white', fontWeight: 'bold' }}>Uploading...</Text>\n </View>\n )}\n </View>\n ) : (\n // For remote images, use CachedImage with loading placeholder\n <CachedImage\n style={[styles.slackImage, { width: '100%', height: '100%' }]}\n cacheKey={`${_id}-slack-bubble-imageKey`}\n source={{\n uri: image,\n expiresIn: 86400,\n }}\n resizeMode={'cover'}\n alt={'image'}\n placeholderContent={\n <View\n style={[\n styles.slackImage,\n {\n width: '100%',\n height: '100%',\n backgroundColor: '#e1e1e1',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 8,\n },\n ]}\n >\n <Text>{isUploading ? 'Uploading...' : 'Loading...'}</Text>\n </View>\n }\n />\n )}\n </View>\n </TouchableHighlight>\n );\n }\n\n return null;\n }\n\n renderTicks() {\n const { currentMessage } = this.props;\n if (this.props.renderTicks) {\n return this.props.renderTicks(currentMessage);\n }\n if (currentMessage.user._id !== this.props.user._id) {\n return null;\n }\n if (currentMessage.sent || currentMessage.received) {\n return (\n <View style={[styles.headerItem, styles.tickView]}>\n {currentMessage.sent && (\n <Text style={[styles.standardFont, styles.tick, this.props.tickStyle]}>✓</Text>\n )}\n {currentMessage.received && (\n <Text style={[styles.standardFont, styles.tick, this.props.tickStyle]}>✓</Text>\n )}\n </View>\n );\n }\n return null;\n }\n\n renderUsername() {\n const username = this.props.currentMessage.user.name;\n if (username) {\n const { containerStyle, wrapperStyle, ...usernameProps } = this.props;\n if (this.props.renderUsername) {\n return this.props.renderUsername(usernameProps);\n }\n return (\n <Text style={[styles.standardFont, styles.headerItem, styles.username, this.props.usernameStyle]}>\n {username}\n </Text>\n );\n }\n return null;\n }\n\n renderTime() {\n if (this.props.currentMessage.createdAt) {\n const { containerStyle, wrapperStyle, ...timeProps }: any = this.props;\n if (this.props.renderTime) {\n return this.props.renderTime(timeProps);\n }\n return (\n <Time\n {...timeProps}\n containerStyle={{ left: [styles.timeContainer] }}\n textStyle={{\n left: [styles.standardFont, styles.headerItem, styles.time, timeProps.textStyle],\n }}\n />\n );\n }\n return null;\n }\n\n renderCustomView() {\n if (this.props.renderCustomView) {\n return this.props.renderCustomView(this.props);\n }\n return null;\n }\n\n render() {\n const isSameThread =\n isSameUser(this.props.currentMessage, this.props.previousMessage) &&\n isSameDay(this.props.currentMessage, this.props.previousMessage);\n\n const messageHeader = isSameThread ? null : (\n <View style={styles.headerView}>\n {this.renderUsername()}\n {this.renderTime()}\n {this.renderTicks()}\n </View>\n );\n\n return (\n <View style={[styles.container, this.props.containerStyle]}>\n <TouchableHighlight\n style={{ width: '100%' }}\n // underlayColor={'#c0c0c0'}\n underlayColor={'transparent'}\n disabled={true}\n accessibilityTraits=\"text\"\n {...this.props.touchableProps}\n >\n <View style={[styles.wrapper, this.props.wrapperStyle]}>\n <View>\n {this.renderCustomView()}\n {messageHeader}\n {this.renderMessageImage()}\n {this.renderMessageText()}\n </View>\n </View>\n </TouchableHighlight>\n </View>\n );\n }\n}\n\n// Note: Everything is forced to be \"left\" positioned with this component.\n// The \"right\" position is only used in the default Bubble.\nconst styles = StyleSheet.create({\n standardFont: {\n fontSize: 15,\n },\n slackMessageText: {\n marginLeft: 0,\n marginRight: 0,\n },\n container: {\n flex: 1,\n alignItems: 'flex-start',\n },\n wrapper: {\n marginRight: 60,\n minHeight: 20,\n justifyContent: 'flex-start',\n },\n username: {\n fontWeight: 'bold',\n top: 0,\n paddingTop: 0,\n marginTop: 0,\n },\n time: {\n textAlign: 'left',\n fontSize: 12,\n },\n timeContainer: {\n marginLeft: 0,\n marginRight: 0,\n marginBottom: 0,\n },\n headerItem: {\n marginRight: 10,\n },\n headerView: {\n // Try to align it better with the avatar on Android.\n marginTop: Platform.OS === 'android' ? -2 : 0,\n flexDirection: 'row',\n alignItems: 'baseline',\n },\n /* eslint-disable react-native/no-color-literals */\n tick: {\n backgroundColor: 'transparent',\n color: 'white',\n },\n /* eslint-enable react-native/no-color-literals */\n tickView: {\n flexDirection: 'row',\n },\n slackImage: {\n borderRadius: 3,\n marginLeft: 8,\n marginRight: 0,\n },\n});\n\n// Bubble.contextTypes = {\n// actionSheet: PropTypes.func,\n// };\n\nBubble.defaultProps = {\n touchableProps: {},\n onLongPress: null,\n renderMessageImage: null,\n renderMessageText: null,\n renderCustomView: null,\n renderTime: null,\n currentMessage: {\n text: null,\n createdAt: null,\n image: null,\n },\n nextMessage: {},\n previousMessage: {},\n containerStyle: {},\n wrapperStyle: {},\n tickStyle: {},\n containerToNextStyle: {},\n containerToPreviousStyle: {},\n isShowImageViewer: false,\n setImageViewer: (obj: any, v: boolean) => null,\n};\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SlackBubble.js","sources":["../../../../../src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx"],"sourcesContent":["/* eslint-disable no-underscore-dangle, no-use-before-define */\nimport React from 'react';\nimport { Text, StyleSheet, TouchableOpacity, TouchableHighlight, View, Platform, Dimensions } from 'react-native';\n\nimport { MessageText, MessageImage, Time, utils } from 'react-native-gifted-chat';\nimport CachedImage from '../CachedImage';\nconst { isSameUser, isSameDay } = utils;\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nexport default class Bubble extends React.Component<any> {\n static defaultProps: {\n touchableProps: {};\n onLongPress: null;\n renderMessageImage: null;\n renderMessageText: null;\n renderCustomView: null;\n renderTime: null;\n currentMessage: { text: null; createdAt: null; image: null };\n nextMessage: {};\n previousMessage: {};\n containerStyle: {};\n wrapperStyle: {};\n tickStyle: {};\n containerToNextStyle: {};\n containerToPreviousStyle: {};\n isShowImageViewer: false;\n setImageViewer: (obj: any, v: boolean) => void;\n };\n static propTypes: any;\n constructor(props: any) {\n super(props);\n }\n\n renderMessageText() {\n if (this.props.currentMessage?.text) {\n const { containerStyle, wrapperStyle, messageTextStyle, ...messageTextProps } = this.props;\n if (this.props.renderMessageText) {\n return this.props.renderMessageText(messageTextProps);\n }\n return (\n <MessageText\n {...messageTextProps}\n textStyle={{\n left: [\n styles.standardFont,\n styles.slackMessageText,\n messageTextProps.textStyle,\n messageTextStyle,\n ],\n }}\n />\n );\n }\n return null;\n }\n\n renderMessageImage() {\n const { currentMessage, containerStyle, wrapperStyle, ...messageImageProps } = this.props;\n\n // Check if we have multiple images\n if (currentMessage.images && Array.isArray(currentMessage.images) && currentMessage.images.length > 0) {\n // Filter out any invalid or empty image URLs first\n const validImages = currentMessage.images.filter((url) => url && typeof url === 'string');\n\n // If no valid images after filtering, don't render anything\n if (validImages.length === 0) {\n return null;\n }\n\n // Render multiple images in a scrollable horizontal row\n return (\n <View style={{ marginVertical: 0 }}>\n <View\n style={{\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n }}\n >\n {validImages.map((imageUrl, index) => {\n // Check if this is a local image\n const isLocalImage =\n imageUrl.startsWith('file:') ||\n imageUrl.startsWith('data:') ||\n imageUrl.startsWith('content:') ||\n (!imageUrl.startsWith('http://') && !imageUrl.startsWith('https://'));\n\n const imageSize =\n validImages.length === 1\n ? { width: windowWidth * 0.6, height: windowWidth * 0.4 }\n : { width: windowWidth * 0.3, height: windowWidth * 0.3 };\n\n // Show upload indicator if this message is uploading\n const isUploading = currentMessage.isUploading;\n\n return (\n <TouchableHighlight\n key={`image-${index}-${currentMessage._id}`}\n underlayColor={'transparent'}\n onPress={() => {\n // Don't allow viewing while uploading\n if (isUploading) return;\n\n // Create a message-like object with this image for the viewer\n const imageObject = {\n _id: `${currentMessage._id}-img-${index}`,\n image: imageUrl,\n };\n this.props.setImageViewer(imageObject, true);\n }}\n >\n <View\n style={{\n ...imageSize,\n maxHeight: 200,\n borderRadius: 8,\n overflow: 'hidden',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n backgroundColor: '#f7f7f7',\n }}\n >\n {isLocalImage ? (\n // For local images, use direct Image component with no loading state\n <View style={{ width: '100%', height: '100%' }}>\n <MessageImage\n {...messageImageProps}\n currentMessage={{ ...currentMessage, image: imageUrl }}\n imageStyle={{\n width: '100%',\n height: '100%',\n borderRadius: 8,\n }}\n />\n\n {/* Show upload indicator if needed */}\n {isUploading && (\n <View\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0,0,0,0.2)',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Text style={{ color: 'white', fontWeight: 'bold' }}>\n Uploading...\n </Text>\n </View>\n )}\n </View>\n ) : (\n // For remote images, use CachedImage with loading placeholder\n <CachedImage\n style={[styles.slackImage, { width: '100%', height: '100%' }]}\n cacheKey={`${currentMessage._id}-img-${index}-slack-bubble-imageKey`}\n source={{\n uri: imageUrl,\n expiresIn: 86400,\n }}\n resizeMode={'cover'}\n alt={'image'}\n placeholderContent={\n <View\n style={[\n styles.slackImage,\n {\n width: '100%',\n height: '100%',\n backgroundColor: '#e1e1e1',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 8,\n },\n ]}\n >\n <Text>{isUploading ? 'Uploading...' : 'Loading...'}</Text>\n </View>\n }\n />\n )}\n </View>\n </TouchableHighlight>\n );\n })}\n </View>\n </View>\n );\n }\n\n // Fall back to single image rendering if no images array\n if (currentMessage.image) {\n if (this.props.renderMessageImage) {\n return this.props.renderMessageImage(messageImageProps);\n }\n const { image, _id } = currentMessage;\n\n // Add validation for image URL\n if (!image || typeof image !== 'string') {\n return null;\n }\n\n // Check if this is a local image (from device camera/library)\n const isLocalImage =\n image.startsWith('file:') ||\n image.startsWith('data:') ||\n image.startsWith('content:') ||\n // Check if the image is a pendingUpload by checking if it doesn't start with http/https\n (!image.startsWith('http://') && !image.startsWith('https://'));\n\n // Check uploading state\n const isUploading = currentMessage.isUploading;\n\n // Class components can't use hooks like useMemo\n // Directly render the CachedImage instead\n return (\n <TouchableHighlight\n underlayColor={'transparent'}\n style={{ width: '100%', marginVertical: 0 }}\n onPress={() => {\n // Don't allow viewing while uploading\n if (isUploading) return;\n this.props.setImageViewer(currentMessage, true);\n }}\n >\n <View\n style={{\n width: windowWidth * 0.6, // 60% of screen width\n height: windowWidth * 0.4, // Maintain aspect ratio\n maxHeight: 200,\n borderRadius: 8,\n overflow: 'hidden',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n backgroundColor: '#f7f7f7',\n }}\n >\n {isLocalImage ? (\n // For local images, use direct Image component with no loading state\n <View style={{ width: '100%', height: '100%', position: 'relative' }}>\n <MessageImage\n {...messageImageProps}\n imageStyle={{\n width: '100%',\n height: '100%',\n borderRadius: 8,\n }}\n />\n\n {/* Show upload indicator if needed */}\n {isUploading && (\n <View\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0,0,0,0.2)',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Text style={{ color: 'white', fontWeight: 'bold' }}>Uploading...</Text>\n </View>\n )}\n </View>\n ) : (\n // For remote images, use CachedImage with loading placeholder\n <CachedImage\n style={[styles.slackImage, { width: '100%', height: '100%' }]}\n cacheKey={`${_id}-slack-bubble-imageKey`}\n source={{\n uri: image,\n expiresIn: 86400,\n }}\n resizeMode={'cover'}\n alt={'image'}\n placeholderContent={\n <View\n style={[\n styles.slackImage,\n {\n width: '100%',\n height: '100%',\n backgroundColor: '#e1e1e1',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 8,\n },\n ]}\n >\n <Text>{isUploading ? 'Uploading...' : 'Loading...'}</Text>\n </View>\n }\n />\n )}\n </View>\n </TouchableHighlight>\n );\n }\n\n return null;\n }\n\n renderTicks() {\n const { currentMessage } = this.props;\n if (this.props.renderTicks) {\n return this.props.renderTicks(currentMessage);\n }\n if (currentMessage.user._id !== this.props.user._id) {\n return null;\n }\n if (currentMessage.sent || currentMessage.received) {\n return (\n <View style={[styles.headerItem, styles.tickView]}>\n {currentMessage.sent && (\n <Text style={[styles.standardFont, styles.tick, this.props.tickStyle]}>✓</Text>\n )}\n {currentMessage.received && (\n <Text style={[styles.standardFont, styles.tick, this.props.tickStyle]}>✓</Text>\n )}\n </View>\n );\n }\n return null;\n }\n\n renderUsername() {\n const username = this.props.currentMessage.user.name;\n if (username) {\n const { containerStyle, wrapperStyle, ...usernameProps } = this.props;\n if (this.props.renderUsername) {\n return this.props.renderUsername(usernameProps);\n }\n return (\n <Text style={[styles.standardFont, styles.headerItem, styles.username, this.props.usernameStyle]}>\n {username}\n </Text>\n );\n }\n return null;\n }\n\n renderTime() {\n if (this.props.currentMessage.createdAt) {\n const { containerStyle, wrapperStyle, ...timeProps }: any = this.props;\n if (this.props.renderTime) {\n return this.props.renderTime(timeProps);\n }\n return (\n <Time\n {...timeProps}\n containerStyle={{ left: [styles.timeContainer] }}\n textStyle={{\n left: [styles.standardFont, styles.headerItem, styles.time, timeProps.textStyle],\n }}\n />\n );\n }\n return null;\n }\n\n renderCustomView() {\n if (this.props.renderCustomView) {\n return this.props.renderCustomView(this.props);\n }\n return null;\n }\n\n render() {\n const isSameThread =\n isSameUser(this.props.currentMessage, this.props.previousMessage) &&\n isSameDay(this.props.currentMessage, this.props.previousMessage);\n\n const messageHeader = isSameThread ? null : (\n <View style={styles.headerView}>\n {this.renderUsername()}\n {this.renderTime()}\n {this.renderTicks()}\n </View>\n );\n\n return (\n <View style={[styles.container, this.props.containerStyle]}>\n <TouchableHighlight\n style={{ width: '100%' }}\n // underlayColor={'#c0c0c0'}\n underlayColor={'transparent'}\n disabled={true}\n accessibilityRole=\"text\"\n {...this.props.touchableProps}\n >\n <View style={[styles.wrapper, this.props.wrapperStyle]}>\n <View>\n {this.renderCustomView()}\n {messageHeader}\n {this.renderMessageImage()}\n {this.renderMessageText()}\n </View>\n </View>\n </TouchableHighlight>\n </View>\n );\n }\n}\n\n// Note: Everything is forced to be \"left\" positioned with this component.\n// The \"right\" position is only used in the default Bubble.\nconst styles = StyleSheet.create({\n standardFont: {\n fontSize: 15,\n },\n slackMessageText: {\n marginLeft: 0,\n marginRight: 0,\n },\n container: {\n flex: 1,\n alignItems: 'flex-start',\n },\n wrapper: {\n marginRight: 60,\n minHeight: 20,\n justifyContent: 'flex-start',\n },\n username: {\n fontWeight: 'bold',\n top: 0,\n paddingTop: 0,\n marginTop: 0,\n },\n time: {\n textAlign: 'left',\n fontSize: 12,\n },\n timeContainer: {\n marginLeft: 0,\n marginRight: 0,\n marginBottom: 0,\n },\n headerItem: {\n marginRight: 10,\n },\n headerView: {\n // Try to align it better with the avatar on Android.\n marginTop: Platform.OS === 'android' ? -2 : 0,\n flexDirection: 'row',\n alignItems: 'baseline',\n },\n /* eslint-disable react-native/no-color-literals */\n tick: {\n backgroundColor: 'transparent',\n color: 'white',\n },\n /* eslint-enable react-native/no-color-literals */\n tickView: {\n flexDirection: 'row',\n },\n slackImage: {\n borderRadius: 3,\n marginLeft: 8,\n marginRight: 0,\n },\n});\n\n// Bubble.contextTypes = {\n// actionSheet: PropTypes.func,\n// };\n\nBubble.defaultProps = {\n touchableProps: {},\n onLongPress: null,\n renderMessageImage: null,\n renderMessageText: null,\n renderCustomView: null,\n renderTime: null,\n currentMessage: {\n text: null,\n createdAt: null,\n image: null,\n },\n nextMessage: {},\n previousMessage: {},\n containerStyle: {},\n wrapperStyle: {},\n tickStyle: {},\n containerToNextStyle: {},\n containerToPreviousStyle: {},\n isShowImageViewer: false,\n setImageViewer: (obj: any, v: boolean) => null,\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1019,7 +1019,7 @@ const ConversationViewComponent = (_a) => {
|
|
|
1019
1019
|
reservationId: actionId
|
|
1020
1020
|
};
|
|
1021
1021
|
}
|
|
1022
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
1022
|
+
return /* @__PURE__ */ React__default.createElement(View, null, (attachment == null ? void 0 : attachment.callToAction) && action ? /* @__PURE__ */ React__default.createElement(Box, { className: `bg-[${CALL_TO_ACTION_BOX_BGCOLOR}] rounded-[15] pb-2` }, /* @__PURE__ */ React__default.createElement(MessageText, __spreadProps(__spreadValues({}, props), { containerStyle: {
|
|
1023
1023
|
left: {
|
|
1024
1024
|
paddingLeft: 0,
|
|
1025
1025
|
marginLeft: 0
|
|
@@ -1037,7 +1037,7 @@ const ConversationViewComponent = (_a) => {
|
|
|
1037
1037
|
postParentId: currentMessage == null ? void 0 : currentMessage._id,
|
|
1038
1038
|
isPostParentIdThread: true
|
|
1039
1039
|
});
|
|
1040
|
-
} }, /* @__PURE__ */ React__default.createElement(
|
|
1040
|
+
} }, /* @__PURE__ */ React__default.createElement(View, null, /* @__PURE__ */ React__default.createElement(MessageText, __spreadProps(__spreadValues({}, props), { textStyle: {
|
|
1041
1041
|
left: {
|
|
1042
1042
|
marginLeft: 5
|
|
1043
1043
|
}
|
|
@@ -1068,7 +1068,7 @@ const ConversationViewComponent = (_a) => {
|
|
|
1068
1068
|
postParentId: currentMessage == null ? void 0 : currentMessage._id,
|
|
1069
1069
|
isPostParentIdThread: true
|
|
1070
1070
|
});
|
|
1071
|
-
} }, /* @__PURE__ */ React__default.createElement(
|
|
1071
|
+
} }, /* @__PURE__ */ React__default.createElement(View, null, /* @__PURE__ */ React__default.createElement(MessageText, __spreadProps(__spreadValues({}, props), { textStyle: {
|
|
1072
1072
|
left: {
|
|
1073
1073
|
marginLeft: 5
|
|
1074
1074
|
}
|