@@ -201,6 +201,40 @@ const Index = () => {
201201 allEventTypes,
202202 eventTypeLabels,
203203 } = useHistoryFilter ( mergedEvents ) ;
204+ const hasActiveFilters = selectedEventTypes . length > 0 ;
205+
206+ const isHydratingFilteredEvents = useMemo ( ( ) => {
207+ const extendedVoteEventIds = new Set (
208+ extendedVoteEventsData . map ( ( event ) => event . id )
209+ ) ;
210+ const extendedTreasuryVoteEventIds = new Set (
211+ extendedTreasuryVoteEventsData . map ( ( event ) => event . id )
212+ ) ;
213+
214+ return events . some ( ( event ) => {
215+ if ( hasActiveFilters && ! selectedEventTypes . includes ( event . __typename ) ) {
216+ return false ;
217+ }
218+
219+ if ( isVoteEvent ( event ) ) {
220+ return ! extendedVoteEventIds . has ( event . id ) ;
221+ }
222+
223+ if ( isTreasuryVoteEvent ( event ) ) {
224+ return ! extendedTreasuryVoteEventIds . has ( event . id ) ;
225+ }
226+
227+ return false ;
228+ } ) ;
229+ } , [
230+ events ,
231+ extendedTreasuryVoteEventsData ,
232+ extendedVoteEventsData ,
233+ hasActiveFilters ,
234+ isTreasuryVoteEvent ,
235+ isVoteEvent ,
236+ selectedEventTypes ,
237+ ] ) ;
204238
205239 if ( error ) {
206240 console . error ( error ) ;
@@ -302,9 +336,22 @@ const Index = () => {
302336 < Box css = { { paddingBottom : "$3" } } >
303337 { filteredEvents . length > 0 ? (
304338 filteredEvents . map ( ( event , i : number ) => renderSwitch ( event , i ) )
339+ ) : isHydratingFilteredEvents ? (
340+ < Flex
341+ css = { {
342+ paddingTop : "$3" ,
343+ width : "100%" ,
344+ justifyContent : "center" ,
345+ alignItems : "center" ,
346+ } }
347+ >
348+ < Spinner />
349+ </ Flex >
305350 ) : (
306351 < Box css = { { paddingTop : "$3" , color : "$neutral11" } } >
307- No events match the selected filters
352+ { hasActiveFilters
353+ ? "No events match the selected filters"
354+ : "No history" }
308355 </ Box >
309356 ) }
310357 </ Box >
0 commit comments