@@ -22,8 +22,10 @@ import { UnreachableCheck } from '../../util/error';
22
22
import { UiStore } from '../../model/ui-store' ;
23
23
import { ProxyStore } from '../../model/proxy-store' ;
24
24
import { EventsStore } from '../../model/events/events-store' ;
25
+ import { RulesStore } from '../../model/rules/rules-store' ;
25
26
import { HttpExchange } from '../../model/http/exchange' ;
26
27
import { FilterSet } from '../../model/filters/search-filters' ;
28
+ import { buildRuleFromExchange } from '../../model/rules/rule-creation' ;
27
29
28
30
import { SplitPane } from '../split-pane' ;
29
31
import { EmptyState } from '../common/empty-state' ;
@@ -43,6 +45,7 @@ interface ViewPageProps {
43
45
eventsStore : EventsStore ;
44
46
proxyStore : ProxyStore ;
45
47
uiStore : UiStore ;
48
+ rulesStore : RulesStore ,
46
49
navigate : ( path : string ) => void ;
47
50
eventId ?: string ;
48
51
}
@@ -103,6 +106,7 @@ type EditorKey = typeof EDITOR_KEYS[number];
103
106
@inject ( 'eventsStore' )
104
107
@inject ( 'proxyStore' )
105
108
@inject ( 'uiStore' )
109
+ @inject ( 'rulesStore' )
106
110
@observer
107
111
class ViewPage extends React . Component < ViewPageProps > {
108
112
@@ -268,6 +272,7 @@ class ViewPage extends React.Component<ViewPageProps> {
268
272
navigate = { this . props . navigate }
269
273
onDelete = { this . onDelete }
270
274
onScrollToEvent = { this . onScrollToCenterEvent }
275
+ onBuildRuleFromExchange = { this . onBuildRuleFromExchange }
271
276
/> ;
272
277
} else if ( this . selectedEvent . isTlsFailure ( ) ) {
273
278
rightPane = < TlsFailureDetailsPane
@@ -402,6 +407,15 @@ class ViewPage extends React.Component<ViewPageProps> {
402
407
event . pinned = ! event . pinned ;
403
408
}
404
409
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
+
405
419
@action . bound
406
420
onDelete ( event : CollectedEvent ) {
407
421
const { filteredEvents } = this . filteredEventState ;
@@ -492,7 +506,9 @@ const LeftPane = styled.div`
492
506
493
507
const StyledViewPage = styled (
494
508
// 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
+ >
496
512
) `
497
513
height: 100vh;
498
514
position: relative;
0 commit comments