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 useOnlineListener() { const [online, setOnline] = React.useState(true) React.useEffect(() => { setOnline( typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean' ? navigator.onLine : true ) }, []) useWindowListener('offline', () => setOnline(false)) useWindowListener('online', () => setOnline(true)) return online } function TweetButton(props) { const online = useOnlineListener() const [onClick, { loading }] = useAsyncCallback(props.onClick) if (!online) { return null } return ( ) } export default React.memo(TweetButton)