// @flow import { CHANNEL_NEW, CHANNEL_ANONYMOUS, MINIMUM_PUBLISH_BID, INVALID_NAME_ERROR } from 'constants/claim'; import React, { useState, useEffect } from 'react'; import { isNameValid } from 'lbry-redux'; import { FormField } from 'component/common/form'; import NameHelpText from './name-help-text'; import BidHelpText from './bid-help-text'; import Card from 'component/common/card'; type Props = { name: string, channel: string, uri: string, bid: number, balance: number, isStillEditing: boolean, myClaimForUri: ?StreamClaim, isResolvingUri: boolean, amountNeededForTakeover: number, prepareEdit: ({}, string) => void, updatePublishForm: ({}) => void, }; function PublishName(props: Props) { const { name, channel, uri, isStillEditing, myClaimForUri, bid, isResolvingUri, amountNeededForTakeover, prepareEdit, updatePublishForm, balance, } = props; const [nameError, setNameError] = useState(undefined); const [bidError, setBidError] = useState(undefined); const previousBidAmount = myClaimForUri && Number(myClaimForUri.amount); function editExistingClaim() { if (myClaimForUri) { prepareEdit(myClaimForUri, uri); } } useEffect(() => { let nameError; if (!name) { nameError = __('A name is required'); } else if (!isNameValid(name, false)) { nameError = INVALID_NAME_ERROR; } setNameError(nameError); }, [name]); useEffect(() => { const totalAvailableBidAmount = previousBidAmount ? previousBidAmount + balance : balance; let bidError; if (bid === 0) { bidError = __('Deposit cannot be 0'); } else if (bid < MINIMUM_PUBLISH_BID) { bidError = __('Your deposit must be higher'); } else if (totalAvailableBidAmount < bid) { bidError = __('Deposit cannot be higher than your balance'); } else if (totalAvailableBidAmount <= bid + 0.05) { bidError = __('Please decrease your deposit to account for transaction fees or acquire more LBC.'); } setBidError(bidError); updatePublishForm({ bidError: bidError }); }, [bid, previousBidAmount, balance]); return (
{`lbry://${ !channel || channel === CHANNEL_ANONYMOUS || channel === CHANNEL_NEW ? '' : `${channel}/` }`}
updatePublishForm({ name: event.target.value })} />
updatePublishForm({ bid: parseFloat(event.target.value) })} onWheel={e => e.stopPropagation()} helper={ } /> } /> ); } export default PublishName;