import React from 'react' import { useAsyncCallback } from '@dawnlabs/tacklebox' import Button from './Button' function useWindowListener(key, fn) { React.useEffect(() => { window.addEventListener(key, fn) return () => window.removeEventListener(key, fn) }, []) } function TweetButton(props) { const [online, setOnline] = React.useState(true) const [onClick, { loading }] = useAsyncCallback(props.onClick) React.useEffect(() => { setOnline(Boolean(window && window.navigator && window.navigator.onLine)) }, []) useWindowListener('offline', () => setOnline(false)) useWindowListener('online', () => setOnline(true)) if (!online) { return null } return ( ) } export default React.memo(TweetButton)