Merge pull request #960 from Dokploy/fix/add-latest-cases

refactor: update digest
This commit is contained in:
Mauricio Siu
2024-12-21 15:00:51 -06:00
committed by GitHub
2 changed files with 34 additions and 26 deletions

View File

@@ -121,7 +121,10 @@ export const ManageTraefikPorts = ({ children, serverId }: Props) => {
</DialogHeader> </DialogHeader>
<div className="grid gap-4 py-4"> <div className="grid gap-4 py-4">
{additionalPorts.map((port, index) => ( {additionalPorts.map((port, index) => (
<div key={index} className="grid grid-cols-[120px_120px_minmax(120px,1fr)_80px] gap-4 items-end"> <div
key={index}
className="grid grid-cols-[120px_120px_minmax(120px,1fr)_80px] gap-4 items-end"
>
<div className="space-y-2"> <div className="space-y-2">
<Label htmlFor={`target-port-${index}`}> <Label htmlFor={`target-port-${index}`}>
{t("settings.server.webServer.traefik.targetPort")} {t("settings.server.webServer.traefik.targetPort")}
@@ -132,7 +135,9 @@ export const ManageTraefikPorts = ({ children, serverId }: Props) => {
value={port.targetPort} value={port.targetPort}
onChange={(e) => { onChange={(e) => {
const newPorts = [...additionalPorts]; const newPorts = [...additionalPorts];
newPorts[index].targetPort = Number.parseInt(
// @ts-ignore
newPorts?.[index].targetPort = Number.parseInt(
e.target.value, e.target.value,
); );
setAdditionalPorts(newPorts); setAdditionalPorts(newPorts);
@@ -150,7 +155,8 @@ export const ManageTraefikPorts = ({ children, serverId }: Props) => {
value={port.publishedPort} value={port.publishedPort}
onChange={(e) => { onChange={(e) => {
const newPorts = [...additionalPorts]; const newPorts = [...additionalPorts];
newPorts[index].publishedPort = Number.parseInt( // @ts-ignore
newPorts?.[index].publishedPort = Number.parseInt(
e.target.value, e.target.value,
); );
setAdditionalPorts(newPorts); setAdditionalPorts(newPorts);
@@ -166,11 +172,15 @@ export const ManageTraefikPorts = ({ children, serverId }: Props) => {
value={port.publishMode} value={port.publishMode}
onValueChange={(value: "ingress" | "host") => { onValueChange={(value: "ingress" | "host") => {
const newPorts = [...additionalPorts]; const newPorts = [...additionalPorts];
newPorts[index].publishMode = value; // @ts-ignore
newPorts?.[index].publishMode = value;
setAdditionalPorts(newPorts); setAdditionalPorts(newPorts);
}} }}
> >
<SelectTrigger id={`publish-mode-${index}`} className="w-full"> <SelectTrigger
id={`publish-mode-${index}`}
className="w-full"
>
<SelectValue /> <SelectValue />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>

View File

@@ -65,7 +65,6 @@ export const getUpdateData = async (): Promise<IUpdateData> => {
const baseUrl = "https://hub.docker.com/v2/repositories/dokploy/dokploy/tags"; const baseUrl = "https://hub.docker.com/v2/repositories/dokploy/dokploy/tags";
let url: string | null = `${baseUrl}?page_size=100`; let url: string | null = `${baseUrl}?page_size=100`;
let allResults: { digest: string; name: string }[] = []; let allResults: { digest: string; name: string }[] = [];
while (url) { while (url) {
const response = await fetch(url, { const response = await fetch(url, {
method: "GET", method: "GET",
@@ -81,30 +80,29 @@ export const getUpdateData = async (): Promise<IUpdateData> => {
url = data?.next; url = data?.next;
} }
const latestTagDigest = allResults.find( const imageTag = getDokployImageTag();
(t) => t.name === getDokployImageTag(), const searchedDigest = allResults.find((t) => t.name === imageTag)?.digest;
)?.digest;
if (!latestTagDigest) { if (!searchedDigest) {
return DEFAULT_UPDATE_DATA; return DEFAULT_UPDATE_DATA;
} }
const versionedTag = allResults.find( if (imageTag === "latest") {
(t) => t.digest === latestTagDigest && t.name.startsWith("v"), const versionedTag = allResults.find(
); (t) => t.digest === searchedDigest && t.name.startsWith("v"),
);
if (!versionedTag) { if (!versionedTag) {
return DEFAULT_UPDATE_DATA; return DEFAULT_UPDATE_DATA;
}
const { name: latestVersion, digest } = versionedTag;
const updateAvailable = digest !== currentDigest;
return { latestVersion, updateAvailable };
} }
const updateAvailable = searchedDigest !== currentDigest;
const { name: latestVersion, digest } = versionedTag; return { latestVersion: imageTag, updateAvailable };
const updateAvailable = digest !== currentDigest;
return { latestVersion, updateAvailable };
};
export const getDokployVersion = () => {
// return packageInfo.version;
}; };
interface TreeDataItem { interface TreeDataItem {