From a6c5c27d27717c346409c889bfef19ae61f71df1 Mon Sep 17 00:00:00 2001
From: Cory Smith <cory.m.smith@gmail.com>
Date: Thu, 29 Feb 2024 14:29:58 -0700
Subject: [PATCH] Starting to add logic to show a badge when plugins are
 outdated.

---
 src/renderer/components/Nav/Sidebar.tsx    |  5 +++--
 src/renderer/lib/transformerlab-api-sdk.ts | 14 ++++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/renderer/components/Nav/Sidebar.tsx b/src/renderer/components/Nav/Sidebar.tsx
index 87dd988f..31a67c8c 100644
--- a/src/renderer/components/Nav/Sidebar.tsx
+++ b/src/renderer/components/Nav/Sidebar.tsx
@@ -24,7 +24,7 @@ import {
 
 import { ButtonGroup, IconButton, Sheet, Tooltip } from '@mui/joy';
 
-import { useModelStatus } from 'renderer/lib/transformerlab-api-sdk';
+import { useModelStatus, usePluginStatus } from 'renderer/lib/transformerlab-api-sdk';
 
 import SelectExperimentMenu from '../Experiment/SelectExperimentMenu';
 
@@ -37,6 +37,7 @@ export default function Sidebar({
   setDrawerOpen,
 }) {
   const { models, isError, isLoading } = useModelStatus();
+  const { outdatedPluginsCount } = usePluginStatus(experimentInfo);
 
   const navigate = useNavigate();
 
@@ -159,7 +160,7 @@ export default function Sidebar({
           path="/projects/plugins"
           icon={<PlugIcon />}
           disabled={!experimentInfo?.name}
-          counter={null}
+          counter={outdatedPluginsCount}
         />
         <SubNavItem
           title="Settings"
diff --git a/src/renderer/lib/transformerlab-api-sdk.ts b/src/renderer/lib/transformerlab-api-sdk.ts
index e750e6f1..ceadfe66 100644
--- a/src/renderer/lib/transformerlab-api-sdk.ts
+++ b/src/renderer/lib/transformerlab-api-sdk.ts
@@ -1015,6 +1015,20 @@ export function useModelStatus() {
   };
 }
 
+export function usePluginStatus(experimentInfo: any) {
+  let { data } = useSWR(
+    experimentInfo ? Endpoints.Experiment.ListScripts(experimentInfo?.id) : null,
+    fetcher
+  );
+
+  let outdatedPluginsCount = null;
+  if (data) {
+    outdatedPluginsCount = data.filter((plugin: any) => plugin?.gallery_version && plugin?.version != plugin?.gallery_version).length;
+  }
+  
+  return { outdatedPluginsCount };
+}
+
 export function useServerStats() {
   const url = API_URL() + 'server/info';
 
-- 
GitLab