import { useNavigation, useRoute } from '@react-navigation/native' import React from 'react' import { Pressable, StyleSheet, View } from 'react-native' import { Icon, Text } from '../../../components' import { EmojiAvatar } from '../../../components/display/emoji_avatar' import { IconAvatar } from '../../../components/display/icon_avatar' import AvatarPrimitive from '../../../components/primitive/avatar_primitive' import { useTheme } from '../../../hooks' import type { AvatarUpdatePayload } from '../../../hooks/use_conversation_avatar_update' interface AvatarSelectionRowProps { avatarSelection?: AvatarUpdatePayload } export function AvatarSelectionRow({ avatarSelection }: AvatarSelectionRowProps) { const styles = useStyles() const navigation = useNavigation() const route = useRoute() return ( navigation.navigate('AvatarPicker', { source_params: route.params as Record, ...(avatarSelection && { avatar_selection: avatarSelection }), }) } > Customize avatar ) } interface AvatarSelectionPreviewProps { avatarSelection?: AvatarUpdatePayload } export function AvatarSelectionPreview({ avatarSelection }: AvatarSelectionPreviewProps) { if (!avatarSelection || avatarSelection.kind === 'clear') return null switch (avatarSelection.kind) { case 'icon': return case 'emoji': return case 'image': return ( ) } } const useStyles = () => { const { colors } = useTheme() return StyleSheet.create({ avatarSection: { padding: 16, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', }, avatarSectionTrailing: { flexDirection: 'row', alignItems: 'center', gap: 12, }, avatarLabel: { fontSize: 18, color: colors.textColorDefaultPrimary, }, }) }