feat: add staking for full nodes (#590)

* feat: add staking

* feat: enable staking in full mode, add loading state

* chore: revert constants
This commit is contained in:
Cafe137
2023-02-19 22:58:55 +01:00
committed by GitHub
parent e780b971d9
commit fac72b1299
7 changed files with 293 additions and 753 deletions
+10
View File
@@ -13,6 +13,7 @@ import { createContext, ReactChild, ReactElement, useContext, useEffect, useStat
import semver from 'semver'
import PackageJson from '../../package.json'
import { useLatestBeeRelease } from '../hooks/apiHooks'
import { BzzToken } from '../models/BzzToken'
import { Token } from '../models/Token'
import type { Balance, ChequebookBalance, Settlements } from '../types'
import { Context as SettingsContext } from './Settings'
@@ -62,6 +63,7 @@ interface ContextInterface {
chequebookAddress: ChequebookAddressResponse | null
peers: Peer[] | null
chequebookBalance: ChequebookBalance | null
stake: BzzToken | null
peerBalances: Balance[] | null
peerCheques: LastChequesResponse | null
settlements: Settlements | null
@@ -98,6 +100,7 @@ const initialValues: ContextInterface = {
nodeInfo: null,
topology: null,
chequebookAddress: null,
stake: null,
peers: null,
chequebookBalance: null,
peerBalances: null,
@@ -225,6 +228,7 @@ export function Provider({ children, isDesktop }: Props): ReactElement {
const [chequebookAddress, setChequebookAddress] = useState<ChequebookAddressResponse | null>(null)
const [peers, setPeers] = useState<Peer[] | null>(null)
const [chequebookBalance, setChequebookBalance] = useState<ChequebookBalance | null>(null)
const [stake, setStake] = useState<BzzToken | null>(null)
const [peerBalances, setPeerBalances] = useState<Balance[] | null>(null)
const [peerCheques, setPeerCheques] = useState<LastChequesResponse | null>(null)
const [settlements, setSettlements] = useState<Settlements | null>(null)
@@ -388,6 +392,11 @@ export function Provider({ children, isDesktop }: Props): ReactElement {
.then(setChequebookBalance)
.catch(() => setChequebookBalance(null)),
beeDebugApi
.getStake({ timeout: TIMEOUT })
.then(stake => setStake(new BzzToken(stake)))
.catch(() => setStake(null)),
// Peer balances
peerBalanceWrapper()
.then(setPeerBalances)
@@ -471,6 +480,7 @@ export function Provider({ children, isDesktop }: Props): ReactElement {
chequebookAddress,
peers,
chequebookBalance,
stake,
peerBalances,
peerCheques,
settlements,