stream-chat-react-native-core 4.1.2-beta.1 → 4.1.3-beta.2

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 (48) hide show
  1. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +9 -9
  2. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  3. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js +8 -1
  4. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  5. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
  6. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  7. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +12 -12
  8. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  9. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +4 -2
  10. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  11. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js +18 -5
  12. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  13. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  14. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  15. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  16. package/lib/commonjs/version.json +1 -1
  17. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +9 -9
  18. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  19. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js +8 -1
  20. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  21. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
  22. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  23. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +12 -12
  24. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  25. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +4 -2
  26. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  27. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js +18 -5
  28. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  29. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  30. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  31. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  32. package/lib/module/version.json +1 -1
  33. package/lib/typescript/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.d.ts +1 -0
  34. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts +7 -1
  35. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +5 -0
  36. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +2 -1
  37. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +0 -2
  38. package/package.json +1 -1
  39. package/src/components/AttachmentPicker/AttachmentPicker.tsx +10 -5
  40. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +82 -0
  41. package/src/components/ChannelList/hooks/listeners/useChannelUpdated.ts +7 -1
  42. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +1 -0
  43. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +7 -1
  44. package/src/components/ChannelPreview/ChannelPreviewStatus.tsx +3 -3
  45. package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +14 -12
  46. package/src/components/MessageOverlay/MessageOverlay.tsx +1 -1
  47. package/src/contexts/overlayContext/OverlayContext.tsx +0 -2
  48. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageOverlay.tsx"],"names":["styles","StyleSheet","create","alignEnd","alignItems","alignStart","center","flexGrow","justifyContent","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","flex","overlayPadding","padding","replyContainer","flexDirection","paddingHorizontal","paddingTop","row","scrollView","Platform","OS","screenHeight","halfScreenHeight","DefaultMessageTextNumberOfLines","MessageOverlayWithContext","props","alignment","ownCapabilities","clientId","files","groupStyles","handleReaction","images","message","messageActions","MessageActionList","DefaultMessageActionList","MessageActionListItem","messageContext","messageReactionTitle","messageTextNumberOfLines","messagesContext","onlyEmojis","otherAttachments","overlay","overlayOpacity","OverlayReactionList","OverlayReactionListDefault","OverlayReactions","DefaultOverlayReactions","OverlayReactionsAvatar","OverlayReactionsAvatarDefault","setOverlay","threadList","isMyMessage","messageReactions","error","isThreadMessage","messageActionProps","theme","myMessageTheme","wrapMessageInTheme","user","id","JSON","stringify","myMessageThemeString","setMyMessageThemeString","modifiedTheme","style","colors","blue_alice","grey_gainsboro","grey_whisper","transparent","white_smoke","messageSimple","content","container","borderRadiusL","borderRadiusS","containerStyle","messageHeight","messageLayout","x","y","messageWidth","offsetY","translateY","scale","showScreen","fadeScreen","value","damping","mass","restDisplacementThreshold","restSpeedThreshold","stiffness","velocity","Keyboard","dismiss","onPan","onActive","evt","translationY","Extrapolate","CLAMP","onFinish","finalYPosition","velocityY","duration","easing","Easing","out","ease","onStart","panStyle","transform","showScreenStyle","translateX","groupStyle","toLowerCase","hasThreadReplies","reply_count","Attachment","FileAttachmentGroup","Gallery","MessageAvatar","Reply","absoluteFillObject","state","nativeEvent","State","END","sendReaction","own_reactions","map","reaction","type","layout","layoutHeight","height","layoutWidth","width","showAvatar","backgroundColor","quoted_message","length","borderBottomLeftRadius","borderBottomRightRadius","borderColor","messageContentOrder","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","actions","latest_reactions","image","name","user_id","supportedReactions","areEqual","prevProps","nextProps","prevAlignment","prevMessage","prevMessageReactionTitle","nextAlignment","nextMessage","nextMessageReactionTitle","alignmentEqual","messageReactionTitleEqual","latestReactionsEqual","Array","isArray","every","index","MemoizedMessageOverlay","React","memo","MessageOverlay","data","componentProps"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { Keyboard, Platform, SafeAreaView, StyleSheet, View, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n State,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n Easing,\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withDecay,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { MessageActionList as DefaultMessageActionList } from './MessageActionList';\nimport { OverlayReactionList as OverlayReactionListDefault } from './OverlayReactionList';\nimport { OverlayReactionsAvatar as OverlayReactionsAvatarDefault } from './OverlayReactionsAvatar';\n\nimport { MessageProvider } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n MessageOverlayData,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\n\nimport { MessagesProvider } from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vh, vw } from '../../utils/utils';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\nimport {\n OverlayReactions as DefaultOverlayReactions,\n Reaction,\n} from '../MessageOverlay/OverlayReactions';\nimport type { ReplyProps } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n alignEnd: { alignItems: 'flex-end' },\n alignStart: { alignItems: 'flex-start' },\n center: {\n flexGrow: 1,\n justifyContent: 'center',\n },\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n flex: {\n flex: 1,\n },\n overlayPadding: {\n padding: 8,\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n row: { flexDirection: 'row' },\n scrollView: { overflow: Platform.OS === 'ios' ? 'visible' : 'scroll' },\n});\n\nconst screenHeight = vh(100);\nconst halfScreenHeight = vh(50);\nconst DefaultMessageTextNumberOfLines = 5;\n\nexport type MessageOverlayPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageOverlayContextValue<StreamChatGenerics>,\n | 'MessageActionList'\n | 'MessageActionListItem'\n | 'OverlayReactionList'\n | 'OverlayReactions'\n | 'OverlayReactionsAvatar'\n> &\n Omit<MessageOverlayData<StreamChatGenerics>, 'supportedReactions'> &\n Pick<OverlayContextValue, 'overlay' | 'setOverlay'> &\n Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'error'\n | 'isMyMessage'\n | 'isThreadMessage'\n | 'message'\n | 'messageReactions'\n | 'messageTextNumberOfLines'\n | 'overlayOpacity'\n > & {\n showScreen?: Animated.SharedValue<number>;\n };\n\nconst MessageOverlayWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n ownCapabilities,\n clientId,\n files,\n groupStyles,\n handleReaction,\n images,\n message,\n messageActions,\n MessageActionList = DefaultMessageActionList,\n MessageActionListItem,\n messageContext,\n messageReactionTitle,\n messageTextNumberOfLines = DefaultMessageTextNumberOfLines,\n messagesContext,\n onlyEmojis,\n otherAttachments,\n overlay,\n overlayOpacity,\n OverlayReactionList = OverlayReactionListDefault,\n OverlayReactions = DefaultOverlayReactions,\n OverlayReactionsAvatar = OverlayReactionsAvatarDefault,\n setOverlay,\n threadList,\n isMyMessage,\n messageReactions,\n error,\n isThreadMessage,\n } = props;\n\n const messageActionProps = {\n error,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n };\n\n const { theme } = useTheme();\n\n const myMessageTheme = messagesContext?.myMessageTheme;\n const wrapMessageInTheme = clientId === message?.user?.id && !!myMessageTheme;\n\n const [myMessageThemeString, setMyMessageThemeString] = useState(JSON.stringify(myMessageTheme));\n\n useEffect(() => {\n if (myMessageTheme) {\n setMyMessageThemeString(JSON.stringify(myMessageTheme));\n }\n }, [myMessageTheme]);\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageThemeString, theme],\n );\n\n const {\n colors: { blue_alice, grey_gainsboro, grey_whisper, transparent, white_smoke },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS },\n containerInner,\n replyContainer,\n },\n },\n overlay: { container: containerStyle, padding: overlayPadding },\n } = wrapMessageInTheme ? modifiedTheme : theme;\n\n const messageHeight = useSharedValue(0);\n const messageLayout = useSharedValue({ x: 0, y: 0 });\n const messageWidth = useSharedValue(0);\n\n const offsetY = useSharedValue(0);\n const translateY = useSharedValue(0);\n const scale = useSharedValue(1);\n\n const showScreen = useSharedValue(0);\n const fadeScreen = () => {\n 'worklet';\n\n offsetY.value = 0;\n translateY.value = 0;\n scale.value = 1;\n showScreen.value = withSpring(1, {\n damping: 600,\n mass: 0.5,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n stiffness: 200,\n velocity: 32,\n });\n };\n\n useEffect(() => {\n Keyboard.dismiss();\n fadeScreen();\n }, []);\n\n const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>({\n onActive: (evt) => {\n translateY.value = offsetY.value + evt.translationY;\n overlayOpacity.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.75],\n Extrapolate.CLAMP,\n );\n scale.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.85],\n Extrapolate.CLAMP,\n );\n },\n onFinish: (evt) => {\n const finalYPosition = evt.translationY + evt.velocityY * 0.1;\n\n if (finalYPosition > halfScreenHeight && translateY.value > 0) {\n cancelAnimation(translateY);\n overlayOpacity.value = withTiming(\n 0,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n runOnJS(setOverlay)('none');\n },\n );\n translateY.value =\n evt.velocityY > 1000\n ? withDecay({\n velocity: evt.velocityY,\n })\n : withTiming(screenHeight, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n } else {\n translateY.value = withTiming(0);\n scale.value = withTiming(1);\n overlayOpacity.value = withTiming(1);\n }\n },\n onStart: () => {\n cancelAnimation(translateY);\n offsetY.value = translateY.value;\n },\n });\n\n const panStyle = useAnimatedStyle<ViewStyle>(() => ({\n transform: [\n {\n translateY: translateY.value,\n },\n {\n scale: scale.value,\n },\n ],\n }));\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [messageHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [alignment === 'left' ? -messageWidth.value / 2 : messageWidth.value / 2, 0],\n ),\n },\n {\n scale: showScreen.value,\n },\n ],\n }),\n [alignment],\n );\n\n const groupStyle = `${alignment}_${(groupStyles?.[0] || 'bottom').toLowerCase()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n const { Attachment, FileAttachmentGroup, Gallery, MessageAvatar, Reply } = messagesContext || {};\n\n return (\n <MessagesProvider value={messagesContext}>\n <MessageProvider value={messageContext}>\n <ThemeProvider mergedStyle={wrapMessageInTheme ? modifiedTheme : theme}>\n <Animated.View\n pointerEvents={'auto'}\n style={[StyleSheet.absoluteFillObject, containerStyle]}\n >\n <PanGestureHandler\n enabled={overlay === 'message'}\n maxPointers={1}\n minDist={10}\n onGestureEvent={onPan}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject]}>\n <SafeAreaView style={styles.flex}>\n <TapGestureHandler\n maxDist={32}\n onHandlerStateChange={({ nativeEvent: { state } }) => {\n if (state === State.END) {\n setOverlay('none');\n }\n }}\n >\n <Animated.View style={[styles.flex, panStyle]}>\n {message && (\n <View\n style={[\n styles.center,\n styles.overlayPadding,\n { padding: overlayPadding },\n alignment === 'left' ? styles.alignStart : styles.alignEnd,\n ]}\n >\n {handleReaction && ownCapabilities?.sendReaction ? (\n <OverlayReactionList\n messageLayout={messageLayout}\n ownReactionTypes={\n message?.own_reactions?.map((reaction) => reaction.type) || []\n }\n showScreen={showScreen}\n />\n ) : null}\n <Animated.View\n onLayout={({\n nativeEvent: {\n layout: { height: layoutHeight, width: layoutWidth, x, y },\n },\n }) => {\n messageLayout.value = {\n x: alignment === 'left' ? x + layoutWidth : x,\n y,\n };\n messageWidth.value = layoutWidth;\n messageHeight.value = layoutHeight;\n }}\n style={[styles.alignEnd, styles.row, showScreenStyle]}\n >\n {alignment === 'left' && MessageAvatar && (\n <MessageAvatar {...{ alignment, message, showAvatar: true }} />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor:\n onlyEmojis && !message.quoted_message\n ? transparent\n : otherAttachments?.length\n ? otherAttachments[0].type === 'giphy'\n ? !message.quoted_message\n ? transparent\n : grey_gainsboro\n : blue_alice\n : alignment === 'left'\n ? white_smoke\n : grey_gainsboro,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' ||\n groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' ||\n groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: grey_whisper,\n },\n (onlyEmojis && !message.quoted_message) || otherAttachments?.length\n ? { borderWidth: 0 }\n : {},\n containerInner,\n ]}\n >\n {messagesContext?.messageContentOrder?.map(\n (messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message &&\n Reply && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply\n quotedMessage={\n message.quoted_message as ReplyProps<StreamChatGenerics>['quotedMessage']\n }\n styles={{\n messageContainer: {\n maxWidth: vw(60),\n },\n }}\n />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments?.map(\n (attachment, attachmentIndex) =>\n Attachment && (\n <Attachment\n attachment={attachment}\n key={`${message.id}-${attachmentIndex}`}\n />\n ),\n );\n case 'files':\n return (\n FileAttachmentGroup && (\n <FileAttachmentGroup\n files={files}\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n )\n );\n case 'gallery':\n return (\n Gallery && (\n <Gallery\n alignment={alignment}\n groupStyles={groupStyles}\n hasThreadReplies={!!message?.reply_count}\n images={images}\n key={`gallery_${messageContentOrderIndex}`}\n message={message}\n threadList={threadList}\n />\n )\n );\n case 'text':\n default:\n return otherAttachments?.length &&\n otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n message={message}\n messageOverlay\n messageTextNumberOfLines={messageTextNumberOfLines}\n onlyEmojis={onlyEmojis}\n />\n );\n }\n },\n )}\n </View>\n </Animated.View>\n {messageActions && (\n <MessageActionList\n MessageActionListItem={MessageActionListItem}\n showScreen={showScreen}\n {...messageActionProps}\n message={message}\n />\n )}\n {!!messageReactionTitle &&\n message.latest_reactions &&\n message.latest_reactions.length > 0 ? (\n <OverlayReactions\n alignment={alignment}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n reactions={\n message.latest_reactions.map((reaction) => ({\n alignment:\n clientId && clientId === reaction.user?.id ? 'right' : 'left',\n id: reaction?.user?.id || '',\n image: reaction?.user?.image,\n name: reaction?.user?.name || reaction.user_id || '',\n type: reaction.type,\n })) as Reaction[]\n }\n showScreen={showScreen}\n supportedReactions={messagesContext?.supportedReactions}\n title={messageReactionTitle}\n />\n ) : null}\n </View>\n )}\n </Animated.View>\n </TapGestureHandler>\n </SafeAreaView>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </ThemeProvider>\n </MessageProvider>\n </MessagesProvider>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n nextProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment: prevAlignment,\n message: prevMessage,\n messageReactionTitle: prevMessageReactionTitle,\n } = prevProps;\n const {\n alignment: nextAlignment,\n message: nextMessage,\n messageReactionTitle: nextMessageReactionTitle,\n } = nextProps;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const messageReactionTitleEqual = prevMessageReactionTitle === nextMessageReactionTitle;\n if (!messageReactionTitleEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage?.latest_reactions) && Array.isArray(nextMessage?.latest_reactions)\n ? prevMessage?.latest_reactions.length === nextMessage?.latest_reactions.length &&\n prevMessage?.latest_reactions.every(\n ({ type }, index) => type === nextMessage?.latest_reactions?.[index].type,\n )\n : prevMessage?.latest_reactions === nextMessage?.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageOverlay = React.memo(\n MessageOverlayWithContext,\n areEqual,\n) as typeof MessageOverlayWithContext;\n\nexport type MessageOverlayProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'>> &\n Pick<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'> &\n Pick<\n MessageOverlayPropsWithContext<StreamChatGenerics>,\n 'isMyMessage' | 'error' | 'isThreadMessage' | 'message' | 'messageReactions'\n >;\n\n/**\n * MessageOverlay - A high level component which implements all the logic required for a message overlay\n */\nexport const MessageOverlay = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayProps<StreamChatGenerics>,\n) => {\n const {\n data,\n MessageActionList,\n MessageActionListItem,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n } = useMessageOverlayContext<StreamChatGenerics>();\n const { overlay, setOverlay } = useOverlayContext();\n\n const componentProps = {\n MessageActionList: props.MessageActionList || MessageActionList,\n MessageActionListItem: props.MessageActionListItem || MessageActionListItem,\n OverlayReactionList:\n props.OverlayReactionList || OverlayReactionList || data?.OverlayReactionList,\n OverlayReactions: props.OverlayReactions || OverlayReactions,\n OverlayReactionsAvatar: props.OverlayReactionsAvatar || OverlayReactionsAvatar,\n };\n\n return (\n <MemoizedMessageOverlay\n {...{\n overlay,\n setOverlay,\n }}\n {...componentProps}\n {...(data || {})}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["MessageOverlay.tsx"],"names":["styles","StyleSheet","create","alignEnd","alignItems","alignStart","center","flexGrow","justifyContent","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","flex","overlayPadding","padding","replyContainer","flexDirection","paddingHorizontal","paddingTop","row","scrollView","Platform","OS","screenHeight","halfScreenHeight","DefaultMessageTextNumberOfLines","MessageOverlayWithContext","props","alignment","ownCapabilities","clientId","files","groupStyles","handleReaction","images","message","messageActions","MessageActionList","DefaultMessageActionList","MessageActionListItem","messageContext","messageReactionTitle","messageTextNumberOfLines","messagesContext","onlyEmojis","otherAttachments","overlay","overlayOpacity","OverlayReactionList","OverlayReactionListDefault","OverlayReactions","DefaultOverlayReactions","OverlayReactionsAvatar","OverlayReactionsAvatarDefault","setOverlay","threadList","isMyMessage","messageReactions","error","isThreadMessage","messageActionProps","theme","myMessageTheme","wrapMessageInTheme","user","id","JSON","stringify","myMessageThemeString","setMyMessageThemeString","modifiedTheme","style","colors","blue_alice","grey_gainsboro","grey_whisper","transparent","white_smoke","messageSimple","content","container","borderRadiusL","borderRadiusS","containerStyle","messageHeight","messageLayout","x","y","messageWidth","offsetY","translateY","scale","showScreen","fadeScreen","value","damping","mass","restDisplacementThreshold","restSpeedThreshold","stiffness","velocity","Keyboard","dismiss","onPan","onActive","evt","translationY","Extrapolate","CLAMP","onFinish","finalYPosition","velocityY","duration","easing","Easing","out","ease","onStart","panStyle","transform","showScreenStyle","translateX","groupStyle","toLowerCase","hasThreadReplies","reply_count","Attachment","FileAttachmentGroup","Gallery","MessageAvatar","Reply","absoluteFillObject","state","nativeEvent","State","END","sendReaction","own_reactions","map","reaction","type","layout","layoutHeight","height","layoutWidth","width","showAvatar","backgroundColor","quoted_message","length","borderBottomLeftRadius","borderBottomRightRadius","borderColor","messageContentOrder","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","actions","latest_reactions","image","name","user_id","supportedReactions","areEqual","prevProps","nextProps","prevAlignment","prevMessage","prevMessageReactionTitle","nextAlignment","nextMessage","nextMessageReactionTitle","alignmentEqual","messageReactionTitleEqual","latestReactionsEqual","Array","isArray","every","index","MemoizedMessageOverlay","React","memo","MessageOverlay","data","componentProps"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { Keyboard, Platform, SafeAreaView, StyleSheet, View, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n State,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n Easing,\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withDecay,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { MessageActionList as DefaultMessageActionList } from './MessageActionList';\nimport { OverlayReactionList as OverlayReactionListDefault } from './OverlayReactionList';\nimport { OverlayReactionsAvatar as OverlayReactionsAvatarDefault } from './OverlayReactionsAvatar';\n\nimport { MessageProvider } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n MessageOverlayData,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\n\nimport { MessagesProvider } from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vh, vw } from '../../utils/utils';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\nimport {\n OverlayReactions as DefaultOverlayReactions,\n Reaction,\n} from '../MessageOverlay/OverlayReactions';\nimport type { ReplyProps } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n alignEnd: { alignItems: 'flex-end' },\n alignStart: { alignItems: 'flex-start' },\n center: {\n flexGrow: 1,\n justifyContent: 'center',\n },\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n flex: {\n flex: 1,\n },\n overlayPadding: {\n padding: 8,\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n row: { flexDirection: 'row' },\n scrollView: { overflow: Platform.OS === 'ios' ? 'visible' : 'scroll' },\n});\n\nconst screenHeight = vh(100);\nconst halfScreenHeight = vh(50);\nconst DefaultMessageTextNumberOfLines = 5;\n\nexport type MessageOverlayPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageOverlayContextValue<StreamChatGenerics>,\n | 'MessageActionList'\n | 'MessageActionListItem'\n | 'OverlayReactionList'\n | 'OverlayReactions'\n | 'OverlayReactionsAvatar'\n> &\n Omit<MessageOverlayData<StreamChatGenerics>, 'supportedReactions'> &\n Pick<OverlayContextValue, 'overlay' | 'setOverlay'> &\n Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'error'\n | 'isMyMessage'\n | 'isThreadMessage'\n | 'message'\n | 'messageReactions'\n | 'messageTextNumberOfLines'\n > & {\n overlayOpacity: Animated.SharedValue<number>;\n showScreen?: Animated.SharedValue<number>;\n };\n\nconst MessageOverlayWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n ownCapabilities,\n clientId,\n files,\n groupStyles,\n handleReaction,\n images,\n message,\n messageActions,\n MessageActionList = DefaultMessageActionList,\n MessageActionListItem,\n messageContext,\n messageReactionTitle,\n messageTextNumberOfLines = DefaultMessageTextNumberOfLines,\n messagesContext,\n onlyEmojis,\n otherAttachments,\n overlay,\n overlayOpacity,\n OverlayReactionList = OverlayReactionListDefault,\n OverlayReactions = DefaultOverlayReactions,\n OverlayReactionsAvatar = OverlayReactionsAvatarDefault,\n setOverlay,\n threadList,\n isMyMessage,\n messageReactions,\n error,\n isThreadMessage,\n } = props;\n\n const messageActionProps = {\n error,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n };\n\n const { theme } = useTheme();\n\n const myMessageTheme = messagesContext?.myMessageTheme;\n const wrapMessageInTheme = clientId === message?.user?.id && !!myMessageTheme;\n\n const [myMessageThemeString, setMyMessageThemeString] = useState(JSON.stringify(myMessageTheme));\n\n useEffect(() => {\n if (myMessageTheme) {\n setMyMessageThemeString(JSON.stringify(myMessageTheme));\n }\n }, [myMessageTheme]);\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageThemeString, theme],\n );\n\n const {\n colors: { blue_alice, grey_gainsboro, grey_whisper, transparent, white_smoke },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS },\n containerInner,\n replyContainer,\n },\n },\n overlay: { container: containerStyle, padding: overlayPadding },\n } = wrapMessageInTheme ? modifiedTheme : theme;\n\n const messageHeight = useSharedValue(0);\n const messageLayout = useSharedValue({ x: 0, y: 0 });\n const messageWidth = useSharedValue(0);\n\n const offsetY = useSharedValue(0);\n const translateY = useSharedValue(0);\n const scale = useSharedValue(1);\n\n const showScreen = useSharedValue(0);\n const fadeScreen = () => {\n 'worklet';\n\n offsetY.value = 0;\n translateY.value = 0;\n scale.value = 1;\n showScreen.value = withSpring(1, {\n damping: 600,\n mass: 0.5,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n stiffness: 200,\n velocity: 32,\n });\n };\n\n useEffect(() => {\n Keyboard.dismiss();\n fadeScreen();\n }, []);\n\n const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>({\n onActive: (evt) => {\n translateY.value = offsetY.value + evt.translationY;\n overlayOpacity.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.75],\n Extrapolate.CLAMP,\n );\n scale.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.85],\n Extrapolate.CLAMP,\n );\n },\n onFinish: (evt) => {\n const finalYPosition = evt.translationY + evt.velocityY * 0.1;\n\n if (finalYPosition > halfScreenHeight && translateY.value > 0) {\n cancelAnimation(translateY);\n overlayOpacity.value = withTiming(\n 0,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n runOnJS(setOverlay)('none');\n },\n );\n translateY.value =\n evt.velocityY > 1000\n ? withDecay({\n velocity: evt.velocityY,\n })\n : withTiming(screenHeight, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n } else {\n translateY.value = withTiming(0);\n scale.value = withTiming(1);\n overlayOpacity.value = withTiming(1);\n }\n },\n onStart: () => {\n cancelAnimation(translateY);\n offsetY.value = translateY.value;\n },\n });\n\n const panStyle = useAnimatedStyle<ViewStyle>(() => ({\n transform: [\n {\n translateY: translateY.value,\n },\n {\n scale: scale.value,\n },\n ],\n }));\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [messageHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [alignment === 'left' ? -messageWidth.value / 2 : messageWidth.value / 2, 0],\n ),\n },\n {\n scale: showScreen.value,\n },\n ],\n }),\n [alignment],\n );\n\n const groupStyle = `${alignment}_${(groupStyles?.[0] || 'bottom').toLowerCase()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n const { Attachment, FileAttachmentGroup, Gallery, MessageAvatar, Reply } = messagesContext || {};\n\n return (\n <MessagesProvider value={messagesContext}>\n <MessageProvider value={messageContext}>\n <ThemeProvider mergedStyle={wrapMessageInTheme ? modifiedTheme : theme}>\n <Animated.View\n pointerEvents={'auto'}\n style={[StyleSheet.absoluteFillObject, containerStyle]}\n >\n <PanGestureHandler\n enabled={overlay === 'message'}\n maxPointers={1}\n minDist={10}\n onGestureEvent={onPan}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject]}>\n <SafeAreaView style={styles.flex}>\n <TapGestureHandler\n maxDist={32}\n onHandlerStateChange={({ nativeEvent: { state } }) => {\n if (state === State.END) {\n setOverlay('none');\n }\n }}\n >\n <Animated.View style={[styles.flex, panStyle]}>\n {message && (\n <View\n style={[\n styles.center,\n styles.overlayPadding,\n { padding: overlayPadding },\n alignment === 'left' ? styles.alignStart : styles.alignEnd,\n ]}\n >\n {handleReaction && ownCapabilities?.sendReaction ? (\n <OverlayReactionList\n messageLayout={messageLayout}\n ownReactionTypes={\n message?.own_reactions?.map((reaction) => reaction.type) || []\n }\n showScreen={showScreen}\n />\n ) : null}\n <Animated.View\n onLayout={({\n nativeEvent: {\n layout: { height: layoutHeight, width: layoutWidth, x, y },\n },\n }) => {\n messageLayout.value = {\n x: alignment === 'left' ? x + layoutWidth : x,\n y,\n };\n messageWidth.value = layoutWidth;\n messageHeight.value = layoutHeight;\n }}\n style={[styles.alignEnd, styles.row, showScreenStyle]}\n >\n {alignment === 'left' && MessageAvatar && (\n <MessageAvatar {...{ alignment, message, showAvatar: true }} />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor:\n onlyEmojis && !message.quoted_message\n ? transparent\n : otherAttachments?.length\n ? otherAttachments[0].type === 'giphy'\n ? !message.quoted_message\n ? transparent\n : grey_gainsboro\n : blue_alice\n : alignment === 'left'\n ? white_smoke\n : grey_gainsboro,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' ||\n groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' ||\n groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: grey_whisper,\n },\n (onlyEmojis && !message.quoted_message) || otherAttachments?.length\n ? { borderWidth: 0 }\n : {},\n containerInner,\n ]}\n >\n {messagesContext?.messageContentOrder?.map(\n (messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message &&\n Reply && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply\n quotedMessage={\n message.quoted_message as ReplyProps<StreamChatGenerics>['quotedMessage']\n }\n styles={{\n messageContainer: {\n maxWidth: vw(60),\n },\n }}\n />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments?.map(\n (attachment, attachmentIndex) =>\n Attachment && (\n <Attachment\n attachment={attachment}\n key={`${message.id}-${attachmentIndex}`}\n />\n ),\n );\n case 'files':\n return (\n FileAttachmentGroup && (\n <FileAttachmentGroup\n files={files}\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n )\n );\n case 'gallery':\n return (\n Gallery && (\n <Gallery\n alignment={alignment}\n groupStyles={groupStyles}\n hasThreadReplies={!!message?.reply_count}\n images={images}\n key={`gallery_${messageContentOrderIndex}`}\n message={message}\n threadList={threadList}\n />\n )\n );\n case 'text':\n default:\n return otherAttachments?.length &&\n otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n message={message}\n messageOverlay\n messageTextNumberOfLines={messageTextNumberOfLines}\n onlyEmojis={onlyEmojis}\n />\n );\n }\n },\n )}\n </View>\n </Animated.View>\n {messageActions && (\n <MessageActionList\n MessageActionListItem={MessageActionListItem}\n showScreen={showScreen}\n {...messageActionProps}\n message={message}\n />\n )}\n {!!messageReactionTitle &&\n message.latest_reactions &&\n message.latest_reactions.length > 0 ? (\n <OverlayReactions\n alignment={alignment}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n reactions={\n message.latest_reactions.map((reaction) => ({\n alignment:\n clientId && clientId === reaction.user?.id ? 'right' : 'left',\n id: reaction?.user?.id || '',\n image: reaction?.user?.image,\n name: reaction?.user?.name || reaction.user_id || '',\n type: reaction.type,\n })) as Reaction[]\n }\n showScreen={showScreen}\n supportedReactions={messagesContext?.supportedReactions}\n title={messageReactionTitle}\n />\n ) : null}\n </View>\n )}\n </Animated.View>\n </TapGestureHandler>\n </SafeAreaView>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </ThemeProvider>\n </MessageProvider>\n </MessagesProvider>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n nextProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment: prevAlignment,\n message: prevMessage,\n messageReactionTitle: prevMessageReactionTitle,\n } = prevProps;\n const {\n alignment: nextAlignment,\n message: nextMessage,\n messageReactionTitle: nextMessageReactionTitle,\n } = nextProps;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const messageReactionTitleEqual = prevMessageReactionTitle === nextMessageReactionTitle;\n if (!messageReactionTitleEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage?.latest_reactions) && Array.isArray(nextMessage?.latest_reactions)\n ? prevMessage?.latest_reactions.length === nextMessage?.latest_reactions.length &&\n prevMessage?.latest_reactions.every(\n ({ type }, index) => type === nextMessage?.latest_reactions?.[index].type,\n )\n : prevMessage?.latest_reactions === nextMessage?.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageOverlay = React.memo(\n MessageOverlayWithContext,\n areEqual,\n) as typeof MessageOverlayWithContext;\n\nexport type MessageOverlayProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'>> &\n Pick<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'> &\n Pick<\n MessageOverlayPropsWithContext<StreamChatGenerics>,\n 'isMyMessage' | 'error' | 'isThreadMessage' | 'message' | 'messageReactions'\n >;\n\n/**\n * MessageOverlay - A high level component which implements all the logic required for a message overlay\n */\nexport const MessageOverlay = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayProps<StreamChatGenerics>,\n) => {\n const {\n data,\n MessageActionList,\n MessageActionListItem,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n } = useMessageOverlayContext<StreamChatGenerics>();\n const { overlay, setOverlay } = useOverlayContext();\n\n const componentProps = {\n MessageActionList: props.MessageActionList || MessageActionList,\n MessageActionListItem: props.MessageActionListItem || MessageActionListItem,\n OverlayReactionList:\n props.OverlayReactionList || OverlayReactionList || data?.OverlayReactionList,\n OverlayReactions: props.OverlayReactions || OverlayReactions,\n OverlayReactionsAvatar: props.OverlayReactionsAvatar || OverlayReactionsAvatar,\n };\n\n return (\n <MemoizedMessageOverlay\n {...{\n overlay,\n setOverlay,\n }}\n {...componentProps}\n {...(data || {})}\n {...props}\n />\n );\n};\n"]}
@@ -37,7 +37,7 @@ var withOverlayContext = function withOverlayContext(Component) {
37
37
  __self: _this,
38
38
  __source: {
39
39
  fileName: _jsxFileName,
40
- lineNumber: 85,
40
+ lineNumber: 83,
41
41
  columnNumber: 12
42
42
  }
43
43
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["OverlayContext.tsx"],"names":["OverlayContext","React","createContext","useOverlayContext","withOverlayContext","Component","WithOverlayContextComponent","props","overlayContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAeA;;;;;;;;;AAWO,IAAMA,cAAc,GAAGC,kBAAMC,aAAN,CAAyC,EAAzC,CAAvB;;;;AA8CA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,SAAM,uBAAWH,cAAX,CAAN;AAAA,CAA1B;;;;AAEA,IAAMI,kBAAkB,GAAG,SAArBA,kBAAqB,CAGhCC,SAHgC,EAIkC;AAClE,MAAMC,2BAA2B,GAAG,SAA9BA,2BAA8B,CAClCC,KADkC,EAE/B;AACH,QAAMC,cAAc,GAAGL,iBAAiB,EAAxC;AAEA,WAAO,gCAAC,SAAD,gCAAgBI,KAAhB,EAAkDC,cAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,2BAA2B,CAACG,WAA5B,0BAA+D,oCAC7DJ,SAD6D,CAA/D;AAGA,SAAOC,2BAAP;AACD,CAhBM","sourcesContent":["import React, { useContext } from 'react';\nimport type Animated from 'react-native-reanimated';\n\nimport type { BottomSheetMethods } from '@gorhom/bottom-sheet/lib/typescript/types';\n\nimport type { AttachmentPickerProps } from '../../components/AttachmentPicker/AttachmentPicker';\nimport type { ImageGalleryCustomComponents } from '../../components/ImageGallery/ImageGallery';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport type { AttachmentPickerContextValue } from '../attachmentPickerContext/AttachmentPickerContext';\nimport type { MessageOverlayContextValue } from '../messageOverlayContext/MessageOverlayContext';\nimport type { DeepPartial } from '../themeContext/ThemeContext';\nimport type { Theme } from '../themeContext/utils/theme';\nimport { getDisplayName } from '../utils/getDisplayName';\n\nexport type Overlay = 'alert' | 'gallery' | 'message' | 'none';\n\nexport type OverlayContextValue = {\n overlay: Overlay;\n setOverlay: React.Dispatch<React.SetStateAction<Overlay>>;\n style?: DeepPartial<Theme>;\n translucentStatusBar?: boolean;\n};\n\nexport const OverlayContext = React.createContext<OverlayContextValue>({} as OverlayContextValue);\n\nexport type OverlayProviderProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<AttachmentPickerProps> &\n Partial<\n Pick<\n AttachmentPickerContextValue,\n | 'attachmentPickerBottomSheetHeight'\n | 'attachmentSelectionBarHeight'\n | 'bottomInset'\n | 'CameraSelectorIcon'\n | 'FileSelectorIcon'\n | 'ImageSelectorIcon'\n | 'topInset'\n >\n > &\n ImageGalleryCustomComponents<StreamChatGenerics> &\n Partial<\n Pick<\n MessageOverlayContextValue<StreamChatGenerics>,\n | 'MessageActionList'\n | 'MessageActionListItem'\n | 'OverlayReactionList'\n | 'OverlayReactions'\n | 'OverlayReactionsAvatar'\n >\n > &\n Pick<OverlayContextValue, 'translucentStatusBar'> & {\n overlayOpacity: Animated.SharedValue<number>;\n closePicker?: (ref: React.RefObject<BottomSheetMethods>) => void;\n error?: boolean | Error;\n /** https://github.com/GetStream/stream-chat-react-native/wiki/Internationalization-(i18n) */\n i18nInstance?: Streami18n;\n imageGalleryGridHandleHeight?: number;\n imageGalleryGridSnapPoints?: [string | number, string | number];\n isMyMessage?: boolean;\n isThreadMessage?: boolean;\n message?: MessageType<StreamChatGenerics>;\n messageReactions?: boolean;\n messageTextNumberOfLines?: number;\n numberOfImageGalleryGridColumns?: number;\n openPicker?: (ref: React.RefObject<BottomSheetMethods>) => void;\n value?: Partial<OverlayContextValue>;\n };\n\nexport const useOverlayContext = () => useContext(OverlayContext);\n\nexport const withOverlayContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<StreamChatGenerics>,\n): React.FC<Omit<StreamChatGenerics, keyof OverlayContextValue>> => {\n const WithOverlayContextComponent = (\n props: Omit<StreamChatGenerics, keyof OverlayContextValue>,\n ) => {\n const overlayContext = useOverlayContext();\n\n return <Component {...(props as StreamChatGenerics)} {...overlayContext} />;\n };\n WithOverlayContextComponent.displayName = `WithOverlayContext${getDisplayName(\n Component as React.ComponentType,\n )}`;\n return WithOverlayContextComponent;\n};\n"]}
1
+ {"version":3,"sources":["OverlayContext.tsx"],"names":["OverlayContext","React","createContext","useOverlayContext","withOverlayContext","Component","WithOverlayContextComponent","props","overlayContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAcA;;;;;;;;;AAWO,IAAMA,cAAc,GAAGC,kBAAMC,aAAN,CAAyC,EAAzC,CAAvB;;;;AA6CA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,SAAM,uBAAWH,cAAX,CAAN;AAAA,CAA1B;;;;AAEA,IAAMI,kBAAkB,GAAG,SAArBA,kBAAqB,CAGhCC,SAHgC,EAIkC;AAClE,MAAMC,2BAA2B,GAAG,SAA9BA,2BAA8B,CAClCC,KADkC,EAE/B;AACH,QAAMC,cAAc,GAAGL,iBAAiB,EAAxC;AAEA,WAAO,gCAAC,SAAD,gCAAgBI,KAAhB,EAAkDC,cAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAND;;AAOAF,EAAAA,2BAA2B,CAACG,WAA5B,0BAA+D,oCAC7DJ,SAD6D,CAA/D;AAGA,SAAOC,2BAAP;AACD,CAhBM","sourcesContent":["import React, { useContext } from 'react';\n\nimport type { BottomSheetMethods } from '@gorhom/bottom-sheet/lib/typescript/types';\n\nimport type { AttachmentPickerProps } from '../../components/AttachmentPicker/AttachmentPicker';\nimport type { ImageGalleryCustomComponents } from '../../components/ImageGallery/ImageGallery';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport type { AttachmentPickerContextValue } from '../attachmentPickerContext/AttachmentPickerContext';\nimport type { MessageOverlayContextValue } from '../messageOverlayContext/MessageOverlayContext';\nimport type { DeepPartial } from '../themeContext/ThemeContext';\nimport type { Theme } from '../themeContext/utils/theme';\nimport { getDisplayName } from '../utils/getDisplayName';\n\nexport type Overlay = 'alert' | 'gallery' | 'message' | 'none';\n\nexport type OverlayContextValue = {\n overlay: Overlay;\n setOverlay: React.Dispatch<React.SetStateAction<Overlay>>;\n style?: DeepPartial<Theme>;\n translucentStatusBar?: boolean;\n};\n\nexport const OverlayContext = React.createContext<OverlayContextValue>({} as OverlayContextValue);\n\nexport type OverlayProviderProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<AttachmentPickerProps> &\n Partial<\n Pick<\n AttachmentPickerContextValue,\n | 'attachmentPickerBottomSheetHeight'\n | 'attachmentSelectionBarHeight'\n | 'bottomInset'\n | 'CameraSelectorIcon'\n | 'FileSelectorIcon'\n | 'ImageSelectorIcon'\n | 'topInset'\n >\n > &\n ImageGalleryCustomComponents<StreamChatGenerics> &\n Partial<\n Pick<\n MessageOverlayContextValue<StreamChatGenerics>,\n | 'MessageActionList'\n | 'MessageActionListItem'\n | 'OverlayReactionList'\n | 'OverlayReactions'\n | 'OverlayReactionsAvatar'\n >\n > &\n Pick<OverlayContextValue, 'translucentStatusBar'> & {\n closePicker?: (ref: React.RefObject<BottomSheetMethods>) => void;\n error?: boolean | Error;\n /** https://github.com/GetStream/stream-chat-react-native/wiki/Internationalization-(i18n) */\n i18nInstance?: Streami18n;\n imageGalleryGridHandleHeight?: number;\n imageGalleryGridSnapPoints?: [string | number, string | number];\n isMyMessage?: boolean;\n isThreadMessage?: boolean;\n message?: MessageType<StreamChatGenerics>;\n messageReactions?: boolean;\n messageTextNumberOfLines?: number;\n numberOfImageGalleryGridColumns?: number;\n openPicker?: (ref: React.RefObject<BottomSheetMethods>) => void;\n value?: Partial<OverlayContextValue>;\n };\n\nexport const useOverlayContext = () => useContext(OverlayContext);\n\nexport const withOverlayContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<StreamChatGenerics>,\n): React.FC<Omit<StreamChatGenerics, keyof OverlayContextValue>> => {\n const WithOverlayContextComponent = (\n props: Omit<StreamChatGenerics, keyof OverlayContextValue>,\n ) => {\n const overlayContext = useOverlayContext();\n\n return <Component {...(props as StreamChatGenerics)} {...overlayContext} />;\n };\n WithOverlayContextComponent.displayName = `WithOverlayContext${getDisplayName(\n Component as React.ComponentType,\n )}`;\n return WithOverlayContextComponent;\n};\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.1.2-beta.1"
2
+ "version": "4.1.3-beta.2"
3
3
  }
@@ -16,10 +16,16 @@ export declare type ChannelPreviewMessengerPropsWithContext<StreamChatGenerics e
16
16
  * bold: true,
17
17
  * text: 'This is the message preview text'
18
18
  * },
19
- * status: 0 | 1 | 2 // read states of latest message.
19
+ * status: 0 | 1 | 2 // read states of the latest message.
20
20
  * }
21
21
  * ```
22
22
  *
23
+ * The read status is either of the following:
24
+ *
25
+ * 0: The message was not sent by the current user
26
+ * 1: The message was sent by the current user and is unread
27
+ * 2: The message was sent by the current user and is read
28
+ *
23
29
  * @overrideType object
24
30
  */
25
31
  latestMessagePreview: LatestMessagePreview<StreamChatGenerics>;
@@ -10,6 +10,11 @@ export declare type LatestMessagePreview<StreamChatGenerics extends DefaultStrea
10
10
  }[];
11
11
  status: number;
12
12
  };
13
+ export declare enum MessageReadStatus {
14
+ NOT_SENT_BY_CURRENT_USER = 0,
15
+ UNREAD = 1,
16
+ READ = 2
17
+ }
13
18
  /**
14
19
  * Hook to set the display preview for latest message on channel.
15
20
  *
@@ -2,7 +2,8 @@ import Animated from 'react-native-reanimated';
2
2
  import { MessageOverlayContextValue, MessageOverlayData } from '../../contexts/messageOverlayContext/MessageOverlayContext';
3
3
  import { OverlayContextValue, OverlayProviderProps } from '../../contexts/overlayContext/OverlayContext';
4
4
  import type { DefaultStreamChatGenerics } from '../../types/types';
5
- export declare type MessageOverlayPropsWithContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<MessageOverlayContextValue<StreamChatGenerics>, 'MessageActionList' | 'MessageActionListItem' | 'OverlayReactionList' | 'OverlayReactions' | 'OverlayReactionsAvatar'> & Omit<MessageOverlayData<StreamChatGenerics>, 'supportedReactions'> & Pick<OverlayContextValue, 'overlay' | 'setOverlay'> & Pick<OverlayProviderProps<StreamChatGenerics>, 'error' | 'isMyMessage' | 'isThreadMessage' | 'message' | 'messageReactions' | 'messageTextNumberOfLines' | 'overlayOpacity'> & {
5
+ export declare type MessageOverlayPropsWithContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<MessageOverlayContextValue<StreamChatGenerics>, 'MessageActionList' | 'MessageActionListItem' | 'OverlayReactionList' | 'OverlayReactions' | 'OverlayReactionsAvatar'> & Omit<MessageOverlayData<StreamChatGenerics>, 'supportedReactions'> & Pick<OverlayContextValue, 'overlay' | 'setOverlay'> & Pick<OverlayProviderProps<StreamChatGenerics>, 'error' | 'isMyMessage' | 'isThreadMessage' | 'message' | 'messageReactions' | 'messageTextNumberOfLines'> & {
6
+ overlayOpacity: Animated.SharedValue<number>;
6
7
  showScreen?: Animated.SharedValue<number>;
7
8
  };
8
9
  export declare type MessageOverlayProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Omit<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'>> & Pick<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'> & Pick<MessageOverlayPropsWithContext<StreamChatGenerics>, 'isMyMessage' | 'error' | 'isThreadMessage' | 'message' | 'messageReactions'>;
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import type Animated from 'react-native-reanimated';
3
2
  import type { BottomSheetMethods } from '@gorhom/bottom-sheet/lib/typescript/types';
4
3
  import type { AttachmentPickerProps } from '../../components/AttachmentPicker/AttachmentPicker';
5
4
  import type { ImageGalleryCustomComponents } from '../../components/ImageGallery/ImageGallery';
@@ -19,7 +18,6 @@ export declare type OverlayContextValue = {
19
18
  };
20
19
  export declare const OverlayContext: React.Context<OverlayContextValue>;
21
20
  export declare type OverlayProviderProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<AttachmentPickerProps> & Partial<Pick<AttachmentPickerContextValue, 'attachmentPickerBottomSheetHeight' | 'attachmentSelectionBarHeight' | 'bottomInset' | 'CameraSelectorIcon' | 'FileSelectorIcon' | 'ImageSelectorIcon' | 'topInset'>> & ImageGalleryCustomComponents<StreamChatGenerics> & Partial<Pick<MessageOverlayContextValue<StreamChatGenerics>, 'MessageActionList' | 'MessageActionListItem' | 'OverlayReactionList' | 'OverlayReactions' | 'OverlayReactionsAvatar'>> & Pick<OverlayContextValue, 'translucentStatusBar'> & {
22
- overlayOpacity: Animated.SharedValue<number>;
23
21
  closePicker?: (ref: React.RefObject<BottomSheetMethods>) => void;
24
22
  error?: boolean | Error;
25
23
  /** https://github.com/GetStream/stream-chat-react-native/wiki/Internationalization-(i18n) */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "4.1.2-beta.1",
4
+ "version": "4.1.3-beta.2",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -248,13 +248,18 @@ export const AttachmentPicker = React.forwardRef(
248
248
  }, [selectedPicker]);
249
249
 
250
250
  useEffect(() => {
251
- if (Platform.OS === 'ios') {
252
- Keyboard.addListener('keyboardWillShow', hideAttachmentPicker);
253
- } else {
254
- Keyboard.addListener('keyboardDidShow', hideAttachmentPicker);
255
- }
251
+ const keyboardSubscription =
252
+ Platform.OS === 'ios'
253
+ ? Keyboard.addListener('keyboardWillShow', hideAttachmentPicker)
254
+ : Keyboard.addListener('keyboardDidShow', hideAttachmentPicker);
256
255
 
257
256
  return () => {
257
+ if (keyboardSubscription?.remove) {
258
+ keyboardSubscription.remove();
259
+ return;
260
+ }
261
+
262
+ // To keep compatibility with older versions of React Native, where `remove()` is not available
258
263
  if (Platform.OS === 'ios') {
259
264
  Keyboard.removeListener('keyboardWillShow', hideAttachmentPicker);
260
265
  } else {
@@ -0,0 +1,82 @@
1
+ import React, { useState } from 'react';
2
+ import { Text } from 'react-native';
3
+
4
+ import { act } from 'react-test-renderer';
5
+
6
+ import { render, waitFor } from '@testing-library/react-native';
7
+ import type { Channel, ChannelResponse, Event, StreamChat } from 'stream-chat';
8
+
9
+ import { ChatContext, useChannelUpdated } from '../../../../../index';
10
+
11
+ describe('useChannelUpdated', () => {
12
+ it("defaults to the channels own_capabilities if the event doesn't include it", async () => {
13
+ let eventHanler: (event: Event) => void;
14
+ const mockChannel = {
15
+ cid: 'channeltype:123abc',
16
+ data: {
17
+ own_capabilities: {
18
+ send_messages: true,
19
+ },
20
+ },
21
+ } as unknown as Channel;
22
+
23
+ const mockEvent = {
24
+ channel: {
25
+ cid: mockChannel.cid,
26
+ } as ChannelResponse,
27
+ type: 'channel.updated' as Event['type'],
28
+ };
29
+
30
+ const mockClient = {
31
+ off: jest.fn(),
32
+ on: jest.fn().mockImplementation((_eventName: string, handler: (event: Event) => void) => {
33
+ eventHanler = handler;
34
+ }),
35
+ } as unknown as StreamChat;
36
+
37
+ const TestComponent = () => {
38
+ const [channels, setChannels] = useState<Channel[]>([mockChannel]);
39
+
40
+ useChannelUpdated({ setChannels });
41
+
42
+ if (
43
+ channels[0].data?.own_capabilities &&
44
+ Object.keys(channels[0].data?.own_capabilities as { [key: string]: boolean }).includes(
45
+ 'send_messages',
46
+ )
47
+ ) {
48
+ return <Text>Send messages enabled</Text>;
49
+ }
50
+
51
+ return <Text>Send messages NOT enabled</Text>;
52
+ };
53
+
54
+ const { getByText } = await waitFor(() =>
55
+ render(
56
+ <ChatContext.Provider
57
+ value={{
58
+ client: mockClient,
59
+ connectionRecovering: false,
60
+ isOnline: true,
61
+ mutedUsers: [],
62
+ setActiveChannel: () => null,
63
+ }}
64
+ >
65
+ <TestComponent />
66
+ </ChatContext.Provider>,
67
+ ),
68
+ );
69
+
70
+ await waitFor(() => {
71
+ expect(getByText('Send messages enabled')).toBeTruthy();
72
+ });
73
+
74
+ act(() => {
75
+ eventHanler(mockEvent);
76
+ });
77
+
78
+ await waitFor(() => {
79
+ expect(getByText('Send messages enabled')).toBeTruthy();
80
+ });
81
+ });
82
+ });
@@ -33,8 +33,14 @@ export const useChannelUpdated = <
33
33
  (channel) => channel.cid === (event.cid || event.channel?.cid),
34
34
  );
35
35
  if (index >= 0 && event.channel) {
36
- channels[index].data = event.channel;
36
+ channels[index].data = {
37
+ ...event.channel,
38
+ hidden: event.channel?.hidden ?? channels[index].data?.hidden,
39
+ own_capabilities:
40
+ event.channel?.own_capabilities ?? channels[index].data?.own_capabilities,
41
+ };
37
42
  }
43
+
38
44
  return [...channels];
39
45
  });
40
46
  }
@@ -61,6 +61,7 @@ export const usePaginatedChannels = <
61
61
 
62
62
  const hasUpdatedData =
63
63
  queryType === 'loadChannels' ||
64
+ queryType === 'refresh' ||
64
65
  [
65
66
  JSON.stringify(filtersRef.current) !== JSON.stringify(filters),
66
67
  JSON.stringify(sortRef.current) !== JSON.stringify(sort),
@@ -73,10 +73,16 @@ export type ChannelPreviewMessengerPropsWithContext<
73
73
  * bold: true,
74
74
  * text: 'This is the message preview text'
75
75
  * },
76
- * status: 0 | 1 | 2 // read states of latest message.
76
+ * status: 0 | 1 | 2 // read states of the latest message.
77
77
  * }
78
78
  * ```
79
79
  *
80
+ * The read status is either of the following:
81
+ *
82
+ * 0: The message was not sent by the current user
83
+ * 1: The message was sent by the current user and is unread
84
+ * 2: The message was sent by the current user and is read
85
+ *
80
86
  * @overrideType object
81
87
  */
82
88
  latestMessagePreview: LatestMessagePreview<StreamChatGenerics>;
@@ -2,8 +2,8 @@ import React from 'react';
2
2
  import { StyleSheet, Text, View } from 'react-native';
3
3
 
4
4
  import type { ChannelPreviewProps } from './ChannelPreview';
5
-
6
5
  import type { ChannelPreviewMessengerPropsWithContext } from './ChannelPreviewMessenger';
6
+ import { MessageReadStatus } from './hooks/useLatestMessagePreview';
7
7
 
8
8
  import { useTheme } from '../../contexts/themeContext/ThemeContext';
9
9
  import { Check, CheckAll } from '../../icons';
@@ -48,9 +48,9 @@ export const ChannelPreviewStatus = <
48
48
 
49
49
  return (
50
50
  <View style={styles.flexRow}>
51
- {status === 2 ? (
51
+ {status === MessageReadStatus.READ ? (
52
52
  <CheckAll pathFill={accent_blue} {...checkAllIcon} />
53
- ) : status === 1 ? (
53
+ ) : status === MessageReadStatus.UNREAD ? (
54
54
  <Check pathFill={grey} {...checkIcon} />
55
55
  ) : null}
56
56
  <Text style={[styles.date, { color: grey }, date]}>
@@ -115,12 +115,12 @@ const getLatestMessageDisplayDate = <
115
115
  return parserOutput;
116
116
  };
117
117
 
118
- /**
119
- * set up enum
120
- * 0 = latest message is not current user's message
121
- * 1 = nobody has read latest message which is the current user's message
122
- * 2 = someone has read latest message which is the current user's message
123
- */
118
+ export enum MessageReadStatus {
119
+ NOT_SENT_BY_CURRENT_USER = 0,
120
+ UNREAD = 1,
121
+ READ = 2,
122
+ }
123
+
124
124
  const getLatestMessageReadStatus = <
125
125
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
126
126
  >(
@@ -128,9 +128,11 @@ const getLatestMessageReadStatus = <
128
128
  client: StreamChat<StreamChatGenerics>,
129
129
  message: LatestMessage<StreamChatGenerics> | undefined,
130
130
  readEvents: boolean,
131
- ) => {
131
+ ): MessageReadStatus => {
132
132
  const currentUserId = client.userID;
133
- if (!message || currentUserId !== message.user?.id || readEvents === false) return 0;
133
+ if (!message || currentUserId !== message.user?.id || readEvents === false) {
134
+ return MessageReadStatus.NOT_SENT_BY_CURRENT_USER;
135
+ }
134
136
 
135
137
  const readList = channel.state.read;
136
138
  if (currentUserId) {
@@ -146,8 +148,8 @@ const getLatestMessageReadStatus = <
146
148
  return Object.values(readList).some(
147
149
  ({ last_read }) => messageUpdatedAt && messageUpdatedAt < last_read,
148
150
  )
149
- ? 2
150
- : 1;
151
+ ? MessageReadStatus.READ
152
+ : MessageReadStatus.UNREAD;
151
153
  };
152
154
 
153
155
  const getLatestMessagePreview = <
@@ -176,7 +178,7 @@ const getLatestMessagePreview = <
176
178
  text: t('Nothing yet...'),
177
179
  },
178
180
  ],
179
- status: 0,
181
+ status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,
180
182
  };
181
183
  }
182
184
  const message = lastMessage || messages.length ? messages[messages.length - 1] : undefined;
@@ -229,7 +231,7 @@ export const useLatestMessagePreview = <
229
231
  text: '',
230
232
  },
231
233
  ],
232
- status: 0,
234
+ status: MessageReadStatus.NOT_SENT_BY_CURRENT_USER,
233
235
  });
234
236
 
235
237
  const readStatus = getLatestMessageReadStatus(
@@ -100,8 +100,8 @@ export type MessageOverlayPropsWithContext<
100
100
  | 'message'
101
101
  | 'messageReactions'
102
102
  | 'messageTextNumberOfLines'
103
- | 'overlayOpacity'
104
103
  > & {
104
+ overlayOpacity: Animated.SharedValue<number>;
105
105
  showScreen?: Animated.SharedValue<number>;
106
106
  };
107
107
 
@@ -1,5 +1,4 @@
1
1
  import React, { useContext } from 'react';
2
- import type Animated from 'react-native-reanimated';
3
2
 
4
3
  import type { BottomSheetMethods } from '@gorhom/bottom-sheet/lib/typescript/types';
5
4
 
@@ -53,7 +52,6 @@ export type OverlayProviderProps<
53
52
  >
54
53
  > &
55
54
  Pick<OverlayContextValue, 'translucentStatusBar'> & {
56
- overlayOpacity: Animated.SharedValue<number>;
57
55
  closePicker?: (ref: React.RefObject<BottomSheetMethods>) => void;
58
56
  error?: boolean | Error;
59
57
  /** https://github.com/GetStream/stream-chat-react-native/wiki/Internationalization-(i18n) */
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.1.2-beta.1"
2
+ "version": "4.1.3-beta.2"
3
3
  }