From 9bedf238e4f88187eb5ed2aadee22b9ac8df4d13 Mon Sep 17 00:00:00 2001
From: Leonardo Christino <leomilho@gmail.com>
Date: Tue, 20 Feb 2024 17:40:11 +0100
Subject: [PATCH] chore: fixes

---
 .../dbConnectionSelector.tsx                  |  2 +-
 .../DatabaseManagement/forms/settings.tsx     |  2 +-
 libs/shared/lib/data-access/api/eventBus.tsx  |  3 +--
 .../nodelink/components/NLPixi.tsx            | 26 +++++++++++++++----
 4 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/apps/web/src/components/navbar/DatabaseManagement/dbConnectionSelector.tsx b/apps/web/src/components/navbar/DatabaseManagement/dbConnectionSelector.tsx
index b8106764e..7464dc8e7 100644
--- a/apps/web/src/components/navbar/DatabaseManagement/dbConnectionSelector.tsx
+++ b/apps/web/src/components/navbar/DatabaseManagement/dbConnectionSelector.tsx
@@ -25,7 +25,7 @@ export default function DatabaseSelector({}) {
 
   useEffect(() => {
     if (
-      (session.saveStates && Object.keys(session.saveStates).length === 0 && settingsMenuOpen !== 'create') ||
+      (session.saveStates && Object.keys(session.saveStates).length === 0 && settingsMenuOpen === undefined) ||
       session.currentSaveState === nilUUID
     ) {
       setSettingsMenuOpen('create');
diff --git a/apps/web/src/components/navbar/DatabaseManagement/forms/settings.tsx b/apps/web/src/components/navbar/DatabaseManagement/forms/settings.tsx
index b6e2ae560..34a9e5a09 100644
--- a/apps/web/src/components/navbar/DatabaseManagement/forms/settings.tsx
+++ b/apps/web/src/components/navbar/DatabaseManagement/forms/settings.tsx
@@ -61,7 +61,7 @@ export const SettingsForm = (props: {
         console.error('formDataRef.current.user_id is not equal to auth.userID');
         formDataRef.current.user_id = auth.userID;
       }
-      if (data.status === 'success') {
+      if (data && data.status === 'success') {
         setConnection((prevState) => ({
           updating: false,
           status: 'Database connection verified',
diff --git a/libs/shared/lib/data-access/api/eventBus.tsx b/libs/shared/lib/data-access/api/eventBus.tsx
index 219e3984f..a3b1dee1e 100644
--- a/libs/shared/lib/data-access/api/eventBus.tsx
+++ b/libs/shared/lib/data-access/api/eventBus.tsx
@@ -167,10 +167,9 @@ export const EventBus = (props: { onRunQuery: Function; onAuthorized: Function }
 
           // Process URL Params
           const paramSaveState = getParam(URLParams.saveState);
+          deleteParam(URLParams.saveState);
           if (paramSaveState && paramSaveState !== nilUUID) {
             wsGetState(paramSaveState);
-          } else {
-            deleteParam(URLParams.saveState);
           }
 
           wsGetStates();
diff --git a/libs/shared/lib/vis/visualizations/nodelink/components/NLPixi.tsx b/libs/shared/lib/vis/visualizations/nodelink/components/NLPixi.tsx
index 7e09cc638..935fe3bc2 100644
--- a/libs/shared/lib/vis/visualizations/nodelink/components/NLPixi.tsx
+++ b/libs/shared/lib/vis/visualizations/nodelink/components/NLPixi.tsx
@@ -34,6 +34,7 @@ export const NLPixi = (props: Props) => {
   const linkMap = useRef(new Map<string, Graphics>());
   const viewport = useRef<Viewport>();
   const ref = useRef<HTMLDivElement>(null);
+  const mouseInCanvas = useRef<boolean>(false);
   const isSetup = useRef(false);
   const ml = useML();
   const dragging = useRef<{ node: NodeType; gfx: Graphics } | null>(null);
@@ -94,7 +95,13 @@ export const NLPixi = (props: Props) => {
       }
     },
     onHover(node: NodeType) {
-      if (viewport?.current && !viewport?.current?.pause && node && popups.filter((p) => p.node.id === node.id).length === 0) {
+      if (
+        mouseInCanvas.current &&
+        viewport?.current &&
+        !viewport?.current?.pause &&
+        node &&
+        popups.filter((p) => p.node.id === node.id).length === 0
+      ) {
         setQuickPopup({ node, pos: toGlobal(node) });
       }
     },
@@ -192,10 +199,12 @@ export const NLPixi = (props: Props) => {
     gfx.off('mousedown');
     gfx.on('mouseover', (e) => {
       e.stopPropagation();
+      e.preventDefault();
       if (imperative.current) imperative.current.onHover(node);
     });
     gfx.on('mouseout', (e) => {
       e.stopPropagation();
+      e.preventDefault();
       if (imperative.current) imperative.current.onUnHover();
     });
     gfx.on('mousedown', (e) => onDragStart(e, node, gfx));
@@ -480,11 +489,18 @@ export const NLPixi = (props: Props) => {
 
   return (
     <>
-      {popups.map((popup) => (
-        <NLPopup onClose={() => {}} data={popup} key={popup.node.id} />
-      ))}
+      {mouseInCanvas.current && popups.map((popup) => <NLPopup onClose={() => {}} data={popup} key={popup.node.id} />)}
       {quickPopup && <NLPopup onClose={() => {}} data={quickPopup} />}
-      <div className="h-full w-full overflow-hidden" ref={ref}></div>
+      <div
+        className="h-full w-full overflow-hidden"
+        ref={ref}
+        onMouseEnter={(e) => {
+          mouseInCanvas.current = true;
+        }}
+        onMouseOut={(e) => {
+          mouseInCanvas.current = false;
+        }}
+      ></div>
     </>
   );
 };
-- 
GitLab