|
|
@@ -4,28 +4,54 @@ import { Trans, useTranslation } from 'react-i18next'
|
|
|
import * as eventTracking from '../../../infrastructure/event-tracking'
|
|
|
import { useDetachCompileContext } from '../../../shared/context/detach-compile-context'
|
|
|
import { startFreeTrial } from '../../../main/account-upgrade'
|
|
|
+import usePersistedState from '../../../shared/hooks/use-persisted-state'
|
|
|
+
|
|
|
+const ONE_DAY = 24 * 60 * 60 * 24 * 1000
|
|
|
|
|
|
function CompileTimeWarning() {
|
|
|
const { t } = useTranslation()
|
|
|
|
|
|
+ const [lastDisplay, setLastDisplay] = usePersistedState(
|
|
|
+ 'compile-time-warning-displayed-at',
|
|
|
+ 0,
|
|
|
+ true
|
|
|
+ )
|
|
|
+
|
|
|
const { showCompileTimeWarning, setShowCompileTimeWarning } =
|
|
|
useDetachCompileContext()
|
|
|
|
|
|
useEffect(() => {
|
|
|
if (showCompileTimeWarning) {
|
|
|
+ if (lastDisplay && Date.now() - lastDisplay < ONE_DAY) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ setLastDisplay(Date.now())
|
|
|
eventTracking.sendMB('compile-time-warning-displayed', {})
|
|
|
}
|
|
|
- }, [showCompileTimeWarning])
|
|
|
+ }, [showCompileTimeWarning, lastDisplay, setLastDisplay])
|
|
|
|
|
|
- const closeWarning = () => {
|
|
|
- eventTracking.sendMB('compile-time-warning-dismissed', {})
|
|
|
+ const getTimeSinceDisplayed = useCallback(() => {
|
|
|
+ return (Date.now() - lastDisplay) / 1000
|
|
|
+ }, [lastDisplay])
|
|
|
+
|
|
|
+ const closeWarning = useCallback(() => {
|
|
|
+ eventTracking.sendMB('compile-time-warning-dismissed', {
|
|
|
+ 'time-since-displayed': getTimeSinceDisplayed(),
|
|
|
+ })
|
|
|
setShowCompileTimeWarning(false)
|
|
|
- }
|
|
|
+ }, [getTimeSinceDisplayed, setShowCompileTimeWarning])
|
|
|
|
|
|
- const handleUpgradeClick = useCallback(event => {
|
|
|
- event.preventDefault()
|
|
|
- startFreeTrial('compile-time-warning')
|
|
|
- }, [])
|
|
|
+ const handleUpgradeClick = useCallback(
|
|
|
+ event => {
|
|
|
+ event.preventDefault()
|
|
|
+ startFreeTrial('compile-time-warning')
|
|
|
+ eventTracking.sendMB('compile-time-warning-upgrade-click', {
|
|
|
+ 'time-since-displayed': getTimeSinceDisplayed(),
|
|
|
+ })
|
|
|
+ setShowCompileTimeWarning(false)
|
|
|
+ },
|
|
|
+ [getTimeSinceDisplayed, setShowCompileTimeWarning]
|
|
|
+ )
|
|
|
|
|
|
if (!showCompileTimeWarning) {
|
|
|
return null
|