diff --git a/package/src/components/Channel/Channel.tsx b/package/src/components/Channel/Channel.tsx index 9617284455..24aef2af6f 100644 --- a/package/src/components/Channel/Channel.tsx +++ b/package/src/components/Channel/Channel.tsx @@ -259,7 +259,9 @@ const debounceOptions = { }; export type ChannelPropsWithContext = Pick & - Partial> & + Partial< + Pick + > & Partial< Pick< AttachmentPickerProps, @@ -556,6 +558,7 @@ const ChannelWithContext = (props: PropsWithChildren) = customMessageSwipeAction, DateHeader = DateHeaderDefault, deletedMessagesVisibilityType = 'always', + disableAttachmentPicker = !isImageMediaLibraryAvailable(), disableKeyboardCompatibleView = false, disableTypingIndicator, dismissKeyboardOnMessageTouch = true, @@ -1679,10 +1682,11 @@ const ChannelWithContext = (props: PropsWithChildren) = bottomInset, bottomSheetRef, closePicker: () => closePicker(bottomSheetRef), + disableAttachmentPicker, openPicker: () => openPicker(bottomSheetRef), topInset, }), - [bottomInset, bottomSheetRef, closePicker, openPicker, topInset], + [bottomInset, bottomSheetRef, closePicker, openPicker, topInset, disableAttachmentPicker], ); const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({ @@ -1980,7 +1984,7 @@ const ChannelWithContext = (props: PropsWithChildren) = {children} - {isImageMediaLibraryAvailable() && ( + {!disableAttachmentPicker && ( )} diff --git a/package/src/components/MessageInput/AttachButton.tsx b/package/src/components/MessageInput/AttachButton.tsx index a6e63e0f5c..a5a36efc96 100644 --- a/package/src/components/MessageInput/AttachButton.tsx +++ b/package/src/components/MessageInput/AttachButton.tsx @@ -4,7 +4,10 @@ import { Pressable } from 'react-native'; import { NativeAttachmentPicker } from './components/NativeAttachmentPicker'; -import { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext'; +import { + AttachmentPickerContextValue, + useAttachmentPickerContext, +} from '../../contexts/attachmentPickerContext/AttachmentPickerContext'; import { MessageInputContextValue, useMessageInputContext, @@ -12,22 +15,21 @@ import { import { useTheme } from '../../contexts/themeContext/ThemeContext'; import { Attach } from '../../icons/Attach'; -import { isImageMediaLibraryAvailable } from '../../native'; - type AttachButtonPropsWithContext = Pick< MessageInputContextValue, 'handleAttachButtonPress' | 'toggleAttachmentPicker' -> & { - disabled?: boolean; - /** Function that opens attachment options bottom sheet */ - handleOnPress?: ((event: GestureResponderEvent) => void) & (() => void); - selectedPicker?: 'images'; -}; +> & + Pick & { + disabled?: boolean; + /** Function that opens attachment options bottom sheet */ + handleOnPress?: ((event: GestureResponderEvent) => void) & (() => void); + }; const AttachButtonWithContext = (props: AttachButtonPropsWithContext) => { const [showAttachButtonPicker, setShowAttachButtonPicker] = useState(false); const [attachButtonLayoutRectangle, setAttachButtonLayoutRectangle] = useState(); const { + disableAttachmentPicker, disabled = false, handleAttachButtonPress, handleOnPress, @@ -73,7 +75,7 @@ const AttachButtonWithContext = (props: AttachButtonPropsWithContext) => { handleAttachButtonPress(); return; } - if (isImageMediaLibraryAvailable()) { + if (!disableAttachmentPicker) { toggleAttachmentPicker(); } else { attachButtonHandler(); @@ -132,12 +134,17 @@ export type AttachButtonProps = Partial; * UI Component for attach button in MessageInput component. */ export const AttachButton = (props: AttachButtonProps) => { - const { selectedPicker } = useAttachmentPickerContext(); + const { disableAttachmentPicker, selectedPicker } = useAttachmentPickerContext(); const { handleAttachButtonPress, toggleAttachmentPicker } = useMessageInputContext(); return ( ); diff --git a/package/src/components/MessageInput/MessageInput.tsx b/package/src/components/MessageInput/MessageInput.tsx index 2df5981793..924828ff08 100644 --- a/package/src/components/MessageInput/MessageInput.tsx +++ b/package/src/components/MessageInput/MessageInput.tsx @@ -62,11 +62,7 @@ import { } from '../../contexts/translationContext/TranslationContext'; import { useStateStore } from '../../hooks/useStateStore'; -import { - isAudioRecorderAvailable, - isImageMediaLibraryAvailable, - NativeHandlers, -} from '../../native'; +import { isAudioRecorderAvailable, NativeHandlers } from '../../native'; import { AIStates, useAIState } from '../AITypingIndicatorView'; import { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput'; import { CreatePoll } from '../Poll/CreatePollContent'; @@ -112,7 +108,7 @@ const styles = StyleSheet.create({ type MessageInputPropsWithContext = Pick< AttachmentPickerContextValue, - 'bottomInset' | 'selectedPicker' + 'bottomInset' | 'disableAttachmentPicker' | 'selectedPicker' > & Pick & Pick & @@ -207,6 +203,7 @@ const MessageInputWithContext = (props: MessageInputPropsWithContext) => { cooldownEndsAt, CooldownTimer, CreatePollContent, + disableAttachmentPicker, editing, Input, inputBoxRef, @@ -564,7 +561,7 @@ const MessageInputWithContext = (props: MessageInputPropsWithContext) => { - {isImageMediaLibraryAvailable() && selectedPicker ? ( + {!disableAttachmentPicker && selectedPicker ? ( { uploadNewFile, VideoRecorderSelectorIcon, } = useMessageInputContext(); - const { bottomInset, bottomSheetRef, selectedPicker } = useAttachmentPickerContext(); + const { bottomInset, bottomSheetRef, disableAttachmentPicker, selectedPicker } = + useAttachmentPickerContext(); const messageComposer = useMessageComposer(); const editing = !!messageComposer.editedMessage; const { clearEditingState } = useMessageComposerAPIContext(); @@ -835,6 +833,7 @@ export const MessageInput = (props: MessageInputProps) => { CooldownTimer, CreatePollContent, CreatePollIcon, + disableAttachmentPicker, editing, FileSelectorIcon, ImageSelectorIcon, diff --git a/package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx b/package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx index 3758949d5f..3463e882c6 100644 --- a/package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +++ b/package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx @@ -29,6 +29,7 @@ export type AttachmentPickerContextValue = { topInset: number; selectedPicker?: 'images'; + disableAttachmentPicker?: boolean; }; export const AttachmentPickerContext = React.createContext(