import { getLocalAccount } from '@utils/slices/instancesSlice' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import React, { useCallback } from 'react' import { StyleSheet, View } from 'react-native' import { useSelector } from 'react-redux' import { Placeholder, Fade } from 'rn-placeholder' import AccountInformationAccount from './Information/Account' import AccountInformationActions from './Information/Actions' import AccountInformationAvatar from './Information/Avatar' import AccountInformationCreated from './Information/Created' import AccountInformationFields from './Information/Fields' import AccountInformationName from './Information/Name' import AccountInformationNotes from './Information/Notes' import AccountInformationStats from './Information/Stats' import AccountInformationSwitch from './Information/Switch' export interface Props { account: Mastodon.Account | undefined myInfo?: boolean // Showing from my info page } const AccountInformation: React.FC = ({ account, myInfo = false }) => { const ownAccount = account?.id === useSelector(getLocalAccount)?.id const { mode, theme } = useTheme() const animation = useCallback( props => ( ), [mode] ) return ( {myInfo ? ( ) : ( )} {!myInfo ? ( <> {account?.fields && account.fields.length > 0 ? ( ) : null} {account?.note && account.note.length > 0 && account.note !== '

' ? ( // Empty notes might generate empty p tag ) : null} ) : null}
) } const styles = StyleSheet.create({ base: { marginTop: -StyleConstants.Spacing.Global.PagePadding * 3, padding: StyleConstants.Spacing.Global.PagePadding }, avatarAndActions: { flexDirection: 'row', justifyContent: 'space-between' }, actions: { alignSelf: 'flex-end', flexDirection: 'row' } }) export default React.memo( AccountInformation, (_, next) => next.account === undefined )