diff --git a/packages/web-console/src/scenes/Footer/BuildVersion/index.tsx b/packages/web-console/src/scenes/Footer/BuildVersion/index.tsx index 327660e9c..692e54056 100644 --- a/packages/web-console/src/scenes/Footer/BuildVersion/index.tsx +++ b/packages/web-console/src/scenes/Footer/BuildVersion/index.tsx @@ -27,10 +27,14 @@ import React, { useContext, useEffect, useState } from "react" import styled from "styled-components" import * as QuestDB from "../../../utils/questdb" import { SecondaryButton } from "../../../components" -import { formatCommitHash, formatVersion, Versions } from "./services" +import { + getCanUpgrade, + formatCommitHash, + formatVersion, + Versions, +} from "./services" import { ExternalLink, ArrowUpCircle } from "styled-icons/remix-line" import { Release } from "../../../utils/questdb" -import { compare } from "compare-versions" import { Team } from "styled-icons/remix-line" import { BuildingMultiple } from "styled-icons/fluentui-system-filled" import { ShieldLockFill } from "styled-icons/bootstrap" @@ -116,14 +120,10 @@ const BuildVersion = () => { } const enterpriseVersion = buildVersion.kind.includes("enterprise") - - const upgradeAvailable = - !enterpriseVersion && - newestRelease && - compare(buildVersion.version, newestRelease.name, "<") + const upgradeAvailable = getCanUpgrade(buildVersion, newestRelease?.name) const releaseUrl = upgradeAvailable - ? newestRelease.html_url + ? newestRelease?.html_url : `https://github.com/questdb/questdb${ buildVersion ? `/releases/tag/${buildVersion.version}` @@ -157,7 +157,7 @@ const BuildVersion = () => { {upgradeAvailable && ( <> - {newestRelease.name} + {newestRelease?.name} )} diff --git a/packages/web-console/src/scenes/Footer/BuildVersion/services.ts b/packages/web-console/src/scenes/Footer/BuildVersion/services.ts index 21b9d5e49..7c87a433a 100644 --- a/packages/web-console/src/scenes/Footer/BuildVersion/services.ts +++ b/packages/web-console/src/scenes/Footer/BuildVersion/services.ts @@ -22,6 +22,8 @@ * ******************************************************************************/ +import { compare } from "compare-versions" + const buildVersionRegex = /Build Information: QuestDB ([\w- ]+ )?([0-9A-Za-z.-]*),/ @@ -51,7 +53,7 @@ export const formatVersion = (value: string): Versions => { return { kind: "dev", - version: "x.x.x", + version: "0.0.0", } } @@ -62,3 +64,21 @@ export const formatCommitHash = (value: string | number | boolean) => { return matches ? matches[1] : "" } + +export const getCanUpgrade = ( + buildVersion: Versions, + newestReleaseTag?: string, +): boolean => { + if (typeof newestReleaseTag === "undefined") { + return false + } + + const enterpriseVersion = buildVersion.kind.includes("enterprise") + + try { + const isOlder = compare(buildVersion.version, newestReleaseTag, "<") + return !enterpriseVersion && isOlder + } catch (e) { + return false + } +}