@@ -9,12 +9,13 @@ import {
99 type SourceResponse ,
1010 type SavedSearchResponse ,
1111} from '@/api/client' ;
12+ import AlertsPage from '@/components/AlertsPage' ;
1213import ErrorDisplay from '@/components/ErrorDisplay' ;
1314import LoginForm from '@/components/LoginForm' ;
1415import SourcePicker from '@/components/SourcePicker' ;
1516import EventViewer from '@/components/EventViewer' ;
1617
17- type Screen = 'loading' | 'login' | 'pick-source' | 'events' ;
18+ type Screen = 'loading' | 'login' | 'pick-source' | 'events' | 'alerts' ;
1819
1920interface AppProps {
2021 apiUrl : string ;
@@ -122,6 +123,18 @@ export default function App({ apiUrl, query, sourceName, follow }: AppProps) {
122123 [ eventSources ] ,
123124 ) ;
124125
126+ // Track the screen before alerts so we can return to it
127+ const [ preAlertsScreen , setPreAlertsScreen ] = useState < Screen > ( 'events' ) ;
128+
129+ const handleOpenAlerts = useCallback ( ( ) => {
130+ setPreAlertsScreen ( screen ) ;
131+ setScreen ( 'alerts' ) ;
132+ } , [ screen ] ) ;
133+
134+ const handleCloseAlerts = useCallback ( ( ) => {
135+ setScreen ( preAlertsScreen ) ;
136+ } , [ preAlertsScreen ] ) ;
137+
125138 if ( error ) {
126139 return (
127140 < Box paddingX = { 1 } >
@@ -152,10 +165,17 @@ export default function App({ apiUrl, query, sourceName, follow }: AppProps) {
152165 </ Text >
153166 < Text dimColor > Search and tail events from the terminal</ Text >
154167 </ Box >
155- < SourcePicker sources = { eventSources } onSelect = { handleSourceSelect } />
168+ < SourcePicker
169+ sources = { eventSources }
170+ onSelect = { handleSourceSelect }
171+ onOpenAlerts = { handleOpenAlerts }
172+ />
156173 </ Box >
157174 ) ;
158175
176+ case 'alerts' :
177+ return < AlertsPage client = { client } onClose = { handleCloseAlerts } /> ;
178+
159179 case 'events' :
160180 if ( ! selectedSource ) return null ;
161181 return (
@@ -166,6 +186,7 @@ export default function App({ apiUrl, query, sourceName, follow }: AppProps) {
166186 sources = { eventSources }
167187 savedSearches = { savedSearches }
168188 onSavedSearchSelect = { handleSavedSearchSelect }
189+ onOpenAlerts = { handleOpenAlerts }
169190 initialQuery = { activeQuery }
170191 follow = { follow }
171192 />
0 commit comments