import BottomSheet from '@components/BottomSheet' import Icon from '@components/Icon' import { getLocalUrl } from '@utils/slices/instancesSlice' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import HeaderDefaultActionsAccount from '@components/Timelines/Timeline/Shared/HeaderDefault/ActionsAccount' import HeaderDefaultActionsDomain from '@components/Timelines/Timeline/Shared/HeaderDefault/ActionsDomain' import HeaderDefaultActionsStatus from '@components/Timelines/Timeline/Shared/HeaderDefault/ActionsStatus' import React, { useCallback, useMemo, useState } from 'react' import { Pressable, StyleSheet, View } from 'react-native' import { useSelector } from 'react-redux' import HeaderSharedAccount from './HeaderShared/Account' import HeaderSharedApplication from './HeaderShared/Application' import HeaderSharedCreated from './HeaderShared/Created' import HeaderSharedVisibility from './HeaderShared/Visibility' export interface Props { queryKey?: QueryKey.Timeline status: Mastodon.Status sameAccount: boolean } const TimelineHeaderDefault: React.FC = ({ queryKey, status, sameAccount }) => { const domain = status.uri ? status.uri.split(new RegExp(/\/\/(.*?)\//))[1] : '' const { theme } = useTheme() const localDomain = useSelector(getLocalUrl) const [modalVisible, setBottomSheetVisible] = useState(false) const onPressAction = useCallback(() => setBottomSheetVisible(true), []) const pressableAction = useMemo( () => ( ), [] ) return ( {queryKey && ( )} {queryKey && modalVisible && ( setBottomSheetVisible(false)} > {!sameAccount && ( )} {sameAccount && ( )} {domain !== localDomain && ( )} )} ) } const styles = StyleSheet.create({ base: { flex: 1, flexDirection: 'row' }, accountAndMeta: { flex: 4 }, meta: { flexDirection: 'row', alignItems: 'center', marginTop: StyleConstants.Spacing.XS, marginBottom: StyleConstants.Spacing.S }, created_at: { ...StyleConstants.FontStyle.S }, action: { flex: 1, flexDirection: 'row', justifyContent: 'center', paddingBottom: StyleConstants.Spacing.S } }) export default React.memo(TimelineHeaderDefault, () => true)