Implement redux in validator setup

This commit is contained in:
Hristo Nedelkov 2023-09-01 00:59:48 +03:00
parent ec0cb296d1
commit 7d6661ded1
4 changed files with 17 additions and 9 deletions

View File

@ -4,12 +4,16 @@ import { Text } from '@status-im/components'
import ConsensusGaugeCard from './ConsensusGaugeCard' import ConsensusGaugeCard from './ConsensusGaugeCard'
import ConsensusClientCard from './ConsensusClientCard' import ConsensusClientCard from './ConsensusClientCard'
import LinkWithArrow from '../../../components/General/LinkWithArrow' import LinkWithArrow from '../../../components/General/LinkWithArrow'
import { useSelector } from 'react-redux'
import { RootState } from '../../../redux/store'
const ConsensusSelection = () => { const ConsensusSelection = () => {
const selectedClient = useSelector((state: RootState) => state.execClient.selectedClient)
const a = [ const a = [
{ {
name: 'Nimbus', name: selectedClient,
icon: '/icons/Nimbus-black.png', icon: '/icons/Nimbus-black.png', // FIXL change icon based on selectedClient
}, },
] ]
return ( return (
@ -53,7 +57,7 @@ const ConsensusSelection = () => {
<YStack width={'67%'} space={'$4'}> <YStack width={'67%'} space={'$4'}>
<Text size={27}>The resource efficient Ethereum Clients.</Text> <Text size={27}>The resource efficient Ethereum Clients.</Text>
<Text size={15}> <Text size={15}>
Nimbus is a client implementation for both execution and consensus layers that strives {selectedClient} is a client implementation for both execution and consensus layers that strives
to be as lightweight as possible in terms of resources used. This allows it to perform to be as lightweight as possible in terms of resources used. This allows it to perform
well on embedded systems, resource-restricted devices -- including Raspberry Pis -- and well on embedded systems, resource-restricted devices -- including Raspberry Pis -- and
multi-purpose servers. multi-purpose servers.

View File

@ -3,6 +3,7 @@ import Icon from '../../../components/General/Icon'
import { Text } from '@status-im/components' import { Text } from '@status-im/components'
import { selectClient } from '../../../redux/ValidatorOnboarding/ValidatorSetup/slice' import { selectClient } from '../../../redux/ValidatorOnboarding/ValidatorSetup/slice'
import { useDispatch, useSelector } from 'react-redux' import { useDispatch, useSelector } from 'react-redux'
import { RootState } from '../../../redux/store'
type ExecClientCardProps = { type ExecClientCardProps = {
name: string name: string
@ -12,9 +13,9 @@ type ExecClientCardProps = {
} }
const ExecClientCard = ({ name, icon, isComingSoon }: ExecClientCardProps) => { const ExecClientCard = ({ name, icon, isComingSoon }: ExecClientCardProps) => {
const dispatch = useDispatch() const dispatch = useDispatch()
const selectedClient = useSelector(selectClient) const selectedClient = useSelector((state: RootState) => state.execClient.selectedClient)
const isSelected = selectedClient.payload.execClient.selectedClient === name const isSelected = selectedClient === name
return ( return (
<YStack <YStack
style={{ style={{

View File

@ -4,8 +4,11 @@ import { CloseCircleIcon } from '@status-im/icons'
import OsCard from './OsCard' import OsCard from './OsCard'
import SyntaxHighlighterBox from './SyntaxHighlighter' import SyntaxHighlighterBox from './SyntaxHighlighter'
import { useState } from 'react' import { useState } from 'react'
import { useSelector } from 'react-redux'
import { RootState } from '../../../redux/store'
const ValidatorSetupInstall = () => { const ValidatorSetupInstall = () => {
const [selectedOs, setSelectedOs] = useState('Mac') const [selectedOs, setSelectedOs] = useState('Mac')
const selectedClient = useSelector((state: RootState) => state.execClient.selectedClient)
return ( return (
<YStack style={{ width: '100%', padding: '16px 32px' }}> <YStack style={{ width: '100%', padding: '16px 32px' }}>
<XStack justifyContent={'space-between'} style={{ marginBottom: '10px' }}> <XStack justifyContent={'space-between'} style={{ marginBottom: '10px' }}>
@ -18,7 +21,7 @@ const ValidatorSetupInstall = () => {
<Stack style={{ marginBottom: '4px' }}> <Stack style={{ marginBottom: '4px' }}>
<YStack space={'$3'}> <YStack space={'$3'}>
<Text size={19} weight={'semibold'}> <Text size={19} weight={'semibold'}>
Geth {selectedClient}
</Text> </Text>
<Text size={15} color="#647084"> <Text size={15} color="#647084">
@ -39,7 +42,7 @@ const ValidatorSetupInstall = () => {
}} }}
space={'$3'} space={'$3'}
> >
<Text size={27}> Installing Geth</Text> <Text size={27}> Installing {selectedClient}</Text>
<Text size={19} color="#647084" weight={'regular'}> <Text size={19} color="#647084" weight={'regular'}>
There are several ways to install Geth, including via a package manager, downloading There are several ways to install Geth, including via a package manager, downloading
a pre-built bundle, running as a docker container or building from downloaded source a pre-built bundle, running as a docker container or building from downloaded source

View File

@ -36,7 +36,7 @@ const ValidatorSetup = () => {
<ExecClientCard name={'Nethermind'} icon={'/icons/nethermind-circle.png'} /> <ExecClientCard name={'Nethermind'} icon={'/icons/nethermind-circle.png'} />
<ExecClientCard name={'Besu'} icon={'/icons/hyperledger-besu-circle.png'} /> <ExecClientCard name={'Besu'} icon={'/icons/hyperledger-besu-circle.png'} />
<ExecClientCard name={'Geth'} icon={'/icons/gethereum-mascot-circle.png'} /> <ExecClientCard name={'Geth'} icon={'/icons/gethereum-mascot-circle.png'} />
<ExecClientCard name={'Erigon'} icon={'/icons/erigon-circle.png'} isSelected={false} /> <ExecClientCard name={'Erigon'} icon={'/icons/erigon-circle.png'} />
<ExecClientCard name={'Nimbus'} icon={'/icons/NimbusDisabled.svg'} isComingSoon={true} /> <ExecClientCard name={'Nimbus'} icon={'/icons/NimbusDisabled.svg'} isComingSoon={true} />
</XStack> </XStack>
<Stack marginTop={'10%'}> <Stack marginTop={'10%'}>