import React, { FC, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { UncontrolledTooltip } from 'reactstrap'; import { withUnstatedContainers } from './UnstatedUtils'; import { toastError } from '~/client/util/apiNotification'; import AppContainer from '~/client/services/AppContainer'; import PageContainer from '~/client/services/PageContainer'; type Props = { appContainer: AppContainer, pageContainer: PageContainer, pageId: string, }; const SubscribeButton: FC = (props: Props) => { const { t } = useTranslation(); const { appContainer, pageId } = props; const [isSubscribing, setIsSubscribing] = useState(false); const handleClick = async() => { if (appContainer.isGuestUser) { return; } try { const res = await appContainer.apiv3Put('page/subscribe', { pageId, status: !isSubscribing }); if (res) { const { subscription } = res.data; setIsSubscribing(subscription.status === 'SUBSCRIBE'); } } catch (err) { toastError(err); } }; return ( <> {appContainer.isGuestUser && ( {t('Not available for guest')} )} ); }; /** * Wrapper component for using unstated */ const SubscribeButtonWrapper = withUnstatedContainers(SubscribeButton, [AppContainer, PageContainer]); export default SubscribeButtonWrapper;