Merge pull request #958 from Dokploy/fix/update-fetch

Fix/update fetch
This commit is contained in:
Mauricio Siu
2024-12-21 13:50:13 -06:00
committed by GitHub
2 changed files with 21 additions and 13 deletions

View File

@@ -18,7 +18,7 @@ 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";
const AUTO_CHECK_UPDATES_INTERVAL_MINUTES = 5; const AUTO_CHECK_UPDATES_INTERVAL_MINUTES = 7;
export const Navbar = () => { export const Navbar = () => {
const [isUpdateAvailable, setIsUpdateAvailable] = useState<boolean>(false); const [isUpdateAvailable, setIsUpdateAvailable] = useState<boolean>(false);

View File

@@ -62,17 +62,26 @@ export const getUpdateData = async (): Promise<IUpdateData> => {
return DEFAULT_UPDATE_DATA; return DEFAULT_UPDATE_DATA;
} }
const url = "https://hub.docker.com/v2/repositories/dokploy/dokploy/tags"; const baseUrl = "https://hub.docker.com/v2/repositories/dokploy/dokploy/tags";
const response = await fetch(url, { let url: string | null = `${baseUrl}?page_size=100`;
method: "GET", let allResults: { digest: string; name: string }[] = [];
headers: { "Content-Type": "application/json" },
});
const data = (await response.json()) as { while (url) {
results: [{ digest: string; name: string }]; const response = await fetch(url, {
}; method: "GET",
const { results } = data; headers: { "Content-Type": "application/json" },
const latestTagDigest = results.find( });
const data = (await response.json()) as {
next: string | null;
results: { digest: string; name: string }[];
};
allResults = allResults.concat(data.results);
url = data?.next;
}
const latestTagDigest = allResults.find(
(t) => t.name === getDokployImageTag(), (t) => t.name === getDokployImageTag(),
)?.digest; )?.digest;
@@ -80,7 +89,7 @@ export const getUpdateData = async (): Promise<IUpdateData> => {
return DEFAULT_UPDATE_DATA; return DEFAULT_UPDATE_DATA;
} }
const versionedTag = results.find( const versionedTag = allResults.find(
(t) => t.digest === latestTagDigest && t.name.startsWith("v"), (t) => t.digest === latestTagDigest && t.name.startsWith("v"),
); );
@@ -89,7 +98,6 @@ export const getUpdateData = async (): Promise<IUpdateData> => {
} }
const { name: latestVersion, digest } = versionedTag; const { name: latestVersion, digest } = versionedTag;
const updateAvailable = digest !== currentDigest; const updateAvailable = digest !== currentDigest;
return { latestVersion, updateAvailable }; return { latestVersion, updateAvailable };