import { useEffect, useState } from "react"; import { useAppSelector } from "../store"; import * as api from "../helpers/api"; import * as storage from "../helpers/storage"; import Icon from "./Icon"; import "../less/about-site-dialog.less"; interface State { latestVersion: string; show: boolean; } const UpdateVersionBanner: React.FC = () => { const profile = useAppSelector((state) => state.global.systemStatus.profile); const [state, setState] = useState({ latestVersion: "", show: false, }); useEffect(() => { api.getRepoLatestTag().then((latestTag) => { const { skippedVersion } = storage.get(["skippedVersion"]); const latestVersion = latestTag.slice(1) || "0.0.0"; const currentVersion = profile.version; const skipped = skippedVersion ? skippedVersion === latestVersion : false; setState({ latestVersion, show: !skipped && currentVersion < latestVersion, }); }); }, []); const onSkip = () => { storage.set({ skippedVersion: state.latestVersion }); setState((s) => ({ ...s, show: false, })); }; if (!state.show) return null; return (
New Update {state.latestVersion}
); }; export default UpdateVersionBanner;