@@ -6,14 +6,14 @@ namespace WalletConnect.Web3Modal
66{
77 public class RouterController
88 {
9- private readonly Dictionary < ViewType , PresenterBase > _viewsControllers = new ( ) ;
9+ private readonly Dictionary < ViewType , PresenterBase > _modalViews = new ( ) ;
1010 private readonly Stack < ViewType > _history = new ( ) ;
1111
1212 public event EventHandler < ViewChangedEventArgs > ViewChanged ;
1313
1414 public PresenterBase CurrentPresenter
1515 {
16- get => _viewsControllers [ _history . Peek ( ) ] ;
16+ get => _modalViews [ _history . Peek ( ) ] ;
1717 }
1818
1919 private readonly VisualElement _routerVisualElement ;
@@ -27,7 +27,7 @@ public RouterController(VisualElement parent)
2727
2828 parent . Add ( _routerVisualElement ) ;
2929
30- BuildViewsDictionary ( ) ;
30+ RegisterDefaultModalViews ( ) ;
3131 }
3232
3333 public void OpenView ( ViewType viewType )
@@ -41,9 +41,9 @@ public void OpenView(ViewType viewType)
4141 }
4242
4343 _history . Push ( viewType ) ;
44- _viewsControllers [ viewType ] . OnVisible ( ) ;
45- _viewsControllers [ viewType ] . ShowViewVisualElement ( ) ;
46- ViewChanged ? . Invoke ( this , new ViewChangedEventArgs ( currentViewType , viewType , _viewsControllers [ viewType ] ) ) ;
44+ _modalViews [ viewType ] . OnVisible ( ) ;
45+ _modalViews [ viewType ] . ShowViewVisualElement ( ) ;
46+ ViewChanged ? . Invoke ( this , new ViewChangedEventArgs ( currentViewType , viewType , _modalViews [ viewType ] ) ) ;
4747 }
4848
4949 public void GoBack ( )
@@ -52,13 +52,13 @@ public void GoBack()
5252 return ;
5353
5454 var oldViewType = _history . Pop ( ) ;
55- _viewsControllers [ oldViewType ] . OnDisable ( ) ;
56- _viewsControllers [ oldViewType ] . HideViewVisualElement ( ) ;
55+ _modalViews [ oldViewType ] . OnDisable ( ) ;
56+ _modalViews [ oldViewType ] . HideViewVisualElement ( ) ;
5757
5858 if ( _history . Count > 0 )
5959 {
6060 var nextViewType = _history . Peek ( ) ;
61- var nextView = _viewsControllers [ nextViewType ] ;
61+ var nextView = _modalViews [ nextViewType ] ;
6262 nextView . OnVisible ( ) ;
6363 nextView . ShowViewVisualElement ( ) ;
6464 ViewChanged ? . Invoke ( this , new ViewChangedEventArgs ( oldViewType , nextViewType , nextView ) ) ;
@@ -74,20 +74,28 @@ public void CloseAllViews()
7474 while ( _history . Count > 0 )
7575 {
7676 var viewType = _history . Pop ( ) ;
77- _viewsControllers [ viewType ] . OnDisable ( ) ;
78- _viewsControllers [ viewType ] . HideViewVisualElement ( ) ;
77+ _modalViews [ viewType ] . OnDisable ( ) ;
78+ _modalViews [ viewType ] . HideViewVisualElement ( ) ;
7979 }
8080 }
8181
82- private void BuildViewsDictionary ( )
82+ public void RegisterModalView ( ViewType viewType , PresenterBase modalView )
8383 {
84- _viewsControllers . Add ( ViewType . Connect , new ConnectPresenter ( this , _routerVisualElement ) ) ;
85- _viewsControllers . Add ( ViewType . QrCode , new QrCodePresenter ( this , _routerVisualElement ) ) ;
86- _viewsControllers . Add ( ViewType . Wallet , new WalletPresenter ( this , _routerVisualElement ) ) ;
87- _viewsControllers . Add ( ViewType . WalletSearch , new WalletSearchPresenter ( this , _routerVisualElement ) ) ;
88- _viewsControllers . Add ( ViewType . Account , new AccountPresenter ( this , _routerVisualElement ) ) ;
89- _viewsControllers . Add ( ViewType . NetworkSearch , new NetworkSearchPresenter ( this , _routerVisualElement ) ) ;
90- _viewsControllers . Add ( ViewType . NetworkLoading , new NetworkLoadingPresenter ( this , _routerVisualElement ) ) ;
84+ if ( _modalViews . TryGetValue ( viewType , out var oldModalView ) )
85+ oldModalView . Dispose ( ) ;
86+
87+ _modalViews [ viewType ] = modalView ;
88+ }
89+
90+ private void RegisterDefaultModalViews ( )
91+ {
92+ RegisterModalView ( ViewType . Connect , new ConnectPresenter ( this , _routerVisualElement ) ) ;
93+ RegisterModalView ( ViewType . QrCode , new QrCodePresenter ( this , _routerVisualElement ) ) ;
94+ RegisterModalView ( ViewType . Wallet , new WalletPresenter ( this , _routerVisualElement ) ) ;
95+ RegisterModalView ( ViewType . WalletSearch , new WalletSearchPresenter ( this , _routerVisualElement ) ) ;
96+ RegisterModalView ( ViewType . Account , new AccountPresenter ( this , _routerVisualElement ) ) ;
97+ RegisterModalView ( ViewType . NetworkSearch , new NetworkSearchPresenter ( this , _routerVisualElement ) ) ;
98+ RegisterModalView ( ViewType . NetworkLoading , new NetworkLoadingPresenter ( this , _routerVisualElement ) ) ;
9199 }
92100 }
93101
0 commit comments