// @flow import * as ICONS from 'constants/icons'; import * as MODALS from 'constants/modal_types'; import * as PAGES from 'constants/pages'; import React from 'react'; import CreditAmount from 'component/common/credit-amount'; import Button from 'component/button'; import HelpLink from 'component/common/help-link'; import Card from 'component/common/card'; import LbcSymbol from 'component/common/lbc-symbol'; import I18nMessage from 'component/i18nMessage'; import { formatNumberWithCommas } from 'util/number'; type Props = { balance: number, totalBalance: number, claimsBalance: number, supportsBalance: number, tipsBalance: number, doOpenModal: (string) => void, hasSynced: boolean, doFetchUtxoCounts: () => void, doUtxoConsolidate: () => void, fetchingUtxoCounts: boolean, consolidatingUtxos: boolean, consolidateIsPending: boolean, massClaimingTips: boolean, massClaimIsPending: boolean, utxoCounts: { [string]: number }, }; export const WALLET_CONSOLIDATE_UTXOS = 400; const LARGE_WALLET_BALANCE = 100; const WalletBalance = (props: Props) => { const { balance, claimsBalance, supportsBalance, tipsBalance, doOpenModal, hasSynced, doUtxoConsolidate, doFetchUtxoCounts, consolidatingUtxos, consolidateIsPending, massClaimingTips, massClaimIsPending, utxoCounts, } = props; const [detailsExpanded, setDetailsExpanded] = React.useState(false); const { other: otherCount = 0 } = utxoCounts || {}; const totalBalance = balance + tipsBalance + supportsBalance + claimsBalance; const totalLocked = tipsBalance + claimsBalance + supportsBalance; const operationPending = massClaimIsPending || massClaimingTips || consolidateIsPending || consolidatingUtxos; React.useEffect(() => { if (balance > LARGE_WALLET_BALANCE && detailsExpanded) { doFetchUtxoCounts(); } }, [doFetchUtxoCounts, balance, detailsExpanded]); return ( } subtitle={ totalLocked > 0 ? ( }}> Your total balance. All of this is yours, but some %lbc% is in use on channels and content right now. ) : ( {__('Your total balance.')} ) } actions={ <>

}}> %lbc_amount% immediately spendable

, }} > %lbc_amount% boosting content

{detailsExpanded && (
{__('...earned from others')} ({__('Unlock to spend')})
{Boolean(tipsBalance) && (
{__('...on initial publishes')} ({__('Delete or edit past content to spend')})
{__('...supporting content')} ({__('Delete supports to spend')})
)} {hasSynced ? (

{__('A backup of your wallet is synced with a cloud service.')}

) : (

{__( 'Your wallet is not currently using a cloud sync service. You are in control of backing up your wallet.' )}

)}
{(otherCount > WALLET_CONSOLIDATE_UTXOS || consolidateIsPending || consolidatingUtxos) && (

doUtxoConsolidate()} disabled={operationPending} label={ consolidateIsPending || consolidatingUtxos ? __('Consolidating...') : __('Consolidate Now') } /> ), help: , }} > Your wallet has a lot of change lying around. Consolidating will speed up your transactions. This could take some time. %now%%help%

)} } /> ); }; export default WalletBalance;