// @flow import React from 'react'; import classnames from 'classnames'; import usePersistedState from 'effects/use-persisted-state'; import { FormField } from 'component/common/form'; import Button from 'component/button'; import { LbryFirst } from 'lbry-redux'; import LicenseType from './license-type'; import Card from 'component/common/card'; import { getAuthToken } from 'util/saved-passwords'; import ErrorText from 'component/common/error-text'; // @if TARGET='app' import { ipcRenderer } from 'electron'; // @endif type Props = { user: ?User, language: ?string, name: ?string, licenseType: ?string, otherLicenseDescription: ?string, licenseUrl: ?string, disabled: boolean, updatePublishForm: ({}) => void, useLBRYUploader: boolean, needsYTAuth: boolean, fetchAccessToken: () => void, accessToken: string, }; function PublishAdditionalOptions(props: Props) { const { user, language, name, licenseType, otherLicenseDescription, licenseUrl, updatePublishForm, useLBRYUploader, needsYTAuth, } = props; const [hideSection, setHideSection] = usePersistedState('publish-advanced-options', true); const [hasLaunchedLbryFirst, setHasLaunchedLbryFirst] = React.useState(false); const [ytError, setYtError] = React.useState(true); const isLBRYFirstUser = user && user.lbry_first_approved; const showLbryFirstCheckbox = !IS_WEB && isLBRYFirstUser && hasLaunchedLbryFirst; const authToken = getAuthToken(); function toggleHideSection() { setHideSection(!hideSection); } function signup() { updatePublishForm({ ytSignupPending: true }); LbryFirst.ytSignup() .then(response => { updatePublishForm({ needsYTAuth: false, ytSignupPending: false }); }) .catch(error => { updatePublishForm({ ytSignupPending: false }); setYtError(true); console.error(error); // eslint-disable-line }); } function unlink() { LbryFirst.remove() .then(response => { updatePublishForm({ needsYTAuth: true }); }) .catch(error => { setYtError(true); console.error(error); // eslint-disable-line }); } React.useEffect(() => { if (isLBRYFirstUser) { ipcRenderer.send('launch-lbry-first'); ipcRenderer.on('lbry-first-launched', () => { setHasLaunchedLbryFirst(true); }); } }, [isLBRYFirstUser, setHasLaunchedLbryFirst]); React.useEffect(() => { if (useLBRYUploader) { LbryFirst.hasYTAuth(authToken) .then(response => { updatePublishForm({ needsYTAuth: !response.HasAuth }); }) .catch(error => { setYtError(true); console.error(error); // eslint-disable-line }); } }, [authToken, updatePublishForm, useLBRYUploader]); return ( {!hideSection && (
{showLbryFirstCheckbox && ( <> updatePublishForm({ useLBRYUploader: !useLBRYUploader })} label={ {__('Automagically upload to your youtube channel.')}{' '}
)} )}
updatePublishForm({ language: event.target.value })} > updatePublishForm({ licenseType: newLicenseType, licenseUrl: newLicenseUrl, }) } handleLicenseDescriptionChange={event => updatePublishForm({ otherLicenseDescription: event.target.value, }) } handleLicenseUrlChange={event => updatePublishForm({ licenseUrl: event.target.value })} />
)}
} /> ); } export default PublishAdditionalOptions;