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
+ }
+}