make getBalance global
This commit is contained in:
@@ -13,14 +13,12 @@ import { NymCard } from './NymCard'
|
|||||||
import { Alert } from '@material-ui/lab'
|
import { Alert } from '@material-ui/lab'
|
||||||
import { handleCopy } from './CopyToClipboard'
|
import { handleCopy } from './CopyToClipboard'
|
||||||
import { truncate } from '../utils'
|
import { truncate } from '../utils'
|
||||||
import { useGetBalance } from '../hooks/useGetBalance'
|
|
||||||
|
|
||||||
export const BalanceCard = () => {
|
export const BalanceCard = () => {
|
||||||
|
const { getBalance } = useContext(ClientContext)
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
|
|
||||||
const { balance, isLoading, error, getBalance } = useGetBalance()
|
useEffect(getBalance.fetchBalance, [])
|
||||||
|
|
||||||
useEffect(getBalance, [])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div style={{ margin: theme.spacing(3) }}>
|
<div style={{ margin: theme.spacing(3) }}>
|
||||||
@@ -30,7 +28,7 @@ export const BalanceCard = () => {
|
|||||||
noPadding
|
noPadding
|
||||||
Action={
|
Action={
|
||||||
<Tooltip title="Refresh balance">
|
<Tooltip title="Refresh balance">
|
||||||
<IconButton onClick={getBalance}>
|
<IconButton onClick={getBalance.fetchBalance}>
|
||||||
<Refresh />
|
<Refresh />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
@@ -38,14 +36,16 @@ export const BalanceCard = () => {
|
|||||||
>
|
>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<div style={{ display: 'flex', justifyContent: 'center' }}>
|
<div style={{ display: 'flex', justifyContent: 'center' }}>
|
||||||
{isLoading ? (
|
{getBalance.isLoading ? (
|
||||||
<CircularProgress size={24} />
|
<CircularProgress size={24} />
|
||||||
) : error ? (
|
) : getBalance.error ? (
|
||||||
<Alert severity="error" style={{ width: '100%' }}>
|
<Alert severity="error" style={{ width: '100%' }}>
|
||||||
{error}
|
{getBalance.error}
|
||||||
</Alert>
|
</Alert>
|
||||||
) : (
|
) : (
|
||||||
<Typography variant="h6">{balance?.printable_balance}</Typography>
|
<Typography variant="h6">
|
||||||
|
{getBalance.balance?.printable_balance}
|
||||||
|
</Typography>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
|
|||||||
@@ -2,10 +2,12 @@ import React, { createContext, useEffect, useState } from 'react'
|
|||||||
import { useHistory } from 'react-router-dom'
|
import { useHistory } from 'react-router-dom'
|
||||||
import { invoke } from '@tauri-apps/api'
|
import { invoke } from '@tauri-apps/api'
|
||||||
import { Coin, TClientDetails } from '../types'
|
import { Coin, TClientDetails } from '../types'
|
||||||
|
import { TUseGetBalance, useGetBalance } from '../hooks/useGetBalance'
|
||||||
|
|
||||||
type TClientContext = {
|
type TClientContext = {
|
||||||
clientDetails?: TClientDetails
|
clientDetails?: TClientDetails
|
||||||
gasPrice?: Coin
|
gasPrice?: Coin
|
||||||
|
getBalance: TUseGetBalance
|
||||||
logIn: (clientDetails: TClientDetails) => void
|
logIn: (clientDetails: TClientDetails) => void
|
||||||
logOut: () => void
|
logOut: () => void
|
||||||
}
|
}
|
||||||
@@ -22,6 +24,8 @@ export const ClientContextProvider = ({
|
|||||||
|
|
||||||
const history = useHistory()
|
const history = useHistory()
|
||||||
|
|
||||||
|
const getBalance = useGetBalance()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
!clientDetails ? history.push('/signin') : history.push('/balance')
|
!clientDetails ? history.push('/signin') : history.push('/balance')
|
||||||
}, [clientDetails])
|
}, [clientDetails])
|
||||||
@@ -40,6 +44,7 @@ export const ClientContextProvider = ({
|
|||||||
value={{
|
value={{
|
||||||
clientDetails,
|
clientDetails,
|
||||||
gasPrice,
|
gasPrice,
|
||||||
|
getBalance,
|
||||||
logIn,
|
logIn,
|
||||||
logOut,
|
logOut,
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -2,12 +2,19 @@ import { useState } from 'react'
|
|||||||
import { invoke } from '@tauri-apps/api'
|
import { invoke } from '@tauri-apps/api'
|
||||||
import { Balance } from '../types'
|
import { Balance } from '../types'
|
||||||
|
|
||||||
export const useGetBalance = () => {
|
export type TUseGetBalance = {
|
||||||
|
error?: string
|
||||||
|
balance?: Balance
|
||||||
|
isLoading: boolean
|
||||||
|
fetchBalance: () => void
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useGetBalance = (): TUseGetBalance => {
|
||||||
const [balance, setBalance] = useState<Balance>()
|
const [balance, setBalance] = useState<Balance>()
|
||||||
const [error, setEror] = useState<string>()
|
const [error, setEror] = useState<string>()
|
||||||
const [isLoading, setIsLoading] = useState(false)
|
const [isLoading, setIsLoading] = useState(false)
|
||||||
|
|
||||||
const getBalance = () => {
|
const fetchBalance = () => {
|
||||||
setIsLoading(true)
|
setIsLoading(true)
|
||||||
setEror(undefined)
|
setEror(undefined)
|
||||||
invoke('get_balance')
|
invoke('get_balance')
|
||||||
@@ -24,6 +31,6 @@ export const useGetBalance = () => {
|
|||||||
error,
|
error,
|
||||||
isLoading,
|
isLoading,
|
||||||
balance,
|
balance,
|
||||||
getBalance,
|
fetchBalance,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import { theme } from '../theme'
|
|||||||
import { useGetBalance } from '../hooks/useGetBalance'
|
import { useGetBalance } from '../hooks/useGetBalance'
|
||||||
|
|
||||||
export const Balance = () => {
|
export const Balance = () => {
|
||||||
const { balance, isLoading, error, getBalance } = useGetBalance()
|
const { balance, isLoading, error, fetchBalance } = useGetBalance()
|
||||||
|
|
||||||
useEffect(getBalance, [])
|
useEffect(fetchBalance, [])
|
||||||
|
|
||||||
const RefreshAction = () => (
|
const RefreshAction = () => (
|
||||||
<Button
|
<Button
|
||||||
@@ -18,7 +18,7 @@ export const Balance = () => {
|
|||||||
size="small"
|
size="small"
|
||||||
color="primary"
|
color="primary"
|
||||||
type="submit"
|
type="submit"
|
||||||
onClick={getBalance}
|
onClick={fetchBalance}
|
||||||
disabled={isLoading}
|
disabled={isLoading}
|
||||||
disableElevation
|
disableElevation
|
||||||
startIcon={<Refresh />}
|
startIcon={<Refresh />}
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ export const SendWizard = () => {
|
|||||||
const [requestError, setRequestError] = useState<string>()
|
const [requestError, setRequestError] = useState<string>()
|
||||||
const [confirmedData, setConfirmedData] = useState<TauriTxResult['details']>()
|
const [confirmedData, setConfirmedData] = useState<TauriTxResult['details']>()
|
||||||
|
|
||||||
|
const { getBalance } = useContext(ClientContext)
|
||||||
|
|
||||||
const steps = ['Enter address', 'Review and send', 'Await confirmation']
|
const steps = ['Enter address', 'Review and send', 'Await confirmation']
|
||||||
|
|
||||||
const { clientDetails } = useContext(ClientContext)
|
const { clientDetails } = useContext(ClientContext)
|
||||||
@@ -68,8 +70,8 @@ export const SendWizard = () => {
|
|||||||
const { details } = res as TauriTxResult
|
const { details } = res as TauriTxResult
|
||||||
setActiveStep((s) => s + 1)
|
setActiveStep((s) => s + 1)
|
||||||
setConfirmedData(details)
|
setConfirmedData(details)
|
||||||
|
|
||||||
setIsLoading(false)
|
setIsLoading(false)
|
||||||
|
getBalance.fetchBalance()
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
setRequestError(e)
|
setRequestError(e)
|
||||||
|
|||||||
Reference in New Issue
Block a user