stream-chat-react-native-core 4.0.0-beta.8 → 4.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +24 -25
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +23 -28
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +8 -10
- package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +24 -25
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageOverlay.js +23 -28
- package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayReactionList.js +8 -10
- package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts +0 -1
- package/package.json +1 -1
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +8 -7
- package/src/components/MessageOverlay/MessageOverlay.tsx +0 -2
- package/src/components/MessageOverlay/OverlayReactionList.tsx +0 -3
- package/src/version.json +1 -1
|
@@ -219,7 +219,6 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
|
|
|
219
219
|
handleReaction = props.handleReaction,
|
|
220
220
|
messageLayout = props.messageLayout,
|
|
221
221
|
ownReactionTypes = props.ownReactionTypes,
|
|
222
|
-
setReactionListHeight = props.setReactionListHeight,
|
|
223
222
|
showScreen = props.showScreen,
|
|
224
223
|
setOverlay = props.setOverlay,
|
|
225
224
|
_props$supportedReact = props.supportedReactions,
|
|
@@ -287,7 +286,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
|
|
|
287
286
|
__self: _this,
|
|
288
287
|
__source: {
|
|
289
288
|
fileName: _jsxFileName,
|
|
290
|
-
lineNumber:
|
|
289
|
+
lineNumber: 338,
|
|
291
290
|
columnNumber: 5
|
|
292
291
|
}
|
|
293
292
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -299,14 +298,14 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
|
|
|
299
298
|
__self: _this,
|
|
300
299
|
__source: {
|
|
301
300
|
fileName: _jsxFileName,
|
|
302
|
-
lineNumber:
|
|
301
|
+
lineNumber: 339,
|
|
303
302
|
columnNumber: 7
|
|
304
303
|
}
|
|
305
304
|
}, _react["default"].createElement(_reactNativeSvg["default"], {
|
|
306
305
|
__self: _this,
|
|
307
306
|
__source: {
|
|
308
307
|
fileName: _jsxFileName,
|
|
309
|
-
lineNumber:
|
|
308
|
+
lineNumber: 345,
|
|
310
309
|
columnNumber: 9
|
|
311
310
|
}
|
|
312
311
|
}, _react["default"].createElement(AnimatedCircle, {
|
|
@@ -315,7 +314,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
|
|
|
315
314
|
__self: _this,
|
|
316
315
|
__source: {
|
|
317
316
|
fileName: _jsxFileName,
|
|
318
|
-
lineNumber:
|
|
317
|
+
lineNumber: 346,
|
|
319
318
|
columnNumber: 11
|
|
320
319
|
}
|
|
321
320
|
}), _react["default"].createElement(AnimatedCircle, {
|
|
@@ -324,7 +323,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
|
|
|
324
323
|
__self: _this,
|
|
325
324
|
__source: {
|
|
326
325
|
fileName: _jsxFileName,
|
|
327
|
-
lineNumber:
|
|
326
|
+
lineNumber: 347,
|
|
328
327
|
columnNumber: 11
|
|
329
328
|
}
|
|
330
329
|
})), _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -337,7 +336,6 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
|
|
|
337
336
|
width: layoutWidth
|
|
338
337
|
};
|
|
339
338
|
reactionListHeight.value = height;
|
|
340
|
-
setReactionListHeight(height);
|
|
341
339
|
},
|
|
342
340
|
style: [styles.reactionList, {
|
|
343
341
|
backgroundColor: white_snow
|
|
@@ -345,7 +343,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
|
|
|
345
343
|
__self: _this,
|
|
346
344
|
__source: {
|
|
347
345
|
fileName: _jsxFileName,
|
|
348
|
-
lineNumber:
|
|
346
|
+
lineNumber: 349,
|
|
349
347
|
columnNumber: 9
|
|
350
348
|
}
|
|
351
349
|
}, supportedReactions == null ? void 0 : supportedReactions.map(function (_ref3, index) {
|
|
@@ -364,7 +362,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
|
|
|
364
362
|
__self: _this,
|
|
365
363
|
__source: {
|
|
366
364
|
fileName: _jsxFileName,
|
|
367
|
-
lineNumber:
|
|
365
|
+
lineNumber: 366,
|
|
368
366
|
columnNumber: 13
|
|
369
367
|
}
|
|
370
368
|
});
|
|
@@ -402,7 +400,7 @@ var OverlayReactionList = function OverlayReactionList(props) {
|
|
|
402
400
|
__self: _this,
|
|
403
401
|
__source: {
|
|
404
402
|
fileName: _jsxFileName,
|
|
405
|
-
lineNumber:
|
|
403
|
+
lineNumber: 431,
|
|
406
404
|
columnNumber: 5
|
|
407
405
|
}
|
|
408
406
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["OverlayReactionList.tsx"],"names":["AnimatedCircle","Animated","createAnimatedComponent","Circle","styles","StyleSheet","create","notLastReaction","marginRight","reactionList","alignItems","borderRadius","flexDirection","justifyContent","paddingHorizontal","paddingVertical","position","selectedIcon","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","ReactionButton","props","handleReaction","index","numberOfReactions","ownReactionTypes","setOverlay","showScreen","theme","colors","accent_blue","grey","overlay","reactionsList","reaction","reactionSize","selected","includes","animationScale","hasShown","scale","selectedOpacity","onTap","onEnd","triggerHaptic","value","duration","onFinish","onStart","result","iconStyle","transform","selectedStyle","opacity","bottom","Number","paddingBottom","left","paddingLeft","right","paddingRight","top","paddingTop","OverlayReactionListWithContext","alignment","fill","messageLayout","setReactionListHeight","supportedReactions","white_snow","screenPadding","padding","radius","reactionListHeight","reactionBubbleWidth","reactionListLayout","height","width","animatedStyle","insideLeftBound","x","insideRightBound","y","animatedBigCircleProps","cx","cy","r","animateSmallCircleProps","showScreenStyle","translateY","translateX","length","absoluteFill","layout","nativeEvent","layoutWidth","backgroundColor","map","areEqual","prevProps","nextProps","prevAlignment","prevOwnReactionTypes","nextAlignment","nextOwnReactionTypes","alignmentEqual","ownReactionTypesEqual","MemoizedOverlayReactionList","React","memo","OverlayReactionList","data","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, useWindowDimensions, View, ViewStyle } from 'react-native';\nimport { TapGestureHandler, TapGestureHandlerStateChangeEvent } from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedProps,\n useAnimatedReaction,\n useAnimatedStyle,\n useSharedValue,\n withDelay,\n withSequence,\n withTiming,\n} from 'react-native-reanimated';\nimport Svg, { Circle, CircleProps, FillProps } from 'react-native-svg';\n\nimport {\n MessageOverlayData,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n IconProps,\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\n\nimport { triggerHaptic } from '../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { ReactionData } from '../../utils/utils';\n\nconst AnimatedCircle = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(Circle)\n : Circle;\n\nconst styles = StyleSheet.create({\n notLastReaction: {\n marginRight: 16,\n },\n reactionList: {\n alignItems: 'center',\n borderRadius: 24,\n flexDirection: 'row',\n justifyContent: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n position: 'absolute',\n },\n selectedIcon: {\n position: 'absolute',\n },\n});\n\nconst reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\ntype ReactionButtonProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n OverlayReactionListPropsWithContext<StreamChatGenerics>,\n 'ownReactionTypes' | 'handleReaction' | 'setOverlay'\n> & {\n Icon: React.FC<IconProps>;\n index: number;\n numberOfReactions: number;\n showScreen: Animated.SharedValue<number>;\n type: string;\n};\n\nexport const ReactionButton = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionButtonProps<StreamChatGenerics>,\n) => {\n const {\n handleReaction,\n Icon,\n index,\n numberOfReactions,\n ownReactionTypes,\n setOverlay,\n showScreen,\n type,\n } = props;\n const {\n theme: {\n colors: { accent_blue, grey },\n overlay: {\n reactionsList: { reaction, reactionSize },\n },\n },\n } = useTheme();\n const selected = ownReactionTypes.includes(type);\n const animationScale = useSharedValue(0);\n const hasShown = useSharedValue(0);\n const scale = useSharedValue(1);\n const selectedOpacity = useSharedValue(selected ? 1 : 0);\n\n const onTap = useAnimatedGestureHandler<TapGestureHandlerStateChangeEvent>(\n {\n onEnd: () => {\n runOnJS(triggerHaptic)('impactLight');\n selectedOpacity.value = withTiming(selected ? 0 : 1, { duration: 250 }, () => {\n if (handleReaction) {\n runOnJS(handleReaction)(type);\n }\n runOnJS(setOverlay)('none');\n });\n },\n onFinish: () => {\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n },\n onStart: () => {\n cancelAnimation(scale);\n scale.value = withTiming(1.5, { duration: 100 });\n },\n },\n [handleReaction, selected, setOverlay, type],\n );\n\n useAnimatedReaction(\n () => {\n if (showScreen.value > 0.8 && hasShown.value === 0) {\n return 1;\n }\n return 0;\n },\n (result) => {\n if (hasShown.value === 0 && result !== 0) {\n hasShown.value = 1;\n animationScale.value = withSequence(\n withDelay(60 * (numberOfReactions - (index + 1)), withTiming(0.1, { duration: 50 })),\n withTiming(1.5, { duration: 250 }),\n withTiming(1, { duration: 250 }),\n );\n }\n },\n [index, numberOfReactions],\n );\n\n const iconStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n scale: animationScale.value,\n },\n {\n scale: scale.value,\n },\n ],\n }),\n [],\n );\n\n const selectedStyle = useAnimatedStyle<ViewStyle>(() => ({\n opacity: selectedOpacity.value,\n }));\n\n return (\n <TapGestureHandler\n hitSlop={{\n bottom:\n Number(reaction.paddingVertical || 0) ||\n Number(reaction.paddingBottom || 0) ||\n styles.reactionList.paddingVertical,\n left:\n (Number(reaction.paddingHorizontal || 0) ||\n Number(reaction.paddingLeft || 0) ||\n styles.notLastReaction.marginRight) / 2,\n right:\n (Number(reaction.paddingHorizontal || 0) ||\n Number(reaction.paddingRight || 0) ||\n styles.notLastReaction.marginRight) / 2,\n top:\n Number(reaction.paddingVertical || 0) ||\n Number(reaction.paddingTop || 0) ||\n styles.reactionList.paddingVertical,\n }}\n maxDurationMs={3000}\n onHandlerStateChange={onTap}\n >\n <Animated.View\n style={[index !== numberOfReactions - 1 ? styles.notLastReaction : {}, reaction, iconStyle]}\n >\n <Icon height={reactionSize} pathFill={grey} width={reactionSize} />\n <Animated.View style={[styles.selectedIcon, selectedStyle]}>\n <Icon height={reactionSize} pathFill={accent_blue} width={reactionSize} />\n </Animated.View>\n </Animated.View>\n </TapGestureHandler>\n );\n};\n\nexport type OverlayReactionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageOverlayData<StreamChatGenerics>,\n 'alignment' | 'handleReaction' | 'messagesContext'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'supportedReactions'> &\n Pick<OverlayContextValue, 'setOverlay'> & {\n messageLayout: Animated.SharedValue<{\n x: number;\n y: number;\n }>;\n ownReactionTypes: string[];\n setReactionListHeight: React.Dispatch<React.SetStateAction<number>>;\n showScreen: Animated.SharedValue<number>;\n fill?: FillProps['fill'];\n };\n\nconst OverlayReactionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: OverlayReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n fill,\n handleReaction,\n messageLayout,\n ownReactionTypes,\n setReactionListHeight,\n showScreen,\n setOverlay,\n supportedReactions = reactionData,\n } = props;\n\n const {\n theme: {\n colors: { white_snow },\n overlay: {\n padding: screenPadding,\n reactionsList: { radius, reactionList },\n },\n },\n } = useTheme();\n\n const reactionListHeight = useSharedValue(0);\n const reactionBubbleWidth = useSharedValue(0);\n const reactionListLayout = useSharedValue({\n height: 0,\n width: 0,\n });\n\n const { width } = useWindowDimensions();\n\n const animatedStyle = useAnimatedStyle<ViewStyle>(() => {\n const borderRadius = reactionList.borderRadius || styles.reactionList.borderRadius;\n const insideLeftBound =\n messageLayout.value.x - reactionListLayout.value.width + borderRadius > screenPadding;\n const insideRightBound = messageLayout.value.x + borderRadius < width - screenPadding;\n const left = !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding - reactionListLayout.value.width\n : messageLayout.value.x - reactionListLayout.value.width + borderRadius;\n const top = messageLayout.value.y - reactionListLayout.value.height - radius * 2;\n\n return {\n left,\n top,\n };\n });\n\n const animatedBigCircleProps = useAnimatedProps<CircleProps>(() => ({\n cx: messageLayout.value.x - radius * 3,\n cy: messageLayout.value.y - radius * 3,\n r: radius * 2,\n }));\n\n const animateSmallCircleProps = useAnimatedProps<CircleProps>(() => ({\n cx: messageLayout.value.x - radius,\n cy: messageLayout.value.y,\n r: radius,\n }));\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [-reactionListHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [\n alignment === 'left' ? -reactionBubbleWidth.value / 2 : reactionBubbleWidth.value / 2,\n 0,\n ],\n ),\n },\n {\n scale: interpolate(showScreen.value, [0, 0.8, 1], [0, 0, 1]),\n },\n ],\n }),\n [alignment],\n );\n\n const numberOfReactions = supportedReactions.length;\n\n return (\n <View style={StyleSheet.absoluteFill} testID='overlay-reaction-list'>\n <Animated.View\n onLayout={({ nativeEvent: { layout } }) => {\n reactionBubbleWidth.value = layout.width;\n }}\n style={showScreenStyle}\n >\n <Svg>\n <AnimatedCircle animatedProps={animatedBigCircleProps} fill={fill || white_snow} />\n <AnimatedCircle animatedProps={animateSmallCircleProps} fill={fill || white_snow} />\n </Svg>\n <Animated.View\n onLayout={({\n nativeEvent: {\n layout: { height, width: layoutWidth },\n },\n }) => {\n reactionListLayout.value = { height, width: layoutWidth };\n reactionListHeight.value = height;\n setReactionListHeight(height);\n }}\n style={[\n styles.reactionList,\n { backgroundColor: white_snow },\n animatedStyle,\n reactionList,\n ]}\n >\n {supportedReactions?.map(({ Icon, type }, index) => (\n <ReactionButton<StreamChatGenerics>\n handleReaction={handleReaction}\n Icon={Icon}\n index={index}\n key={`${type}_${index}`}\n numberOfReactions={numberOfReactions}\n ownReactionTypes={ownReactionTypes}\n setOverlay={setOverlay}\n showScreen={showScreen}\n type={type}\n />\n ))}\n </Animated.View>\n </Animated.View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: OverlayReactionListPropsWithContext<StreamChatGenerics>,\n nextProps: OverlayReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const { alignment: prevAlignment, ownReactionTypes: prevOwnReactionTypes } = prevProps;\n const { alignment: nextAlignment, ownReactionTypes: nextOwnReactionTypes } = nextProps;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const ownReactionTypesEqual = prevOwnReactionTypes.length === nextOwnReactionTypes.length;\n if (!ownReactionTypesEqual) return false;\n\n return true;\n};\n\nconst MemoizedOverlayReactionList = React.memo(\n OverlayReactionListWithContext,\n areEqual,\n) as typeof OverlayReactionListWithContext;\n\nexport type OverlayReactionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Omit<\n OverlayReactionListPropsWithContext<StreamChatGenerics>,\n 'setOverlay' | 'supportedReactions'\n> &\n Partial<\n Pick<\n OverlayReactionListPropsWithContext<StreamChatGenerics>,\n 'setOverlay' | 'supportedReactions'\n >\n >;\n\n/**\n * OverlayReactionList - A high level component which implements all the logic required for a message overlay reaction list\n */\nexport const OverlayReactionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: OverlayReactionListProps<StreamChatGenerics>,\n) => {\n const { data } = useMessageOverlayContext<StreamChatGenerics>();\n const { supportedReactions } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n\n return (\n <MemoizedOverlayReactionList\n {...(data || {})}\n {...{ setOverlay, supportedReactions }}\n {...props}\n />\n );\n};\n\nOverlayReactionList.displayName = 'OverlayReactionList{overlay{reactionList}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["OverlayReactionList.tsx"],"names":["AnimatedCircle","Animated","createAnimatedComponent","Circle","styles","StyleSheet","create","notLastReaction","marginRight","reactionList","alignItems","borderRadius","flexDirection","justifyContent","paddingHorizontal","paddingVertical","position","selectedIcon","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","ReactionButton","props","handleReaction","index","numberOfReactions","ownReactionTypes","setOverlay","showScreen","theme","colors","accent_blue","grey","overlay","reactionsList","reaction","reactionSize","selected","includes","animationScale","hasShown","scale","selectedOpacity","onTap","onEnd","triggerHaptic","value","duration","onFinish","onStart","result","iconStyle","transform","selectedStyle","opacity","bottom","Number","paddingBottom","left","paddingLeft","right","paddingRight","top","paddingTop","OverlayReactionListWithContext","alignment","fill","messageLayout","supportedReactions","white_snow","screenPadding","padding","radius","reactionListHeight","reactionBubbleWidth","reactionListLayout","height","width","animatedStyle","insideLeftBound","x","insideRightBound","y","animatedBigCircleProps","cx","cy","r","animateSmallCircleProps","showScreenStyle","translateY","translateX","length","absoluteFill","layout","nativeEvent","layoutWidth","backgroundColor","map","areEqual","prevProps","nextProps","prevAlignment","prevOwnReactionTypes","nextAlignment","nextOwnReactionTypes","alignmentEqual","ownReactionTypesEqual","MemoizedOverlayReactionList","React","memo","OverlayReactionList","data","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, useWindowDimensions, View, ViewStyle } from 'react-native';\nimport { TapGestureHandler, TapGestureHandlerStateChangeEvent } from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedProps,\n useAnimatedReaction,\n useAnimatedStyle,\n useSharedValue,\n withDelay,\n withSequence,\n withTiming,\n} from 'react-native-reanimated';\nimport Svg, { Circle, CircleProps, FillProps } from 'react-native-svg';\n\nimport {\n MessageOverlayData,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n IconProps,\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\n\nimport { triggerHaptic } from '../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { ReactionData } from '../../utils/utils';\n\nconst AnimatedCircle = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(Circle)\n : Circle;\n\nconst styles = StyleSheet.create({\n notLastReaction: {\n marginRight: 16,\n },\n reactionList: {\n alignItems: 'center',\n borderRadius: 24,\n flexDirection: 'row',\n justifyContent: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n position: 'absolute',\n },\n selectedIcon: {\n position: 'absolute',\n },\n});\n\nconst reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\ntype ReactionButtonProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n OverlayReactionListPropsWithContext<StreamChatGenerics>,\n 'ownReactionTypes' | 'handleReaction' | 'setOverlay'\n> & {\n Icon: React.FC<IconProps>;\n index: number;\n numberOfReactions: number;\n showScreen: Animated.SharedValue<number>;\n type: string;\n};\n\nexport const ReactionButton = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionButtonProps<StreamChatGenerics>,\n) => {\n const {\n handleReaction,\n Icon,\n index,\n numberOfReactions,\n ownReactionTypes,\n setOverlay,\n showScreen,\n type,\n } = props;\n const {\n theme: {\n colors: { accent_blue, grey },\n overlay: {\n reactionsList: { reaction, reactionSize },\n },\n },\n } = useTheme();\n const selected = ownReactionTypes.includes(type);\n const animationScale = useSharedValue(0);\n const hasShown = useSharedValue(0);\n const scale = useSharedValue(1);\n const selectedOpacity = useSharedValue(selected ? 1 : 0);\n\n const onTap = useAnimatedGestureHandler<TapGestureHandlerStateChangeEvent>(\n {\n onEnd: () => {\n runOnJS(triggerHaptic)('impactLight');\n selectedOpacity.value = withTiming(selected ? 0 : 1, { duration: 250 }, () => {\n if (handleReaction) {\n runOnJS(handleReaction)(type);\n }\n runOnJS(setOverlay)('none');\n });\n },\n onFinish: () => {\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n },\n onStart: () => {\n cancelAnimation(scale);\n scale.value = withTiming(1.5, { duration: 100 });\n },\n },\n [handleReaction, selected, setOverlay, type],\n );\n\n useAnimatedReaction(\n () => {\n if (showScreen.value > 0.8 && hasShown.value === 0) {\n return 1;\n }\n return 0;\n },\n (result) => {\n if (hasShown.value === 0 && result !== 0) {\n hasShown.value = 1;\n animationScale.value = withSequence(\n withDelay(60 * (numberOfReactions - (index + 1)), withTiming(0.1, { duration: 50 })),\n withTiming(1.5, { duration: 250 }),\n withTiming(1, { duration: 250 }),\n );\n }\n },\n [index, numberOfReactions],\n );\n\n const iconStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n scale: animationScale.value,\n },\n {\n scale: scale.value,\n },\n ],\n }),\n [],\n );\n\n const selectedStyle = useAnimatedStyle<ViewStyle>(() => ({\n opacity: selectedOpacity.value,\n }));\n\n return (\n <TapGestureHandler\n hitSlop={{\n bottom:\n Number(reaction.paddingVertical || 0) ||\n Number(reaction.paddingBottom || 0) ||\n styles.reactionList.paddingVertical,\n left:\n (Number(reaction.paddingHorizontal || 0) ||\n Number(reaction.paddingLeft || 0) ||\n styles.notLastReaction.marginRight) / 2,\n right:\n (Number(reaction.paddingHorizontal || 0) ||\n Number(reaction.paddingRight || 0) ||\n styles.notLastReaction.marginRight) / 2,\n top:\n Number(reaction.paddingVertical || 0) ||\n Number(reaction.paddingTop || 0) ||\n styles.reactionList.paddingVertical,\n }}\n maxDurationMs={3000}\n onHandlerStateChange={onTap}\n >\n <Animated.View\n style={[index !== numberOfReactions - 1 ? styles.notLastReaction : {}, reaction, iconStyle]}\n >\n <Icon height={reactionSize} pathFill={grey} width={reactionSize} />\n <Animated.View style={[styles.selectedIcon, selectedStyle]}>\n <Icon height={reactionSize} pathFill={accent_blue} width={reactionSize} />\n </Animated.View>\n </Animated.View>\n </TapGestureHandler>\n );\n};\n\nexport type OverlayReactionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageOverlayData<StreamChatGenerics>,\n 'alignment' | 'handleReaction' | 'messagesContext'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'supportedReactions'> &\n Pick<OverlayContextValue, 'setOverlay'> & {\n messageLayout: Animated.SharedValue<{\n x: number;\n y: number;\n }>;\n ownReactionTypes: string[];\n showScreen: Animated.SharedValue<number>;\n fill?: FillProps['fill'];\n };\n\nconst OverlayReactionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: OverlayReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n fill,\n handleReaction,\n messageLayout,\n ownReactionTypes,\n showScreen,\n setOverlay,\n supportedReactions = reactionData,\n } = props;\n\n const {\n theme: {\n colors: { white_snow },\n overlay: {\n padding: screenPadding,\n reactionsList: { radius, reactionList },\n },\n },\n } = useTheme();\n\n const reactionListHeight = useSharedValue(0);\n const reactionBubbleWidth = useSharedValue(0);\n const reactionListLayout = useSharedValue({\n height: 0,\n width: 0,\n });\n\n const { width } = useWindowDimensions();\n\n const animatedStyle = useAnimatedStyle<ViewStyle>(() => {\n const borderRadius = reactionList.borderRadius || styles.reactionList.borderRadius;\n const insideLeftBound =\n messageLayout.value.x - reactionListLayout.value.width + borderRadius > screenPadding;\n const insideRightBound = messageLayout.value.x + borderRadius < width - screenPadding;\n const left = !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding - reactionListLayout.value.width\n : messageLayout.value.x - reactionListLayout.value.width + borderRadius;\n const top = messageLayout.value.y - reactionListLayout.value.height - radius * 2;\n\n return {\n left,\n top,\n };\n });\n\n const animatedBigCircleProps = useAnimatedProps<CircleProps>(() => ({\n cx: messageLayout.value.x - radius * 3,\n cy: messageLayout.value.y - radius * 3,\n r: radius * 2,\n }));\n\n const animateSmallCircleProps = useAnimatedProps<CircleProps>(() => ({\n cx: messageLayout.value.x - radius,\n cy: messageLayout.value.y,\n r: radius,\n }));\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [-reactionListHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [\n alignment === 'left' ? -reactionBubbleWidth.value / 2 : reactionBubbleWidth.value / 2,\n 0,\n ],\n ),\n },\n {\n scale: interpolate(showScreen.value, [0, 0.8, 1], [0, 0, 1]),\n },\n ],\n }),\n [alignment],\n );\n\n const numberOfReactions = supportedReactions.length;\n\n return (\n <View style={StyleSheet.absoluteFill} testID='overlay-reaction-list'>\n <Animated.View\n onLayout={({ nativeEvent: { layout } }) => {\n reactionBubbleWidth.value = layout.width;\n }}\n style={showScreenStyle}\n >\n <Svg>\n <AnimatedCircle animatedProps={animatedBigCircleProps} fill={fill || white_snow} />\n <AnimatedCircle animatedProps={animateSmallCircleProps} fill={fill || white_snow} />\n </Svg>\n <Animated.View\n onLayout={({\n nativeEvent: {\n layout: { height, width: layoutWidth },\n },\n }) => {\n reactionListLayout.value = { height, width: layoutWidth };\n reactionListHeight.value = height;\n }}\n style={[\n styles.reactionList,\n { backgroundColor: white_snow },\n animatedStyle,\n reactionList,\n ]}\n >\n {supportedReactions?.map(({ Icon, type }, index) => (\n <ReactionButton<StreamChatGenerics>\n handleReaction={handleReaction}\n Icon={Icon}\n index={index}\n key={`${type}_${index}`}\n numberOfReactions={numberOfReactions}\n ownReactionTypes={ownReactionTypes}\n setOverlay={setOverlay}\n showScreen={showScreen}\n type={type}\n />\n ))}\n </Animated.View>\n </Animated.View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: OverlayReactionListPropsWithContext<StreamChatGenerics>,\n nextProps: OverlayReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const { alignment: prevAlignment, ownReactionTypes: prevOwnReactionTypes } = prevProps;\n const { alignment: nextAlignment, ownReactionTypes: nextOwnReactionTypes } = nextProps;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const ownReactionTypesEqual = prevOwnReactionTypes.length === nextOwnReactionTypes.length;\n if (!ownReactionTypesEqual) return false;\n\n return true;\n};\n\nconst MemoizedOverlayReactionList = React.memo(\n OverlayReactionListWithContext,\n areEqual,\n) as typeof OverlayReactionListWithContext;\n\nexport type OverlayReactionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Omit<\n OverlayReactionListPropsWithContext<StreamChatGenerics>,\n 'setOverlay' | 'supportedReactions'\n> &\n Partial<\n Pick<\n OverlayReactionListPropsWithContext<StreamChatGenerics>,\n 'setOverlay' | 'supportedReactions'\n >\n >;\n\n/**\n * OverlayReactionList - A high level component which implements all the logic required for a message overlay reaction list\n */\nexport const OverlayReactionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: OverlayReactionListProps<StreamChatGenerics>,\n) => {\n const { data } = useMessageOverlayContext<StreamChatGenerics>();\n const { supportedReactions } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n\n return (\n <MemoizedOverlayReactionList\n {...(data || {})}\n {...{ setOverlay, supportedReactions }}\n {...props}\n />\n );\n};\n\nOverlayReactionList.displayName = 'OverlayReactionList{overlay{reactionList}}';\n"]}
|
|
@@ -87,7 +87,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
87
87
|
var queryType,
|
|
88
88
|
retryCount,
|
|
89
89
|
hasUpdatedData,
|
|
90
|
-
|
|
90
|
+
isQueryStale,
|
|
91
91
|
currentRequestId,
|
|
92
92
|
newOptions,
|
|
93
93
|
channelQueryResponse,
|
|
@@ -108,11 +108,9 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
108
108
|
return _context.abrupt("return");
|
|
109
109
|
|
|
110
110
|
case 4:
|
|
111
|
-
hasUpdatedData =
|
|
112
|
-
return [JSON.stringify(filtersRef.current) !== JSON.stringify(filters), JSON.stringify(sortRef.current) !== JSON.stringify(sort), activeRequestId.current !== currentRequestId].some(Boolean);
|
|
113
|
-
};
|
|
111
|
+
hasUpdatedData = queryType === 'loadChannels' || [JSON.stringify(filtersRef.current) !== JSON.stringify(filters), JSON.stringify(sortRef.current) !== JSON.stringify(sort)].some(Boolean);
|
|
114
112
|
|
|
115
|
-
|
|
113
|
+
isQueryStale = function isQueryStale() {
|
|
116
114
|
return !isMountedRef || activeRequestId.current !== currentRequestId;
|
|
117
115
|
};
|
|
118
116
|
|
|
@@ -130,6 +128,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
130
128
|
|
|
131
129
|
case 9:
|
|
132
130
|
filtersRef.current = filters;
|
|
131
|
+
sortRef.current = sort;
|
|
133
132
|
isQueryingRef.current = true;
|
|
134
133
|
setError(undefined);
|
|
135
134
|
activeRequestId.current++;
|
|
@@ -139,23 +138,23 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
139
138
|
limit: (_options$limit = options == null ? void 0 : options.limit) != null ? _options$limit : _utils.MAX_QUERY_CHANNELS_LIMIT,
|
|
140
139
|
offset: queryType === 'loadChannels' ? channels.length : 0
|
|
141
140
|
}, options);
|
|
142
|
-
_context.prev =
|
|
143
|
-
_context.next =
|
|
141
|
+
_context.prev = 17;
|
|
142
|
+
_context.next = 20;
|
|
144
143
|
return client.queryChannels(filters, sort, newOptions, {
|
|
145
144
|
skipInitialization: activeChannels.current
|
|
146
145
|
});
|
|
147
146
|
|
|
148
|
-
case
|
|
147
|
+
case 20:
|
|
149
148
|
channelQueryResponse = _context.sent;
|
|
150
149
|
|
|
151
|
-
if (!(
|
|
152
|
-
_context.next =
|
|
150
|
+
if (!(isQueryStale() || !isMountedRef.current)) {
|
|
151
|
+
_context.next = 23;
|
|
153
152
|
break;
|
|
154
153
|
}
|
|
155
154
|
|
|
156
155
|
return _context.abrupt("return");
|
|
157
156
|
|
|
158
|
-
case
|
|
157
|
+
case 23:
|
|
159
158
|
channelQueryResponse.forEach(function (channel) {
|
|
160
159
|
return channel.state.setIsUpToDate(true);
|
|
161
160
|
});
|
|
@@ -164,27 +163,27 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
164
163
|
setHasNextPage(channelQueryResponse.length >= newOptions.limit);
|
|
165
164
|
setError(undefined);
|
|
166
165
|
isQueryingRef.current = false;
|
|
167
|
-
_context.next =
|
|
166
|
+
_context.next = 44;
|
|
168
167
|
break;
|
|
169
168
|
|
|
170
|
-
case
|
|
171
|
-
_context.prev =
|
|
172
|
-
_context.t0 = _context["catch"](
|
|
169
|
+
case 31:
|
|
170
|
+
_context.prev = 31;
|
|
171
|
+
_context.t0 = _context["catch"](17);
|
|
173
172
|
isQueryingRef.current = false;
|
|
174
|
-
_context.next =
|
|
173
|
+
_context.next = 36;
|
|
175
174
|
return waitSeconds(2);
|
|
176
175
|
|
|
177
|
-
case
|
|
178
|
-
if (!
|
|
179
|
-
_context.next =
|
|
176
|
+
case 36:
|
|
177
|
+
if (!isQueryStale()) {
|
|
178
|
+
_context.next = 38;
|
|
180
179
|
break;
|
|
181
180
|
}
|
|
182
181
|
|
|
183
182
|
return _context.abrupt("return");
|
|
184
183
|
|
|
185
|
-
case
|
|
184
|
+
case 38:
|
|
186
185
|
if (!(retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current)) {
|
|
187
|
-
_context.next =
|
|
186
|
+
_context.next = 43;
|
|
188
187
|
break;
|
|
189
188
|
}
|
|
190
189
|
|
|
@@ -193,18 +192,18 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
193
192
|
setError(new Error("Maximum number of retries reached in queryChannels. Last error message is: " + _context.t0));
|
|
194
193
|
return _context.abrupt("return");
|
|
195
194
|
|
|
196
|
-
case
|
|
195
|
+
case 43:
|
|
197
196
|
return _context.abrupt("return", queryChannels(queryType, retryCount + 1));
|
|
198
197
|
|
|
199
|
-
case
|
|
198
|
+
case 44:
|
|
200
199
|
setActiveQueryType(null);
|
|
201
200
|
|
|
202
|
-
case
|
|
201
|
+
case 45:
|
|
203
202
|
case "end":
|
|
204
203
|
return _context.stop();
|
|
205
204
|
}
|
|
206
205
|
}
|
|
207
|
-
}, _callee, null, [[
|
|
206
|
+
}, _callee, null, [[17, 31]]);
|
|
208
207
|
}));
|
|
209
208
|
|
|
210
209
|
return function queryChannels() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","filters","options","sort","client","channels","setChannels","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","currentRequestId","some","Boolean","queryIsStale","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'reload' | 'refresh' | 'loadChannels';\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>([]);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>();\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof filters | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData = () =>\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n activeRequestId.current !== currentRequestId,\n ].some(Boolean); // will return true if any element is truthy\n\n const queryIsStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (queryIsStale() || !isMountedRef.current) {\n return;\n }\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'loadChannels'\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (queryIsStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\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 < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\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: activeQueryType === 'reload',\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","filters","options","sort","client","channels","setChannels","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","some","Boolean","isQueryStale","currentRequestId","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'reload' | 'refresh' | 'loadChannels';\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>([]);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>();\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'loadChannels'\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\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 < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\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: activeQueryType === 'reload',\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
|
|
@@ -145,10 +145,6 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
145
145
|
myMessageThemeString = _useState2[0],
|
|
146
146
|
setMyMessageThemeString = _useState2[1];
|
|
147
147
|
|
|
148
|
-
var _useState3 = (0, _react.useState)(0),
|
|
149
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
150
|
-
setReactionListHeight = _useState4[1];
|
|
151
|
-
|
|
152
148
|
(0, _react.useEffect)(function () {
|
|
153
149
|
if (myMessageTheme) {
|
|
154
150
|
setMyMessageThemeString(JSON.stringify(myMessageTheme));
|
|
@@ -291,7 +287,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
291
287
|
__self: _this,
|
|
292
288
|
__source: {
|
|
293
289
|
fileName: _jsxFileName,
|
|
294
|
-
lineNumber:
|
|
290
|
+
lineNumber: 323,
|
|
295
291
|
columnNumber: 5
|
|
296
292
|
}
|
|
297
293
|
}, _react["default"].createElement(_MessageContext.MessageProvider, {
|
|
@@ -299,7 +295,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
299
295
|
__self: _this,
|
|
300
296
|
__source: {
|
|
301
297
|
fileName: _jsxFileName,
|
|
302
|
-
lineNumber:
|
|
298
|
+
lineNumber: 324,
|
|
303
299
|
columnNumber: 7
|
|
304
300
|
}
|
|
305
301
|
}, _react["default"].createElement(_ThemeContext.ThemeProvider, {
|
|
@@ -307,7 +303,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
307
303
|
__self: _this,
|
|
308
304
|
__source: {
|
|
309
305
|
fileName: _jsxFileName,
|
|
310
|
-
lineNumber:
|
|
306
|
+
lineNumber: 325,
|
|
311
307
|
columnNumber: 9
|
|
312
308
|
}
|
|
313
309
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -316,7 +312,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
316
312
|
__self: _this,
|
|
317
313
|
__source: {
|
|
318
314
|
fileName: _jsxFileName,
|
|
319
|
-
lineNumber:
|
|
315
|
+
lineNumber: 326,
|
|
320
316
|
columnNumber: 11
|
|
321
317
|
}
|
|
322
318
|
}, _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
|
|
@@ -327,7 +323,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
327
323
|
__self: _this,
|
|
328
324
|
__source: {
|
|
329
325
|
fileName: _jsxFileName,
|
|
330
|
-
lineNumber:
|
|
326
|
+
lineNumber: 330,
|
|
331
327
|
columnNumber: 13
|
|
332
328
|
}
|
|
333
329
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -335,7 +331,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
335
331
|
__self: _this,
|
|
336
332
|
__source: {
|
|
337
333
|
fileName: _jsxFileName,
|
|
338
|
-
lineNumber:
|
|
334
|
+
lineNumber: 336,
|
|
339
335
|
columnNumber: 15
|
|
340
336
|
}
|
|
341
337
|
}, _react["default"].createElement(_reactNative.SafeAreaView, {
|
|
@@ -343,7 +339,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
343
339
|
__self: _this,
|
|
344
340
|
__source: {
|
|
345
341
|
fileName: _jsxFileName,
|
|
346
|
-
lineNumber:
|
|
342
|
+
lineNumber: 337,
|
|
347
343
|
columnNumber: 17
|
|
348
344
|
}
|
|
349
345
|
}, _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
|
|
@@ -358,7 +354,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
358
354
|
__self: _this,
|
|
359
355
|
__source: {
|
|
360
356
|
fileName: _jsxFileName,
|
|
361
|
-
lineNumber:
|
|
357
|
+
lineNumber: 338,
|
|
362
358
|
columnNumber: 19
|
|
363
359
|
}
|
|
364
360
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -366,7 +362,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
366
362
|
__self: _this,
|
|
367
363
|
__source: {
|
|
368
364
|
fileName: _jsxFileName,
|
|
369
|
-
lineNumber:
|
|
365
|
+
lineNumber: 346,
|
|
370
366
|
columnNumber: 21
|
|
371
367
|
}
|
|
372
368
|
}, message && _react["default"].createElement(_reactNative.View, {
|
|
@@ -376,7 +372,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
376
372
|
__self: _this,
|
|
377
373
|
__source: {
|
|
378
374
|
fileName: _jsxFileName,
|
|
379
|
-
lineNumber:
|
|
375
|
+
lineNumber: 348,
|
|
380
376
|
columnNumber: 25
|
|
381
377
|
}
|
|
382
378
|
}, handleReaction && ownCapabilities != null && ownCapabilities.sendReaction ? _react["default"].createElement(OverlayReactionList, {
|
|
@@ -384,12 +380,11 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
384
380
|
ownReactionTypes: (message == null ? void 0 : (_message$own_reaction = message.own_reactions) == null ? void 0 : _message$own_reaction.map(function (reaction) {
|
|
385
381
|
return reaction.type;
|
|
386
382
|
})) || [],
|
|
387
|
-
setReactionListHeight: setReactionListHeight,
|
|
388
383
|
showScreen: showScreen,
|
|
389
384
|
__self: _this,
|
|
390
385
|
__source: {
|
|
391
386
|
fileName: _jsxFileName,
|
|
392
|
-
lineNumber:
|
|
387
|
+
lineNumber: 357,
|
|
393
388
|
columnNumber: 29
|
|
394
389
|
}
|
|
395
390
|
}) : null, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -410,7 +405,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
410
405
|
__self: _this,
|
|
411
406
|
__source: {
|
|
412
407
|
fileName: _jsxFileName,
|
|
413
|
-
lineNumber:
|
|
408
|
+
lineNumber: 365,
|
|
414
409
|
columnNumber: 27
|
|
415
410
|
}
|
|
416
411
|
}, alignment === 'left' && MessageAvatar && _react["default"].createElement(MessageAvatar, {
|
|
@@ -420,7 +415,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
420
415
|
__self: _this,
|
|
421
416
|
__source: {
|
|
422
417
|
fileName: _jsxFileName,
|
|
423
|
-
lineNumber:
|
|
418
|
+
lineNumber: 381,
|
|
424
419
|
columnNumber: 31
|
|
425
420
|
}
|
|
426
421
|
}), _react["default"].createElement(_reactNative.View, {
|
|
@@ -435,7 +430,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
435
430
|
__self: _this,
|
|
436
431
|
__source: {
|
|
437
432
|
fileName: _jsxFileName,
|
|
438
|
-
lineNumber:
|
|
433
|
+
lineNumber: 383,
|
|
439
434
|
columnNumber: 29
|
|
440
435
|
}
|
|
441
436
|
}, messagesContext == null ? void 0 : (_messagesContext$mess = messagesContext.messageContentOrder) == null ? void 0 : _messagesContext$mess.map(function (messageContentType, messageContentOrderIndex) {
|
|
@@ -447,7 +442,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
447
442
|
__self: _this,
|
|
448
443
|
__source: {
|
|
449
444
|
fileName: _jsxFileName,
|
|
450
|
-
lineNumber:
|
|
445
|
+
lineNumber: 426,
|
|
451
446
|
columnNumber: 43
|
|
452
447
|
}
|
|
453
448
|
}, _react["default"].createElement(Reply, {
|
|
@@ -460,7 +455,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
460
455
|
__self: _this,
|
|
461
456
|
__source: {
|
|
462
457
|
fileName: _jsxFileName,
|
|
463
|
-
lineNumber:
|
|
458
|
+
lineNumber: 430,
|
|
464
459
|
columnNumber: 45
|
|
465
460
|
}
|
|
466
461
|
}));
|
|
@@ -473,7 +468,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
473
468
|
__self: _this,
|
|
474
469
|
__source: {
|
|
475
470
|
fileName: _jsxFileName,
|
|
476
|
-
lineNumber:
|
|
471
|
+
lineNumber: 447,
|
|
477
472
|
columnNumber: 45
|
|
478
473
|
}
|
|
479
474
|
});
|
|
@@ -487,7 +482,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
487
482
|
__self: _this,
|
|
488
483
|
__source: {
|
|
489
484
|
fileName: _jsxFileName,
|
|
490
|
-
lineNumber:
|
|
485
|
+
lineNumber: 456,
|
|
491
486
|
columnNumber: 43
|
|
492
487
|
}
|
|
493
488
|
});
|
|
@@ -504,7 +499,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
504
499
|
__self: _this,
|
|
505
500
|
__source: {
|
|
506
501
|
fileName: _jsxFileName,
|
|
507
|
-
lineNumber:
|
|
502
|
+
lineNumber: 466,
|
|
508
503
|
columnNumber: 43
|
|
509
504
|
}
|
|
510
505
|
});
|
|
@@ -520,7 +515,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
520
515
|
__self: _this,
|
|
521
516
|
__source: {
|
|
522
517
|
fileName: _jsxFileName,
|
|
523
|
-
lineNumber:
|
|
518
|
+
lineNumber: 481,
|
|
524
519
|
columnNumber: 41
|
|
525
520
|
}
|
|
526
521
|
});
|
|
@@ -533,7 +528,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
533
528
|
__self: _this,
|
|
534
529
|
__source: {
|
|
535
530
|
fileName: _jsxFileName,
|
|
536
|
-
lineNumber:
|
|
531
|
+
lineNumber: 495,
|
|
537
532
|
columnNumber: 29
|
|
538
533
|
}
|
|
539
534
|
})), !!messageReactionTitle && message.latest_reactions && message.latest_reactions.length > 0 ? _react["default"].createElement(OverlayReactions, {
|
|
@@ -556,7 +551,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
556
551
|
__self: _this,
|
|
557
552
|
__source: {
|
|
558
553
|
fileName: _jsxFileName,
|
|
559
|
-
lineNumber:
|
|
554
|
+
lineNumber: 505,
|
|
560
555
|
columnNumber: 29
|
|
561
556
|
}
|
|
562
557
|
}) : null))))))))));
|
|
@@ -618,7 +613,7 @@ var MessageOverlay = function MessageOverlay(props) {
|
|
|
618
613
|
__self: _this,
|
|
619
614
|
__source: {
|
|
620
615
|
fileName: _jsxFileName,
|
|
621
|
-
lineNumber:
|
|
616
|
+
lineNumber: 618,
|
|
622
617
|
columnNumber: 5
|
|
623
618
|
}
|
|
624
619
|
}));
|