From 2f90a4fcf7af67f7ed5c044982779579d1624f69 Mon Sep 17 00:00:00 2001
From: Marco Rodolfi <marco.rodolfi@tuta.io>
Date: Tue, 17 Sep 2024 15:21:31 +0200
Subject: Rebase semver parsing on main (#677)

Co-authored-by: Marco Rodolfi <marco.rodolfi.1992@gmail.com>
---
 frontend/src/store.tsx | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

(limited to 'frontend/src/store.tsx')

diff --git a/frontend/src/store.tsx b/frontend/src/store.tsx
index 8ab8f50a..5391a15a 100644
--- a/frontend/src/store.tsx
+++ b/frontend/src/store.tsx
@@ -1,3 +1,5 @@
+import { compare } from 'compare-versions';
+
 import { InstallType, Plugin, installPlugin, installPlugins } from './plugin';
 import { getSetting, setSetting } from './utils/settings';
 
@@ -137,7 +139,15 @@ export async function checkForPluginUpdates(plugins: Plugin[]): Promise<PluginUp
   const updateMap = new Map<string, StorePluginVersion>();
   for (let plugin of plugins) {
     const remotePlugin = serverData?.find((x) => x.name == plugin.name);
-    if (remotePlugin && remotePlugin.versions?.length > 0 && plugin.version != remotePlugin?.versions?.[0]?.name) {
+    //FIXME: Ugly hack since plugin.version might be null during evaluation,
+    //so this will set the older version possible
+    const curVer = plugin.version ? plugin.version : '0.0';
+    if (
+      remotePlugin &&
+      remotePlugin.versions?.length > 0 &&
+      plugin.version != remotePlugin?.versions?.[0]?.name &&
+      compare(remotePlugin?.versions?.[0]?.name, curVer, '>')
+    ) {
       updateMap.set(plugin.name, remotePlugin.versions[0]);
     }
   }
-- 
cgit v1.2.3

