// @flow import * as MODALS from 'constants/modal_types'; import * as ICONS from 'constants/icons'; import React, { useRef } from 'react'; import { parseURI } from 'lbry-redux'; import Button from 'component/button'; import useHover from 'util/use-hover'; type SubscriptionArgs = { channelName: string, uri: string, }; type Props = { uri: string, isSubscribed: boolean, subscriptions: Array, doChannelSubscribe: ({ channelName: string, uri: string }) => void, doChannelUnsubscribe: SubscriptionArgs => void, doOpenModal: (id: string) => void, showSnackBarOnSubscribe: boolean, doToast: ({ message: string }) => void, }; export default function SubscribeButton(props: Props) { const { uri, doChannelSubscribe, doChannelUnsubscribe, doOpenModal, subscriptions, isSubscribed, showSnackBarOnSubscribe, doToast, } = props; const buttonRef = useRef(); const isHovering = useHover(buttonRef); const { channelName } = parseURI(uri); const claimName = '@' + channelName; const subscriptionHandler = isSubscribed ? doChannelUnsubscribe : doChannelSubscribe; const subscriptionLabel = isSubscribed ? __('Following') : __('Follow'); const unfollowOverride = isSubscribed && isHovering && __('Unfollow'); return (