tooot/src/components/Timelines/Timeline/Conversation.tsx

64 lines
1.6 KiB
TypeScript
Raw Normal View History

import React from 'react'
2020-11-22 00:46:23 +01:00
import { Pressable, StyleSheet, View } from 'react-native'
import { useNavigation } from '@react-navigation/native'
2020-12-12 12:49:29 +01:00
import TimelineAvatar from './Shared/Avatar'
import TimelineHeaderConversation from './Shared/HeaderConversation'
2020-12-12 12:49:29 +01:00
import TimelineContent from './Shared/Content'
2020-11-30 00:24:53 +01:00
import { StyleConstants } from 'src/utils/styles/constants'
2020-11-22 00:46:23 +01:00
export interface Props {
item: Mastodon.Conversation
}
// Unread and mark as unread
const TimelineConversation: React.FC<Props> = ({ item }) => {
const navigation = useNavigation()
return (
<View style={styles.statusView}>
<View style={styles.status}>
<TimelineAvatar account={item.accounts[0]} />
<View style={styles.details}>
<TimelineHeaderConversation
account={item.accounts[0]}
created_at={item.last_status?.created_at}
/>
{/* Can pass toot info to next page to speed up performance */}
<Pressable
onPress={() =>
item.last_status &&
navigation.navigate('Screen-Shared-Toot', {
toot: item.last_status.id
})
}
>
{item.last_status ? (
<TimelineContent status={item.last_status} />
) : (
<></>
)}
</Pressable>
2020-11-22 00:46:23 +01:00
</View>
</View>
</View>
)
2020-11-22 00:46:23 +01:00
}
const styles = StyleSheet.create({
statusView: {
flex: 1,
flexDirection: 'column',
2020-11-30 00:24:53 +01:00
padding: StyleConstants.Spacing.Global.PagePadding
2020-11-22 00:46:23 +01:00
},
status: {
flex: 1,
flexDirection: 'row'
},
details: {
flex: 1,
flexGrow: 1
}
})
export default TimelineConversation