Skip to content

Commit 9f45e4d

Browse files
Add banner to tx-history screen
1 parent 1e9e835 commit 9f45e4d

File tree

7 files changed

+425
-384
lines changed

7 files changed

+425
-384
lines changed

apps/wallet-mobile/src/features/Banners/common/DelegateToYoroiDRepBanner/DelegateToYoroiDRepBanner.tsx

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {useTheme} from '@yoroi/theme'
22
import * as React from 'react'
3-
import {StyleSheet, TouchableOpacity, View} from 'react-native'
3+
import {StyleSheet, TouchableOpacity, View, ViewStyle} from 'react-native'
44
import LinearGradient from 'react-native-linear-gradient'
55

66
import {Button} from '../../../../components/Button/Button'
@@ -13,20 +13,22 @@ import {useStrings} from '../strings'
1313
type Props = {
1414
isVisible: boolean
1515
onDismiss: () => void
16+
style?: ViewStyle
1617
}
1718

18-
export const DelegateToYoroiDRepBanner = ({onDismiss, isVisible}: Props) => {
19+
export const DelegateToYoroiDRepBanner = ({onDismiss, isVisible, style}: Props) => {
1920
const {styles, colors} = useStyles()
2021
const {title, description, cta} = useStrings()
2122

2223
const handleOnDismiss = React.useCallback(() => onDismiss(), [onDismiss])
2324
const handleOnCta = React.useCallback(() => console.log('cta'), [])
2425

2526
return (
26-
<DismissibleView isVisible={isVisible}>
27+
<DismissibleView isVisible={isVisible} style={style}>
2728
<LinearGradient start={{x: 1, y: 1}} end={{x: 0, y: 0}} colors={colors.gradient} style={styles.gradient}>
2829
<View style={styles.root}>
2930
<GovernanceBackground style={styles.backgroundImage} />
31+
3032
<TouchableOpacity onPress={handleOnDismiss} style={styles.dismiss}>
3133
<Icon.Close color={colors.icon} size={20} />
3234
</TouchableOpacity>

apps/wallet-mobile/src/features/Banners/illustrations/GovernanceBackground.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as React from 'react'
2-
import Svg, {Defs, G, LinearGradient, Path, Stop} from 'react-native-svg'
32
import {SVGProps} from 'react'
3+
import Svg, {Defs, G, LinearGradient, Path, Stop} from 'react-native-svg'
44

55
export const GovernanceBackground = (props: SVGProps<SVGSVGElement>): JSX.Element => {
66
return (

apps/wallet-mobile/src/features/Banners/useCases/ConsiderDRepToUsStakingCenterBanner.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import {shouldShowDRep2UsOnStakingCenter, useBanner} from '@yoroi/banners'
2+
import {GOVERNANCE_YOROI_DREP_ID_HEX} from '@yoroi/staking'
23
import {Banners} from '@yoroi/types'
34
import * as React from 'react'
45

56
import {useSelectedWallet} from '../../WalletManager/common/hooks/useSelectedWallet'
67
import {DelegateToYoroiDRepBanner} from '../common/DelegateToYoroiDRepBanner/DelegateToYoroiDRepBanner'
7-
import {GOVERNANCE_YOROI_DREP_ID_HEX} from '@yoroi/staking'
88

99
export const ConsiderDRepToUsStakingCenterBanner = () => {
1010
const {
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,56 @@
11
import {shouldShowDRep2UsOnTxHistory, useBanner} from '@yoroi/banners'
2+
import {GOVERNANCE_YOROI_DREP_ID_HEX, useStakingKeyState} from '@yoroi/staking'
3+
import {useTheme} from '@yoroi/theme'
24
import {Banners} from '@yoroi/types'
35
import * as React from 'react'
6+
import {StyleSheet} from 'react-native'
47

8+
import {useStakingInfo} from '../../../legacy/Dashboard/StakePoolInfos'
9+
import {useStakingKey} from '../../../yoroi-wallets/hooks'
10+
import {usePortfolioPrimaryBalance} from '../../Portfolio/common/hooks/usePortfolioPrimaryBalance'
11+
import {mapStakingKeyStateToGovernanceAction} from '../../Staking/Governance/common/helpers'
512
import {useSelectedWallet} from '../../WalletManager/common/hooks/useSelectedWallet'
613
import {DelegateToYoroiDRepBanner} from '../common/DelegateToYoroiDRepBanner/DelegateToYoroiDRepBanner'
7-
import {GOVERNANCE_YOROI_DREP_ID_HEX} from '@yoroi/staking'
814

915
export const ConsiderDRepToUsTxHistoryBanner = () => {
1016
const {
1117
wallet: {bannersManager: manager},
1218
} = useSelectedWallet()
1319
const {dismiss, dismissedAt} = useBanner({id: Banners.Id.DRep2UsTxHistory, manager})
20+
const {styles} = useStyles()
21+
const {wallet} = useSelectedWallet()
22+
const stakingInfo = useStakingInfo(wallet, {suspense: true})
23+
const hasStakingKeyRegistered = stakingInfo?.data?.status !== 'not-registered'
24+
const stakingKeyHash = useStakingKey(wallet)
25+
26+
const {data: stakingStatus} = useStakingKeyState(stakingKeyHash, {
27+
refetchOnMount: true,
28+
suspense: true,
29+
})
30+
31+
const action = stakingStatus ? mapStakingKeyStateToGovernanceAction(stakingStatus) : null
32+
const ptDecimals = wallet?.portfolioPrimaryTokenInfo.decimals ?? 0
33+
const balance = usePortfolioPrimaryBalance({wallet})
1434

1535
const isVisible = shouldShowDRep2UsOnTxHistory({
1636
yoroiDRepIdHex: GOVERNANCE_YOROI_DREP_ID_HEX,
17-
currentDRepIdHex: 'hi',
18-
isStaking: true,
37+
currentDRepIdHex: action?.kind === 'delegate' ? action.hash : '',
38+
isStaking: hasStakingKeyRegistered,
1939
dismissedAt,
20-
ptBalance: 0n,
21-
ptMinBalance: 0n,
40+
ptBalance: balance.quantity,
41+
ptMinBalance: 5n * BigInt(ptDecimals),
42+
})
43+
44+
return <DelegateToYoroiDRepBanner style={styles.root} onDismiss={dismiss} isVisible={isVisible} />
45+
}
46+
47+
const useStyles = () => {
48+
const {atoms} = useTheme()
49+
const styles = StyleSheet.create({
50+
root: {
51+
...atoms.px_lg,
52+
},
2253
})
2354

24-
return <DelegateToYoroiDRepBanner onDismiss={dismiss} isVisible={isVisible} />
55+
return {styles}
2556
}

0 commit comments

Comments
 (0)