1- import { useEffect , useState } from "react" ;
1+ import { useCallback , useContext , useEffect , useState } from "react" ;
2+ import { useRecentActivityDispatch } from "../../containers/RecentActivity/hooks" ;
3+ import { usePrevious } from "../../hooks/usePrevious" ;
24import {
5+ digmaApi ,
36 useGetEnvironmentsQuery ,
47 useGetRecentActivityQuery
58} from "../../redux/services/digma" ;
9+ import { useToggleRecentIndicatorMutation } from "../../redux/services/plugin" ;
610import type {
711 Environment ,
812 RecentActivityEntry
913} from "../../redux/services/types" ;
14+ import { areBackendInfosEqual } from "../../utils/areBackendInfosEqual" ;
15+ import { ConfigContext } from "../common/App/ConfigContext" ;
1016
1117const REFRESH_INTERVAL = 10 * 1000 ; // in milliseconds
1218
@@ -18,6 +24,11 @@ interface RecentActivityData {
1824}
1925
2026export const useRecentActivityData = ( environmentId : string | undefined ) => {
27+ const { backendInfo, userInfo } = useContext ( ConfigContext ) ;
28+ const previousBackendInfo = usePrevious ( backendInfo ) ;
29+ const [ toggleRecentIndicator ] = useToggleRecentIndicatorMutation ( ) ;
30+ const dispatch = useRecentActivityDispatch ( ) ;
31+
2132 const [ data , setData ] = useState < RecentActivityData > ( {
2233 environments : undefined ,
2334 entries : undefined ,
@@ -27,7 +38,8 @@ export const useRecentActivityData = (environmentId: string | undefined) => {
2738
2839 const { data : environments , isFetching : areEnvironmentsFetching } =
2940 useGetEnvironmentsQuery ( undefined , {
30- pollingInterval : REFRESH_INTERVAL
41+ pollingInterval : REFRESH_INTERVAL ,
42+ skip : ! userInfo ?. id && backendInfo ?. centralize
3143 } ) ;
3244
3345 const { data : recentActivityData , isFetching : isRecentActivityDataFetching } =
@@ -41,14 +53,43 @@ export const useRecentActivityData = (environmentId: string | undefined) => {
4153 }
4254 ) ;
4355
56+ const clearData = useCallback ( ( ) => {
57+ setData ( ( prevData ) => ( {
58+ ...prevData ,
59+ environments : undefined ,
60+ entries : undefined
61+ } ) ) ;
62+ void toggleRecentIndicator ( {
63+ status : false
64+ } ) ;
65+ dispatch ( digmaApi . util . invalidateTags ( [ "Environment" , "RecentActivity" ] ) ) ;
66+ } , [ toggleRecentIndicator , dispatch ] ) ;
67+
68+ // Clear data on backend change
69+ useEffect ( ( ) => {
70+ if (
71+ previousBackendInfo &&
72+ backendInfo &&
73+ ! areBackendInfosEqual ( previousBackendInfo , backendInfo )
74+ ) {
75+ clearData ( ) ;
76+ }
77+ } , [ previousBackendInfo , backendInfo , clearData ] ) ;
78+
79+ // Clear data on user change
80+ useEffect ( ( ) => {
81+ clearData ( ) ;
82+ } , [ userInfo ?. id , clearData ] ) ;
83+
84+ // Clear recent activity data on environment change
4485 useEffect ( ( ) => {
4586 if ( environmentId ) {
4687 setData ( ( prevData ) => ( {
4788 ...prevData ,
4889 entries : undefined
4990 } ) ) ;
5091 }
51- } , [ environmentId ] ) ;
92+ } , [ environmentId , dispatch ] ) ;
5293
5394 useEffect ( ( ) => {
5495 setData ( ( prevData ) => ( {
0 commit comments