From 8034dd00746f322f4a9518067fc112b364babfc2 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Mon, 9 Dec 2024 00:54:39 +0530 Subject: [PATCH] feat: show snackbar to upgrade maxum --- src/components/molecules/NavBar.tsx | 37 ++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/components/molecules/NavBar.tsx b/src/components/molecules/NavBar.tsx index 62275078..1755cb20 100644 --- a/src/components/molecules/NavBar.tsx +++ b/src/components/molecules/NavBar.tsx @@ -1,9 +1,9 @@ -import React, { useState, useContext } from 'react'; +import React, { useState, useContext, useEffect } from 'react'; import axios from 'axios'; import styled from "styled-components"; import { stopRecording } from "../../api/recording"; import { useGlobalInfoStore } from "../../context/globalInfo"; -import { IconButton, Menu, MenuItem, Typography, Chip, Button, Modal, Tabs, Tab, Box } from "@mui/material"; +import { IconButton, Menu, MenuItem, Typography, Chip, Button, Modal, Tabs, Tab, Box, Snackbar } from "@mui/material"; import { AccountCircle, Logout, Clear, YouTube, X, Update } from "@mui/icons-material"; import { useNavigate } from 'react-router-dom'; import { AuthContext } from '../../context/auth'; @@ -28,18 +28,19 @@ export const NavBar: React.FC = ({ recordingName, isRecording }) => const currentVersion = packageJson.version; const [open, setOpen] = useState(false); - const [latestVersion, setLatestVersion] = useState(null); + const [latestVersion, setLatestVersion] = useState(null); const [tab, setTab] = useState(0); + const [isUpdateAvailable, setIsUpdateAvailable] = useState(false); - const fetchLatestVersion = async () => { + const fetchLatestVersion = async (): Promise => { try { const response = await fetch("https://api.github.com/repos/getmaxun/maxun/releases/latest"); const data = await response.json(); const version = data.tag_name.replace(/^v/, ""); // Remove 'v' prefix - setLatestVersion(version); + return version; } catch (error) { console.error("Failed to fetch latest version:", error); - setLatestVersion(null); // Handle errors gracefully + return null; // Handle errors gracefully } }; @@ -82,7 +83,30 @@ export const NavBar: React.FC = ({ recordingName, isRecording }) => navigate('/'); }; + useEffect(() => { + const checkForUpdates = async () => { + const latestVersion = await fetchLatestVersion(); + setLatestVersion(latestVersion); // Set the latest version state + if (latestVersion && latestVersion !== currentVersion) { + setIsUpdateAvailable(true); // Show a notification or highlight the "Upgrade" button + } + }; + checkForUpdates(); + }, []); + return ( + <> + {isUpdateAvailable && ( + + Upgrade + + } + /> +)}
= ({ recordingName, isRecording }) => ) : "" } + ); };