refactor: pass update data and use updates modal in navbar

This commit is contained in:
UndefinedPony
2024-12-31 11:13:58 +01:00
parent ed5936ede7
commit 29a8cb63c0

View File

@@ -13,15 +13,19 @@ import { HeartIcon } from "lucide-react";
import Link from "next/link"; import Link from "next/link";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { useEffect, useRef, useState } from "react"; import { useEffect, useRef, useState } from "react";
import { UpdateWebServer } from "../dashboard/settings/web-server/update-webserver";
import { Logo } from "../shared/logo"; import { Logo } from "../shared/logo";
import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar"; import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
import { buttonVariants } from "../ui/button"; import { buttonVariants } from "../ui/button";
import UpdateServer from "../dashboard/settings/web-server/update-server";
import type { IUpdateData } from "@dokploy/server/index";
const AUTO_CHECK_UPDATES_INTERVAL_MINUTES = 7; const AUTO_CHECK_UPDATES_INTERVAL_MINUTES = 7;
export const Navbar = () => { export const Navbar = () => {
const [isUpdateAvailable, setIsUpdateAvailable] = useState<boolean>(false); const [updateData, setUpdateData] = useState<IUpdateData>({
latestVersion: null,
updateAvailable: false,
});
const router = useRouter(); const router = useRouter();
const { data } = api.auth.get.useQuery(); const { data } = api.auth.get.useQuery();
const { data: isCloud } = api.settings.isCloud.useQuery(); const { data: isCloud } = api.settings.isCloud.useQuery();
@@ -62,12 +66,12 @@ export const Navbar = () => {
return; return;
} }
const { updateAvailable } = await getUpdateData(); const fetchedUpdateData = await getUpdateData();
if (updateAvailable) { if (fetchedUpdateData?.updateAvailable) {
// Stop interval when update is available // Stop interval when update is available
clearUpdatesInterval(); clearUpdatesInterval();
setIsUpdateAvailable(true); setUpdateData(fetchedUpdateData);
} }
} catch (error) { } catch (error) {
console.error("Error auto-checking for updates:", error); console.error("Error auto-checking for updates:", error);
@@ -101,9 +105,9 @@ export const Navbar = () => {
</span> </span>
</Link> </Link>
</div> </div>
{isUpdateAvailable && ( {updateData.updateAvailable && (
<div> <div>
<UpdateWebServer isNavbar /> <UpdateServer updateData={updateData} />
</div> </div>
)} )}
<Link <Link