// @flow import { DOMAIN } from 'config'; import { 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'; type Props = { name: string, uri: string, isStillEditing: boolean, myClaimForUri: ?StreamClaim, amountNeededForTakeover: number, prepareEdit: ({}, string) => void, updatePublishForm: ({}) => void, activeChannelClaim: ?ChannelClaim, incognito: boolean, }; function PublishName(props: Props) { const { name, uri, isStillEditing, myClaimForUri, prepareEdit, updatePublishForm, activeChannelClaim, incognito, } = props; const [nameError, setNameError] = useState(undefined); const [blurred, setBlurred] = React.useState(false); const activeChannelName = activeChannelClaim && activeChannelClaim.name; let prefix = IS_WEB ? `${DOMAIN}/` : 'lbry://'; if (activeChannelName && !incognito) { prefix += `${activeChannelName}/`; } function editExistingClaim() { if (myClaimForUri) { prepareEdit(myClaimForUri, uri); } } function handleNameChange(event) { updatePublishForm({ name: event.target.value }); } useEffect(() => { if (!blurred && !name) { return; } let nameError; if (!name) { nameError = __('A name is required'); } else if (!isNameValid(name, false)) { nameError = INVALID_NAME_ERROR; } setNameError(nameError); }, [name, blurred]); return ( <>
{prefix}
setBlurred(true)} />
); } export default PublishName;