@@ -7,6 +7,7 @@ import { dispatcher } from "../../dispatcher";
77import { usePersistence } from "../../hooks/usePersistence" ;
88import { usePrevious } from "../../hooks/usePrevious" ;
99import { useDeleteEnvironmentMutation } from "../../redux/services/digma" ;
10+ import { useToggleRecentIndicatorMutation } from "../../redux/services/plugin" ;
1011import type {
1112 Environment ,
1213 SlimEntrySpanData
@@ -34,7 +35,7 @@ import type { ViewMode } from "./EnvironmentPanel/types";
3435import { LiveView } from "./LiveView" ;
3536import { NoData } from "./NoData" ;
3637import { ObservabilityStatusBadge } from "./ObservabilityStatusBadge" ;
37- import { RecentActivityTable , isRecent } from "./RecentActivityTable" ;
38+ import { MAX_DISTANCE , RecentActivityTable } from "./RecentActivityTable" ;
3839import { Toggle } from "./Toggle" ;
3940import { WelcomeScreen } from "./WelcomeScreen" ;
4041import { actions } from "./actions" ;
@@ -96,8 +97,9 @@ export const RecentActivity = () => {
9697 const [ environmentToDelete , setEnvironmentToDelete ] = useState < string > ( ) ;
9798 const [ environmentToClearData , setEnvironmentToClearData ] =
9899 useState < string > ( ) ;
99- const { recentActivityData : data } = useRecentActivityData ( ) ;
100+ const recentActivityData = useRecentActivityData ( selectedEnvironment ?. id ) ;
100101 const [ deleteEnvironment ] = useDeleteEnvironmentMutation ( ) ;
102+ const [ toggleRecentIndicator ] = useToggleRecentIndicatorMutation ( ) ;
101103 const isEnvironmentConfirmationDialogVisible = Boolean (
102104 environmentToDelete ?? environmentToClearData
103105 ) ;
@@ -137,37 +139,50 @@ export const RecentActivity = () => {
137139
138140 const filteredEntries = useMemo (
139141 ( ) =>
140- data . entries . filter ( ( entry ) => {
142+ recentActivityData . entries ? .filter ( ( entry ) => {
141143 const clearDataTimestamp =
142144 persistedEnvironmentClearDataTimestamps ?. [ entry . environment ] ;
143145
144146 return clearDataTimestamp
145147 ? new Date ( entry . latestTraceTimestamp ) . valueOf ( ) >
146148 new Date ( clearDataTimestamp ) . valueOf ( )
147149 : true ;
148- } ) ,
149- [ data , persistedEnvironmentClearDataTimestamps ]
150+ } ) ?? [ ] ,
151+ [ recentActivityData . entries , persistedEnvironmentClearDataTimestamps ]
150152 ) ;
151153
152154 const environmentActivities = useMemo (
153- ( ) =>
154- filteredEntries ? groupBy ( filteredEntries , ( x ) => x . environment ) : { } ,
155+ ( ) => groupBy ( filteredEntries , ( x ) => x . environment ) ,
155156 [ filteredEntries ]
156157 ) ;
157158
158- const environments : ExtendedEnvironment [ ] = useMemo (
159- ( ) =>
160- data . environments . map ( ( environment ) => ( {
159+ const environments : ExtendedEnvironment [ ] = useMemo ( ( ) => {
160+ const now = new Date ( ) ;
161+
162+ return (
163+ recentActivityData . environments ?. map ( ( environment ) => ( {
161164 ...environment ,
162165 additionToConfigResult : null ,
163166 serverApiUrl : null ,
164167 isOrgDigmaSetupFinished : false ,
165- hasRecentActivity : environmentActivities [ environment . id ]
166- ? environmentActivities [ environment . id ] . some ( isRecent )
167- : false
168- } ) ) ,
169- [ data , environmentActivities ]
170- ) ;
168+ hasRecentActivity : Boolean (
169+ environment . lastActive &&
170+ now . valueOf ( ) - new Date ( environment . lastActive ) . valueOf ( ) <=
171+ MAX_DISTANCE
172+ )
173+ } ) ) ?? [ ]
174+ ) ;
175+ } , [ recentActivityData . environments ] ) ;
176+
177+ useEffect ( ( ) => {
178+ const isAnyRecentActivity = environments . some (
179+ ( environment ) => environment . hasRecentActivity
180+ ) ;
181+
182+ void toggleRecentIndicator ( {
183+ status : isAnyRecentActivity
184+ } ) ;
185+ } , [ environments , toggleRecentIndicator ] ) ;
171186
172187 useEffect ( ( ) => {
173188 if ( selectedEnvironment ?. id ) {
@@ -448,6 +463,22 @@ export const RecentActivity = () => {
448463 ) ;
449464 }
450465
466+ if (
467+ recentActivityData . areEntriesLoading &&
468+ recentActivityData . entries === undefined
469+ ) {
470+ return (
471+ < >
472+ < s . NoDataRecentActivityContainerBackground >
473+ < s . NoDataRecentActivityContainerBackgroundGradient />
474+ </ s . NoDataRecentActivityContainerBackground >
475+ < s . LoadingContainer >
476+ < s . Spinner size = { 32 } />
477+ </ s . LoadingContainer >
478+ </ >
479+ ) ;
480+ }
481+
451482 if (
452483 ! selectedEnvironment ||
453484 ! environmentActivities [ selectedEnvironment . id ]
0 commit comments