// @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, utxoCounts: { [string]: number }, pendingUtxoConsolidating: Array, }; const WALLET_CONSOLIDATE_UTXOS = 400; const LARGE_WALLET_BALANCE = 100; const WalletBalance = (props: Props) => { const { balance, claimsBalance, supportsBalance, tipsBalance, doOpenModal, hasSynced, pendingUtxoConsolidating, doUtxoConsolidate, doFetchUtxoCounts, consolidatingUtxos, utxoCounts, } = props; const [detailsExpanded, setDetailsExpanded] = React.useState(false); const { other: otherCount = 0 } = utxoCounts || {}; const totalBalance = balance + tipsBalance + supportsBalance + claimsBalance; const totalLocked = tipsBalance + claimsBalance + supportsBalance; React.useEffect(() => { if (balance > LARGE_WALLET_BALANCE) { doFetchUtxoCounts(); } }, [doFetchUtxoCounts, balance]); 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% contributing to content

{detailsExpanded && (
{__('...earned from others (unlock to spend)')}
{__('...on initial publishes (delete or edit past content to spend)')}
{__('...supporting content (delete supports to spend)')}
)} {/* @if TARGET='app' */} {!hasSynced ? (

{__('A backup of your wallet is synced with lbry.tv.')}

) : (

{__('Your wallet is not currently synced with lbry.tv. You are in control of backing up your wallet.')}

)} {/* @endif */}
{(otherCount > WALLET_CONSOLIDATE_UTXOS || pendingUtxoConsolidating.length || consolidatingUtxos) && (

doUtxoConsolidate()} disabled={pendingUtxoConsolidating.length || consolidatingUtxos} label={ pendingUtxoConsolidating.length || 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;