@@ -5,12 +5,11 @@ import {
55import React , { useCallback , useMemo } from 'react' ;
66import { useDispatch , useSelector } from 'react-redux' ;
77import {
8- MemoryRouter ,
98 Route ,
10- Switch ,
11- useHistory ,
9+ Routes ,
10+ useNavigate ,
1211 useLocation ,
13- } from 'react-router-dom' ;
12+ } from 'react-router-dom-v5-compat ' ;
1413import * as URI from 'uri-js' ;
1514import { useI18nContext } from '../../../hooks/useI18nContext' ;
1615import { useNetworkFormState } from '../../../pages/settings/networks-tab/networks-form/networks-form-state' ;
@@ -32,17 +31,15 @@ import { AddNetwork } from './components/add-network';
3231import { NetworkTabs } from './network-tabs' ;
3332import { useNetworkManagerState } from './hooks/useNetworkManagerState' ;
3433
35- // Router content component
36- const NetworkManagerRouter = ( ) => {
34+ export const NetworkManager = ( ) => {
35+ const dispatch = useDispatch ( ) ;
3736 const t = useI18nContext ( ) ;
38- const history = useHistory ( ) ;
37+ const navigate = useNavigate ( ) ;
3938 const location = useLocation ( ) ;
40- const dispatch = useDispatch ( ) ;
4139
4240 const { initialTab } = useNetworkManagerState ( ) ;
43-
4441 const handleNewNetwork = ( ) => {
45- history . push ( '/add' ) ;
42+ navigate ( '/add' ) ;
4643 } ;
4744
4845 const [ , evmNetworks ] = useSelector (
@@ -83,13 +80,13 @@ const NetworkManagerRouter = () => {
8380 } ) ;
8481
8582 if ( location . pathname === '/edit-rpc' ) {
86- history . push ( '/edit' ) ;
83+ navigate ( '/edit' ) ;
8784 } else {
88- history . push ( '/add' ) ;
85+ navigate ( '/add' ) ;
8986 }
9087 }
9188 } ,
92- [ history , networkFormState ] ,
89+ [ navigate , networkFormState , location . pathname ] ,
9390 ) ;
9491
9592 const handleAddExplorerUrl = useCallback (
@@ -109,137 +106,175 @@ const NetworkManagerRouter = () => {
109106 networkFormState . blockExplorers . blockExplorerUrls . length ,
110107 } ) ;
111108 if ( location . pathname === '/edit-explorer-url' ) {
112- history . push ( '/edit' ) ;
109+ navigate ( '/edit' ) ;
113110 } else {
114- history . push ( '/add' ) ;
111+ navigate ( '/add' ) ;
115112 }
116113 onComplete ?.( ) ;
117114 }
118115 } ;
119116 } ,
120- [ networkFormState , history ] ,
117+ [ networkFormState , navigate , location . pathname ] ,
121118 ) ;
122119
123120 const handleClose = ( ) => {
124121 dispatch ( hideModal ( ) ) ;
125- history . push ( '/' ) ;
122+ navigate ( '/' ) ;
126123 } ;
127124
128125 const handleGoHome = ( ) => {
129- history . push ( '/' ) ;
126+ navigate ( '/' ) ;
130127 } ;
131128
132129 const handleEditOnComplete = useCallback ( ( ) => {
133- history . push ( '/edit' ) ;
134- } , [ history ] ) ;
130+ navigate ( '/edit' ) ;
131+ } , [ navigate ] ) ;
135132
136133 const handleAddOnComplete = useCallback ( ( ) => {
137- history . push ( '/add' ) ;
138- } , [ history ] ) ;
139-
140- return (
141- < Switch >
142- < Route path = "/add" >
143- < ModalHeader
144- onClose = { handleClose }
145- onBack = { handleGoHome }
146- closeButtonProps = { { 'data-testid' : 'modal-header-close-button' } }
147- >
148- { t ( 'addNetwork' ) }
149- </ ModalHeader >
150- < AddNetwork
151- networkFormState = { networkFormState }
152- network = { editedNetwork as UpdateNetworkFields }
153- />
154- </ Route >
155- < Route path = "/add-rpc" >
156- < ModalHeader
157- onClose = { handleClose }
158- onBack = { handleNewNetwork }
159- closeButtonProps = { { 'data-testid' : 'modal-header-close-button' } }
160- >
161- { t ( 'addRpcUrl' ) }
162- </ ModalHeader >
163- < AddRpcUrlModal onAdded = { handleAddRPC } />
164- </ Route >
165- < Route path = "/edit-rpc" >
166- < ModalHeader
167- onClose = { handleClose }
168- onBack = { handleEditOnComplete }
169- closeButtonProps = { { 'data-testid' : 'modal-header-close-button' } }
170- >
171- { t ( 'addRpcUrl' ) }
172- </ ModalHeader >
173- < AddRpcUrlModal onAdded = { handleAddRPC } />
174- </ Route >
175- < Route path = "/add-explorer-url" >
176- < ModalHeader
177- onClose = { handleClose }
178- onBack = { handleNewNetwork }
179- closeButtonProps = { { 'data-testid' : 'modal-header-close-button' } }
180- >
181- { t ( 'addBlockExplorerUrl' ) }
182- </ ModalHeader >
183- < AddBlockExplorerModal
184- onAdded = { handleAddExplorerUrl ( handleAddOnComplete ) }
185- />
186- </ Route >
187- < Route path = "/edit-explorer-url" >
188- < ModalHeader
189- onClose = { handleClose }
190- onBack = { handleNewNetwork }
191- closeButtonProps = { { 'data-testid' : 'modal-header-close-button' } }
192- >
193- { t ( 'addBlockExplorerUrl' ) }
194- </ ModalHeader >
195- < AddBlockExplorerModal
196- onAdded = { handleAddExplorerUrl ( handleEditOnComplete ) }
197- />
198- </ Route >
199- < Route path = "/edit" >
200- < ModalHeader
201- onClose = { handleClose }
202- onBack = { handleGoHome }
203- closeButtonProps = { { 'data-testid' : 'modal-header-close-button' } }
204- >
205- { t ( 'editNetwork' ) }
206- </ ModalHeader >
207- < AddNetwork
208- networkFormState = { networkFormState }
209- network = { editedNetwork as UpdateNetworkFields }
210- isEdit = { true }
211- />
212- </ Route >
213- < Route path = "/select-rpc" >
214- < ModalHeader
215- onClose = { handleClose }
216- onBack = { handleGoHome }
217- closeButtonProps = { { 'data-testid' : 'modal-header-close-button' } }
218- >
219- { t ( 'selectRpcUrl' ) }
220- </ ModalHeader >
221- < SelectRpcUrlModal onNetworkChange = { handleClose } />
222- </ Route >
223- < Route path = "/" >
224- < NetworkTabs initialTab = { initialTab } />
225- </ Route >
226- </ Switch >
227- ) ;
228- } ;
229-
230- export const NetworkManager = ( ) => {
231- const dispatch = useDispatch ( ) ;
232-
233- const onClose = useCallback ( ( ) => {
234- dispatch ( hideModal ( ) ) ;
235- } , [ dispatch ] ) ;
134+ navigate ( '/add' ) ;
135+ } , [ navigate ] ) ;
236136
237137 return (
238- < Modal isOpen onClose = { onClose } isClosedOnEscapeKey isClosedOnOutsideClick >
138+ < Modal
139+ isOpen
140+ onClose = { handleClose }
141+ isClosedOnEscapeKey
142+ isClosedOnOutsideClick
143+ >
239144 < ModalContent size = { ModalContentSize . Md } >
240- < MemoryRouter initialEntries = { [ '/' ] } >
241- < NetworkManagerRouter />
242- </ MemoryRouter >
145+ < Routes >
146+ < Route
147+ path = "/add"
148+ element = {
149+ < >
150+ < ModalHeader
151+ onClose = { handleClose }
152+ onBack = { handleGoHome }
153+ closeButtonProps = { {
154+ 'data-testid' : 'modal-header-close-button' ,
155+ } }
156+ >
157+ { t ( 'addNetwork' ) }
158+ </ ModalHeader >
159+ < AddNetwork
160+ networkFormState = { networkFormState }
161+ network = { editedNetwork as UpdateNetworkFields }
162+ />
163+ </ >
164+ }
165+ />
166+ < Route
167+ path = "/add-rpc"
168+ element = {
169+ < >
170+ < ModalHeader
171+ onClose = { handleClose }
172+ onBack = { handleNewNetwork }
173+ closeButtonProps = { {
174+ 'data-testid' : 'modal-header-close-button' ,
175+ } }
176+ >
177+ { t ( 'addRpcUrl' ) }
178+ </ ModalHeader >
179+ < AddRpcUrlModal onAdded = { handleAddRPC } />
180+ </ >
181+ }
182+ />
183+ < Route
184+ path = "/edit-rpc"
185+ element = {
186+ < >
187+ < ModalHeader
188+ onClose = { handleClose }
189+ onBack = { handleEditOnComplete }
190+ closeButtonProps = { {
191+ 'data-testid' : 'modal-header-close-button' ,
192+ } }
193+ >
194+ { t ( 'addRpcUrl' ) }
195+ </ ModalHeader >
196+ < AddRpcUrlModal onAdded = { handleAddRPC } />
197+ </ >
198+ }
199+ />
200+ < Route
201+ path = "/add-explorer-url"
202+ element = {
203+ < >
204+ < ModalHeader
205+ onClose = { handleClose }
206+ onBack = { handleNewNetwork }
207+ closeButtonProps = { {
208+ 'data-testid' : 'modal-header-close-button' ,
209+ } }
210+ >
211+ { t ( 'addBlockExplorerUrl' ) }
212+ </ ModalHeader >
213+ < AddBlockExplorerModal
214+ onAdded = { handleAddExplorerUrl ( handleAddOnComplete ) }
215+ />
216+ </ >
217+ }
218+ />
219+ < Route
220+ path = "/edit-explorer-url"
221+ element = {
222+ < >
223+ < ModalHeader
224+ onClose = { handleClose }
225+ onBack = { handleNewNetwork }
226+ closeButtonProps = { {
227+ 'data-testid' : 'modal-header-close-button' ,
228+ } }
229+ >
230+ { t ( 'addBlockExplorerUrl' ) }
231+ </ ModalHeader >
232+ < AddBlockExplorerModal
233+ onAdded = { handleAddExplorerUrl ( handleEditOnComplete ) }
234+ />
235+ </ >
236+ }
237+ />
238+ < Route
239+ path = "/edit"
240+ element = {
241+ < >
242+ < ModalHeader
243+ onClose = { handleClose }
244+ onBack = { handleGoHome }
245+ closeButtonProps = { {
246+ 'data-testid' : 'modal-header-close-button' ,
247+ } }
248+ >
249+ { t ( 'editNetwork' ) }
250+ </ ModalHeader >
251+ < AddNetwork
252+ networkFormState = { networkFormState }
253+ network = { editedNetwork as UpdateNetworkFields }
254+ isEdit = { true }
255+ />
256+ </ >
257+ }
258+ />
259+ < Route
260+ path = "/select-rpc"
261+ element = {
262+ < >
263+ < ModalHeader
264+ onClose = { handleClose }
265+ onBack = { handleGoHome }
266+ closeButtonProps = { {
267+ 'data-testid' : 'modal-header-close-button' ,
268+ } }
269+ >
270+ { t ( 'selectRpcUrl' ) }
271+ </ ModalHeader >
272+ < SelectRpcUrlModal onNetworkChange = { handleClose } />
273+ </ >
274+ }
275+ />
276+ < Route path = "/" element = { < NetworkTabs initialTab = { initialTab } /> } />
277+ </ Routes >
243278 </ ModalContent >
244279 </ Modal >
245280 ) ;
0 commit comments