diff --git a/web/src/components/features/popups/SaveResetFilePopup.tsx b/web/src/components/features/popups/SaveResetFilePopup.tsx
index 766bb09a1..d6df93f13 100644
--- a/web/src/components/features/popups/SaveResetFilePopup.tsx
+++ b/web/src/components/features/popups/SaveResetFilePopup.tsx
@@ -25,15 +25,15 @@ export const SaveResetFilePopup: React.FC<{
open={open}
showHotsKeys={showHotsKeys}
/>
-
-
+
+
>
);
}
diff --git a/web/src/components/ui/layouts/PreventNavigation.tsx b/web/src/components/ui/layouts/PreventNavigation.tsx
index cc52b29b1..44291981f 100644
--- a/web/src/components/ui/layouts/PreventNavigation.tsx
+++ b/web/src/components/ui/layouts/PreventNavigation.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useMemoizedFn, useMount } from '@/hooks';
+import { useMemoizedFn, useMount, useUnmount } from '@/hooks';
import { useRouter } from 'next/navigation';
import { useState, useRef, useEffect, useMemo } from 'react';
import React from 'react';
@@ -190,17 +190,19 @@ export const PreventNavigation: React.FC = React.memo(
if (!isDirty) return null;
return (
-
+ <>
+
+ >
);
}
);
diff --git a/web/src/context/Metrics/useIsMetricChanged.tsx b/web/src/context/Metrics/useIsMetricChanged.tsx
index e157fa8c0..50617ad97 100644
--- a/web/src/context/Metrics/useIsMetricChanged.tsx
+++ b/web/src/context/Metrics/useIsMetricChanged.tsx
@@ -5,6 +5,7 @@ import { metricsQueryKeys } from '@/api/query_keys/metric';
import { useGetMetric } from '@/api/buster_rest/metrics';
import { compareObjectsByKeys } from '@/lib/objects';
import { useMemo } from 'react';
+import last from 'lodash/last';
export const useIsMetricChanged = ({ metricId }: { metricId: string | undefined }) => {
const queryClient = useQueryClient();
@@ -23,10 +24,14 @@ export const useIsMetricChanged = ({ metricId }: { metricId: string | undefined
description: x.description,
chart_config: x.chart_config,
file: x.file,
- version_number: x.version_number
+ version_number: x.version_number,
+ versions: x.versions
})
}
);
+ const isLatestVersion = useMemo(() => {
+ return currentMetric?.version_number === last(currentMetric?.versions)?.version_number;
+ }, [currentMetric]);
const onResetMetricToOriginal = useMemoizedFn(() => {
const options = metricsQueryKeys.metricsGetMetric(
@@ -39,9 +44,10 @@ export const useIsMetricChanged = ({ metricId }: { metricId: string | undefined
refetchCurrentMetric();
});
- const isMetricChanged = useMemo(
- () =>
- !originalMetric ||
+ const isMetricChanged = useMemo(() => {
+ if (!originalMetric || !isLatestVersion) return false;
+
+ return (
!currentMetric ||
!compareObjectsByKeys(originalMetric, currentMetric, [
'name',
@@ -49,9 +55,9 @@ export const useIsMetricChanged = ({ metricId }: { metricId: string | undefined
'chart_config',
'file',
'version_number'
- ]),
- [originalMetric, currentMetric]
- );
+ ])
+ );
+ }, [originalMetric, currentMetric, isLatestVersion]);
return {
onResetMetricToOriginal,
diff --git a/web/src/layouts/ChatLayout/ChatContainer/ChatContent/ChatInput/useChatInputFlow.ts b/web/src/layouts/ChatLayout/ChatContainer/ChatContent/ChatInput/useChatInputFlow.ts
index 67e8b4b89..60c31a04e 100644
--- a/web/src/layouts/ChatLayout/ChatContainer/ChatContent/ChatInput/useChatInputFlow.ts
+++ b/web/src/layouts/ChatLayout/ChatContainer/ChatContent/ChatInput/useChatInputFlow.ts
@@ -117,5 +117,8 @@ export const useChatInputFlow = ({
textAreaRef.current?.select();
});
- return { onSubmitPreflight, onStopChat };
+ return useMemo(
+ () => ({ onSubmitPreflight, onStopChat, isFileChanged }),
+ [onSubmitPreflight, onStopChat, isFileChanged]
+ );
};