mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import React from 'react'
2import {View} from 'react-native'
3import {Image as ExpoImage} from 'expo-image'
4import {msg} from '@lingui/macro'
5import {useLingui} from '@lingui/react'
6
7import {AvatarCreatorCircle} from '#/screens/Onboarding/StepProfile/AvatarCreatorCircle'
8import {useAvatar} from '#/screens/Onboarding/StepProfile/index'
9import {atoms as a, useTheme} from '#/alf'
10import {Button, ButtonIcon} from '#/components/Button'
11import {Pencil_Stroke2_Corner0_Rounded as Pencil} from '#/components/icons/Pencil'
12import {StreamingLive_Stroke2_Corner0_Rounded as StreamingLive} from '#/components/icons/StreamingLive'
13
14export function AvatarCircle({
15 openLibrary,
16 openCreator,
17}: {
18 openLibrary: () => unknown
19 openCreator: () => unknown
20}) {
21 const {_} = useLingui()
22 const t = useTheme()
23 const {avatar} = useAvatar()
24
25 const styles = React.useMemo(
26 () => ({
27 imageContainer: [
28 a.rounded_full,
29 a.overflow_hidden,
30 a.align_center,
31 a.justify_center,
32 a.border,
33 t.atoms.border_contrast_low,
34 t.atoms.bg_contrast_25,
35 {
36 height: 200,
37 width: 200,
38 },
39 ],
40 }),
41 [t.atoms.bg_contrast_25, t.atoms.border_contrast_low],
42 )
43
44 return (
45 <View>
46 {avatar.useCreatedAvatar ? (
47 <AvatarCreatorCircle avatar={avatar} size={200} />
48 ) : avatar.image ? (
49 <ExpoImage
50 source={avatar.image.path}
51 style={styles.imageContainer}
52 accessibilityIgnoresInvertColors
53 transition={{duration: 300, effect: 'cross-dissolve'}}
54 />
55 ) : (
56 <View style={styles.imageContainer}>
57 <StreamingLive
58 height={100}
59 width={100}
60 style={{color: t.palette.contrast_200}}
61 />
62 </View>
63 )}
64 <View style={[a.absolute, {bottom: 2, right: 2}]}>
65 <Button
66 label={_(msg`Select an avatar`)}
67 size="large"
68 shape="round"
69 variant="solid"
70 color="primary"
71 onPress={avatar.useCreatedAvatar ? openCreator : openLibrary}>
72 <ButtonIcon icon={Pencil} />
73 </Button>
74 </View>
75 </View>
76 )
77}