Skip to content

Commit 8778ee1

Browse files
committed
Added feature GetOutputsWithAdditionalUnlockConditionsAsync
1 parent c40719b commit 8778ee1

File tree

9 files changed

+106
-7
lines changed

9 files changed

+106
-7
lines changed

csharp/IotaWalletNet/IotaWalletNet.Application/Account.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using IotaWalletNet.Application.AccountContext.Queries.GetFoundryOutput;
2121
using IotaWalletNet.Application.AccountContext.Queries.GetMinimumStorageDepositRequired;
2222
using IotaWalletNet.Application.AccountContext.Queries.GetOutputs;
23+
using IotaWalletNet.Application.AccountContext.Queries.GetOutputsWithAdditionalUnlockConditions;
2324
using IotaWalletNet.Application.AccountContext.Queries.GetPendingTransactions;
2425
using IotaWalletNet.Application.AccountContext.Queries.GetTransaction;
2526
using IotaWalletNet.Application.AccountContext.Queries.GetTransactions;
@@ -54,6 +55,11 @@ public Account(IMediator mediator, string username, IWallet wallet)
5455
public IWallet Wallet { get; }
5556

5657

58+
public async Task<GetOutputsWithAdditionalUnlockConditionsResponse> GetOutputsWithAdditionalUnlockConditionsAsync(OutputTypeToClaim outputTypeToClaim)
59+
{
60+
return await _mediator.Send(new GetOutputsWithAdditionalUnlockConditionsQuery(outputTypeToClaim, Username, this));
61+
}
62+
5763
public async Task<SendMicroAmountResponse> SendMicroAmountAsync(List<AddressWithMicroAmount> addressWithMicroAmounts, TaggedDataPayload? taggedDataPayload = null)
5864
{
5965
return await _mediator.Send(new SendMicroAmountCommand(addressWithMicroAmounts, taggedDataPayload, Username, this));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using IotaWalletNet.Domain.Common.Models;
2+
3+
namespace IotaWalletNet.Application.AccountContext.Queries.GetOutputsWithAdditionalUnlockConditions
4+
{
5+
public class GetOutputsWithAdditionalUnlockConditionsMessage : AccountMessage<GetOutputsWithAdditionalUnlockConditionsMessageData>
6+
{
7+
private const string METHOD_NAME = "getOutputsWithAdditionalUnlockConditions";
8+
9+
public GetOutputsWithAdditionalUnlockConditionsMessage(string username, GetOutputsWithAdditionalUnlockConditionsMessageData? methodData)
10+
: base(username, METHOD_NAME, methodData)
11+
{
12+
}
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using IotaWalletNet.Domain.Common.Models.Output;
2+
3+
namespace IotaWalletNet.Application.AccountContext.Queries.GetOutputsWithAdditionalUnlockConditions
4+
{
5+
public class GetOutputsWithAdditionalUnlockConditionsMessageData
6+
{
7+
public GetOutputsWithAdditionalUnlockConditionsMessageData(OutputTypeToClaim outputTypeToClaim)
8+
{
9+
OutputsToClaim = outputTypeToClaim;
10+
}
11+
12+
public OutputTypeToClaim OutputsToClaim { get; set; }
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using IotaWalletNet.Application.Common.Interfaces;
2+
using IotaWalletNet.Domain.Common.Models.Output;
3+
using MediatR;
4+
5+
namespace IotaWalletNet.Application.AccountContext.Queries.GetOutputsWithAdditionalUnlockConditions
6+
{
7+
public class GetOutputsWithAdditionalUnlockConditionsQuery : IRequest<GetOutputsWithAdditionalUnlockConditionsResponse>
8+
{
9+
public GetOutputsWithAdditionalUnlockConditionsQuery(OutputTypeToClaim outputsTypeToClaim, string username, IAccount account)
10+
{
11+
OutputsTypeToClaim = outputsTypeToClaim;
12+
Username = username;
13+
Account = account;
14+
}
15+
16+
public OutputTypeToClaim OutputsTypeToClaim { get; set; }
17+
18+
public string Username { get; set; }
19+
20+
public IAccount Account { get; set; }
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using IotaWalletNet.Domain.PlatformInvoke;
2+
using MediatR;
3+
using Newtonsoft.Json;
4+
5+
namespace IotaWalletNet.Application.AccountContext.Queries.GetOutputsWithAdditionalUnlockConditions
6+
{
7+
public class GetOutputsWithAdditionalUnlockConditionsQueryHandler : IRequestHandler<GetOutputsWithAdditionalUnlockConditionsQuery, GetOutputsWithAdditionalUnlockConditionsResponse>
8+
{
9+
public async Task<GetOutputsWithAdditionalUnlockConditionsResponse> Handle(GetOutputsWithAdditionalUnlockConditionsQuery request, CancellationToken cancellationToken)
10+
{
11+
GetOutputsWithAdditionalUnlockConditionsMessageData messageData = new GetOutputsWithAdditionalUnlockConditionsMessageData(request.OutputsTypeToClaim);
12+
GetOutputsWithAdditionalUnlockConditionsMessage message = new GetOutputsWithAdditionalUnlockConditionsMessage(request.Username, messageData);
13+
string messageJson = JsonConvert.SerializeObject(message);
14+
15+
RustBridgeGenericResponse genericResponse = await request.Account.SendMessageAsync(messageJson);
16+
GetOutputsWithAdditionalUnlockConditionsResponse response = genericResponse.As<GetOutputsWithAdditionalUnlockConditionsResponse>()!;
17+
18+
return response;
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using IotaWalletNet.Domain.PlatformInvoke;
2+
3+
namespace IotaWalletNet.Application.AccountContext.Queries.GetOutputsWithAdditionalUnlockConditions
4+
{
5+
public class GetOutputsWithAdditionalUnlockConditionsResponse : RustBridgeResponseBase<List<string>>
6+
{
7+
8+
}
9+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using IotaWalletNet.Application.AccountContext.Queries.GetFoundryOutput;
2020
using IotaWalletNet.Application.AccountContext.Queries.GetMinimumStorageDepositRequired;
2121
using IotaWalletNet.Application.AccountContext.Queries.GetOutputs;
22+
using IotaWalletNet.Application.AccountContext.Queries.GetOutputsWithAdditionalUnlockConditions;
2223
using IotaWalletNet.Application.AccountContext.Queries.GetPendingTransactions;
2324
using IotaWalletNet.Application.AccountContext.Queries.GetTransaction;
2425
using IotaWalletNet.Application.AccountContext.Queries.GetTransactions;
@@ -69,5 +70,6 @@ public interface IAccount : IRustBridgeCommunicator
6970
SendAmountBuilder SendAmountUsingBuilder();
7071
Task<SendMicroAmountResponse> SendMicroAmountAsync(List<AddressWithMicroAmount> addressWithMicroAmounts, TaggedDataPayload? taggedDataPayload = null);
7172
SendMicroAmountBuilder SendMicroAmountUsingBuilder();
73+
Task<GetOutputsWithAdditionalUnlockConditionsResponse> GetOutputsWithAdditionalUnlockConditionsAsync(OutputTypeToClaim outputTypeToClaim);
7274
}
7375
}
Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
namespace IotaWalletNet.Domain.Common.Models.Output
22
{
3-
public class OutputTypeToClaim
4-
{
5-
public const string None = "None";
6-
public const string MicroTransactions = "MicroTransactions";
7-
public const string NativeTokens = "NativeTokens";
8-
public const string Nfts = "Nfts";
9-
public const string All = "All";
3+
//public class OutputTypeToClaim
4+
//{
5+
// public const string None = "None";
6+
// public const string MicroTransactions = "MicroTransactions";
7+
// public const string NativeTokens = "NativeTokens";
8+
// public const string Nfts = "Nfts";
9+
// public const string All = "All";
10+
11+
//}
1012

13+
public enum OutputTypeToClaim
14+
{
15+
None,
16+
MicroTransactions,
17+
NativeTokens,
18+
Nfts,
19+
All,
1120
}
1221
}

csharp/IotaWalletNet/IotaWalletNet.Main/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ private static async Task Main(string[] args)
1919
await SendMicroTransactionExample.Run();
2020

2121
//await GenerateAnAddressExample.Run();
22+
2223
//await MintNftExample.Run();
2324

2425
//await SendNftExample.Run();
@@ -32,6 +33,7 @@ private static async Task Main(string[] args)
3233
//await MeltNativeTokensExample.Run();
3334

3435
await BurnNativeTokensExample.Run();
36+
3537
//await EventsExample.Run();
3638
}
3739

0 commit comments

Comments
 (0)