import React from 'react'
import { StyleSheet, View } from 'react-native'
import { EmojiAvatar } from '../../components/display/emoji_avatar'
import { IconAvatar } from '../../components/display/icon_avatar'
import AvatarPrimitive from '../../components/primitive/avatar_primitive'
import { usePreviewAvatarDiameter } from '../../hooks/use_preview_avatar_diameter'
import { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'
import type { AvatarPickerState } from './avatar_picker_state'
interface AvatarPreviewProps {
state: AvatarPickerState
fallback: React.ReactNode
}
function getPreviewNode(state: AvatarPickerState, diameter: number): React.ReactNode {
const sizeProps = {
size: '2xl',
maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK,
style: { width: diameter, height: diameter },
} as const
switch (state.selectedType) {
case 'icon':
if (!state.selectedKey) return null
return
case 'emoji':
if (!state.selectedKey) return null
return
case 'image':
if (!state.imagePreviewUri) return null
return (
)
default:
return null
}
}
export function AvatarPreview({ state, fallback }: AvatarPreviewProps) {
const diameter = usePreviewAvatarDiameter()
const preview = getPreviewNode(state, diameter)
return {preview ?? fallback}
}
const styles = StyleSheet.create({
container: {
alignItems: 'center',
paddingTop: 24,
paddingBottom: 16,
},
})