// @flow import React, { Fragment } from 'react'; import { FormField } from 'component/common/form'; import BusyIndicator from 'component/common/busy-indicator'; import ChannelCreate from 'component/channelCreate'; import { CHANNEL_NEW, CHANNEL_ANONYMOUS } from 'constants/claim'; type Props = { channel: string, // currently selected channel channels: ?Array, balance: number, onChannelChange: string => void, createChannel: (string, number) => Promise, fetchChannelListMine: () => void, fetchingChannels: boolean, emailVerified: boolean, includeAnonymous?: boolean, includeNew?: boolean, label?: string, injected?: Array, }; type State = { addingChannel: boolean, }; class ChannelSection extends React.PureComponent { constructor(props: Props) { super(props); this.state = { addingChannel: false, }; (this: any).handleChannelChange = this.handleChannelChange.bind(this); (this: any).handleChangeToNewChannel = this.handleChangeToNewChannel.bind(this); } componentDidMount() { const { channels, fetchChannelListMine, fetchingChannels, emailVerified } = this.props; if (IS_WEB && !emailVerified) { return; } if ((!channels || !channels.length) && !fetchingChannels) { fetchChannelListMine(); } } handleChannelChange(event: SyntheticInputEvent<*>) { const { onChannelChange } = this.props; const channel = event.target.value; if (channel === CHANNEL_NEW) { this.setState({ addingChannel: true }); onChannelChange(channel); } else { this.setState({ addingChannel: false }); onChannelChange(channel); } } handleChangeToNewChannel(props: Object) { const { onChannelChange } = this.props; const { newChannelName } = props; this.setState({ addingChannel: false }); const channelName = `@${newChannelName.trim()}`; onChannelChange(channelName); } render() { const channel = this.state.addingChannel ? 'new' : this.props.channel; const { fetchingChannels, channels = [], includeAnonymous, includeNew, label, injected = [] } = this.props; const { addingChannel } = this.state; return ( {fetchingChannels ? ( ) : (
{includeAnonymous && } {channels && channels.map(({ name, claim_id: claimId }) => ( ))} {injected && injected.map(item => ( ))} {includeNew && }
{addingChannel && (
)}
)}
); } } export default ChannelSection;