import React from 'react'; import { Animated, View } from 'react-native'; import { RectButton } from 'react-native-gesture-handler'; import { isRTL } from '../../i18n'; import { CustomIcon } from '../../lib/Icons'; import { DisplayMode, themes } from '../../lib/constants'; import styles, { ACTION_WIDTH, LONG_SWIPE, ROW_HEIGHT_CONDENSED } from './styles'; interface ILeftActions { theme: string; transX: any; isRead: boolean; width: number; onToggleReadPress(): void; displayMode: string; } interface IRightActions { theme: string; transX: any; favorite: boolean; width: number; toggleFav(): void; onHidePress(): void; displayMode: string; } const reverse = new Animated.Value(isRTL() ? -1 : 1); const CONDENSED_ICON_SIZE = 24; const EXPANDED_ICON_SIZE = 28; export const LeftActions = React.memo(({ theme, transX, isRead, width, onToggleReadPress, displayMode }: ILeftActions) => { const translateX = Animated.multiply( transX.interpolate({ inputRange: [0, ACTION_WIDTH], outputRange: [-ACTION_WIDTH, 0] }), reverse ); const isCondensed = displayMode === DisplayMode.Condensed; const viewHeight = isCondensed ? { height: ROW_HEIGHT_CONDENSED } : null; return ( ); }); export const RightActions = React.memo( ({ transX, favorite, width, toggleFav, onHidePress, theme, displayMode }: IRightActions) => { const translateXFav = Animated.multiply( transX.interpolate({ inputRange: [-width / 2, -ACTION_WIDTH * 2, 0], outputRange: [width / 2, width - ACTION_WIDTH * 2, width] }), reverse ); const translateXHide = Animated.multiply( transX.interpolate({ inputRange: [-width, -LONG_SWIPE, -ACTION_WIDTH * 2, 0], outputRange: [0, width - LONG_SWIPE, width - ACTION_WIDTH, width] }), reverse ); const isCondensed = displayMode === DisplayMode.Condensed; const viewHeight = isCondensed ? { height: ROW_HEIGHT_CONDENSED } : null; return ( ); } );