import React from 'react'
import {StyleSheet, View} from 'react-native'
import {Text} from './text/Text'
import {ago} from 'lib/strings/time'
import {usePalette} from 'lib/hooks/usePalette'
import {useStores} from 'state/index'
import {UserAvatar} from './UserAvatar'
import {observer} from 'mobx-react-lite'
import FollowButton from '../profile/FollowButton'
interface PostMetaOpts {
authorAvatar?: string
authorHandle: string
authorDisplayName: string | undefined
timestamp: string
did?: string
declarationCid?: string
showFollowBtn?: boolean
}
export const PostMeta = observer(function (opts: PostMetaOpts) {
const pal = usePalette('default')
let displayName = opts.authorDisplayName || opts.authorHandle
let handle = opts.authorHandle
const store = useStores()
const isMe = opts.did === store.me.did
// NOTE we capture `isFollowing` via a memo so that follows
// don't change this UI immediately, but rather upon future
// renders
const isFollowing = React.useMemo(
() =>
typeof opts.did === 'string' && store.me.follows.isFollowing(opts.did),
[opts.did, store.me.follows],
)
if (
opts.showFollowBtn &&
!isMe &&
!isFollowing &&
opts.did &&
opts.declarationCid
) {
// two-liner with follow button
return (
{displayName}{' '}
· {ago(opts.timestamp)}
{handle ? (
@{handle}
) : undefined}
)
}
// one-liner
return (
{typeof opts.authorAvatar !== 'undefined' && (
)}
{displayName}
{handle ? (
{handle}
) : undefined}
· {ago(opts.timestamp)}
)
})
const styles = StyleSheet.create({
meta: {
flexDirection: 'row',
alignItems: 'baseline',
paddingBottom: 2,
},
metaTwoLine: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingBottom: 2,
},
metaItem: {
paddingRight: 5,
},
avatar: {
alignSelf: 'center',
},
maxWidth: {
maxWidth: '80%',
},
})