@@ -22,8 +22,10 @@ import { UnreachableCheck } from '../../util/error';
2222import { UiStore } from '../../model/ui-store' ;
2323import { ProxyStore } from '../../model/proxy-store' ;
2424import { EventsStore } from '../../model/events/events-store' ;
25+ import { RulesStore } from '../../model/rules/rules-store' ;
2526import { HttpExchange } from '../../model/http/exchange' ;
2627import { FilterSet } from '../../model/filters/search-filters' ;
28+ import { buildRuleFromExchange } from '../../model/rules/rule-creation' ;
2729
2830import { SplitPane } from '../split-pane' ;
2931import { EmptyState } from '../common/empty-state' ;
@@ -43,6 +45,7 @@ interface ViewPageProps {
4345 eventsStore : EventsStore ;
4446 proxyStore : ProxyStore ;
4547 uiStore : UiStore ;
48+ rulesStore : RulesStore ,
4649 navigate : ( path : string ) => void ;
4750 eventId ?: string ;
4851}
@@ -103,6 +106,7 @@ type EditorKey = typeof EDITOR_KEYS[number];
103106@inject ( 'eventsStore' )
104107@inject ( 'proxyStore' )
105108@inject ( 'uiStore' )
109+ @inject ( 'rulesStore' )
106110@observer
107111class ViewPage extends React . Component < ViewPageProps > {
108112
@@ -268,6 +272,7 @@ class ViewPage extends React.Component<ViewPageProps> {
268272 navigate = { this . props . navigate }
269273 onDelete = { this . onDelete }
270274 onScrollToEvent = { this . onScrollToCenterEvent }
275+ onBuildRuleFromExchange = { this . onBuildRuleFromExchange }
271276 /> ;
272277 } else if ( this . selectedEvent . isTlsFailure ( ) ) {
273278 rightPane = < TlsFailureDetailsPane
@@ -402,6 +407,15 @@ class ViewPage extends React.Component<ViewPageProps> {
402407 event . pinned = ! event . pinned ;
403408 }
404409
410+ @action . bound
411+ onBuildRuleFromExchange ( exchange : HttpExchange ) {
412+ const { rulesStore, navigate } = this . props ;
413+
414+ const rule = buildRuleFromExchange ( exchange ) ;
415+ rulesStore ! . draftRules . items . unshift ( rule ) ;
416+ navigate ( `/mock/${ rule . id } ` ) ;
417+ }
418+
405419 @action . bound
406420 onDelete ( event : CollectedEvent ) {
407421 const { filteredEvents } = this . filteredEventState ;
@@ -492,7 +506,9 @@ const LeftPane = styled.div`
492506
493507const StyledViewPage = styled (
494508 // Exclude stores etc from the external props, as they're injected
495- ViewPage as unknown as WithInjected < typeof ViewPage , 'uiStore' | 'proxyStore' | 'eventsStore' | 'navigate' >
509+ ViewPage as unknown as WithInjected < typeof ViewPage ,
510+ 'uiStore' | 'proxyStore' | 'eventsStore' | 'rulesStore' | 'navigate'
511+ >
496512) `
497513 height: 100vh;
498514 position: relative;
0 commit comments