stream-chat-react-native-core 3.9.0-next.1 → 3.9.0-next.5

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 (83) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +21 -9
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Channel/Channel.js +22 -12
  4. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  5. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +4 -0
  6. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  7. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +4 -0
  8. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  9. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +14 -20
  10. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  11. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +7 -4
  12. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  13. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +20 -12
  14. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  15. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +9 -6
  16. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  17. package/lib/commonjs/components/MessageList/MessageList.js +43 -32
  18. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  19. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +1 -1
  20. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  21. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +1 -5
  22. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  23. package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
  24. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  25. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  26. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  27. package/lib/commonjs/hooks/useAppStateListener.js +8 -5
  28. package/lib/commonjs/hooks/useAppStateListener.js.map +1 -1
  29. package/lib/commonjs/version.json +1 -1
  30. package/lib/module/components/Attachment/Gallery.js +21 -9
  31. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  32. package/lib/module/components/Channel/Channel.js +22 -12
  33. package/lib/module/components/Channel/Channel.js.map +1 -1
  34. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +4 -0
  35. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  36. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +4 -0
  37. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  38. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +14 -20
  39. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  40. package/lib/module/components/Chat/hooks/useIsOnline.js +7 -4
  41. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  42. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +20 -12
  43. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  44. package/lib/module/components/Message/MessageSimple/MessageSimple.js +9 -6
  45. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  46. package/lib/module/components/MessageList/MessageList.js +43 -32
  47. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  48. package/lib/module/components/MessageList/hooks/useMessageList.js +1 -1
  49. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  50. package/lib/module/components/MessageList/utils/getGroupStyles.js +1 -5
  51. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  52. package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
  53. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  54. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  55. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  56. package/lib/module/hooks/useAppStateListener.js +8 -5
  57. package/lib/module/hooks/useAppStateListener.js.map +1 -1
  58. package/lib/module/version.json +1 -1
  59. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  60. package/lib/typescript/components/Channel/Channel.d.ts +2 -1
  61. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  62. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +4 -2
  63. package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts +2 -1
  64. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  65. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  66. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +3 -1
  67. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -1
  68. package/package.json +2 -2
  69. package/src/components/Attachment/Gallery.tsx +20 -5
  70. package/src/components/Channel/Channel.tsx +10 -0
  71. package/src/components/Channel/hooks/useCreateChannelContext.ts +4 -0
  72. package/src/components/Channel/hooks/useCreateMessagesContext.ts +4 -0
  73. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +1 -3
  74. package/src/components/Chat/hooks/useIsOnline.ts +17 -16
  75. package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx +9 -2
  76. package/src/components/Message/MessageSimple/MessageSimple.tsx +9 -3
  77. package/src/components/MessageList/MessageList.tsx +72 -28
  78. package/src/components/MessageList/hooks/useMessageList.ts +1 -1
  79. package/src/components/MessageList/utils/getGroupStyles.ts +3 -8
  80. package/src/contexts/channelContext/ChannelContext.tsx +2 -0
  81. package/src/contexts/messagesContext/MessagesContext.tsx +2 -0
  82. package/src/hooks/useAppStateListener.ts +26 -12
  83. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["useCreateChannelContext.ts"],"names":["useCreateChannelContext","channel","disabled","EmptyStateIndicator","enforceUniqueReaction","error","giphyEnabled","hideDateSeparators","isAdmin","isModerator","isOwner","lastRead","loadChannelAtMessage","loading","LoadingIndicator","markRead","maxTimeBetweenGroupedMessages","members","NetworkDownIndicator","read","readEventsEnabled","reloadChannel","scrollToFirstUnreadThreshold","setLastRead","setTargetedMessage","StickyHeader","targetedMessage","typingEventsEnabled","watcherCount","watchers","channelId","id","lastReadTime","getTime","membersLength","Object","keys","length","readUsers","values","readUsersLength","readUsersLastReads","map","last_read","toISOString","join","channelContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport const useCreateChannelContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n channel,\n disabled,\n EmptyStateIndicator,\n enforceUniqueReaction,\n error,\n giphyEnabled,\n hideDateSeparators,\n isAdmin,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n readEventsEnabled,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n typingEventsEnabled,\n watcherCount,\n watchers,\n}: ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>) => {\n const channelId = channel?.id;\n const lastReadTime = lastRead?.getTime();\n const membersLength = Object.keys(members).length;\n\n const readUsers = Object.values(read);\n const readUsersLength = readUsers.length;\n const readUsersLastReads = readUsers.map(({ last_read }) => last_read.toISOString()).join();\n\n const channelContext: ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us> = useMemo(\n () => ({\n channel,\n disabled,\n EmptyStateIndicator,\n enforceUniqueReaction,\n error,\n giphyEnabled,\n hideDateSeparators,\n isAdmin,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n readEventsEnabled,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n typingEventsEnabled,\n watcherCount,\n watchers,\n }),\n [\n channelId,\n disabled,\n error,\n lastReadTime,\n loading,\n membersLength,\n readEventsEnabled,\n readUsersLength,\n readUsersLastReads,\n targetedMessage,\n typingEventsEnabled,\n watcherCount,\n ],\n );\n\n return channelContext;\n};\n"]}
1
+ {"version":3,"sources":["useCreateChannelContext.ts"],"names":["useCreateChannelContext","channel","disabled","EmptyStateIndicator","enableMessageGroupingByUser","enforceUniqueReaction","error","giphyEnabled","hideDateSeparators","hideStickyDateHeader","isAdmin","isModerator","isOwner","lastRead","loadChannelAtMessage","loading","LoadingIndicator","markRead","maxTimeBetweenGroupedMessages","members","NetworkDownIndicator","read","readEventsEnabled","reloadChannel","scrollToFirstUnreadThreshold","setLastRead","setTargetedMessage","StickyHeader","targetedMessage","typingEventsEnabled","watcherCount","watchers","channelId","id","lastReadTime","getTime","membersLength","Object","keys","length","readUsers","values","readUsersLength","readUsersLastReads","map","last_read","toISOString","join","channelContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport const useCreateChannelContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n channel,\n disabled,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled,\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n readEventsEnabled,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n typingEventsEnabled,\n watcherCount,\n watchers,\n}: ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>) => {\n const channelId = channel?.id;\n const lastReadTime = lastRead?.getTime();\n const membersLength = Object.keys(members).length;\n\n const readUsers = Object.values(read);\n const readUsersLength = readUsers.length;\n const readUsersLastReads = readUsers.map(({ last_read }) => last_read.toISOString()).join();\n\n const channelContext: ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us> = useMemo(\n () => ({\n channel,\n disabled,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled,\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n readEventsEnabled,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n typingEventsEnabled,\n watcherCount,\n watchers,\n }),\n [\n channelId,\n disabled,\n error,\n lastReadTime,\n loading,\n membersLength,\n readEventsEnabled,\n readUsersLength,\n readUsersLastReads,\n targetedMessage,\n typingEventsEnabled,\n watcherCount,\n ],\n );\n\n return channelContext;\n};\n"]}
@@ -22,6 +22,7 @@ var useCreateMessagesContext = function useCreateMessagesContext(_ref) {
22
22
  disableTypingIndicator = _ref.disableTypingIndicator,
23
23
  dismissKeyboardOnMessageTouch = _ref.dismissKeyboardOnMessageTouch,
24
24
  editMessage = _ref.editMessage,
25
+ enableMessageGroupingByUser = _ref.enableMessageGroupingByUser,
25
26
  FileAttachment = _ref.FileAttachment,
26
27
  FileAttachmentGroup = _ref.FileAttachmentGroup,
27
28
  FileAttachmentIcon = _ref.FileAttachmentIcon,
@@ -44,6 +45,7 @@ var useCreateMessagesContext = function useCreateMessagesContext(_ref) {
44
45
  initialScrollToFirstUnreadMessage = _ref.initialScrollToFirstUnreadMessage,
45
46
  InlineDateSeparator = _ref.InlineDateSeparator,
46
47
  InlineUnreadIndicator = _ref.InlineUnreadIndicator,
48
+ legacyImageViewerSwipeBehaviour = _ref.legacyImageViewerSwipeBehaviour,
47
49
  markdownRules = _ref.markdownRules,
48
50
  Message = _ref.Message,
49
51
  messageActions = _ref.messageActions,
@@ -108,6 +110,7 @@ var useCreateMessagesContext = function useCreateMessagesContext(_ref) {
108
110
  disableTypingIndicator: disableTypingIndicator,
109
111
  dismissKeyboardOnMessageTouch: dismissKeyboardOnMessageTouch,
110
112
  editMessage: editMessage,
113
+ enableMessageGroupingByUser: enableMessageGroupingByUser,
111
114
  FileAttachment: FileAttachment,
112
115
  FileAttachmentGroup: FileAttachmentGroup,
113
116
  FileAttachmentIcon: FileAttachmentIcon,
@@ -130,6 +133,7 @@ var useCreateMessagesContext = function useCreateMessagesContext(_ref) {
130
133
  initialScrollToFirstUnreadMessage: initialScrollToFirstUnreadMessage,
131
134
  InlineDateSeparator: InlineDateSeparator,
132
135
  InlineUnreadIndicator: InlineUnreadIndicator,
136
+ legacyImageViewerSwipeBehaviour: legacyImageViewerSwipeBehaviour,
133
137
  markdownRules: markdownRules,
134
138
  Message: Message,
135
139
  messageActions: messageActions,
@@ -1 +1 @@
1
- {"version":3,"sources":["useCreateMessagesContext.ts"],"names":["useCreateMessagesContext","additionalTouchableProps","animatedLongPress","Attachment","AttachmentActions","blockUser","Card","CardCover","CardFooter","CardHeader","channelId","copyMessage","DateHeader","deleteMessage","disableTypingIndicator","dismissKeyboardOnMessageTouch","editMessage","FileAttachment","FileAttachmentGroup","FileAttachmentIcon","flagMessage","FlatList","forceAlignMessages","formatDate","Gallery","Giphy","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","markdownRules","Message","messageActions","MessageAvatar","MessageContent","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageList","MessageReplies","MessageRepliesAvatars","MessageSimple","MessageStatus","MessageSystem","MessageText","mutesEnabled","muteUser","myMessageTheme","onDoubleTapMessage","onLongPressMessage","onPressInMessage","onPressMessage","OverlayReactionList","quotedRepliesEnabled","quotedReply","ReactionList","reactionsEnabled","removeMessage","Reply","retry","retrySendMessage","ScrollToBottomButton","selectReaction","setEditingState","setQuotedMessageState","supportedReactions","threadRepliesEnabled","threadReply","TypingIndicator","TypingIndicatorContainer","updateMessage","UrlPreview","additionalTouchablePropsLength","Object","keys","length","markdownRulesLength","messageContentOrderValue","join","supportedReactionsLength","messagesContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport const useCreateMessagesContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n additionalTouchableProps,\n animatedLongPress,\n Attachment,\n AttachmentActions,\n blockUser,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n copyMessage,\n DateHeader,\n deleteMessage,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n editMessage,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n flagMessage,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n mutesEnabled,\n muteUser,\n myMessageTheme,\n onDoubleTapMessage,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n quotedRepliesEnabled,\n quotedReply,\n ReactionList,\n reactionsEnabled,\n removeMessage,\n Reply,\n retry,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n threadRepliesEnabled,\n threadReply,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n}: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us> & {\n /**\n * To ensure we allow re-render, when channel is changed\n */\n channelId?: string;\n}) => {\n const additionalTouchablePropsLength = Object.keys(additionalTouchableProps || {}).length;\n const markdownRulesLength = Object.keys(markdownRules || {}).length;\n const messageContentOrderValue = messageContentOrder.join();\n const supportedReactionsLength = supportedReactions.length;\n\n const messagesContext: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us> = useMemo(\n () => ({\n additionalTouchableProps,\n animatedLongPress,\n Attachment,\n AttachmentActions,\n blockUser,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n copyMessage,\n DateHeader,\n deleteMessage,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n editMessage,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n flagMessage,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n mutesEnabled,\n muteUser,\n myMessageTheme,\n onDoubleTapMessage,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n quotedRepliesEnabled,\n quotedReply,\n ReactionList,\n reactionsEnabled,\n removeMessage,\n Reply,\n retry,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n threadRepliesEnabled,\n threadReply,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n }),\n [\n additionalTouchablePropsLength,\n channelId,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n initialScrollToFirstUnreadMessage,\n markdownRulesLength,\n messageContentOrderValue,\n supportedReactionsLength,\n ],\n );\n\n return messagesContext;\n};\n"]}
1
+ {"version":3,"sources":["useCreateMessagesContext.ts"],"names":["useCreateMessagesContext","additionalTouchableProps","animatedLongPress","Attachment","AttachmentActions","blockUser","Card","CardCover","CardFooter","CardHeader","channelId","copyMessage","DateHeader","deleteMessage","disableTypingIndicator","dismissKeyboardOnMessageTouch","editMessage","enableMessageGroupingByUser","FileAttachment","FileAttachmentGroup","FileAttachmentIcon","flagMessage","FlatList","forceAlignMessages","formatDate","Gallery","Giphy","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","legacyImageViewerSwipeBehaviour","markdownRules","Message","messageActions","MessageAvatar","MessageContent","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageList","MessageReplies","MessageRepliesAvatars","MessageSimple","MessageStatus","MessageSystem","MessageText","mutesEnabled","muteUser","myMessageTheme","onDoubleTapMessage","onLongPressMessage","onPressInMessage","onPressMessage","OverlayReactionList","quotedRepliesEnabled","quotedReply","ReactionList","reactionsEnabled","removeMessage","Reply","retry","retrySendMessage","ScrollToBottomButton","selectReaction","setEditingState","setQuotedMessageState","supportedReactions","threadRepliesEnabled","threadReply","TypingIndicator","TypingIndicatorContainer","updateMessage","UrlPreview","additionalTouchablePropsLength","Object","keys","length","markdownRulesLength","messageContentOrderValue","join","supportedReactionsLength","messagesContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport const useCreateMessagesContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n additionalTouchableProps,\n animatedLongPress,\n Attachment,\n AttachmentActions,\n blockUser,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n copyMessage,\n DateHeader,\n deleteMessage,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n editMessage,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n flagMessage,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n mutesEnabled,\n muteUser,\n myMessageTheme,\n onDoubleTapMessage,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n quotedRepliesEnabled,\n quotedReply,\n ReactionList,\n reactionsEnabled,\n removeMessage,\n Reply,\n retry,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n threadRepliesEnabled,\n threadReply,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n}: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us> & {\n /**\n * To ensure we allow re-render, when channel is changed\n */\n channelId?: string;\n}) => {\n const additionalTouchablePropsLength = Object.keys(additionalTouchableProps || {}).length;\n const markdownRulesLength = Object.keys(markdownRules || {}).length;\n const messageContentOrderValue = messageContentOrder.join();\n const supportedReactionsLength = supportedReactions.length;\n\n const messagesContext: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us> = useMemo(\n () => ({\n additionalTouchableProps,\n animatedLongPress,\n Attachment,\n AttachmentActions,\n blockUser,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n copyMessage,\n DateHeader,\n deleteMessage,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n editMessage,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n flagMessage,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n mutesEnabled,\n muteUser,\n myMessageTheme,\n onDoubleTapMessage,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n quotedRepliesEnabled,\n quotedReply,\n ReactionList,\n reactionsEnabled,\n removeMessage,\n Reply,\n retry,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n threadRepliesEnabled,\n threadReply,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n }),\n [\n additionalTouchablePropsLength,\n channelId,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n initialScrollToFirstUnreadMessage,\n markdownRulesLength,\n messageContentOrderValue,\n supportedReactionsLength,\n ],\n );\n\n return messagesContext;\n};\n"]}
@@ -69,15 +69,10 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
69
69
  loadingNextPage = _useState10[0],
70
70
  setLoadingNextPage = _useState10[1];
71
71
 
72
- var _useState11 = (0, _react.useState)(0),
72
+ var _useState11 = (0, _react.useState)(false),
73
73
  _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
74
- offset = _useState12[0],
75
- setOffset = _useState12[1];
76
-
77
- var _useState13 = (0, _react.useState)(false),
78
- _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
79
- refreshing = _useState14[0],
80
- setRefreshing = _useState14[1];
74
+ refreshing = _useState12[0],
75
+ setRefreshing = _useState12[1];
81
76
 
82
77
  var queryChannels = function () {
83
78
  var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
@@ -114,7 +109,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
114
109
 
115
110
  newOptions = (0, _extends2["default"])({
116
111
  limit: (_options$limit = options == null ? void 0 : options.limit) != null ? _options$limit : _utils.MAX_QUERY_CHANNELS_LIMIT,
117
- offset: queryType === 'reload' || queryType === 'refresh' ? 0 : offset
112
+ offset: queryType === 'reload' || queryType === 'refresh' ? 0 : channels.length
118
113
  }, options);
119
114
  _context.prev = 6;
120
115
  _context.next = 9;
@@ -128,20 +123,19 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
128
123
  newChannels = queryType === 'reload' || queryType === 'refresh' ? channelQueryResponse : [].concat((0, _toConsumableArray2["default"])(channels), (0, _toConsumableArray2["default"])(channelQueryResponse));
129
124
  setChannels(newChannels);
130
125
  setHasNextPage(channelQueryResponse.length >= newOptions.limit);
131
- setOffset(newChannels.length);
132
126
  setError(false);
133
- _context.next = 29;
127
+ _context.next = 28;
134
128
  break;
135
129
 
136
- case 18:
137
- _context.prev = 18;
130
+ case 17:
131
+ _context.prev = 17;
138
132
  _context.t0 = _context["catch"](6);
139
- _context.next = 22;
133
+ _context.next = 21;
140
134
  return wait(2000);
141
135
 
142
- case 22:
136
+ case 21:
143
137
  if (!(retryCount === 3)) {
144
- _context.next = 28;
138
+ _context.next = 27;
145
139
  break;
146
140
  }
147
141
 
@@ -151,20 +145,20 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
151
145
  console.warn(_context.t0);
152
146
  return _context.abrupt("return", setError(true));
153
147
 
154
- case 28:
148
+ case 27:
155
149
  return _context.abrupt("return", queryChannels(queryType, retryCount + 1));
156
150
 
157
- case 29:
151
+ case 28:
158
152
  setLoadingChannels(false);
159
153
  setLoadingNextPage(false);
160
154
  setRefreshing(false);
161
155
 
162
- case 32:
156
+ case 31:
163
157
  case "end":
164
158
  return _context.stop();
165
159
  }
166
160
  }
167
- }, _callee, null, [[6, 18]]);
161
+ }, _callee, null, [[6, 17]]);
168
162
  }));
169
163
 
170
164
  return function queryChannels() {
@@ -1 +1 @@
1
- {"version":3,"sources":["usePaginatedChannels.ts"],"names":["wait","ms","Promise","resolve","setTimeout","DEFAULT_OPTIONS","message_limit","usePaginatedChannels","filters","options","sort","client","channels","setChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","loadingChannels","setLoadingChannels","loadingNextPage","setLoadingNextPage","offset","setOffset","refreshing","setRefreshing","queryChannels","queryType","retryCount","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","length","console","warn","loadNextPage","undefined","refreshList","current","reloadList","filterStr","JSON","stringify","sortStr"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nconst wait = (ms: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\ntype Parameters<\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Us extends UnknownType = DefaultUserType,\n> = {\n filters: ChannelFilters<Ch, Co, Us>;\n options: ChannelOptions;\n sort: ChannelSort<Ch>;\n};\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nexport const usePaginatedChannels = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<Ch, Co, Us>) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const [channels, setChannels] = useState<Channel<At, Ch, Co, Ev, Me, Re, Us>[]>([]);\n const [error, setError] = useState(false);\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const [loadingChannels, setLoadingChannels] = useState(false);\n const [loadingNextPage, setLoadingNextPage] = useState(false);\n const [offset, setOffset] = useState(0);\n const [refreshing, setRefreshing] = useState(false);\n\n const queryChannels = async (queryType = '', retryCount = 0): Promise<void> => {\n if (!client || loadingChannels || loadingNextPage || refreshing) return;\n\n if (queryType === 'reload') {\n setLoadingChannels(true);\n } else if (queryType === 'refresh') {\n setRefreshing(true);\n } else if (!queryType) {\n setLoadingNextPage(true);\n }\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'reload' || queryType === 'refresh' ? 0 : offset,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions);\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'reload' || queryType === 'refresh'\n ? channelQueryResponse\n : [...channels, ...channelQueryResponse];\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setOffset(newChannels.length);\n setError(false);\n } catch (err) {\n await wait(2000);\n\n if (retryCount === 3) {\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n console.warn(err);\n return setError(true);\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < 5000 && !error) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
1
+ {"version":3,"sources":["usePaginatedChannels.ts"],"names":["wait","ms","Promise","resolve","setTimeout","DEFAULT_OPTIONS","message_limit","usePaginatedChannels","filters","options","sort","client","channels","setChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","loadingChannels","setLoadingChannels","loadingNextPage","setLoadingNextPage","refreshing","setRefreshing","queryChannels","queryType","retryCount","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","loadNextPage","undefined","refreshList","current","reloadList","filterStr","JSON","stringify","sortStr"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nconst wait = (ms: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\ntype Parameters<\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Us extends UnknownType = DefaultUserType,\n> = {\n filters: ChannelFilters<Ch, Co, Us>;\n options: ChannelOptions;\n sort: ChannelSort<Ch>;\n};\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nexport const usePaginatedChannels = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<Ch, Co, Us>) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const [channels, setChannels] = useState<Channel<At, Ch, Co, Ev, Me, Re, Us>[]>([]);\n const [error, setError] = useState(false);\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const [loadingChannels, setLoadingChannels] = useState(false);\n const [loadingNextPage, setLoadingNextPage] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const queryChannels = async (queryType = '', retryCount = 0): Promise<void> => {\n if (!client || loadingChannels || loadingNextPage || refreshing) return;\n\n if (queryType === 'reload') {\n setLoadingChannels(true);\n } else if (queryType === 'refresh') {\n setRefreshing(true);\n } else if (!queryType) {\n setLoadingNextPage(true);\n }\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'reload' || queryType === 'refresh' ? 0 : channels.length,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions);\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'reload' || queryType === 'refresh'\n ? channelQueryResponse\n : [...channels, ...channelQueryResponse];\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(false);\n } catch (err) {\n await wait(2000);\n\n if (retryCount === 3) {\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n console.warn(err);\n return setError(true);\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < 5000 && !error) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
@@ -36,7 +36,9 @@ var useIsOnline = function useIsOnline(client) {
36
36
  setConnectionRecovering = _useState6[1];
37
37
 
38
38
  var clientExits = !!client;
39
- var onBackground = closeConnectionOnBackground ? function () {
39
+ var onBackground = (0, _react.useCallback)(function () {
40
+ if (!closeConnectionOnBackground) return;
41
+
40
42
  for (var cid in client.activeChannels) {
41
43
  var channel = client.activeChannels[cid];
42
44
  channel == null ? void 0 : channel.state.setIsUpToDate(false);
@@ -44,10 +46,11 @@ var useIsOnline = function useIsOnline(client) {
44
46
 
45
47
  client.closeConnection();
46
48
  setIsOnline(false);
47
- } : undefined;
48
- var onForeground = closeConnectionOnBackground ? function () {
49
+ }, [closeConnectionOnBackground, client]);
50
+ var onForeground = (0, _react.useCallback)(function () {
51
+ if (!closeConnectionOnBackground) return;
49
52
  client.openConnection();
50
- } : undefined;
53
+ }, [closeConnectionOnBackground, client]);
51
54
  (0, _useAppStateListener.useAppStateListener)(onForeground, onBackground);
52
55
  (0, _react.useEffect)(function () {
53
56
  var handleChangedEvent = function handleChangedEvent(event) {
@@ -1 +1 @@
1
- {"version":3,"sources":["useIsOnline.ts"],"names":["useIsOnline","client","closeConnectionOnBackground","unsubscribeNetInfo","setUnsubscribeNetInfo","isOnline","setIsOnline","connectionRecovering","setConnectionRecovering","clientExits","onBackground","cid","activeChannels","channel","state","setIsUpToDate","closeConnection","undefined","onForeground","openConnection","handleChangedEvent","event","online","handleRecoveredEvent","notifyChatClient","netInfoState","wsConnection","onlineStatusChanged","type","setConnectionListener","NetInfo","fetch","then","addEventListener","setInitialOnlineState","status","on","off"],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useAppStateListener } from '../../../hooks/useAppStateListener';\nimport { NetInfo } from '../../../native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\nimport type { StreamChat, Event as StreamEvent } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\n/**\n * Disconnect the websocket connection when app goes to background,\n * and reconnect when app comes to foreground.\n * We do this to make sure, user receives push notifications when app is in the background.\n * You can't receive push notification until you have active websocket connection.\n */\nexport const useIsOnline = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n closeConnectionOnBackground = true,\n) => {\n const [unsubscribeNetInfo, setUnsubscribeNetInfo] = useState<NetInfoSubscription>();\n const [isOnline, setIsOnline] = useState(true);\n const [connectionRecovering, setConnectionRecovering] = useState(false);\n\n const clientExits = !!client;\n\n const onBackground = closeConnectionOnBackground\n ? () => {\n for (const cid in client.activeChannels) {\n const channel = client.activeChannels[cid];\n channel?.state.setIsUpToDate(false);\n }\n client.closeConnection();\n setIsOnline(false);\n }\n : undefined;\n\n const onForeground = closeConnectionOnBackground\n ? () => {\n client.openConnection();\n }\n : undefined;\n\n useAppStateListener(onForeground, onBackground);\n\n useEffect(() => {\n const handleChangedEvent = (event: StreamEvent<At, Ch, Co, Ev, Me, Re, Us>) => {\n setConnectionRecovering(!event.online);\n setIsOnline(event.online || false);\n };\n\n const handleRecoveredEvent = () => setConnectionRecovering(false);\n\n const notifyChatClient = (netInfoState: boolean) => {\n if (client?.wsConnection) {\n if (netInfoState) {\n client.wsConnection.onlineStatusChanged({\n type: 'online',\n } as Event);\n } else {\n client.wsConnection.onlineStatusChanged({\n type: 'offline',\n } as Event);\n }\n }\n };\n\n const setConnectionListener = () => {\n NetInfo.fetch().then((netInfoState) => {\n notifyChatClient(netInfoState);\n });\n setUnsubscribeNetInfo(\n NetInfo.addEventListener((netInfoState) => {\n notifyChatClient(netInfoState);\n }),\n );\n };\n\n const setInitialOnlineState = async () => {\n const status = await NetInfo.fetch();\n setIsOnline(status);\n };\n\n setInitialOnlineState();\n if (client) {\n client.on('connection.changed', handleChangedEvent);\n client.on('connection.recovered', handleRecoveredEvent);\n setConnectionListener();\n }\n\n return () => {\n client.off('connection.changed', handleChangedEvent);\n client.off('connection.recovered', handleRecoveredEvent);\n if (unsubscribeNetInfo) {\n unsubscribeNetInfo();\n }\n };\n }, [clientExits]);\n\n return { connectionRecovering, isOnline };\n};\n"]}
1
+ {"version":3,"sources":["useIsOnline.ts"],"names":["useIsOnline","client","closeConnectionOnBackground","unsubscribeNetInfo","setUnsubscribeNetInfo","isOnline","setIsOnline","connectionRecovering","setConnectionRecovering","clientExits","onBackground","cid","activeChannels","channel","state","setIsUpToDate","closeConnection","onForeground","openConnection","handleChangedEvent","event","online","handleRecoveredEvent","notifyChatClient","netInfoState","wsConnection","onlineStatusChanged","type","setConnectionListener","NetInfo","fetch","then","addEventListener","setInitialOnlineState","status","on","off"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport { useAppStateListener } from '../../../hooks/useAppStateListener';\nimport { NetInfo } from '../../../native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\nimport type { StreamChat, Event as StreamEvent } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\n/**\n * Disconnect the websocket connection when app goes to background,\n * and reconnect when app comes to foreground.\n * We do this to make sure, user receives push notifications when app is in the background.\n * You can't receive push notification until you have active websocket connection.\n */\nexport const useIsOnline = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n closeConnectionOnBackground = true,\n) => {\n const [unsubscribeNetInfo, setUnsubscribeNetInfo] = useState<NetInfoSubscription>();\n const [isOnline, setIsOnline] = useState(true);\n const [connectionRecovering, setConnectionRecovering] = useState(false);\n\n const clientExits = !!client;\n\n const onBackground = useCallback(() => {\n if (!closeConnectionOnBackground) return;\n\n for (const cid in client.activeChannels) {\n const channel = client.activeChannels[cid];\n channel?.state.setIsUpToDate(false);\n }\n\n client.closeConnection();\n setIsOnline(false);\n }, [closeConnectionOnBackground, client]);\n\n const onForeground = useCallback(() => {\n if (!closeConnectionOnBackground) return;\n\n client.openConnection();\n }, [closeConnectionOnBackground, client]);\n\n useAppStateListener(onForeground, onBackground);\n\n useEffect(() => {\n const handleChangedEvent = (event: StreamEvent<At, Ch, Co, Ev, Me, Re, Us>) => {\n setConnectionRecovering(!event.online);\n setIsOnline(event.online || false);\n };\n\n const handleRecoveredEvent = () => setConnectionRecovering(false);\n\n const notifyChatClient = (netInfoState: boolean) => {\n if (client?.wsConnection) {\n if (netInfoState) {\n client.wsConnection.onlineStatusChanged({\n type: 'online',\n } as Event);\n } else {\n client.wsConnection.onlineStatusChanged({\n type: 'offline',\n } as Event);\n }\n }\n };\n\n const setConnectionListener = () => {\n NetInfo.fetch().then((netInfoState) => {\n notifyChatClient(netInfoState);\n });\n setUnsubscribeNetInfo(\n NetInfo.addEventListener((netInfoState) => {\n notifyChatClient(netInfoState);\n }),\n );\n };\n\n const setInitialOnlineState = async () => {\n const status = await NetInfo.fetch();\n setIsOnline(status);\n };\n\n setInitialOnlineState();\n if (client) {\n client.on('connection.changed', handleChangedEvent);\n client.on('connection.recovered', handleRecoveredEvent);\n setConnectionListener();\n }\n\n return () => {\n client.off('connection.changed', handleChangedEvent);\n client.off('connection.recovered', handleRecoveredEvent);\n if (unsubscribeNetInfo) {\n unsubscribeNetInfo();\n }\n };\n }, [clientExits]);\n\n return { connectionRecovering, isOnline };\n};\n"]}
@@ -45,6 +45,7 @@ var KeyboardCompatibleView = function (_React$Component) {
45
45
  _this._frame = null;
46
46
  _this._keyboardEvent = null;
47
47
  _this._subscriptions = [];
48
+ _this._appStateSubscription = null;
48
49
  _this._initialFrameHeight = 0;
49
50
 
50
51
  _this._onKeyboardChange = function (event) {
@@ -190,14 +191,21 @@ var KeyboardCompatibleView = function (_React$Component) {
190
191
  }, {
191
192
  key: "componentDidMount",
192
193
  value: function componentDidMount() {
193
- _reactNative.AppState.addEventListener('change', this._handleAppStateChange);
194
-
194
+ this._appStateSubscription = _reactNative.AppState.addEventListener('change', this._handleAppStateChange);
195
195
  this.setKeyboardListeners();
196
196
  }
197
197
  }, {
198
198
  key: "componentWillUnmount",
199
199
  value: function componentWillUnmount() {
200
- _reactNative.AppState.removeEventListener('change', this._handleAppStateChange);
200
+ var _this$_appStateSubscr;
201
+
202
+ if ((_this$_appStateSubscr = this._appStateSubscription) != null && _this$_appStateSubscr.remove) {
203
+ var _this$_appStateSubscr2;
204
+
205
+ (_this$_appStateSubscr2 = this._appStateSubscription) == null ? void 0 : _this$_appStateSubscr2.remove();
206
+ } else {
207
+ _reactNative.AppState.removeEventListener('change', this._handleAppStateChange);
208
+ }
201
209
 
202
210
  this.unsetKeyboardListeners();
203
211
  }
@@ -231,7 +239,7 @@ var KeyboardCompatibleView = function (_React$Component) {
231
239
  __self: this,
232
240
  __source: {
233
241
  fileName: _jsxFileName,
234
- lineNumber: 208,
242
+ lineNumber: 215,
235
243
  columnNumber: 11
236
244
  }
237
245
  }, _react["default"].createElement(_reactNative.View, (0, _extends2["default"])({
@@ -242,7 +250,7 @@ var KeyboardCompatibleView = function (_React$Component) {
242
250
  __self: this,
243
251
  __source: {
244
252
  fileName: _jsxFileName,
245
- lineNumber: 209,
253
+ lineNumber: 216,
246
254
  columnNumber: 13
247
255
  }
248
256
  }), children));
@@ -255,7 +263,7 @@ var KeyboardCompatibleView = function (_React$Component) {
255
263
  __self: this,
256
264
  __source: {
257
265
  fileName: _jsxFileName,
258
- lineNumber: 222,
266
+ lineNumber: 229,
259
267
  columnNumber: 11
260
268
  }
261
269
  }, _react["default"].createElement(_reactNative.View, (0, _extends2["default"])({
@@ -266,7 +274,7 @@ var KeyboardCompatibleView = function (_React$Component) {
266
274
  __self: this,
267
275
  __source: {
268
276
  fileName: _jsxFileName,
269
- lineNumber: 223,
277
+ lineNumber: 230,
270
278
  columnNumber: 13
271
279
  }
272
280
  }), _react["default"].createElement(_reactNative.View, {
@@ -276,7 +284,7 @@ var KeyboardCompatibleView = function (_React$Component) {
276
284
  __self: this,
277
285
  __source: {
278
286
  fileName: _jsxFileName,
279
- lineNumber: 224,
287
+ lineNumber: 231,
280
288
  columnNumber: 15
281
289
  }
282
290
  }, children)));
@@ -289,7 +297,7 @@ var KeyboardCompatibleView = function (_React$Component) {
289
297
  __self: this,
290
298
  __source: {
291
299
  fileName: _jsxFileName,
292
- lineNumber: 237,
300
+ lineNumber: 244,
293
301
  columnNumber: 11
294
302
  }
295
303
  }, _react["default"].createElement(_reactNative.View, (0, _extends2["default"])({
@@ -302,7 +310,7 @@ var KeyboardCompatibleView = function (_React$Component) {
302
310
  __self: this,
303
311
  __source: {
304
312
  fileName: _jsxFileName,
305
- lineNumber: 238,
313
+ lineNumber: 245,
306
314
  columnNumber: 13
307
315
  }
308
316
  }), children));
@@ -315,7 +323,7 @@ var KeyboardCompatibleView = function (_React$Component) {
315
323
  __self: this,
316
324
  __source: {
317
325
  fileName: _jsxFileName,
318
- lineNumber: 251,
326
+ lineNumber: 258,
319
327
  columnNumber: 11
320
328
  }
321
329
  }, _react["default"].createElement(_reactNative.View, (0, _extends2["default"])({
@@ -326,7 +334,7 @@ var KeyboardCompatibleView = function (_React$Component) {
326
334
  __self: this,
327
335
  __source: {
328
336
  fileName: _jsxFileName,
329
- lineNumber: 252,
337
+ lineNumber: 259,
330
338
  columnNumber: 13
331
339
  }
332
340
  }), children));
@@ -1 +1 @@
1
- {"version":3,"sources":["KeyboardCompatibleView.tsx"],"names":["KeyboardCompatibleView","props","_frame","_keyboardEvent","_subscriptions","_initialFrameHeight","_onKeyboardChange","event","_updateBottomIfNecessary","_onLayout","nativeEvent","layout","height","setState","bottom","duration","easing","endCoordinates","_relativeKeyboardHeight","state","LayoutAnimation","configureNext","update","type","Types","_handleAppStateChange","nextAppState","appState","match","setKeyboardListeners","unsetKeyboardListeners","Platform","OS","Keyboard","addListener","push","isKeyboardOpen","filter","subscription","remove","dismissKeyboard","Promise","resolve","dismiss","AppState","currentState","viewRef","React","createRef","keyboardFrame","frame","keyboardY","screenY","keyboardVerticalOffset","relativeHeight","y","barHeights","Dimensions","get","Math","max","StatusBar","currentHeight","addEventListener","removeEventListener","behavior","children","contentContainerStyle","enabled","style","bottomHeight","heightStyle","flex","StyleSheet","compose","paddingBottom","Component","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n AppState,\n AppStateStatus,\n Dimensions,\n EmitterSubscription,\n Keyboard,\n KeyboardAvoidingViewProps,\n KeyboardEvent,\n KeyboardEventListener,\n LayoutAnimation,\n LayoutChangeEvent,\n LayoutRectangle,\n Platform,\n ScreenRect,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\n\nimport { KeyboardProvider } from '../../contexts/keyboardContext/KeyboardContext';\n\n/**\n * View that moves out of the way when the keyboard appears by automatically\n * adjusting its height, position, or bottom padding.\n *\n * Following piece of code has been mostly copied from KeyboardAvoidingView component, with few additional tweaks.\n */\nexport class KeyboardCompatibleView extends React.Component<\n KeyboardAvoidingViewProps,\n { appState: AppStateStatus; bottom: number; isKeyboardOpen: boolean }\n> {\n static defaultProps: Pick<\n KeyboardAvoidingViewProps,\n 'behavior' | 'enabled' | 'keyboardVerticalOffset'\n > = {\n behavior: Platform.OS === 'ios' ? 'padding' : 'position',\n enabled: true,\n keyboardVerticalOffset: Platform.OS === 'ios' ? 86.5 : -300, // default MessageInput height\n };\n\n _frame: LayoutRectangle | null = null;\n _keyboardEvent: KeyboardEvent | null = null;\n _subscriptions: EmitterSubscription[] = [];\n viewRef: React.RefObject<View>;\n _initialFrameHeight = 0;\n constructor(props: KeyboardAvoidingViewProps) {\n super(props);\n this.state = {\n appState: AppState.currentState,\n bottom: 0,\n isKeyboardOpen: false,\n };\n this.viewRef = React.createRef();\n }\n\n _relativeKeyboardHeight(keyboardFrame: ScreenRect) {\n const frame = this._frame;\n if (!frame || !keyboardFrame) {\n return 0;\n }\n\n const keyboardY = keyboardFrame.screenY - (this.props.keyboardVerticalOffset ?? 0);\n const relativeHeight = frame.y + frame.height - keyboardY;\n\n /**\n * When the StatusBar is translucent there is an issue\n * where the relative keyboard height is returned incorrectly\n * instead of 0 when closed.\n */\n if (Platform.OS === 'android') {\n const barHeights = Dimensions.get('screen').height - Dimensions.get('window').height;\n if (relativeHeight <= Math.max(barHeights, StatusBar.currentHeight ?? 0)) {\n return 0;\n }\n }\n\n // Calculate the displacement needed for the view such that it\n // no longer overlaps with the keyboard\n return Math.max(relativeHeight, 0);\n }\n\n _onKeyboardChange: KeyboardEventListener = (event) => {\n this._keyboardEvent = event;\n this._updateBottomIfNecessary();\n };\n\n _onLayout: (event: LayoutChangeEvent) => void = (event) => {\n this._frame = event.nativeEvent.layout;\n if (!this._initialFrameHeight) {\n // save the initial frame height, before the keyboard is visible\n this._initialFrameHeight = this._frame.height;\n }\n\n this._updateBottomIfNecessary();\n };\n\n _updateBottomIfNecessary = () => {\n if (this._keyboardEvent === null) {\n this.setState({ bottom: 0 });\n return;\n }\n\n const { duration, easing, endCoordinates } = this._keyboardEvent;\n const height = this._relativeKeyboardHeight(endCoordinates);\n\n if (this.state.bottom === height) {\n return;\n }\n\n if (duration && easing) {\n LayoutAnimation.configureNext({\n // We have to pass the duration equal to minimal accepted duration defined here: RCTLayoutAnimation.m\n duration: duration > 10 ? duration : 10,\n update: {\n duration: duration > 10 ? duration : 10,\n type: LayoutAnimation.Types[easing] || 'keyboard',\n },\n });\n }\n this.setState({ bottom: height });\n };\n\n _handleAppStateChange = (nextAppState: AppStateStatus) => {\n if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {\n this.setKeyboardListeners();\n }\n\n if (nextAppState.match(/inactive|background/)) {\n this.unsetKeyboardListeners();\n }\n\n this.setState({ appState: nextAppState });\n };\n\n setKeyboardListeners = () => {\n if (Platform.OS === 'ios') {\n this._subscriptions = [\n Keyboard.addListener('keyboardWillChangeFrame', this._onKeyboardChange),\n ];\n } else {\n this._subscriptions = [\n Keyboard.addListener('keyboardDidHide', this._onKeyboardChange),\n Keyboard.addListener('keyboardDidShow', this._onKeyboardChange),\n ];\n }\n\n this._subscriptions.push(\n Keyboard.addListener('keyboardDidHide', () => {\n this.setState({ isKeyboardOpen: false });\n }),\n Keyboard.addListener('keyboardDidShow', () => {\n this.setState({ isKeyboardOpen: true });\n }),\n );\n };\n\n unsetKeyboardListeners = () => {\n this._subscriptions = this._subscriptions.filter((subscription) => {\n subscription.remove();\n return false;\n });\n };\n\n dismissKeyboard: () => Promise<void> | undefined = () => {\n if (!this.state.isKeyboardOpen) {\n return;\n }\n\n return new Promise((resolve) => {\n const subscription = Keyboard.addListener('keyboardDidHide', () => {\n resolve();\n subscription.remove();\n });\n\n Keyboard.dismiss();\n });\n };\n\n componentDidMount() {\n AppState.addEventListener('change', this._handleAppStateChange);\n this.setKeyboardListeners();\n }\n\n componentWillUnmount() {\n AppState.removeEventListener('change', this._handleAppStateChange);\n this.unsetKeyboardListeners();\n }\n\n render() {\n const { behavior, children, contentContainerStyle, enabled, style, ...props } = this.props;\n const bottomHeight = enabled ? this.state.bottom : 0;\n switch (behavior) {\n case 'height':\n // eslint-disable-next-line no-case-declarations\n let heightStyle;\n if (this._frame !== null && this.state.bottom > 0) {\n // Note that we only apply a height change when there is keyboard present,\n // i.e. this.state.bottom is greater than 0. If we remove that condition,\n // this.frame.height will never go back to its original value.\n // When height changes, we need to disable flex.\n heightStyle = {\n flex: 0,\n height: this._initialFrameHeight - bottomHeight,\n };\n }\n return (\n <KeyboardProvider value={{ dismissKeyboard: this.dismissKeyboard }}>\n <View\n onLayout={this._onLayout}\n ref={this.viewRef}\n style={StyleSheet.compose(style, heightStyle)}\n {...props}\n >\n {children}\n </View>\n </KeyboardProvider>\n );\n\n case 'position':\n return (\n <KeyboardProvider value={{ dismissKeyboard: this.dismissKeyboard }}>\n <View onLayout={this._onLayout} ref={this.viewRef} style={style} {...props}>\n <View\n style={StyleSheet.compose(contentContainerStyle, {\n bottom: bottomHeight,\n })}\n >\n {children}\n </View>\n </View>\n </KeyboardProvider>\n );\n\n case 'padding':\n return (\n <KeyboardProvider value={{ dismissKeyboard: this.dismissKeyboard }}>\n <View\n onLayout={this._onLayout}\n ref={this.viewRef}\n style={StyleSheet.compose(style, { paddingBottom: bottomHeight })}\n {...props}\n >\n {children}\n </View>\n </KeyboardProvider>\n );\n\n default:\n return (\n <KeyboardProvider value={{ dismissKeyboard: this.dismissKeyboard }}>\n <View onLayout={this._onLayout} ref={this.viewRef} style={style} {...props}>\n {children}\n </View>\n </KeyboardProvider>\n );\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["KeyboardCompatibleView.tsx"],"names":["KeyboardCompatibleView","props","_frame","_keyboardEvent","_subscriptions","_appStateSubscription","_initialFrameHeight","_onKeyboardChange","event","_updateBottomIfNecessary","_onLayout","nativeEvent","layout","height","setState","bottom","duration","easing","endCoordinates","_relativeKeyboardHeight","state","LayoutAnimation","configureNext","update","type","Types","_handleAppStateChange","nextAppState","appState","match","setKeyboardListeners","unsetKeyboardListeners","Platform","OS","Keyboard","addListener","push","isKeyboardOpen","filter","subscription","remove","dismissKeyboard","Promise","resolve","dismiss","AppState","currentState","viewRef","React","createRef","keyboardFrame","frame","keyboardY","screenY","keyboardVerticalOffset","relativeHeight","y","barHeights","Dimensions","get","Math","max","StatusBar","currentHeight","addEventListener","removeEventListener","behavior","children","contentContainerStyle","enabled","style","bottomHeight","heightStyle","flex","StyleSheet","compose","paddingBottom","Component","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n AppState,\n AppStateStatus,\n Dimensions,\n EmitterSubscription,\n Keyboard,\n KeyboardAvoidingViewProps,\n KeyboardEvent,\n KeyboardEventListener,\n LayoutAnimation,\n LayoutChangeEvent,\n LayoutRectangle,\n NativeEventSubscription,\n Platform,\n ScreenRect,\n StatusBar,\n StyleSheet,\n View,\n} from 'react-native';\n\nimport { KeyboardProvider } from '../../contexts/keyboardContext/KeyboardContext';\n\n/**\n * View that moves out of the way when the keyboard appears by automatically\n * adjusting its height, position, or bottom padding.\n *\n * Following piece of code has been mostly copied from KeyboardAvoidingView component, with few additional tweaks.\n */\nexport class KeyboardCompatibleView extends React.Component<\n KeyboardAvoidingViewProps,\n { appState: AppStateStatus; bottom: number; isKeyboardOpen: boolean }\n> {\n static defaultProps: Pick<\n KeyboardAvoidingViewProps,\n 'behavior' | 'enabled' | 'keyboardVerticalOffset'\n > = {\n behavior: Platform.OS === 'ios' ? 'padding' : 'position',\n enabled: true,\n keyboardVerticalOffset: Platform.OS === 'ios' ? 86.5 : -300, // default MessageInput height\n };\n\n _frame: LayoutRectangle | null = null;\n _keyboardEvent: KeyboardEvent | null = null;\n _subscriptions: EmitterSubscription[] = [];\n _appStateSubscription: NativeEventSubscription | null = null;\n viewRef: React.RefObject<View>;\n _initialFrameHeight = 0;\n constructor(props: KeyboardAvoidingViewProps) {\n super(props);\n this.state = {\n appState: AppState.currentState,\n bottom: 0,\n isKeyboardOpen: false,\n };\n this.viewRef = React.createRef();\n }\n\n _relativeKeyboardHeight(keyboardFrame: ScreenRect) {\n const frame = this._frame;\n if (!frame || !keyboardFrame) {\n return 0;\n }\n\n const keyboardY = keyboardFrame.screenY - (this.props.keyboardVerticalOffset ?? 0);\n const relativeHeight = frame.y + frame.height - keyboardY;\n\n /**\n * When the StatusBar is translucent there is an issue\n * where the relative keyboard height is returned incorrectly\n * instead of 0 when closed.\n */\n if (Platform.OS === 'android') {\n const barHeights = Dimensions.get('screen').height - Dimensions.get('window').height;\n if (relativeHeight <= Math.max(barHeights, StatusBar.currentHeight ?? 0)) {\n return 0;\n }\n }\n\n // Calculate the displacement needed for the view such that it\n // no longer overlaps with the keyboard\n return Math.max(relativeHeight, 0);\n }\n\n _onKeyboardChange: KeyboardEventListener = (event) => {\n this._keyboardEvent = event;\n this._updateBottomIfNecessary();\n };\n\n _onLayout: (event: LayoutChangeEvent) => void = (event) => {\n this._frame = event.nativeEvent.layout;\n if (!this._initialFrameHeight) {\n // save the initial frame height, before the keyboard is visible\n this._initialFrameHeight = this._frame.height;\n }\n\n this._updateBottomIfNecessary();\n };\n\n _updateBottomIfNecessary = () => {\n if (this._keyboardEvent === null) {\n this.setState({ bottom: 0 });\n return;\n }\n\n const { duration, easing, endCoordinates } = this._keyboardEvent;\n const height = this._relativeKeyboardHeight(endCoordinates);\n\n if (this.state.bottom === height) {\n return;\n }\n\n if (duration && easing) {\n LayoutAnimation.configureNext({\n // We have to pass the duration equal to minimal accepted duration defined here: RCTLayoutAnimation.m\n duration: duration > 10 ? duration : 10,\n update: {\n duration: duration > 10 ? duration : 10,\n type: LayoutAnimation.Types[easing] || 'keyboard',\n },\n });\n }\n this.setState({ bottom: height });\n };\n\n _handleAppStateChange = (nextAppState: AppStateStatus) => {\n if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {\n this.setKeyboardListeners();\n }\n\n if (nextAppState.match(/inactive|background/)) {\n this.unsetKeyboardListeners();\n }\n\n this.setState({ appState: nextAppState });\n };\n\n setKeyboardListeners = () => {\n if (Platform.OS === 'ios') {\n this._subscriptions = [\n Keyboard.addListener('keyboardWillChangeFrame', this._onKeyboardChange),\n ];\n } else {\n this._subscriptions = [\n Keyboard.addListener('keyboardDidHide', this._onKeyboardChange),\n Keyboard.addListener('keyboardDidShow', this._onKeyboardChange),\n ];\n }\n\n this._subscriptions.push(\n Keyboard.addListener('keyboardDidHide', () => {\n this.setState({ isKeyboardOpen: false });\n }),\n Keyboard.addListener('keyboardDidShow', () => {\n this.setState({ isKeyboardOpen: true });\n }),\n );\n };\n\n unsetKeyboardListeners = () => {\n this._subscriptions = this._subscriptions.filter((subscription) => {\n subscription.remove();\n return false;\n });\n };\n\n dismissKeyboard: () => Promise<void> | undefined = () => {\n if (!this.state.isKeyboardOpen) {\n return;\n }\n\n return new Promise((resolve) => {\n const subscription = Keyboard.addListener('keyboardDidHide', () => {\n resolve();\n subscription.remove();\n });\n\n Keyboard.dismiss();\n });\n };\n\n componentDidMount() {\n this._appStateSubscription = AppState.addEventListener('change', this._handleAppStateChange);\n this.setKeyboardListeners();\n }\n\n componentWillUnmount() {\n // Following if-else condition to avoid deprecated warning coming RN 0.65\n if (this._appStateSubscription?.remove) {\n this._appStateSubscription?.remove();\n } else {\n AppState.removeEventListener('change', this._handleAppStateChange);\n }\n this.unsetKeyboardListeners();\n }\n\n render() {\n const { behavior, children, contentContainerStyle, enabled, style, ...props } = this.props;\n const bottomHeight = enabled ? this.state.bottom : 0;\n switch (behavior) {\n case 'height':\n // eslint-disable-next-line no-case-declarations\n let heightStyle;\n if (this._frame !== null && this.state.bottom > 0) {\n // Note that we only apply a height change when there is keyboard present,\n // i.e. this.state.bottom is greater than 0. If we remove that condition,\n // this.frame.height will never go back to its original value.\n // When height changes, we need to disable flex.\n heightStyle = {\n flex: 0,\n height: this._initialFrameHeight - bottomHeight,\n };\n }\n return (\n <KeyboardProvider value={{ dismissKeyboard: this.dismissKeyboard }}>\n <View\n onLayout={this._onLayout}\n ref={this.viewRef}\n style={StyleSheet.compose(style, heightStyle)}\n {...props}\n >\n {children}\n </View>\n </KeyboardProvider>\n );\n\n case 'position':\n return (\n <KeyboardProvider value={{ dismissKeyboard: this.dismissKeyboard }}>\n <View onLayout={this._onLayout} ref={this.viewRef} style={style} {...props}>\n <View\n style={StyleSheet.compose(contentContainerStyle, {\n bottom: bottomHeight,\n })}\n >\n {children}\n </View>\n </View>\n </KeyboardProvider>\n );\n\n case 'padding':\n return (\n <KeyboardProvider value={{ dismissKeyboard: this.dismissKeyboard }}>\n <View\n onLayout={this._onLayout}\n ref={this.viewRef}\n style={StyleSheet.compose(style, { paddingBottom: bottomHeight })}\n {...props}\n >\n {children}\n </View>\n </KeyboardProvider>\n );\n\n default:\n return (\n <KeyboardProvider value={{ dismissKeyboard: this.dismissKeyboard }}>\n <View onLayout={this._onLayout} ref={this.viewRef} style={style} {...props}>\n {children}\n </View>\n </KeyboardProvider>\n );\n }\n }\n}\n"]}
@@ -40,6 +40,7 @@ var MessageSimpleWithContext = function MessageSimpleWithContext(props) {
40
40
 
41
41
  var alignment = props.alignment,
42
42
  channel = props.channel,
43
+ enableMessageGroupingByUser = props.enableMessageGroupingByUser,
43
44
  groupStyles = props.groupStyles,
44
45
  hasReactions = props.hasReactions,
45
46
  message = props.message,
@@ -61,21 +62,21 @@ var MessageSimpleWithContext = function MessageSimpleWithContext(props) {
61
62
  return _react["default"].createElement(_reactNative.View, {
62
63
  style: [styles.container, {
63
64
  justifyContent: alignment === 'left' ? 'flex-start' : 'flex-end',
64
- marginBottom: hasMarginBottom ? isVeryLastMessage ? 30 : 8 : 0,
65
+ marginBottom: hasMarginBottom ? isVeryLastMessage && enableMessageGroupingByUser ? 30 : 8 : 0,
65
66
  marginTop: showReactions ? 2 : 0
66
67
  }, container],
67
68
  testID: "message-simple-wrapper",
68
69
  __self: _this,
69
70
  __source: {
70
71
  fileName: _jsxFileName,
71
- lineNumber: 87,
72
+ lineNumber: 88,
72
73
  columnNumber: 5
73
74
  }
74
75
  }, alignment === 'left' && _react["default"].createElement(MessageAvatar, {
75
76
  __self: _this,
76
77
  __source: {
77
78
  fileName: _jsxFileName,
78
- lineNumber: 99,
79
+ lineNumber: 104,
79
80
  columnNumber: 32
80
81
  }
81
82
  }), _react["default"].createElement(MessageContent, {
@@ -83,7 +84,7 @@ var MessageSimpleWithContext = function MessageSimpleWithContext(props) {
83
84
  __self: _this,
84
85
  __source: {
85
86
  fileName: _jsxFileName,
86
- lineNumber: 100,
87
+ lineNumber: 105,
87
88
  columnNumber: 7
88
89
  }
89
90
  }), showReactions && _react["default"].createElement(ReactionList, {
@@ -91,7 +92,7 @@ var MessageSimpleWithContext = function MessageSimpleWithContext(props) {
91
92
  __self: _this,
92
93
  __source: {
93
94
  fileName: _jsxFileName,
94
- lineNumber: 101,
95
+ lineNumber: 106,
95
96
  columnNumber: 25
96
97
  }
97
98
  }));
@@ -147,6 +148,7 @@ var MessageSimple = function MessageSimple(props) {
147
148
  message = _useMessageContext.message;
148
149
 
149
150
  var _useMessagesContext = (0, _MessagesContext.useMessagesContext)(),
151
+ enableMessageGroupingByUser = _useMessagesContext.enableMessageGroupingByUser,
150
152
  MessageAvatar = _useMessagesContext.MessageAvatar,
151
153
  MessageContent = _useMessagesContext.MessageContent,
152
154
  ReactionList = _useMessagesContext.ReactionList;
@@ -154,6 +156,7 @@ var MessageSimple = function MessageSimple(props) {
154
156
  return _react["default"].createElement(MemoizedMessageSimple, (0, _extends2["default"])({
155
157
  alignment: alignment,
156
158
  channel: channel,
159
+ enableMessageGroupingByUser: enableMessageGroupingByUser,
157
160
  groupStyles: groupStyles,
158
161
  hasReactions: hasReactions,
159
162
  message: message,
@@ -164,7 +167,7 @@ var MessageSimple = function MessageSimple(props) {
164
167
  __self: _this,
165
168
  __source: {
166
169
  fileName: _jsxFileName,
167
- lineNumber: 218,
170
+ lineNumber: 223,
168
171
  columnNumber: 5
169
172
  }
170
173
  }));