Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Embedded Wallet PR - 1 #1272

Merged
merged 11 commits into from
Jan 22, 2025
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions ChainSafe.Gaming.sln
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChainSafe.Gaming.Unity.Ethe
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChainSafe.Gaming.Mud", "src\ChainSafe.Gaming.Mud\ChainSafe.Gaming.Mud.csproj", "{084E4FCB-9376-4B29-AA8C-6871E13906E6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChainSafe.Gaming.EmbeddedWallet", "src\ChainSafe.Gaming.EmbeddedWallet\ChainSafe.Gaming.EmbeddedWallet.csproj", "{CFFFCC7F-946E-4371-A235-18250B6A5E09}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -161,6 +163,12 @@ Global
{084E4FCB-9376-4B29-AA8C-6871E13906E6}.Release|Any CPU.Build.0 = Release|Any CPU
{084E4FCB-9376-4B29-AA8C-6871E13906E6}.Test|Any CPU.ActiveCfg = Debug|Any CPU
{084E4FCB-9376-4B29-AA8C-6871E13906E6}.Test|Any CPU.Build.0 = Debug|Any CPU
{CFFFCC7F-946E-4371-A235-18250B6A5E09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CFFFCC7F-946E-4371-A235-18250B6A5E09}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFFFCC7F-946E-4371-A235-18250B6A5E09}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFFFCC7F-946E-4371-A235-18250B6A5E09}.Release|Any CPU.Build.0 = Release|Any CPU
{CFFFCC7F-946E-4371-A235-18250B6A5E09}.Test|Any CPU.ActiveCfg = Debug|Any CPU
{CFFFCC7F-946E-4371-A235-18250B6A5E09}.Test|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using ChainSafe.Gaming.EmbeddedWallet;
using Network = Web3Auth.Network;
using ThemeModes = Web3Auth.ThemeModes;
using Language = Web3Auth.Language;

namespace ChainSafe.GamingSdk.Web3Auth
{
/// <summary>
/// Configuration options for initializing a Web3AuthWallet instance.
/// </summary>
public interface IWeb3AuthConfig : IEmbeddedWalletConfig
{
// Name of the App.
public string AppName { get; }
// Client ID you get from Web3Auth dashboard.
public string ClientId { get; }
// Redirect URI for the app.
public string RedirectUri { get; }
// Network to connect to (MainNet, TestNet...).
public Network Network { get; }
public ThemeModes Theme { get; }
public Language Language { get; }

/// <summary>
/// Gets or sets the Web3AuthOptions for configuring the Web3Auth instance associated with the wallet.
/// </summary>
public Web3AuthOptions Web3AuthOptions => new Web3AuthOptions
{
clientId = ClientId,
redirectUrl = new Uri(RedirectUri),
network = Network,

whiteLabel = new()
{
mode = Theme,
defaultLanguage = Language,
appName = AppName,
}
};

/// <summary>
/// Login Provider to use when connecting the wallet, like Google, facebook etc...
/// </summary>
public Task<Provider> ProviderTask { get; }

/// <summary>
/// Get the SessionId on connection from the provider.
/// </summary>
public Task<string> SessionTask { get; }

/// <summary>
/// Token for cancelling a connection
/// </summary>
public CancellationToken CancellationToken { get; }

/// <summary>
/// Remember this session
/// </summary>
public bool RememberMe { get; }

/// <summary>
/// Remember a previous session and login automatically
/// </summary>
public bool AutoLogin { get; }
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6292,33 +6292,22 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
customTokenPlaceHolder: {fileID: 6238643033416456295}
customNftPlaceHolder: {fileID: 3893186881389953187}
customTokenDisplayErc20Parent: {fileID: 5657123885924398801}
customNftDisplayParent: {fileID: 8176955415891050272}
customTokenDisplayErc20: {fileID: 1544044832913725164}
customNftDisplay: {fileID: 6034000924353824336}
transferTokensContainer: {fileID: 6754551686753108061}
addCustomTokensMenu: {fileID: 7449198859952559396}
addCustomNftMenu: {fileID: 1102691479002500486}
selectedTokenToTransfer: {fileID: 1643824617281436576}
customTokenAddressInput: {fileID: 1450622858095165912}
customTokenSymbolInput: {fileID: 3033696630416049437}
customNftAddressInput: {fileID: 431849629550995913}
customNftSymbolInput: {fileID: 7343186495474426007}
customNftIdInput: {fileID: 6727692128954422283}
transferTokensWalletInput: {fileID: 7702073597766504067}
transferTokensAmountInput: {fileID: 3540026797197030748}
customNftAmountText: {fileID: 8143053246957829318}
customNftSymbolText: {fileID: 1935757266164244188}
customTokenAmountText: {fileID: 8346934949460858011}
customTokenSymbolText: {fileID: 6891909999124788805}
nativeTokenSymbolText: {fileID: 6256012485412186482}
nativeTokenAmountText: {fileID: 1012412206096704489}
addTokensMenuButton: {fileID: 1391477503969280662}
addNftsMenuButton: {fileID: 3285911010377504504}
closeAddTokensMenuButton: {fileID: 5417894310233579526}
closeAddNftMenuButton: {fileID: 176133887779786777}
addNftButton: {fileID: 2207920767897871812}
addTokenButton: {fileID: 3172254933871926392}
transferTokensMenuButton: {fileID: 3166722148647569110}
closeTransferTokensButton: {fileID: 3090088527211704690}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using ChainSafe.Gaming.EmbeddedWallet;
using ChainSafe.Gaming.Evm.Transactions;
using ChainSafe.Gaming.UnityPackage;
using ChainSafe.GamingSdk.Web3Auth;
Expand Down Expand Up @@ -33,8 +34,8 @@ public class Web3AuthWalletGUITxManager : MonoBehaviour
private int txHistoryDisplayCount = 20;

private bool _processingTransaction;
private IWeb3AuthTransactionHandler _transactionHandler;
private readonly Queue<TransactionRequest> _transactionQueue = new();
private IEmbeddedWalletTransactionHandler _transactionHandler;
private TransactionPool _transactionPool;

#endregion

Expand All @@ -59,33 +60,30 @@ private void Awake()
rejectRequestButton.onClick.AddListener(RejectRequest);
autoTxToggle.onValueChanged.AddListener(ToggleAutoTx);

_transactionHandler = Web3Unity.Web3.ServiceProvider.GetService<IWeb3AuthTransactionHandler>();
_transactionHandler = Web3Unity.Web3.ServiceProvider.GetService<IEmbeddedWalletTransactionHandler>();
_transactionPool = Web3Unity.Web3.ServiceProvider.GetService<TransactionPool>();
}

/// <summary>
/// Populates the incoming transaction display.
/// </summary>
private void OnTransactionRequested(TransactionRequest request)
private void RequestTransaction(EmbeddedWalletTransaction transaction)
{
_transactionQueue.Enqueue(request);

if (_processingTransaction)
{
return;
}

_processingTransaction = true;

PromptTransactionRequest();
PromptTransactionRequest(transaction);
}

/// <summary>
/// Prompts transaction request display.
/// </summary>
private void PromptTransactionRequest()
private void PromptTransactionRequest(EmbeddedWalletTransaction transaction)
{
var transaction = _transactionQueue.Peek();

incomingTxNotification.SetActive(true);

if (AutoConfirmTransactions)
Expand All @@ -102,18 +100,17 @@ private void PromptTransactionRequest()

incomingTxPlaceHolder.SetActive(false);
incomingTxDisplay.SetActive(true);
incomingTxHashText.text = transaction.Data;
incomingTxActionText.text = transaction.Value?.ToString() ?? "Sign Request";
incomingTxHashText.text = transaction.Request.Data;
incomingTxActionText.text = transaction.Request.Value?.ToString() ?? "Sign Request";
}

/// <summary>
/// Accepts an incoming transaction request.
/// </summary>
private void AcceptRequest()
{
var transaction = _transactionQueue.Dequeue();
ShowTxLoadingMenu();
_transactionHandler.TransactionApproved(transaction.Id);
_transactionHandler.TransactionApproved();
ResetTransactionDisplay();
}

Expand All @@ -122,16 +119,17 @@ private void AcceptRequest()
/// </summary>
private void RejectRequest()
{
var transaction = _transactionQueue.Dequeue();
_transactionHandler.TransactionDeclined(transaction.Id);
_transactionHandler.TransactionDeclined();
ResetTransactionDisplay();
}

/// <summary>
/// Gets transaction data.
/// </summary>
private void OnTransactionConfirmed(TransactionResponse response)
private void OnTransactionConfirmed(EmbeddedWalletTransaction transaction)
{
var response = transaction.Response.Task.Result;

var txHash = response.Hash;
var txTime = DateTime.Now.ToString("hh:mm tt");
var txAmount = response.Value?.ToString() ?? "0";
Expand Down Expand Up @@ -180,9 +178,9 @@ private void ResetTransactionDisplay()
incomingTxDisplay.SetActive(false);
incomingTxPlaceHolder.SetActive(true);
// there's transactions in queue
if (_transactionQueue.Count > 0)
if (_transactionPool.Count > 0)
{
PromptTransactionRequest();
RequestTransaction(_transactionPool.Peek());
}

else
Expand Down Expand Up @@ -253,7 +251,7 @@ private void ToggleAutoTx(bool arg0)
private void OnEnable()
{
Web3AuthEventManager.ConfigureTxManager += OnConfigureTxManager;
_transactionHandler.OnTransactionRequested += OnTransactionRequested;
_transactionHandler.OnTransactionQueued += RequestTransaction;
_transactionHandler.OnTransactionConfirmed += OnTransactionConfirmed;
}

Expand All @@ -263,7 +261,7 @@ private void OnEnable()
private void OnDisable()
{
Web3AuthEventManager.ConfigureTxManager -= OnConfigureTxManager;
_transactionHandler.OnTransactionRequested -= OnTransactionRequested;
_transactionHandler.OnTransactionQueued -= RequestTransaction;
_transactionHandler.OnTransactionConfirmed -= OnTransactionConfirmed;
}

Expand Down
Loading