mirror of
https://github.com/status-im/nft-faucet.git
synced 2025-02-22 11:38:26 +00:00
Rename Provider to Wallet
This commit is contained in:
parent
1f97ff7935
commit
eceb53d2fe
@ -4,7 +4,7 @@ public class AppStateDto
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.Parse("621a252e-1d8d-4225-a045-b470469730cb");
|
||||
public Guid? SelectedNetwork { get; set; }
|
||||
public Guid? SelectedProvider { get; set; }
|
||||
public Guid? SelectedWallet { get; set; }
|
||||
public Guid? SelectedContract { get; set; }
|
||||
public Guid? SelectedToken { get; set; }
|
||||
public Guid? SelectedUploadLocation { get; set; }
|
||||
|
@ -1,6 +1,6 @@
|
||||
namespace NftFaucet.Infrastructure.Models.Dto;
|
||||
|
||||
public class ProviderStateDto
|
||||
public class WalletStateDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string State { get; set; }
|
@ -6,7 +6,7 @@ namespace NftFaucet.Infrastructure.Models.State;
|
||||
public class PluginStateStorage
|
||||
{
|
||||
public ICollection<INetwork> Networks { get; set; }
|
||||
public ICollection<IProvider> Providers { get; set; }
|
||||
public ICollection<IWallet> Wallets { get; set; }
|
||||
public ICollection<IUploader> Uploaders { get; set; }
|
||||
public ICollection<IContract> Contracts { get; set; }
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ public class ScopedAppState
|
||||
public UserStateStorage UserStorage { get; private set; } = new();
|
||||
|
||||
public INetwork SelectedNetwork => PluginStorage?.Networks?.FirstOrDefault(x => x.Id == UserStorage?.SelectedNetworks?.FirstOrDefault());
|
||||
public IProvider SelectedProvider => PluginStorage?.Providers?.FirstOrDefault(x => x.Id == UserStorage?.SelectedProviders?.FirstOrDefault());
|
||||
public IWallet SelectedWallet => PluginStorage?.Wallets?.FirstOrDefault(x => x.Id == UserStorage?.SelectedWallets?.FirstOrDefault());
|
||||
public IContract SelectedContract => PluginStorage?.Contracts?.FirstOrDefault(x => x.Id == UserStorage?.SelectedContracts?.FirstOrDefault());
|
||||
public IToken SelectedToken => UserStorage?.Tokens?.FirstOrDefault(x => x.Id == UserStorage?.SelectedTokens?.FirstOrDefault());
|
||||
public ITokenUploadLocation SelectedUploadLocation => UserStorage?.UploadLocations?.FirstOrDefault(x => x.Id == UserStorage?.SelectedUploadLocations?.FirstOrDefault());
|
||||
|
@ -8,7 +8,7 @@ public class UserStateStorage
|
||||
public ICollection<ITokenUploadLocation> UploadLocations { get; set; }
|
||||
|
||||
public Guid[] SelectedNetworks { get; set; }
|
||||
public Guid[] SelectedProviders { get; set; }
|
||||
public Guid[] SelectedWallets { get; set; }
|
||||
public Guid[] SelectedContracts { get; set; }
|
||||
public Guid[] SelectedTokens { get; set; }
|
||||
public Guid[] SelectedUploadLocations { get; set; }
|
||||
|
@ -10,12 +10,12 @@ public interface IStateRepository
|
||||
public Task SaveAppState(ScopedAppState appState);
|
||||
public Task SaveToken(IToken token);
|
||||
public Task SaveUploadLocation(ITokenUploadLocation uploadLocation);
|
||||
public Task SaveProviderState(IProvider provider);
|
||||
public Task SaveWalletState(IWallet wallet);
|
||||
public Task SaveUploaderState(IUploader uploader);
|
||||
|
||||
public Task LoadAppState(ScopedAppState appState);
|
||||
public Task<IToken[]> LoadTokens();
|
||||
public Task<ITokenUploadLocation[]> LoadUploadLocations();
|
||||
public Task<UploaderStateDto[]> LoadUploaderStates();
|
||||
public Task<ProviderStateDto[]> LoadProviderStates();
|
||||
public Task<WalletStateDto[]> LoadWalletStates();
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ public class StateRepository : IStateRepository
|
||||
private const string AppStateStoreName = "AppState";
|
||||
private const string TokensStoreName = "Tokens";
|
||||
private const string UploadLocationsStoreName = "UploadLocations";
|
||||
private const string ProviderStatesStoreName = "ProviderStates";
|
||||
private const string WalletStatesStoreName = "WalletStates";
|
||||
private const string UploaderStatesStoreName = "UploaderStates";
|
||||
|
||||
public StateRepository(IndexedDBManager dbManager, Mapper mapper)
|
||||
@ -108,21 +108,21 @@ public class StateRepository : IStateRepository
|
||||
return existingUploadLocations.Select(_mapper.ToDomain).ToArray();
|
||||
}
|
||||
|
||||
public async Task SaveProviderState(IProvider provider)
|
||||
public async Task SaveWalletState(IWallet wallet)
|
||||
{
|
||||
var state = await provider.GetState();
|
||||
var stateDto = new ProviderStateDto
|
||||
var state = await wallet.GetState();
|
||||
var stateDto = new WalletStateDto
|
||||
{
|
||||
Id = provider.Id,
|
||||
Id = wallet.Id,
|
||||
State = state,
|
||||
};
|
||||
var record = new StoreRecord<ProviderStateDto>
|
||||
var record = new StoreRecord<WalletStateDto>
|
||||
{
|
||||
Storename = ProviderStatesStoreName,
|
||||
Storename = WalletStatesStoreName,
|
||||
Data = stateDto,
|
||||
};
|
||||
|
||||
var existingStateDto = await _dbManager.GetRecordById<Guid, ProviderStateDto>(ProviderStatesStoreName, stateDto.Id);
|
||||
var existingStateDto = await _dbManager.GetRecordById<Guid, WalletStateDto>(WalletStatesStoreName, stateDto.Id);
|
||||
if (existingStateDto == null)
|
||||
{
|
||||
await _dbManager.AddRecord(record);
|
||||
@ -167,13 +167,13 @@ public class StateRepository : IStateRepository
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ProviderStateDto[]> LoadProviderStates()
|
||||
public async Task<WalletStateDto[]> LoadWalletStates()
|
||||
{
|
||||
var existingProviderStates = await _dbManager.GetRecords<ProviderStateDto>(ProviderStatesStoreName);
|
||||
if (existingProviderStates == null || existingProviderStates.Count == 0)
|
||||
return Array.Empty<ProviderStateDto>();
|
||||
var existingWalletStates = await _dbManager.GetRecords<WalletStateDto>(WalletStatesStoreName);
|
||||
if (existingWalletStates == null || existingWalletStates.Count == 0)
|
||||
return Array.Empty<WalletStateDto>();
|
||||
|
||||
return existingProviderStates.ToArray();
|
||||
return existingWalletStates.ToArray();
|
||||
}
|
||||
|
||||
private async Task<T> GetFirst<T>(string storeName)
|
||||
|
@ -11,7 +11,7 @@ public class Mapper
|
||||
=> appState == null ? null : new AppStateDto
|
||||
{
|
||||
SelectedNetwork = appState.SelectedNetwork?.Id,
|
||||
SelectedProvider = appState.SelectedProvider?.Id,
|
||||
SelectedWallet = appState.SelectedWallet?.Id,
|
||||
SelectedContract = appState.SelectedContract?.Id,
|
||||
SelectedToken = appState.SelectedToken?.Id,
|
||||
SelectedUploadLocation = appState.SelectedUploadLocation?.Id,
|
||||
@ -53,7 +53,7 @@ public class Mapper
|
||||
UserStorage =
|
||||
{
|
||||
SelectedNetworks = ToGuidArray(appStateDto.SelectedNetwork),
|
||||
SelectedProviders = ToGuidArray(appStateDto.SelectedProvider),
|
||||
SelectedWallets = ToGuidArray(appStateDto.SelectedWallet),
|
||||
SelectedContracts = ToGuidArray(appStateDto.SelectedContract),
|
||||
SelectedTokens = ToGuidArray(appStateDto.SelectedToken),
|
||||
SelectedUploadLocations = ToGuidArray(appStateDto.SelectedUploadLocation),
|
||||
|
@ -1,8 +0,0 @@
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.Plugins;
|
||||
|
||||
public interface IProviderPlugin
|
||||
{
|
||||
public IReadOnlyCollection<IProvider> Providers { get; }
|
||||
}
|
8
NftFaucet.Plugins/IWalletPlugin.cs
Normal file
8
NftFaucet.Plugins/IWalletPlugin.cs
Normal file
@ -0,0 +1,8 @@
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.Plugins;
|
||||
|
||||
public interface IWalletPlugin
|
||||
{
|
||||
public IReadOnlyCollection<IWallet> Wallets { get; }
|
||||
}
|
@ -2,7 +2,7 @@ using NftFaucet.Domain.Models;
|
||||
|
||||
namespace NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
public interface IProvider : INamedEntity, IStateful, IInitializable, IEntityWithProperties, IConfigurable
|
||||
public interface IWallet : INamedEntity, IStateful, IInitializable, IEntityWithProperties, IConfigurable
|
||||
{
|
||||
public bool IsNetworkSupported(INetwork network);
|
||||
public Task<string> GetAddress();
|
@ -5,7 +5,7 @@ namespace NftFaucet.Plugins.Models;
|
||||
|
||||
public record MintRequest(
|
||||
INetwork Network,
|
||||
IProvider Provider,
|
||||
IWallet Wallet,
|
||||
IContract Contract,
|
||||
IToken Token,
|
||||
ITokenUploadLocation UploadLocation,
|
||||
|
@ -3,7 +3,7 @@ using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.Plugins.Models;
|
||||
|
||||
public abstract class Provider : DefaultEntity, IProvider
|
||||
public abstract class Wallet : DefaultEntity, IWallet
|
||||
{
|
||||
public abstract bool IsNetworkSupported(INetwork network);
|
||||
public abstract Task<string> GetAddress();
|
@ -8,17 +8,17 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{926C
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NetworkPlugins", "NetworkPlugins", "{E29C020E-A3FD-4756-ACB3-3828F915EB40}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProviderPlugins", "ProviderPlugins", "{9DE3CDEC-37AE-4FB0-B115-984EB47F57C5}"
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WalletPlugins", "WalletPlugins", "{9DE3CDEC-37AE-4FB0-B115-984EB47F57C5}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UploadPlugins", "UploadPlugins", "{5FA46262-EDA0-43BB-A1E5-57F50AD7EE00}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.ProviderPlugins.Keygens", "plugins\provider-plugins\NftFaucet.ProviderPlugins.Keygens\NftFaucet.ProviderPlugins.Keygens.csproj", "{B1D73FDE-0ECD-4917-8B9A-AEFD8C8C39C5}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.WalletPlugins.Keygens", "plugins\wallet-plugins\NftFaucet.WalletPlugins.Keygens\NftFaucet.WalletPlugins.Keygens.csproj", "{B1D73FDE-0ECD-4917-8B9A-AEFD8C8C39C5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.Domain", "NftFaucet.Domain\NftFaucet.Domain.csproj", "{384ECEAB-40B1-4F22-AFBD-F710B935E23A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.ProviderPlugins.Metamask", "plugins\provider-plugins\NftFaucet.ProviderPlugins.Metamask\NftFaucet.ProviderPlugins.Metamask.csproj", "{3028C0A8-073A-4160-92C7-34D148F1D19C}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.WalletPlugins.Metamask", "plugins\wallet-plugins\NftFaucet.WalletPlugins.Metamask\NftFaucet.WalletPlugins.Metamask.csproj", "{3028C0A8-073A-4160-92C7-34D148F1D19C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.ProviderPlugins.Phantom", "plugins\provider-plugins\NftFaucet.ProviderPlugins.Phantom\NftFaucet.ProviderPlugins.Phantom.csproj", "{D6522592-0719-479F-AD8E-D58D4D7B207C}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.WalletPlugins.Phantom", "plugins\wallet-plugins\NftFaucet.WalletPlugins.Phantom\NftFaucet.WalletPlugins.Phantom.csproj", "{D6522592-0719-479F-AD8E-D58D4D7B207C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NftFaucet.UploadPlugins.Crust", "plugins\upload-plugins\NftFaucet.UploadPlugins.Crust\NftFaucet.UploadPlugins.Crust.csproj", "{BA56B8D0-B2BD-4170-9D95-D2A1ED29E334}"
|
||||
EndProject
|
||||
|
@ -25,13 +25,13 @@
|
||||
</NavLink>
|
||||
</div>
|
||||
<div class="nav-item px-3">
|
||||
<NavLink class="nav-link" href="providers" style=@(SelectedProviderName != null ? $"color: {(AppState.SelectedProvider.IsConfigured ? "lime" : "#FBBD08")};" : string.Empty)>
|
||||
<NavLink class="nav-link" href="wallets" style=@(SelectedWalletName != null ? $"color: {(AppState.SelectedWallet.IsConfigured ? "lime" : "#FBBD08")};" : string.Empty)>
|
||||
<span class="oi oi-key" aria-hidden="true"></span>
|
||||
<div style="display: flex; flex-direction: column;">
|
||||
<span style="line-height: 1rem; font-size: 1.1rem;">Provider</span>
|
||||
@if (SelectedProviderName != null)
|
||||
<span style="line-height: 1rem; font-size: 1.1rem;">Wallet</span>
|
||||
@if (SelectedWalletName != null)
|
||||
{
|
||||
<span style="line-height: 1rem; font-size: 0.7rem; color: #bbb;">@SelectedProviderName</span>
|
||||
<span style="line-height: 1rem; font-size: 0.7rem; color: #bbb;">@SelectedWalletName</span>
|
||||
}
|
||||
</div>
|
||||
</NavLink>
|
||||
|
@ -3,7 +3,7 @@ namespace NftFaucet.Components.NavMenu;
|
||||
public partial class NavMenu : BasicComponent
|
||||
{
|
||||
protected string SelectedNetworkName => AppState?.SelectedNetwork?.ShortName;
|
||||
protected string SelectedProviderName => AppState?.SelectedProvider?.ShortName;
|
||||
protected string SelectedWalletName => AppState?.SelectedWallet?.ShortName;
|
||||
protected string SelectedContractName => AppState?.SelectedContract?.Symbol;
|
||||
protected string SelectedTokenName => AppState?.SelectedToken?.Name;
|
||||
protected string SelectedUploadName => AppState?.SelectedUploadLocation?.Name;
|
||||
|
@ -31,9 +31,9 @@
|
||||
<ProjectReference Include="..\plugins\network-plugins\NftFaucet.NetworkPlugins.Optimism\NftFaucet.NetworkPlugins.Optimism.csproj" />
|
||||
<ProjectReference Include="..\plugins\network-plugins\NftFaucet.NetworkPlugins.Polygon\NftFaucet.NetworkPlugins.Polygon.csproj" />
|
||||
<ProjectReference Include="..\plugins\network-plugins\NftFaucet.NetworkPlugins.Solana\NftFaucet.NetworkPlugins.Solana.csproj" />
|
||||
<ProjectReference Include="..\plugins\provider-plugins\NftFaucet.ProviderPlugins.Keygens\NftFaucet.ProviderPlugins.Keygens.csproj" />
|
||||
<ProjectReference Include="..\plugins\provider-plugins\NftFaucet.ProviderPlugins.Metamask\NftFaucet.ProviderPlugins.Metamask.csproj" />
|
||||
<ProjectReference Include="..\plugins\provider-plugins\NftFaucet.ProviderPlugins.Phantom\NftFaucet.ProviderPlugins.Phantom.csproj" />
|
||||
<ProjectReference Include="..\plugins\wallet-plugins\NftFaucet.WalletPlugins.Keygens\NftFaucet.WalletPlugins.Keygens.csproj" />
|
||||
<ProjectReference Include="..\plugins\wallet-plugins\NftFaucet.WalletPlugins.Metamask\NftFaucet.WalletPlugins.Metamask.csproj" />
|
||||
<ProjectReference Include="..\plugins\wallet-plugins\NftFaucet.WalletPlugins.Phantom\NftFaucet.WalletPlugins.Phantom.csproj" />
|
||||
<ProjectReference Include="..\NftFaucet.Plugins\NftFaucet.Plugins.csproj" />
|
||||
<ProjectReference Include="..\plugins\upload-plugins\NftFaucet.UploadPlugins.Crust\NftFaucet.UploadPlugins.Crust.csproj" />
|
||||
<ProjectReference Include="..\plugins\upload-plugins\NftFaucet.UploadPlugins.Infura\NftFaucet.UploadPlugins.Infura.csproj" />
|
||||
|
@ -3,6 +3,6 @@ namespace NftFaucet.Options;
|
||||
public class Settings
|
||||
{
|
||||
public Guid[] RecommendedNetworks { get; set; }
|
||||
public Guid[] RecommendedProviders { get; set; }
|
||||
public Guid[] RecommendedWallets { get; set; }
|
||||
public Guid[] RecommendedUploaders { get; set; }
|
||||
}
|
||||
|
@ -17,8 +17,8 @@ else if (State == MintingState.CheckingNetwork)
|
||||
<text style="color: green;">@(AppState?.SelectedNetwork?.Name ?? "<unknown>")</text>
|
||||
</p>
|
||||
<p>
|
||||
<text style="font-weight: bold;">Provider network: </text>
|
||||
<text style="color: red;">@(ProviderNetwork?.Name ?? "<unknown>")</text>
|
||||
<text style="font-weight: bold;">Wallet network: </text>
|
||||
<text style="color: red;">@(WalletNetwork?.Name ?? "<unknown>")</text>
|
||||
</p>
|
||||
<div style="display: flex; justify-content: end;">
|
||||
<RadzenButton Click="@(async (args) => await CheckNetwork())" Text="Try again" Disabled="@(!string.IsNullOrEmpty(ProgressBarText))" />
|
||||
@ -29,7 +29,7 @@ else if (State == MintingState.CheckingNetwork)
|
||||
<RadzenContent Container="main">
|
||||
<h3>Address is not available!</h3>
|
||||
<p>
|
||||
<text style="font-weight: bold;">Provider address: </text>
|
||||
<text style="font-weight: bold;">Wallet address: </text>
|
||||
<text style="color: red;"><null></text>
|
||||
</p>
|
||||
<div style="display: flex; justify-content: end;">
|
||||
|
@ -15,7 +15,7 @@ public partial class MintDialog : BasicComponent
|
||||
|
||||
private string ProgressBarText { get; set; } = "Checking network...";
|
||||
private MintingState State { get; set; } = MintingState.CheckingNetwork;
|
||||
private INetwork ProviderNetwork { get; set; }
|
||||
private INetwork WalletNetwork { get; set; }
|
||||
private string SourceAddress { get; set; }
|
||||
private Balance Balance { get; set; }
|
||||
private string TransactionHash { get; set; }
|
||||
@ -34,16 +34,16 @@ public partial class MintDialog : BasicComponent
|
||||
ProgressBarText = "Checking network...";
|
||||
RefreshMediator.NotifyStateHasChangedSafe();
|
||||
|
||||
var providerNetworkResult = await ResultWrapper.Wrap(async () =>
|
||||
var walletNetworkResult = await ResultWrapper.Wrap(async () =>
|
||||
{
|
||||
var task1 = AppState.SelectedProvider.GetNetwork(AppState.PluginStorage.Networks.ToArray(), AppState.SelectedNetwork);
|
||||
var task1 = AppState.SelectedWallet.GetNetwork(AppState.PluginStorage.Networks.ToArray(), AppState.SelectedNetwork);
|
||||
var task2 = Task.Delay(TimeSpan.FromMilliseconds(MinDelayInMilliseconds));
|
||||
await Task.WhenAll(task1, task2);
|
||||
return task1.Result;
|
||||
});
|
||||
ProviderNetwork = providerNetworkResult.IsSuccess ? providerNetworkResult.Value : null;
|
||||
WalletNetwork = walletNetworkResult.IsSuccess ? walletNetworkResult.Value : null;
|
||||
|
||||
if (ProviderNetwork?.Id == AppState.SelectedNetwork.Id)
|
||||
if (WalletNetwork?.Id == AppState.SelectedNetwork.Id)
|
||||
{
|
||||
CheckAddress();
|
||||
}
|
||||
@ -62,7 +62,7 @@ public partial class MintDialog : BasicComponent
|
||||
|
||||
var sourceAddressResult = await ResultWrapper.Wrap(async () =>
|
||||
{
|
||||
var task1 = AppState.SelectedProvider.GetAddress();
|
||||
var task1 = AppState.SelectedWallet.GetAddress();
|
||||
var task2 = Task.Delay(TimeSpan.FromMilliseconds(MinDelayInMilliseconds));
|
||||
await Task.WhenAll(task1, task2);
|
||||
return task1.Result;
|
||||
@ -88,7 +88,7 @@ public partial class MintDialog : BasicComponent
|
||||
|
||||
var balanceResult = await ResultWrapper.Wrap(async () =>
|
||||
{
|
||||
var task1 = AppState.SelectedProvider.GetBalance(AppState.SelectedNetwork);
|
||||
var task1 = AppState.SelectedWallet.GetBalance(AppState.SelectedNetwork);
|
||||
var task2 = Task.Delay(TimeSpan.FromMilliseconds(MinDelayInMilliseconds));
|
||||
await Task.WhenAll(task1, task2);
|
||||
return task1.Result;
|
||||
@ -120,10 +120,10 @@ public partial class MintDialog : BasicComponent
|
||||
|
||||
var sendTransactionResult = await ResultWrapper.Wrap(async () =>
|
||||
{
|
||||
var mintRequest = new MintRequest(AppState.SelectedNetwork, AppState.SelectedProvider,
|
||||
var mintRequest = new MintRequest(AppState.SelectedNetwork, AppState.SelectedWallet,
|
||||
AppState.SelectedContract, AppState.SelectedToken, AppState.SelectedUploadLocation,
|
||||
AppState.UserStorage.DestinationAddress, AppState.UserStorage.TokenAmount);
|
||||
var task1 = AppState.SelectedProvider.Mint(mintRequest);
|
||||
var task1 = AppState.SelectedWallet.Mint(mintRequest);
|
||||
var task2 = Task.Delay(TimeSpan.FromMilliseconds(MinDelayInMilliseconds));
|
||||
await Task.WhenAll(task1, task2);
|
||||
return task1.Result;
|
||||
|
@ -17,12 +17,12 @@
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
<text style="font-weight: bold;">Provider: </text>
|
||||
@if (AppState?.SelectedProvider == null)
|
||||
<text style="font-weight: bold;">Wallet: </text>
|
||||
@if (AppState?.SelectedWallet == null)
|
||||
{
|
||||
@:<text style="color: red;">NOT SELECTED</text>
|
||||
}
|
||||
else if (!AppState.SelectedProvider.IsConfigured)
|
||||
else if (!AppState.SelectedWallet.IsConfigured)
|
||||
{
|
||||
@:<text style="color: red;">NOT CONFIGURED</text>
|
||||
}
|
||||
|
@ -10,8 +10,8 @@ public partial class MintPage : BasicComponent
|
||||
private string SourceAddress { get; set; }
|
||||
private bool IsReadyToMint => AppState != null &&
|
||||
AppState.SelectedNetwork != null &&
|
||||
AppState.SelectedProvider != null &&
|
||||
AppState.SelectedProvider.IsConfigured &&
|
||||
AppState.SelectedWallet != null &&
|
||||
AppState.SelectedWallet.IsConfigured &&
|
||||
AppState.SelectedContract != null &&
|
||||
AppState.SelectedToken != null &&
|
||||
AppState.SelectedUploadLocation != null &&
|
||||
@ -19,9 +19,9 @@ public partial class MintPage : BasicComponent
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
if (AppState?.SelectedProvider?.IsConfigured ?? false)
|
||||
if (AppState?.SelectedWallet?.IsConfigured ?? false)
|
||||
{
|
||||
SourceAddress = await ResultWrapper.Wrap(() => AppState.SelectedProvider.GetAddress()).Match(x => x, _ => null);
|
||||
SourceAddress = await ResultWrapper.Wrap(() => AppState.SelectedWallet.GetAddress()).Match(x => x, _ => null);
|
||||
AppState.UserStorage.DestinationAddress = SourceAddress;
|
||||
}
|
||||
}
|
||||
|
@ -45,10 +45,10 @@ public partial class NetworksPage : BasicComponent
|
||||
var currentNetwork = AppState.SelectedNetwork;
|
||||
AppState.UserStorage.SelectedContracts = Array.Empty<Guid>();
|
||||
|
||||
var currentProvider = AppState.SelectedProvider;
|
||||
if (currentNetwork == null || (currentProvider != null && !currentProvider.IsNetworkSupported(currentNetwork)))
|
||||
var currentWallet = AppState.SelectedWallet;
|
||||
if (currentNetwork == null || (currentWallet != null && !currentWallet.IsNetworkSupported(currentNetwork)))
|
||||
{
|
||||
AppState.UserStorage.SelectedProviders = Array.Empty<Guid>();
|
||||
AppState.UserStorage.SelectedWallets = Array.Empty<Guid>();
|
||||
}
|
||||
|
||||
await SaveAppState();
|
||||
|
@ -1,15 +0,0 @@
|
||||
@page "/providers"
|
||||
@inherits BasicComponent
|
||||
|
||||
<PageTitle>Providers</PageTitle>
|
||||
<RadzenContent Container="main">
|
||||
<RadzenHeading Size="H1" Text="Select network provider" />
|
||||
@if (AppState.SelectedNetwork == null)
|
||||
{
|
||||
<RadzenHeading Size="H3" Text="Please choose network first!" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<CardList Data="@ProviderCards" OnSelectedChange="@(async _ => await OnProviderChange())" @bind-SelectedItems="@AppState.UserStorage.SelectedProviders" />
|
||||
}
|
||||
</RadzenContent>
|
15
NftFaucet/Pages/WalletsPage.razor
Normal file
15
NftFaucet/Pages/WalletsPage.razor
Normal file
@ -0,0 +1,15 @@
|
||||
@page "/wallets"
|
||||
@inherits BasicComponent
|
||||
|
||||
<PageTitle>Wallets</PageTitle>
|
||||
<RadzenContent Container="main">
|
||||
<RadzenHeading Size="H1" Text="Select wallet" />
|
||||
@if (AppState.SelectedNetwork == null)
|
||||
{
|
||||
<RadzenHeading Size="H3" Text="Please choose network first!" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<CardList Data="@WalletCards" OnSelectedChange="@(async _ => await OnWalletChange())" @bind-SelectedItems="@AppState.UserStorage.SelectedWallets" />
|
||||
}
|
||||
</RadzenContent>
|
@ -10,50 +10,50 @@ using Radzen;
|
||||
|
||||
namespace NftFaucet.Pages;
|
||||
|
||||
public partial class ProvidersPage : BasicComponent
|
||||
public partial class WalletsPage : BasicComponent
|
||||
{
|
||||
[Inject]
|
||||
public IServiceProvider ServiceProvider { get; set; }
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
Providers = AppState.PluginStorage.Providers.Where(x => AppState.SelectedNetwork != null && x.IsNetworkSupported(AppState.SelectedNetwork)).ToArray();
|
||||
foreach (var provider in Providers)
|
||||
Wallets = AppState.PluginStorage.Wallets.Where(x => AppState.SelectedNetwork != null && x.IsNetworkSupported(AppState.SelectedNetwork)).ToArray();
|
||||
foreach (var wallet in Wallets)
|
||||
{
|
||||
if (!provider.IsInitialized)
|
||||
if (!wallet.IsInitialized)
|
||||
{
|
||||
await provider.InitializeAsync(ServiceProvider);
|
||||
await wallet.InitializeAsync(ServiceProvider);
|
||||
}
|
||||
}
|
||||
RefreshCards();
|
||||
RefreshMediator.NotifyStateHasChangedSafe();
|
||||
}
|
||||
|
||||
private IProvider[] Providers { get; set; }
|
||||
private CardListItem[] ProviderCards { get; set; }
|
||||
private IWallet[] Wallets { get; set; }
|
||||
private CardListItem[] WalletCards { get; set; }
|
||||
|
||||
private void RefreshCards()
|
||||
{
|
||||
ProviderCards = Providers.Select(MapCardListItem).ToArray();
|
||||
WalletCards = Wallets.Select(MapCardListItem).ToArray();
|
||||
}
|
||||
|
||||
private CardListItem MapCardListItem(IProvider provider)
|
||||
private CardListItem MapCardListItem(IWallet wallet)
|
||||
{
|
||||
var configurationItems = provider.GetConfigurationItems();
|
||||
var configurationItems = wallet.GetConfigurationItems();
|
||||
return new CardListItem
|
||||
{
|
||||
Id = provider.Id,
|
||||
ImageLocation = provider.ImageName != null ? "./images/" + provider.ImageName : null,
|
||||
Header = provider.Name,
|
||||
IsDisabled = !provider.IsSupported,
|
||||
Properties = provider.GetProperties().Select(Map).ToArray(),
|
||||
SelectionIcon = provider.IsConfigured ? CardListItemSelectionIcon.Checkmark : CardListItemSelectionIcon.Warning,
|
||||
Id = wallet.Id,
|
||||
ImageLocation = wallet.ImageName != null ? "./images/" + wallet.ImageName : null,
|
||||
Header = wallet.Name,
|
||||
IsDisabled = !wallet.IsSupported,
|
||||
Properties = wallet.GetProperties().Select(Map).ToArray(),
|
||||
SelectionIcon = wallet.IsConfigured ? CardListItemSelectionIcon.Checkmark : CardListItemSelectionIcon.Warning,
|
||||
Badges = new[]
|
||||
{
|
||||
(Settings?.RecommendedProviders?.Contains(provider.Id) ?? false)
|
||||
(Settings?.RecommendedWallets?.Contains(wallet.Id) ?? false)
|
||||
? new CardListItemBadge {Style = BadgeStyle.Success, Text = "Recommended"}
|
||||
: null,
|
||||
!provider.IsSupported
|
||||
!wallet.IsSupported
|
||||
? new CardListItemBadge {Style = BadgeStyle.Light, Text = "Not Supported"}
|
||||
: null,
|
||||
}.Where(x => x != null).ToArray(),
|
||||
@ -66,11 +66,11 @@ public partial class ProvidersPage : BasicComponent
|
||||
Style = ButtonStyle.Secondary,
|
||||
Action = async () =>
|
||||
{
|
||||
var result = await OpenConfigurationDialog(provider);
|
||||
var result = await OpenConfigurationDialog(wallet);
|
||||
RefreshCards();
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
await StateRepository.SaveProviderState(provider);
|
||||
await StateRepository.SaveWalletState(wallet);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -79,14 +79,14 @@ public partial class ProvidersPage : BasicComponent
|
||||
};
|
||||
}
|
||||
|
||||
private async Task OnProviderChange()
|
||||
private async Task OnWalletChange()
|
||||
{
|
||||
await SaveAppState();
|
||||
}
|
||||
|
||||
private async Task<Result> OpenConfigurationDialog(IProvider provider)
|
||||
private async Task<Result> OpenConfigurationDialog(IWallet wallet)
|
||||
{
|
||||
var configurationItems = provider.GetConfigurationItems();
|
||||
var configurationItems = wallet.GetConfigurationItems();
|
||||
foreach (var configurationItem in configurationItems)
|
||||
{
|
||||
var prevClickHandler = configurationItem.ClickAction;
|
||||
@ -104,7 +104,7 @@ public partial class ProvidersPage : BasicComponent
|
||||
new Dictionary<string, object>
|
||||
{
|
||||
{ nameof(ConfigurationDialog.ConfigurationItems), configurationItems },
|
||||
{ nameof(ConfigurationDialog.ConfigureAction), provider.Configure },
|
||||
{ nameof(ConfigurationDialog.ConfigureAction), wallet.Configure },
|
||||
},
|
||||
new DialogOptions() {Width = "700px", Height = "570px", Resizable = true, Draggable = true});
|
||||
|
@ -49,7 +49,7 @@ builder.Services.AddIndexedDB(dbStore =>
|
||||
Indexes = new List<IndexSpec>
|
||||
{
|
||||
new IndexSpec {Name = "selectedNetwork", KeyPath = "selectedNetwork", Auto = false},
|
||||
new IndexSpec {Name = "selectedProvider", KeyPath = "selectedProvider", Auto = false},
|
||||
new IndexSpec {Name = "selectedWallet", KeyPath = "selectedWallet", Auto = false},
|
||||
new IndexSpec {Name = "selectedContract", KeyPath = "selectedContract", Auto = false},
|
||||
new IndexSpec {Name = "selectedToken", KeyPath = "selectedToken", Auto = false},
|
||||
new IndexSpec {Name = "selectedUploadLocation", KeyPath = "selectedUploadLocation", Auto = false},
|
||||
@ -94,7 +94,7 @@ builder.Services.AddIndexedDB(dbStore =>
|
||||
|
||||
dbStore.Stores.Add(new StoreSchema
|
||||
{
|
||||
Name = "ProviderStates",
|
||||
Name = "WalletStates",
|
||||
PrimaryKey = new IndexSpec { Name = "id", KeyPath = "id", Auto = true },
|
||||
Indexes = new List<IndexSpec>
|
||||
{
|
||||
|
@ -23,27 +23,27 @@ public class InitializationService : IInitializationService
|
||||
{
|
||||
LoadDataFromPlugins();
|
||||
await LoadDataFromIndexedDb();
|
||||
await InitializeProviders();
|
||||
await InitializeWallets();
|
||||
}
|
||||
|
||||
private async Task InitializeProviders()
|
||||
private async Task InitializeWallets()
|
||||
{
|
||||
var providers = _appState.PluginStorage.Providers.Where(x => _appState.SelectedNetwork != null && x.IsNetworkSupported(_appState.SelectedNetwork)).ToArray();
|
||||
foreach (var provider in providers)
|
||||
var wallets = _appState.PluginStorage.Wallets.Where(x => _appState.SelectedNetwork != null && x.IsNetworkSupported(_appState.SelectedNetwork)).ToArray();
|
||||
foreach (var wallet in wallets)
|
||||
{
|
||||
await provider.InitializeAsync(_serviceProvider);
|
||||
await wallet.InitializeAsync(_serviceProvider);
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadDataFromPlugins()
|
||||
{
|
||||
var isFirstRun = _appState.PluginStorage.Networks == null &&
|
||||
_appState.PluginStorage.Providers == null &&
|
||||
_appState.PluginStorage.Wallets == null &&
|
||||
_appState.PluginStorage.Uploaders == null &&
|
||||
_appState.PluginStorage.Contracts == null;
|
||||
|
||||
_appState.PluginStorage.Networks ??= _pluginLoader.NetworkPlugins.SelectMany(x => x.Networks).Where(x => x != null).ToArray();
|
||||
_appState.PluginStorage.Providers ??= _pluginLoader.ProviderPlugins.SelectMany(x => x.Providers).Where(x => x != null).ToArray();
|
||||
_appState.PluginStorage.Wallets ??= _pluginLoader.WalletPlugins.SelectMany(x => x.Wallets).Where(x => x != null).ToArray();
|
||||
_appState.PluginStorage.Uploaders ??= _pluginLoader.UploaderPlugins.SelectMany(x => x.Uploaders).Where(x => x != null).ToArray();
|
||||
_appState.PluginStorage.Contracts ??= _appState.PluginStorage.Networks.SelectMany(x => x.DeployedContracts).Where(x => x != null).ToArray();
|
||||
|
||||
@ -58,15 +58,15 @@ public class InitializationService : IInitializationService
|
||||
await _stateRepository.LoadAppState(_appState);
|
||||
_appState.UserStorage.Tokens = (await _stateRepository.LoadTokens()).ToList();
|
||||
_appState.UserStorage.UploadLocations = (await _stateRepository.LoadUploadLocations()).ToList();
|
||||
var providerStates = await _stateRepository.LoadProviderStates();
|
||||
foreach (var providerState in providerStates)
|
||||
var walletStates = await _stateRepository.LoadWalletStates();
|
||||
foreach (var walletState in walletStates)
|
||||
{
|
||||
var provider = _appState.PluginStorage.Providers.FirstOrDefault(x => x.Id == providerState.Id);
|
||||
if (provider == null)
|
||||
var wallet = _appState.PluginStorage.Wallets.FirstOrDefault(x => x.Id == walletState.Id);
|
||||
if (wallet == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
await provider.SetState(providerState.State);
|
||||
await wallet.SetState(walletState.State);
|
||||
}
|
||||
var uploaderStates = await _stateRepository.LoadUploaderStates();
|
||||
foreach (var uploaderState in uploaderStates)
|
||||
@ -83,7 +83,7 @@ public class InitializationService : IInitializationService
|
||||
private void ValidatePluginsData()
|
||||
{
|
||||
var networkIds = _appState.PluginStorage.Networks.Select(x => x.Id).ToArray();
|
||||
var providerIds = _appState.PluginStorage.Providers.Select(x => x.Id).ToArray();
|
||||
var walletIds = _appState.PluginStorage.Wallets.Select(x => x.Id).ToArray();
|
||||
var uploaderIds = _appState.PluginStorage.Uploaders.Select(x => x.Id).ToArray();
|
||||
var contractIds = _appState.PluginStorage.Contracts.Select(x => x.Id).ToArray();
|
||||
|
||||
@ -93,10 +93,10 @@ public class InitializationService : IInitializationService
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are networks with same ids: {string.Join(", ", networkIdDuplicates)}");
|
||||
}
|
||||
|
||||
var providerIdDuplicates = providerIds.Duplicates().ToArray();
|
||||
if (providerIdDuplicates.Any())
|
||||
var walletIdDuplicates = walletIds.Duplicates().ToArray();
|
||||
if (walletIdDuplicates.Any())
|
||||
{
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are providers with same ids: {string.Join(", ", providerIdDuplicates)}");
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are wallets with same ids: {string.Join(", ", walletIdDuplicates)}");
|
||||
}
|
||||
|
||||
var uploaderIdDuplicates = uploaderIds.Duplicates().ToArray();
|
||||
@ -111,11 +111,11 @@ public class InitializationService : IInitializationService
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are contracts with same ids: {string.Join(", ", contractIdDuplicates)}");
|
||||
}
|
||||
|
||||
var allIds = networkIds.Concat(providerIds).Concat(uploaderIds).Concat(contractIds).ToArray();
|
||||
var allIds = networkIds.Concat(walletIds).Concat(uploaderIds).Concat(contractIds).ToArray();
|
||||
var allIdDuplicates = allIds.Duplicates().ToArray();
|
||||
if (allIdDuplicates.Any())
|
||||
{
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are plugin data items (networks/providers/uploaders/contracts) with same ids: {string.Join(", ", allIdDuplicates)}");
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are plugin data items (networks/wallets/uploaders/contracts) with same ids: {string.Join(", ", allIdDuplicates)}");
|
||||
}
|
||||
|
||||
var networkShortNames = _appState.PluginStorage.Networks.Select(x => x.ShortName).Where(x => x != null).ToArray();
|
||||
@ -125,11 +125,11 @@ public class InitializationService : IInitializationService
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are networks with same short name: {string.Join(", ", networkShortNameDuplicates)}");
|
||||
}
|
||||
|
||||
var providerShortNames = _appState.PluginStorage.Providers.Select(x => x.ShortName).Where(x => x != null).ToArray();
|
||||
var providerShortNameDuplicates = providerShortNames.Duplicates().ToArray();
|
||||
if (providerShortNameDuplicates.Any())
|
||||
var walletShortNames = _appState.PluginStorage.Wallets.Select(x => x.ShortName).Where(x => x != null).ToArray();
|
||||
var walletShortNameDuplicates = walletShortNames.Duplicates().ToArray();
|
||||
if (walletShortNameDuplicates.Any())
|
||||
{
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are providers with same short name: {string.Join(", ", providerShortNameDuplicates)}");
|
||||
throw new ApplicationException($"[{nameof(ValidatePluginsData)}] There are wallets with same short name: {string.Join(", ", walletShortNameDuplicates)}");
|
||||
}
|
||||
|
||||
var uploaderShortNames = _appState.PluginStorage.Uploaders.Select(x => x.ShortName).Where(x => x != null).ToArray();
|
||||
|
@ -7,11 +7,9 @@ using NftFaucet.NetworkPlugins.Optimism;
|
||||
using NftFaucet.NetworkPlugins.Polygon;
|
||||
using NftFaucet.NetworkPlugins.Solana;
|
||||
using NftFaucet.Plugins;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
using NftFaucet.ProviderPlugins.EthereumKeygen;
|
||||
using NftFaucet.ProviderPlugins.Keygens;
|
||||
using NftFaucet.ProviderPlugins.Metamask;
|
||||
using NftFaucet.ProviderPlugins.Phantom;
|
||||
using NftFaucet.WalletPlugins.Keygens;
|
||||
using NftFaucet.WalletPlugins.Metamask;
|
||||
using NftFaucet.WalletPlugins.Phantom;
|
||||
using NftFaucet.UploadPlugins.Crust;
|
||||
using NftFaucet.UploadPlugins.Infura;
|
||||
using NftFaucet.UploadPlugins.NftStorage;
|
||||
@ -32,11 +30,11 @@ public class PluginLoader
|
||||
new SolanaNetworkPlugin(),
|
||||
};
|
||||
|
||||
public IReadOnlyCollection<IProviderPlugin> ProviderPlugins { get; } = new IProviderPlugin[]
|
||||
public IReadOnlyCollection<IWalletPlugin> WalletPlugins { get; } = new IWalletPlugin[]
|
||||
{
|
||||
new MetamaskProviderPlugin(),
|
||||
new PhantomProviderPlugin(),
|
||||
new KeygenProviderPlugin(),
|
||||
new MetamaskWalletPlugin(),
|
||||
new PhantomWalletPlugin(),
|
||||
new KeygenWalletPlugin(),
|
||||
};
|
||||
|
||||
public IReadOnlyCollection<IUploaderPlugin> UploaderPlugins { get; } = new IUploaderPlugin[]
|
||||
|
@ -2,7 +2,7 @@
|
||||
"RecommendedNetworks": [
|
||||
"ac7858ff-b5c7-44f9-bf60-d81470531e56"
|
||||
],
|
||||
"RecommendedProviders": [
|
||||
"RecommendedWallets": [
|
||||
"ded55b2b-8139-4251-a0fc-ba620f9727c9",
|
||||
"4c1a8ac5-60ca-4024-aae6-3c9852a6535c"
|
||||
],
|
||||
|
@ -1,14 +0,0 @@
|
||||
using NftFaucet.Plugins;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
using NftFaucet.ProviderPlugins.EthereumKeygen;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.Keygens;
|
||||
|
||||
public class KeygenProviderPlugin : IProviderPlugin
|
||||
{
|
||||
public IReadOnlyCollection<IProvider> Providers { get; } = new IProvider[]
|
||||
{
|
||||
new EthereumKeygenProvider(),
|
||||
new SolanaKeygenProvider(),
|
||||
};
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
using NftFaucet.Plugins;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.Metamask;
|
||||
|
||||
public class MetamaskProviderPlugin : IProviderPlugin
|
||||
{
|
||||
public IReadOnlyCollection<IProvider> Providers { get; } = new IProvider[]
|
||||
{
|
||||
new MetamaskProvider(),
|
||||
};
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
using NftFaucet.Plugins;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.Phantom;
|
||||
|
||||
public class PhantomProviderPlugin : IProviderPlugin
|
||||
{
|
||||
public IReadOnlyCollection<IProvider> Providers { get; } = new IProvider[]
|
||||
{
|
||||
new PhantomProvider(),
|
||||
};
|
||||
}
|
@ -2,7 +2,7 @@ using Cryptography.ECDSA;
|
||||
using Nethereum.Hex.HexConvertors.Extensions;
|
||||
using Nethereum.Util;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.Keygens;
|
||||
namespace NftFaucet.WalletPlugins.Keygens;
|
||||
|
||||
public class EthereumKey
|
||||
{
|
@ -14,9 +14,9 @@ using NftFaucet.Plugins.Models;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
using NftFaucet.Plugins.Models.Enums;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.Keygens;
|
||||
namespace NftFaucet.WalletPlugins.Keygens;
|
||||
|
||||
public sealed class EthereumKeygenProvider : Provider
|
||||
public sealed class EthereumKeygenWallet : Wallet
|
||||
{
|
||||
public override Guid Id { get; } = Guid.Parse("ded55b2b-8139-4251-a0fc-ba620f9727c9");
|
||||
public override string Name { get; } = "Ethereum keygen";
|
||||
@ -106,7 +106,7 @@ public sealed class EthereumKeygenProvider : Provider
|
||||
{
|
||||
if (mintRequest.Network.Type != NetworkType.Ethereum)
|
||||
{
|
||||
throw new InvalidOperationException("Invalid network type for this provider");
|
||||
throw new InvalidOperationException("Invalid network type for this wallet");
|
||||
}
|
||||
|
||||
Function transfer =
|
@ -0,0 +1,13 @@
|
||||
using NftFaucet.Plugins;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.WalletPlugins.Keygens;
|
||||
|
||||
public class KeygenWalletPlugin : IWalletPlugin
|
||||
{
|
||||
public IReadOnlyCollection<IWallet> Wallets { get; } = new IWallet[]
|
||||
{
|
||||
new EthereumKeygenWallet(),
|
||||
new SolanaKeygenWallet(),
|
||||
};
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
using Solnet.Wallet;
|
||||
using Solnet.Wallet.Bip39;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.EthereumKeygen;
|
||||
namespace NftFaucet.WalletPlugins.Keygens;
|
||||
|
||||
public class SolanaKey
|
||||
{
|
@ -14,10 +14,11 @@ using Solnet.Rpc.Builders;
|
||||
using Solnet.Rpc.Models;
|
||||
using Solnet.Rpc.Utilities;
|
||||
using Solnet.Wallet;
|
||||
using Wallet = NftFaucet.Plugins.Models.Wallet;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.EthereumKeygen;
|
||||
namespace NftFaucet.WalletPlugins.Keygens;
|
||||
|
||||
public class SolanaKeygenProvider : Provider
|
||||
public class SolanaKeygenWallet : Wallet
|
||||
{
|
||||
public override Guid Id { get; } = Guid.Parse("4c1a8ac5-60ca-4024-aae6-3c9852a6535c");
|
||||
public override string Name { get; } = "Solana keygen";
|
||||
@ -120,9 +121,9 @@ public class SolanaKeygenProvider : Provider
|
||||
var client = ClientFactory.GetClient(mintRequest.Network.PublicRpcUrl.OriginalString);
|
||||
var rentExemption = await client.GetMinimumBalanceForRentExemptionAsync(TokenProgram.MintAccountDataSize);
|
||||
|
||||
var wallet = new Wallet(Key.MnemonicPhrase);
|
||||
var wallet = new Solnet.Wallet.Wallet(Key.MnemonicPhrase);
|
||||
var walletAddress = wallet.Account.PublicKey;
|
||||
var mintWallet = new Wallet(SolanaKey.GenerateNew().MnemonicPhrase);
|
||||
var mintWallet = new Solnet.Wallet.Wallet(SolanaKey.GenerateNew().MnemonicPhrase);
|
||||
var mint = mintWallet.GetAccount(0);
|
||||
var metadataAddress = GetMetadataAddress(mint.PublicKey);
|
||||
var masterEditionAddress = GetMasterEditionAddress(mint.PublicKey);
|
@ -7,9 +7,9 @@ using NftFaucet.Plugins.Models;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
using NftFaucet.Plugins.Models.Enums;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.Metamask;
|
||||
namespace NftFaucet.WalletPlugins.Metamask;
|
||||
|
||||
public class MetamaskProvider : Provider
|
||||
public class MetamaskWallet : Wallet
|
||||
{
|
||||
public override Guid Id { get; } = Guid.Parse("3367b9bb-f50c-4768-aeb3-9ac14d4c3987");
|
||||
public override string Name { get; } = "Metamask";
|
||||
@ -142,7 +142,7 @@ public class MetamaskProvider : Provider
|
||||
{
|
||||
if (mintRequest.Network.Type != NetworkType.Ethereum)
|
||||
{
|
||||
throw new InvalidOperationException("Invalid network type for this provider");
|
||||
throw new InvalidOperationException("Invalid network type for this wallet");
|
||||
}
|
||||
|
||||
Function transfer = mintRequest.Contract.Type switch
|
@ -0,0 +1,12 @@
|
||||
using NftFaucet.Plugins;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.WalletPlugins.Metamask;
|
||||
|
||||
public class MetamaskWalletPlugin : IWalletPlugin
|
||||
{
|
||||
public IReadOnlyCollection<IWallet> Wallets { get; } = new IWallet[]
|
||||
{
|
||||
new MetamaskWallet(),
|
||||
};
|
||||
}
|
@ -3,9 +3,9 @@ using NftFaucet.Domain.Models.Enums;
|
||||
using NftFaucet.Plugins.Models;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.ProviderPlugins.Phantom;
|
||||
namespace NftFaucet.WalletPlugins.Phantom;
|
||||
|
||||
public class PhantomProvider : Provider
|
||||
public class PhantomWallet : Wallet
|
||||
{
|
||||
public override Guid Id { get; } = Guid.Parse("ae860901-5441-463c-a16e-4786f041500d");
|
||||
public override string Name { get; } = "Phantom";
|
@ -0,0 +1,12 @@
|
||||
using NftFaucet.Plugins;
|
||||
using NftFaucet.Plugins.Models.Abstraction;
|
||||
|
||||
namespace NftFaucet.WalletPlugins.Phantom;
|
||||
|
||||
public class PhantomWalletPlugin : IWalletPlugin
|
||||
{
|
||||
public IReadOnlyCollection<IWallet> Wallets { get; } = new IWallet[]
|
||||
{
|
||||
new PhantomWallet(),
|
||||
};
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user