diff --git a/components/common/UpdateNotice.js b/components/common/UpdateNotice.js index a31c2abf..a2963995 100644 --- a/components/common/UpdateNotice.js +++ b/components/common/UpdateNotice.js @@ -1,27 +1,38 @@ -import React from 'react'; +import { useState, useEffect, useCallback } from 'react'; import { FormattedMessage } from 'react-intl'; -import useVersion from 'hooks/useVersion'; -import styles from './UpdateNotice.module.css'; -import ButtonLayout from '../layout/ButtonLayout'; +import ButtonLayout from 'components/layout/ButtonLayout'; +import useStore, { checkVersion } from 'store/version'; +import { setItem } from 'lib/web'; +import { VERSION_CHECK, VERSION_URL } from 'lib/constants'; import Button from './Button'; -import useForceUpdate from '../../hooks/useForceUpdate'; +import styles from './UpdateNotice.module.css'; export default function UpdateNotice() { - const forceUpdate = useForceUpdate(); - const { hasUpdate, checked, latest, updateCheck } = useVersion(true); + const { latest, checked, hasUpdate } = useStore(); + const [dismissed, setDismissed] = useState(false); + + const updateCheck = useCallback(() => { + setItem(VERSION_CHECK, { version: latest, time: Date.now() }); + }, [latest]); function handleViewClick() { - location.href = 'https://github.com/mikecao/umami/releases'; updateCheck(); - forceUpdate(); + setDismissed(true); + location.href = VERSION_URL; } function handleDismissClick() { updateCheck(); - forceUpdate(); + setDismissed(true); } - if (!hasUpdate || checked) { + useEffect(() => { + if (!checked) { + checkVersion(); + } + }, []); + + if (!hasUpdate || dismissed) { return null; } diff --git a/components/layout/Footer.js b/components/layout/Footer.js index 603b9369..21ce0573 100644 --- a/components/layout/Footer.js +++ b/components/layout/Footer.js @@ -3,11 +3,11 @@ import classNames from 'classnames'; import { FormattedMessage } from 'react-intl'; import Link from 'components/common/Link'; import styles from './Footer.module.css'; -import useVersion from 'hooks/useVersion'; +import useStore from 'store/version'; import { HOMEPAGE_URL, VERSION_URL } from 'lib/constants'; export default function Footer() { - const { current } = useVersion(); + const { current } = useStore(); return (