@@ -171,6 +171,9 @@ class ViewPage extends React.Component<ViewPageProps> {
171171
172172 private listRef = React . createRef < ViewEventList > ( ) ;
173173 private splitPaneRef = React . createRef < SplitPane > ( ) ;
174+
175+ @observable
176+ private shouldRestoreViewStateOnRefSet = false ;
174177
175178 @observable
176179 private searchFiltersUnderConsideration : FilterSet | undefined ;
@@ -248,10 +251,8 @@ class ViewPage extends React.Component<ViewPageProps> {
248251 if ( this . props . eventId && this . selectedEvent ) {
249252 this . onScrollToCenterEvent ( this . selectedEvent ) ;
250253 } else if ( ! this . props . eventId && this . props . uiStore . selectedEventId ) {
251- // If no URL eventId but we have a persisted selection, restore it
252- setTimeout ( ( ) => {
253- this . listRef . current ?. restoreViewState ( ) ;
254- } , 100 ) ;
254+ // If no URL eventId but we have a persisted selection, restore it when ref is set
255+ this . shouldRestoreViewStateOnRefSet = true ;
255256 } else {
256257 this . onScrollToEnd ( ) ;
257258 }
@@ -333,9 +334,6 @@ class ViewPage extends React.Component<ViewPageProps> {
333334 } )
334335 ) ;
335336 }
336- componentWillUnmount ( ) {
337- // Component is unmounting
338- }
339337
340338 componentDidUpdate ( prevProps : ViewPageProps ) {
341339 // Only clear persisted selection if we're explicitly navigating to a different event via URL
@@ -468,7 +466,7 @@ class ViewPage extends React.Component<ViewPageProps> {
468466 contextMenuBuilder = { this . contextMenuBuilder }
469467 uiStore = { this . props . uiStore }
470468
471- ref = { this . listRef }
469+ ref = { this . setListRef }
472470 />
473471 </ LeftPane >
474472 < PaneOuterContainer
@@ -642,6 +640,19 @@ class ViewPage extends React.Component<ViewPageProps> {
642640 onScrollToEnd ( ) {
643641 this . listRef . current ?. scrollToEnd ( ) ;
644642 }
643+
644+ @action . bound
645+ setListRef = ( ref : ViewEventList | null ) => {
646+ if ( ref ) {
647+ ( this . listRef as any ) . current = ref ;
648+ if ( this . shouldRestoreViewStateOnRefSet ) {
649+ this . shouldRestoreViewStateOnRefSet = false ;
650+ ref . restoreViewState ( ) ;
651+ }
652+ } else {
653+ ( this . listRef as any ) . current = null ;
654+ }
655+ } ;
645656}
646657
647658const LeftPane = styled . div `
0 commit comments