11import React , { useEffect , useState } from "react"
2- import { useDebounceEffect , useMemoizedFn } from "ahooks"
2+ import { useDebounceEffect , useMemoizedFn , useUpdateEffect } from "ahooks"
33import { editor } from "monaco-editor"
44import * as monaco from "monaco-editor"
55import classNames from "classnames"
@@ -17,6 +17,7 @@ const {ipcRenderer} = window.require("electron")
1717interface RegexTesterProps {
1818 onSave : ( pattern : string ) => void
1919 defaultCode ?: string
20+ rule ?: string
2021}
2122
2223interface MatchResult {
@@ -26,10 +27,10 @@ interface MatchResult {
2627}
2728
2829export const RegexTester : React . FC < RegexTesterProps > = React . memo ( ( props ) => {
29- const { onSave, defaultCode = "" } = props
30+ const { onSave, defaultCode = "" , rule = '' } = props
3031 const { t} = useI18nNamespaces ( [ "mitm" , "webFuzzer" ] )
3132
32- const [ regexPattern , setRegexPattern ] = useState ( "" )
33+ const [ regexPattern , setRegexPattern ] = useState ( rule )
3334 const [ testText , setTestText ] = useState ( defaultCode )
3435 const [ editorInstance , setEditorInstance ] = useState < editor . IStandaloneCodeEditor > ( )
3536 const [ matches , setMatches ] = useState < MatchResult [ ] > ( [ ] )
@@ -153,9 +154,12 @@ export const RegexTester: React.FC<RegexTesterProps> = React.memo((props) => {
153154 const handleRegexSave = useMemoizedFn ( ( val : string ) => {
154155 setActiveMatchIndex ( undefined )
155156 setRegexPattern ( val )
156- onSave ( val )
157157 } )
158158
159+ useUpdateEffect ( ( ) => {
160+ onSave ( regexPattern )
161+ } , [ regexPattern ] )
162+
159163 return (
160164 < div className = { styles [ "regex-tester" ] } >
161165 < div className = { styles [ "regex-tester-left" ] } >
0 commit comments