Skip to content

Commit 1d6c50c

Browse files
authored
Merge pull request #46 from wireless90/11-mint-nft
11 mint nft
2 parents 84d0a0c + 80894f3 commit 1d6c50c

File tree

34 files changed

+549
-32
lines changed

34 files changed

+549
-32
lines changed

csharp/IotaWalletNet/IotaWalletNet.Application/Account.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
using IotaWalletNet.Application.AccountContext.Commands.GenerateAddresses;
2+
using IotaWalletNet.Application.AccountContext.Commands.MintNfts;
23
using IotaWalletNet.Application.AccountContext.Commands.RequestFromFaucet;
34
using IotaWalletNet.Application.AccountContext.Commands.SendAmount;
45
using IotaWalletNet.Application.AccountContext.Commands.SyncAccount;
56
using IotaWalletNet.Application.AccountContext.Queries.GetBalance;
67
using IotaWalletNet.Application.Common.Interfaces;
78
using IotaWalletNet.Domain.Common.Models.Address;
89
using IotaWalletNet.Domain.Common.Models.Network;
10+
using IotaWalletNet.Domain.Common.Models.Nft;
911
using IotaWalletNet.Domain.PlatformInvoke;
1012
using MediatR;
1113
using static IotaWalletNet.Application.AccountContext.Commands.SyncAccount.SyncAccountCommandHandler;
@@ -37,6 +39,12 @@ public async Task RequestFromFaucetAsync(string address, string url)
3739
await _mediator.Send(new RequestFromFaucetCommand(address, url));
3840
}
3941

42+
43+
public async Task<MintNftsResponse> MintNftsAsync(List<NftOptions> nftsOptions)
44+
{
45+
return await _mediator.Send(new MintNftsCommand(this, Username, nftsOptions));
46+
}
47+
4048
public async Task<GetBalanceResponse> GetBalanceAsync()
4149
{
4250
return await _mediator.Send(new GetBalanceQuery(this, Username));

csharp/IotaWalletNet/IotaWalletNet.Application/AccountContext/Commands/GenerateAddresses/GenerateAddressesCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public async Task<GenerateAddressesResponse> Handle(GenerateAddressesCommand req
1919
}
2020
};
2121

22-
GenerateAddressesData data = new GenerateAddressesData(request.Amount, options);
22+
GenerateAddressesCommandMessageData data = new GenerateAddressesCommandMessageData(request.Amount, options);
2323

2424
GenerateAddressesCommandMessage message = new GenerateAddressesCommandMessage(request.Username, data);
2525

csharp/IotaWalletNet/IotaWalletNet.Application/AccountContext/Commands/GenerateAddresses/GenerateAddressesCommandMessage.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
namespace IotaWalletNet.Application.AccountContext.Commands.GenerateAddresses
44
{
5-
public class GenerateAddressesCommandMessage : AccountMessage<GenerateAddressesData>
5+
public class GenerateAddressesCommandMessage : AccountMessage<GenerateAddressesCommandMessageData>
66
{
77
private const string METHOD_NAME = "generateAddresses";
8-
public GenerateAddressesCommandMessage(string username, GenerateAddressesData methodData)
8+
public GenerateAddressesCommandMessage(string username, GenerateAddressesCommandMessageData methodData)
99
: base(username, METHOD_NAME, methodData)
1010
{
1111

csharp/IotaWalletNet/IotaWalletNet.Application/AccountContext/Commands/GenerateAddresses/GenerateAddressesData.cs renamed to csharp/IotaWalletNet/IotaWalletNet.Application/AccountContext/Commands/GenerateAddresses/GenerateAddressesCommandMessageData.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace IotaWalletNet.Application.AccountContext.Commands.GenerateAddresses
44
{
5-
public class GenerateAddressesData
5+
public class GenerateAddressesCommandMessageData
66
{
7-
public GenerateAddressesData(uint amount, AddressGenerationOptions addressGenerationOptions)
7+
public GenerateAddressesCommandMessageData(uint amount, AddressGenerationOptions addressGenerationOptions)
88
{
99
Amount = amount;
1010
AddressGenerationOptions = addressGenerationOptions;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using IotaWalletNet.Application.Common.Interfaces;
2+
using IotaWalletNet.Domain.Common.Models.Nft;
3+
using MediatR;
4+
5+
namespace IotaWalletNet.Application.AccountContext.Commands.MintNfts
6+
{
7+
public class MintNftsCommand : IRequest<MintNftsResponse>
8+
{
9+
public MintNftsCommand(IAccount account, string username, List<NftOptions> nftsOptions)
10+
{
11+
Account = account;
12+
Username = username;
13+
NftsOptions = nftsOptions;
14+
}
15+
16+
public IAccount Account { get; }
17+
public string Username { get; }
18+
public List<NftOptions> NftsOptions { get; }
19+
}
20+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using IotaWalletNet.Domain.Common.Models.Transaction;
2+
using IotaWalletNet.Domain.PlatformInvoke;
3+
using MediatR;
4+
using Newtonsoft.Json;
5+
6+
namespace IotaWalletNet.Application.AccountContext.Commands.MintNfts
7+
{
8+
public class MintNftsCommandHandler : IRequestHandler<MintNftsCommand, MintNftsResponse>
9+
{
10+
public async Task<MintNftsResponse> Handle(MintNftsCommand request, CancellationToken cancellationToken)
11+
{
12+
MintNftsCommandMessageData data = new MintNftsCommandMessageData(request.NftsOptions, new TransactionOptions());
13+
14+
MintNftsCommandMessage message = new MintNftsCommandMessage(request.Username, data);
15+
16+
string json = JsonConvert.SerializeObject(message);
17+
18+
RustBridgeGenericResponse genericResponse = await request.Account.SendMessageAsync(json);
19+
20+
MintNftsResponse response = genericResponse.IsSuccess
21+
? genericResponse.As<MintNftsResponse>()!
22+
: new MintNftsResponse() { Error = genericResponse.As<RustBridgeResponseError>(), Type = "error" };
23+
24+
return response;
25+
}
26+
}
27+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using IotaWalletNet.Domain.Common.Models;
2+
3+
namespace IotaWalletNet.Application.AccountContext.Commands.MintNfts
4+
{
5+
public class MintNftsCommandMessage : AccountMessage<MintNftsCommandMessageData>
6+
{
7+
private const string METHOD_NAME = "mintNfts";
8+
9+
public MintNftsCommandMessage(string username, MintNftsCommandMessageData mintNftsCommandMessageData)
10+
: base(username, METHOD_NAME, mintNftsCommandMessageData)
11+
{
12+
13+
}
14+
}
15+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using IotaWalletNet.Domain.Common.Models.Nft;
2+
using IotaWalletNet.Domain.Common.Models.Transaction;
3+
4+
namespace IotaWalletNet.Application.AccountContext.Commands.MintNfts
5+
{
6+
public class MintNftsCommandMessageData
7+
{
8+
public MintNftsCommandMessageData(List<NftOptions> nftsOptions, TransactionOptions transactionOptions)
9+
{
10+
NftsOptions = nftsOptions;
11+
Options = transactionOptions;
12+
}
13+
public List<NftOptions> NftsOptions { get; set; }
14+
public TransactionOptions Options { get; set; }
15+
}
16+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using IotaWalletNet.Domain.Common.Models.Transaction;
2+
using IotaWalletNet.Domain.PlatformInvoke;
3+
4+
namespace IotaWalletNet.Application.AccountContext.Commands.MintNfts
5+
{
6+
public class MintNftsResponse : RustBridgeResponseBase<Transaction>
7+
{
8+
9+
10+
}
11+
}

csharp/IotaWalletNet/IotaWalletNet.Application/Common/Interfaces/IAccount.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using IotaWalletNet.Application.AccountContext.Commands.GenerateAddresses;
2+
using IotaWalletNet.Application.AccountContext.Commands.MintNfts;
23
using IotaWalletNet.Application.AccountContext.Queries.GetBalance;
34
using IotaWalletNet.Domain.Common.Interfaces;
45
using IotaWalletNet.Domain.Common.Models.Address;
56
using IotaWalletNet.Domain.Common.Models.Network;
7+
using IotaWalletNet.Domain.Common.Models.Nft;
68
using static IotaWalletNet.Application.AccountContext.Commands.SyncAccount.SyncAccountCommandHandler;
79

810
namespace IotaWalletNet.Application.Common.Interfaces
@@ -20,5 +22,6 @@ public interface IAccount : IRustBridgeCommunicator
2022
Task<GetBalanceResponse> GetBalanceAsync();
2123
Task RequestFromFaucetAsync(string address, string url);
2224
Task<GenerateAddressesResponse> GenerateAddressesAsync(uint numberOfAddresses = 1, NetworkType networkType = default);
25+
Task<MintNftsResponse> MintNftsAsync(List<NftOptions> nftsOptions);
2326
}
2427
}

0 commit comments

Comments
 (0)