// @flow import * as React from 'react'; import {Badge, TouchableRipple, withTheme} from 'react-native-paper'; import {Dimensions, Image, View} from "react-native"; import type {CustomTheme} from "../../managers/ThemeManager"; import * as Animatable from "react-native-animatable"; type Props = { image: string, onPress: () => void, badgeCount: number | null, theme: CustomTheme, }; const AnimatableBadge = Animatable.createAnimatableComponent(Badge); /** * Component used to render a small dashboard item */ class SmallDashboardItem extends React.Component { itemSize: number; constructor(props: Props) { super(props); this.itemSize = Dimensions.get('window').width / 8; } shouldComponentUpdate(nextProps: Props) { return (nextProps.theme.dark !== this.props.theme.dark) || (nextProps.badgeCount !== this.props.badgeCount); } render() { const props = this.props; return ( { props.badgeCount != null && props.badgeCount > 0 ? {props.badgeCount} : null } ); } } export default withTheme(SmallDashboardItem);