Changeset View
Changeset View
Standalone View
Standalone View
native/account/registration/avatar-selection.react.js
// @flow | // @flow | ||||
import invariant from 'invariant'; | import invariant from 'invariant'; | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { Text, View } from 'react-native'; | import { Text, View } from 'react-native'; | ||||
import type { | |||||
UpdateUserAvatarRequest, | |||||
ClientAvatar, | |||||
} from 'lib/types/avatar-types.js'; | |||||
import type { NativeMediaSelection } from 'lib/types/media-types.js'; | |||||
import type { SIWEResult } from 'lib/types/siwe-types.js'; | |||||
import RegistrationButtonContainer from './registration-button-container.react.js'; | import RegistrationButtonContainer from './registration-button-container.react.js'; | ||||
import RegistrationButton from './registration-button.react.js'; | import RegistrationButton from './registration-button.react.js'; | ||||
import RegistrationContainer from './registration-container.react.js'; | import RegistrationContainer from './registration-container.react.js'; | ||||
import RegistrationContentContainer from './registration-content-container.react.js'; | import RegistrationContentContainer from './registration-content-container.react.js'; | ||||
import type { RegistrationNavigationProp } from './registration-navigator.react.js'; | import type { RegistrationNavigationProp } from './registration-navigator.react.js'; | ||||
import type { CoolOrNerdMode } from './registration-types.js'; | import type { | ||||
CoolOrNerdMode, | |||||
AccountSelection, | |||||
AvatarData, | |||||
} from './registration-types.js'; | |||||
import { | import { | ||||
EditUserAvatarContext, | EditUserAvatarContext, | ||||
type UserAvatarSelection, | type UserAvatarSelection, | ||||
} from '../../avatars/edit-user-avatar-provider.react.js'; | } from '../../avatars/edit-user-avatar-provider.react.js'; | ||||
import EditUserAvatar from '../../avatars/edit-user-avatar.react.js'; | import EditUserAvatar from '../../avatars/edit-user-avatar.react.js'; | ||||
import type { NavigationRoute } from '../../navigation/route-names.js'; | import type { NavigationRoute } from '../../navigation/route-names.js'; | ||||
import { useStyles } from '../../themes/colors.js'; | import { useStyles } from '../../themes/colors.js'; | ||||
type EthereumAccountSelections = { | |||||
+accountType: 'ethereum', | |||||
...SIWEResult, | |||||
+avatarURI: ?string, | |||||
}; | |||||
type UsernameAccountSelections = { | |||||
+accountType: 'username', | |||||
+username: string, | |||||
+password: string, | |||||
}; | |||||
export type AvatarSelectionParams = { | export type AvatarSelectionParams = { | ||||
+userSelections: { | +userSelections: { | ||||
+coolOrNerdMode: CoolOrNerdMode, | +coolOrNerdMode: CoolOrNerdMode, | ||||
+keyserverUsername: string, | +keyserverUsername: string, | ||||
+accountSelections: EthereumAccountSelections | UsernameAccountSelections, | +accountSelections: AccountSelection, | ||||
}, | }, | ||||
}; | }; | ||||
type AvatarData = | |||||
| { | |||||
+needsUpload: true, | |||||
+mediaSelection: NativeMediaSelection, | |||||
+clientAvatar: ClientAvatar, | |||||
} | |||||
| { | |||||
+needsUpload: false, | |||||
+updateUserAvatarRequest: UpdateUserAvatarRequest, | |||||
+clientAvatar: ClientAvatar, | |||||
}; | |||||
const ensDefaultSelection = { | const ensDefaultSelection = { | ||||
needsUpload: false, | needsUpload: false, | ||||
updateUserAvatarRequest: { type: 'ens' }, | updateUserAvatarRequest: { type: 'ens' }, | ||||
clientAvatar: { type: 'ens' }, | clientAvatar: { type: 'ens' }, | ||||
}; | }; | ||||
type Props = { | type Props = { | ||||
+navigation: RegistrationNavigationProp<'AvatarSelection'>, | +navigation: RegistrationNavigationProp<'AvatarSelection'>, | ||||
▲ Show 20 Lines • Show All 120 Lines • Show Last 20 Lines |