import analytics from '@components/analytics' import CustomText from '@components/Text' import { useNavigation } from '@react-navigation/native' import { StackNavigationProp } from '@react-navigation/stack' import { TabLocalStackParamList } from '@utils/navigation/navigators' import { useStatusHistory } from '@utils/queryHooks/statusesHistory' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import React from 'react' import { useTranslation } from 'react-i18next' import { StyleSheet, View } from 'react-native' export interface Props { status: Pick< Mastodon.Status, 'id' | 'edited_at' | 'reblogs_count' | 'favourites_count' > highlighted: boolean } const TimelineFeedback = React.memo( ({ status, highlighted }: Props) => { if (!highlighted) { return null } const { t } = useTranslation('componentTimeline') const { colors } = useTheme() const navigation = useNavigation>() const { data } = useStatusHistory({ id: status.id, options: { enabled: status.edited_at !== undefined } }) return ( {status.reblogs_count > 0 ? ( { analytics('timeline_shared_feedback_press_reblog', { count: status.reblogs_count }) navigation.push('Tab-Shared-Users', { reference: 'statuses', id: status.id, type: 'reblogged_by', count: status.reblogs_count }) }} > {t('shared.actionsUsers.reblogged_by.text', { count: status.reblogs_count })} ) : null} {status.favourites_count > 0 ? ( { analytics('timeline_shared_feedback_press_favourite', { count: status.favourites_count }) navigation.push('Tab-Shared-Users', { reference: 'statuses', id: status.id, type: 'favourited_by', count: status.favourites_count }) }} > {t('shared.actionsUsers.favourited_by.text', { count: status.favourites_count })} ) : null} {data && data.length > 1 ? ( { analytics('timeline_shared_feedback_press_history', { count: data.length - 1 }) navigation.push('Tab-Shared-History', { id: status.id }) }} > {t('shared.actionsUsers.history.text', { count: data.length - 1 })} ) : null} ) }, (prev, next) => prev.status.edited_at === next.status.edited_at && prev.status.reblogs_count === next.status.reblogs_count && prev.status.favourites_count === next.status.favourites_count ) const styles = StyleSheet.create({ text: { ...StyleConstants.FontStyle.M, padding: StyleConstants.Spacing.S, paddingLeft: 0, marginRight: StyleConstants.Spacing.S } }) export default TimelineFeedback