Skip to content

Commit 42ce275

Browse files
committed
Unified view creation
1 parent 860b80b commit 42ce275

15 files changed

Lines changed: 79 additions & 122 deletions

File tree

Packages/com.walletconnect.web3modal/Runtime/Components/Modal.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,11 @@ public Modal()
4242
{
4343
var newHeight = Mathf.RoundToInt(evt.newRect.height + header.resolvedStyle.height
4444
#if UNITY_ANDROID || UNITY_IOS
45-
// Bottom safe area
46-
+ RuntimePanelUtils.ScreenToPanel(panel,
47-
new Vector2(Screen.width - Screen.safeArea.xMax, Screen.safeArea.yMin)
48-
).y
45+
// Bottom safe area
46+
+ RuntimePanelUtils.ScreenToPanel(panel,
47+
new Vector2(Screen.width - Screen.safeArea.xMax, Screen.safeArea.yMin)
48+
).y
4949
#endif
50-
5150
);
5251

5352
if (modal.style.height == newHeight)

Packages/com.walletconnect.web3modal/Runtime/Connectors/Connector.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,11 @@ public async Task<bool> TryResumeSessionAsync()
5959

6060
public ConnectionProposal Connect()
6161
{
62-
Debug.Log("Connector.Connect");
6362
if (!IsInitialized)
6463
throw new Exception("Connector not initialized"); // TODO: use custom ex type
6564

6665
var connection = ConnectCore();
6766

68-
Debug.Log("Got connection");
6967
connection.Connected += ConnectionConnectedHandler;
7068

7169
_connectionProposals.Add(connection);
@@ -136,7 +134,7 @@ protected virtual void OnChainChanged(ChainChangedEventArgs e)
136134
ChainChanged?.Invoke(this, e);
137135
}
138136

139-
protected abstract Task InitializeAsyncCore( Web3ModalConfig config);
137+
protected abstract Task InitializeAsyncCore(Web3ModalConfig config);
140138

141139
protected abstract ConnectionProposal ConnectCore();
142140

Packages/com.walletconnect.web3modal/Runtime/Controllers/ModalController/ModalControllerUtk.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ protected override Task InitializeAsyncCore()
3838
RouterController = new RouterController(Modal.body);
3939
RouterController.ViewChanged += ViewChangedHandler;
4040

41-
ModalHeaderPresenter = new ModalHeaderPresenter(RouterController, Modal.header);
41+
ModalHeaderPresenter = new ModalHeaderPresenter(RouterController, Modal);
4242

4343
WCLoadingAnimator.Instance.PauseAnimation();
4444

Packages/com.walletconnect.web3modal/Runtime/Presenters/AccountPresenter.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,8 @@ public override bool HeaderBorder
2626
private RemoteSprite<Image> _networkIcon;
2727
private RemoteSprite<Image> _avatar;
2828

29-
public AccountPresenter(RouterController router, VisualElement parent) : base(router)
29+
public AccountPresenter(RouterController router, VisualElement parent) : base(router, parent)
3030
{
31-
View = new AccountView
32-
{
33-
style =
34-
{
35-
display = DisplayStyle.None
36-
}
37-
};
38-
parent.Add(View);
39-
4031
View.ExplorerButton.Clicked += OnBlockExplorerButtonClick;
4132
View.CopyLink.Clicked += OnCopyAddressButtonClick;
4233

@@ -48,7 +39,7 @@ public AccountPresenter(RouterController router, VisualElement parent) : base(ro
4839

4940
private void InitializeButtons(VisualElement buttonsListView)
5041
{
51-
CreateButtons(buttonsListView);
42+
BuildButtons(buttonsListView);
5243
}
5344

5445
private void AccountPropertyChangedHandler(object sender, PropertyChangedEventArgs e)
@@ -77,13 +68,13 @@ private void ChainChangedHandler(object sender, NetworkController.ChainChangedEv
7768
}
7869

7970
// Creates the buttons at the bottom of the account view.
80-
protected virtual void CreateButtons(VisualElement buttonsListView)
71+
protected virtual void BuildButtons(VisualElement buttonsListView)
8172
{
82-
CreateNetworkButton(buttonsListView);
83-
CreateDisconnectButton(buttonsListView);
73+
BuildNetworkButton(buttonsListView);
74+
BuildDisconnectButton(buttonsListView);
8475
}
8576

86-
protected virtual void CreateNetworkButton(VisualElement buttonsListView)
77+
protected virtual void BuildNetworkButton(VisualElement buttonsListView)
8778
{
8879
_networkButton = new ListItem("Network", OnNetworkButtonClick, null, ListItem.IconType.Circle)
8980
{
@@ -96,7 +87,7 @@ protected virtual void CreateNetworkButton(VisualElement buttonsListView)
9687
buttonsListView.Add(_networkButton);
9788
}
9889

99-
protected virtual void CreateDisconnectButton(VisualElement buttonsListView)
90+
protected virtual void BuildDisconnectButton(VisualElement buttonsListView)
10091
{
10192
var disconnectIcon = Resources.Load<VectorImage>("WalletConnect/Web3Modal/Icons/icon_medium_disconnect");
10293
var disconnectButton = new ListItem("Disconnect", OnDisconnectButtonClick, disconnectIcon, ListItem.IconType.Circle, ListItem.IconStyle.Accent);

Packages/com.walletconnect.web3modal/Runtime/Presenters/ConnectPresenter.cs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,8 @@ public override string Title
1818
get => "Connect wallet";
1919
}
2020

21-
public ConnectPresenter(RouterController router, VisualElement parent) : base(router)
21+
public ConnectPresenter(RouterController router, VisualElement parent) : base(router, parent)
2222
{
23-
View = CreateVisualElement(parent);
24-
View.style.display = DisplayStyle.None;
25-
2623
Build();
2724

2825
// Rebuild UI after wallet disconnects
@@ -31,17 +28,6 @@ public ConnectPresenter(RouterController router, VisualElement parent) : base(ro
3128
await RebuildAsync();
3229
}
3330

34-
private static VisualElement CreateVisualElement(VisualElement parent)
35-
{
36-
var view = new VisualElement
37-
{
38-
name = "connect-view"
39-
};
40-
41-
parent.Add(view);
42-
return view;
43-
}
44-
4531
private async void Build()
4632
{
4733
try

Packages/com.walletconnect.web3modal/Runtime/Presenters/DeepLinkPresenter.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@ public class DeepLinkPresenter : Presenter<DeepLinkView>
2222

2323
private const string ContinueInTextTemplate = "Continue in {0}";
2424

25-
public DeepLinkPresenter(RouterController router, DeepLinkView deepLinkView) : base(router)
25+
public DeepLinkPresenter(RouterController router, VisualElement parent, bool hideView = true) : base(router, parent, hideView)
2626
{
27-
View = deepLinkView;
2827
View.CopyLinkClicked += OnCopyLinkClicked;
2928
View.TryAgainLinkClicked += OnTryAgainLinkClicked;
3029

@@ -36,6 +35,11 @@ public DeepLinkPresenter(RouterController router, DeepLinkView deepLinkView) : b
3635
#endif
3736
}
3837

38+
protected override DeepLinkView CreateViewInstance()
39+
{
40+
return Parent.Q<DeepLinkView>();
41+
}
42+
3943
protected override void OnVisibleCore()
4044
{
4145
base.OnVisibleCore();

Packages/com.walletconnect.web3modal/Runtime/Presenters/ModalHeaderPresenter.cs

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,23 @@ namespace WalletConnect.Web3Modal
1010
{
1111
public class ModalHeaderPresenter : Presenter<ModalHeader>
1212
{
13-
private readonly RouterController _routerController;
14-
private readonly ModalHeader _modalHeader;
1513
private readonly Label _title;
1614
private readonly Dictionary<ViewType, VisualElement> _leftSlotItems = new();
1715

1816
private Coroutine _snackbarCoroutine;
1917

20-
public ModalHeaderPresenter(RouterController routerController, ModalHeader modalHeader) : base(routerController)
18+
public ModalHeaderPresenter(RouterController routerController, Modal parent) : base(routerController, parent)
2119
{
22-
View = modalHeader;
20+
View.style.display = DisplayStyle.Flex;
2321

24-
_routerController = routerController;
25-
_modalHeader = modalHeader;
26-
27-
_routerController.ViewChanged += ViewChangedHandler;
22+
Router.ViewChanged += ViewChangedHandler;
2823
Web3Modal.NotificationController.Notification += NotificationHandler;
2924
Web3Modal.ModalController.OpenStateChanged += ModalOpenStateChangedHandler;
3025

26+
// Create title label
3127
_title = new Label();
3228
_title.AddToClassList("text-paragraph");
33-
_modalHeader.body.Add(_title);
29+
View.body.Add(_title);
3430

3531
// Create Back button and add it to the left slot
3632
var goBackIconLink = new IconLink(
@@ -42,7 +38,7 @@ public ModalHeaderPresenter(RouterController routerController, ModalHeader modal
4238
display = DisplayStyle.None
4339
}
4440
};
45-
modalHeader.leftSlot.Add(goBackIconLink);
41+
View.leftSlot.Add(goBackIconLink);
4642

4743
// Assign buttons to the corresponding view types
4844
_leftSlotItems.Add(ViewType.QrCode, goBackIconLink);
@@ -52,17 +48,22 @@ public ModalHeaderPresenter(RouterController routerController, ModalHeader modal
5248
_leftSlotItems.Add(ViewType.NetworkLoading, goBackIconLink);
5349

5450
// Close button
55-
modalHeader.rightSlot.Add(new IconLink(
51+
View.rightSlot.Add(new IconLink(
5652
Resources.Load<VectorImage>("WalletConnect/Web3Modal/Icons/icon_bold_xmark"),
5753
Web3Modal.CloseModal
5854
));
5955
}
6056

57+
protected override ModalHeader CreateViewInstance()
58+
{
59+
return (Parent as Modal)?.header ?? Parent.Q<ModalHeader>();
60+
}
61+
6162
private void ModalOpenStateChangedHandler(object _, ModalOpenStateChangedEventArgs e)
6263
{
6364
if (!e.IsOpen)
6465
{
65-
_modalHeader.leftSlot.style.visibility = Visibility.Hidden;
66+
View.leftSlot.style.visibility = Visibility.Hidden;
6667
}
6768
}
6869

@@ -90,10 +91,10 @@ private IEnumerator ShowSnackbarCoroutine(NotificationEventArgs notification)
9091
_ => Resources.Load<VectorImage>("WalletConnect/Web3Modal/Icons/icon_bold_warningcircle")
9192
};
9293

93-
_modalHeader.ShowSnackbar(snackbarIconColor, icon, notification.message);
94+
View.ShowSnackbar(snackbarIconColor, icon, notification.message);
9495

9596
yield return new WaitForSeconds(2);
96-
_modalHeader.HideSnackbar();
97+
View.HideSnackbar();
9798

9899
_snackbarCoroutine = null;
99100
}
@@ -110,15 +111,15 @@ private void ViewChangedHandler(object _, ViewChangedEventArgs args)
110111
if (_leftSlotItems.TryGetValue(args.newViewType, out var newItem))
111112
{
112113
newItem.style.display = DisplayStyle.Flex;
113-
_modalHeader.leftSlot.style.visibility = Visibility.Visible;
114+
View.leftSlot.style.visibility = Visibility.Visible;
114115
}
115116
else
116117
{
117-
_modalHeader.leftSlot.style.visibility = Visibility.Hidden;
118+
View.leftSlot.style.visibility = Visibility.Hidden;
118119
}
119120

120121
if (args.newPresenter != null)
121-
_modalHeader.style.borderBottomWidth = args.newPresenter.HeaderBorder
122+
View.style.borderBottomWidth = args.newPresenter.HeaderBorder
122123
? 1
123124
: 0;
124125
}

Packages/com.walletconnect.web3modal/Runtime/Presenters/NetworkLoadingPresenter.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,8 @@ namespace WalletConnect.Web3Modal
77
{
88
public class NetworkLoadingPresenter : Presenter<NetworkLoadingView>
99
{
10-
public NetworkLoadingPresenter(RouterController router, VisualElement parent) : base(router)
10+
public NetworkLoadingPresenter(RouterController router, VisualElement parent) : base(router, parent)
1111
{
12-
View = new NetworkLoadingView();
13-
parent.Add(View);
14-
15-
View.style.display = DisplayStyle.None;
16-
1712
Web3Modal.NetworkController.ChainChanged += ChainChangedHandler;
1813
}
1914

Packages/com.walletconnect.web3modal/Runtime/Presenters/NetworkSearchPresenter.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,8 @@ public override string Title
2121
private readonly Dictionary<string, CardSelect> _netowrkItems = new();
2222
private string _highlightedChainId;
2323

24-
public NetworkSearchPresenter(RouterController router, VisualElement parent) : base(router)
24+
public NetworkSearchPresenter(RouterController router, VisualElement parent) : base(router, parent)
2525
{
26-
View = new NetworkSearchView();
27-
parent.Add(View);
28-
29-
View.style.display = DisplayStyle.None;
3026
View.RegisterCallback<GeometryChangedEvent>(OnGeometryChanged);
3127

3228
Web3Modal.Initialized += (_, _) =>

Packages/com.walletconnect.web3modal/Runtime/Presenters/Presenter.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using UnityEngine;
23
using UnityEngine.UIElements;
34

45
namespace WalletConnect.Web3Modal
@@ -72,18 +73,34 @@ protected virtual void Dispose(bool disposing)
7273
protected abstract void OnDisableCore();
7374
}
7475

75-
public class Presenter<TView> : PresenterBase where TView : VisualElement
76+
public abstract class Presenter<TView> : PresenterBase where TView : VisualElement, new()
7677
{
7778
protected TView View { get; set; }
7879

80+
protected VisualElement Parent { get; }
81+
7982
public override VisualElement ViewVisualElement
8083
{
8184
get => View;
8285
}
8386

84-
public Presenter(RouterController router)
87+
public Presenter(RouterController router, VisualElement parent, bool hideView = true)
8588
{
8689
Router = router;
90+
Parent = parent;
91+
BuildView(hideView);
92+
}
93+
94+
protected void BuildView(bool hideView)
95+
{
96+
View = CreateViewInstance();
97+
View.style.display = hideView ? DisplayStyle.None : DisplayStyle.Flex;
98+
Parent.Add(View);
99+
}
100+
101+
protected virtual TView CreateViewInstance()
102+
{
103+
return new TView();
87104
}
88105

89106
protected override void OnVisibleCore()

0 commit comments

Comments
 (0)