diff --git a/package.json b/package.json index 8c900e56c..d19a2f6c1 100644 --- a/package.json +++ b/package.json @@ -147,6 +147,7 @@ "@types/react": "19.0.1", "@types/react-dom": "19.0.2", "@types/react-router-dom": "5.3.3", + "@types/semver": "^7.5.8", "autoprefixer": "10.4.20", "axios": "1.7.9", "class-variance-authority": "0.7.1", @@ -171,6 +172,7 @@ "postcss-loader": "8.1.1", "react-final-form": "6.5.9", "rimraf": "6.0.1", + "semver": "7.6.3", "tailwind-merge": "2.5.5", "tailwindcss": "3.4.16", "terser-webpack-plugin": "5.3.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd9866552..d54ce16f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,6 +66,9 @@ importers: '@types/react-router-dom': specifier: 5.3.3 version: 5.3.3 + '@types/semver': + specifier: ^7.5.8 + version: 7.5.8 autoprefixer: specifier: 10.4.20 version: 10.4.20(postcss@8.4.49) @@ -138,6 +141,9 @@ importers: rimraf: specifier: 6.0.1 version: 6.0.1 + semver: + specifier: 7.6.3 + version: 7.6.3 tailwind-merge: specifier: 2.5.5 version: 2.5.5 @@ -779,6 +785,9 @@ packages: '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -3466,11 +3475,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -4851,6 +4855,8 @@ snapshots: dependencies: '@types/node': 22.10.2 + '@types/semver@7.5.8': {} + '@types/stack-utils@2.0.3': {} '@types/tough-cookie@4.0.5': {} @@ -5685,7 +5691,7 @@ snapshots: postcss-modules-scope: 3.2.0(postcss@8.4.49) postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 - semver: 7.6.0 + semver: 7.6.3 optionalDependencies: webpack: 5.97.1(webpack-cli@5.1.4) @@ -7552,7 +7558,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.7.2) jiti: 1.21.0 postcss: 8.4.49 - semver: 7.6.0 + semver: 7.6.3 optionalDependencies: webpack: 5.97.1(webpack-cli@5.1.4) transitivePeerDependencies: @@ -7964,10 +7970,6 @@ snapshots: semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - semver@7.6.3: {} serialize-error@7.0.1: @@ -8288,7 +8290,7 @@ snapshots: chalk: 4.1.2 enhanced-resolve: 5.16.0 micromatch: 4.0.5 - semver: 7.6.0 + semver: 7.6.3 source-map: 0.7.4 typescript: 5.7.2 webpack: 5.97.1(webpack-cli@5.1.4) diff --git a/src/renderer/utils/features.ts b/src/renderer/utils/features.ts index 9e2a83e06..88e90bff3 100644 --- a/src/renderer/utils/features.ts +++ b/src/renderer/utils/features.ts @@ -1,3 +1,4 @@ +import semver from 'semver'; import type { Account } from '../types'; import { isEnterpriseServerHost } from './helpers'; @@ -10,8 +11,7 @@ import { isEnterpriseServerHost } from './helpers'; export function isMarkAsDoneFeatureSupported(account: Account): boolean { if (isEnterpriseServerHost(account.hostname)) { if (account.version) { - const version = account?.version.split('.').map(Number); - return version[0] >= 3 && version[1] >= 13; + return semver.gte(semver.coerce(account.version), '3.13.0'); } return false; @@ -30,8 +30,7 @@ export function isAnsweredDiscussionFeatureSupported( ): boolean { if (isEnterpriseServerHost(account.hostname)) { if (account.version) { - const version = account?.version.split('.').map(Number); - return version[0] >= 3 && version[1] >= 12; + return semver.gte(semver.coerce(account.version), '3.12.0'); } return false;