diff --git a/app/containers/MessageComposer/__snapshots__/MessageComposer.test.tsx.snap b/app/containers/MessageComposer/__snapshots__/MessageComposer.test.tsx.snap index fbc049a73fe..a30b9bc9d96 100644 --- a/app/containers/MessageComposer/__snapshots__/MessageComposer.test.tsx.snap +++ b/app/containers/MessageComposer/__snapshots__/MessageComposer.test.tsx.snap @@ -2482,7 +2482,7 @@ exports[`MessageComposer Toolbar Markdown tap bold 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={45} + handlerTag={35} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -3093,7 +3093,7 @@ exports[`MessageComposer Toolbar Markdown tap code 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={123} + handlerTag={113} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -3704,7 +3704,7 @@ exports[`MessageComposer Toolbar Markdown tap code-block 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={149} + handlerTag={139} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -4315,7 +4315,7 @@ exports[`MessageComposer Toolbar Markdown tap italic 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={71} + handlerTag={61} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -5537,7 +5537,7 @@ exports[`MessageComposer Toolbar Markdown tap strike 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={97} + handlerTag={87} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -6148,7 +6148,7 @@ exports[`MessageComposer Toolbar Markdown type test and tap bold 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={58} + handlerTag={48} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -6759,7 +6759,7 @@ exports[`MessageComposer Toolbar Markdown type test and tap code 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={136} + handlerTag={126} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -7370,7 +7370,7 @@ exports[`MessageComposer Toolbar Markdown type test and tap code-block 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={162} + handlerTag={152} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -7981,7 +7981,7 @@ exports[`MessageComposer Toolbar Markdown type test and tap italic 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={84} + handlerTag={74} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -8592,7 +8592,7 @@ exports[`MessageComposer Toolbar Markdown type test and tap strike 1`] = ` borderless={true} collapsable={false} delayLongPress={600} - handlerTag={110} + handlerTag={100} handlerType="NativeViewGestureHandler" hitSlop={ { @@ -9630,77 +9630,76 @@ exports[`MessageComposer Toolbar tap emoji 1`] = ` } } > - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-clock" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-emoji" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-leaf" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-burger" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-basketball" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-airplane" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-lamp-bulb" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-percentage" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-flag" + > +  + + - - - -  - - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + testID="emoji-picker-tab-rocket" + > +  + + { } return ( - setAlsoSendThreadToChannel(!alsoSendThreadToChannel)} testID='message-composer-send-to-channel'> @@ -81,7 +81,7 @@ export const SendThreadToChannel = (): React.ReactElement | null => { color={alsoSendThreadToChannel ? colors.buttonBackgroundPrimaryDefault : colors.fontDefault} /> {I18n.t('Message_composer_Send_to_channel')} - + ); }; diff --git a/app/containers/RoomHeader/RoomHeader.tsx b/app/containers/RoomHeader/RoomHeader.tsx index 35a44f5181f..bcaf4722faf 100644 --- a/app/containers/RoomHeader/RoomHeader.tsx +++ b/app/containers/RoomHeader/RoomHeader.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { StyleSheet, Text, useWindowDimensions, View } from 'react-native'; -import { TouchableOpacity } from 'react-native-gesture-handler'; +import TouchableOpacity from '../TouchableOpacity'; import { useResponsiveLayout } from '../../lib/hooks/useResponsiveLayout/useResponsiveLayout'; import I18n from '../../i18n'; import sharedStyles from '../../views/Styles'; diff --git a/app/containers/RoomHeader/__snapshots__/RoomHeader.test.tsx.snap b/app/containers/RoomHeader/__snapshots__/RoomHeader.test.tsx.snap index 65bed9d5439..ce0c3f60079 100644 --- a/app/containers/RoomHeader/__snapshots__/RoomHeader.test.tsx.snap +++ b/app/containers/RoomHeader/__snapshots__/RoomHeader.test.tsx.snap @@ -28,13 +28,27 @@ exports[`Story Snapshots: Icons should match snapshot 1`] = ` ] } > - - - -  - - - private channel - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + private channel + - + , - - - -  - - - public channel - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + public channel + - + , - - - -  - - - discussion - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + discussion + - + , - - - -  - - - omnichannel - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + omnichannel + - + , - - - -  - - - private team - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + private team + - + , - - - -  - - - public team - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + public team + - + , - - - -  - - - group dm - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + group dm + - + , - - - -  - - - online dm - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + online dm + - + , - - - -  - - - away dm - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + away dm + - + , - - - -  - - - busy dm - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + busy dm + - + , - - - -  - - - loading dm - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + loading dm + - + , - - - -  - - - offline dm - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + offline dm + - + , - - - -  - - - classified - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + classified + - + , - - - -  - - - classified - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + classified + - + , ] @@ -1866,13 +1950,27 @@ exports[`Story Snapshots: Themes should match snapshot 1`] = ` ] } > - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - subtitle + title - + + subtitle + + , - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - subtitle + title - + + subtitle + + , - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - subtitle + title - + + subtitle + + , ] @@ -2360,13 +2462,27 @@ exports[`Story Snapshots: Thread should match snapshot 1`] = ` ] } > - - - - title - - - + + - + -  - - - parent title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + parent title + - + , - - - - markdown preview #3 4 5 - - - - + + + -  - - - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + - + , ] @@ -2715,13 +2829,27 @@ exports[`Story Snapshots: TitleSubtitle should match snapshot 1`] = ` ] } > - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + title + - + , - - - -  - - - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + - + , - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - subtitle + title - + + subtitle + + , - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + title - + + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + + , - - - -  - - - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries - + + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries + + , ] @@ -3470,13 +3614,27 @@ exports[`Story Snapshots: Typing should match snapshot 1`] = ` ] } > - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - - user 1 - - - is typing - ... + title - + + + user 1 + + + is typing + ... + + , - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - - user 1 and user 2 - - - are typing - ... + title - + + + user 1 and user 2 + + + are typing + ... + + , - - - -  - - - title - - + ], + { + "fontFamily": "custom", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - - user 1, user 2, user 3, user 4, user 5 - - - are typing - ... + title - + + + user 1, user 2, user 3, user 4, user 5 + + + are typing + ... + + , ] diff --git a/app/containers/TabView/index.tsx b/app/containers/TabView/index.tsx index 6c6679ce7b4..0d902663445 100644 --- a/app/containers/TabView/index.tsx +++ b/app/containers/TabView/index.tsx @@ -1,8 +1,8 @@ import React, { useCallback, useState } from 'react'; import { View } from 'react-native'; import { TabView as ReanimatedTabView, type Route, type NavigationState } from 'reanimated-tab-view'; -import { TouchableOpacity } from 'react-native-gesture-handler'; +import TouchableOpacity from '../TouchableOpacity'; import styles from './styles'; import { useTheme } from '../../theme'; diff --git a/app/containers/TouchableOpacity/index.tsx b/app/containers/TouchableOpacity/index.tsx new file mode 100644 index 00000000000..719be8eba1a --- /dev/null +++ b/app/containers/TouchableOpacity/index.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import Animated, { useSharedValue, useAnimatedStyle } from 'react-native-reanimated'; +import { Pressable, type PressableProps, type StyleProp, type ViewStyle } from 'react-native'; + +const AnimatedPressable = Animated.createAnimatedComponent(Pressable); + +interface TouchableOpacityProps extends PressableProps { + style?: StyleProp; + opacity?: number; + activeOpacity?: number; +} + +function TouchableOpacity(props: TouchableOpacityProps): React.JSX.Element { + const opacity = useSharedValue(props.opacity || 1); + const animatedStyle = useAnimatedStyle(() => ({ + opacity: opacity.value + })); + + const onPressIn = () => { + opacity.value = props.activeOpacity || 0.2; + }; + const onPressOut = () => { + opacity.value = props.opacity || 1; + }; + + return ( + + {props.children} + + ); +} + +export default TouchableOpacity; diff --git a/app/views/RoomsListView/components/Header.tsx b/app/views/RoomsListView/components/Header.tsx index 3f6ff738f90..d7f88b23764 100644 --- a/app/views/RoomsListView/components/Header.tsx +++ b/app/views/RoomsListView/components/Header.tsx @@ -1,6 +1,5 @@ import React, { memo } from 'react'; import { StyleSheet, Text, View, useWindowDimensions } from 'react-native'; -import { TouchableOpacity } from 'react-native-gesture-handler'; import { showActionSheetRef } from '../../../containers/ActionSheet'; import SearchHeader from '../../../containers/SearchHeader'; @@ -9,6 +8,7 @@ import { useAppSelector } from '../../../lib/hooks/useAppSelector'; import { useTheme } from '../../../theme'; import sharedStyles from '../../Styles'; import ServersList from './ServersList'; +import TouchableOpacity from '../../../containers/TouchableOpacity'; const styles = StyleSheet.create({ container: {