Skip to content

Commit 41e0926

Browse files
committed
Added build basic output feature
1 parent 14e6676 commit 41e0926

File tree

7 files changed

+106
-2
lines changed

7 files changed

+106
-2
lines changed

csharp/IotaWalletNet/IotaWalletNet.Application/Account.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using IotaWalletNet.Application.AccountContext.Commands.BurnNativeTokens;
1+
using IotaWalletNet.Application.AccountContext.Commands.BuildBasicOutput;
2+
using IotaWalletNet.Application.AccountContext.Commands.BurnNativeTokens;
23
using IotaWalletNet.Application.AccountContext.Commands.BurnNft;
34
using IotaWalletNet.Application.AccountContext.Commands.ClaimOutputs;
45
using IotaWalletNet.Application.AccountContext.Commands.ConsolidateOutputs;
@@ -34,6 +35,7 @@
3435
using IotaWalletNet.Domain.Common.Models.Network;
3536
using IotaWalletNet.Domain.Common.Models.Nft;
3637
using IotaWalletNet.Domain.Common.Models.Output;
38+
using IotaWalletNet.Domain.Common.Models.Output.OutputDataTypes;
3739
using IotaWalletNet.Domain.Common.Models.Transaction.PayloadTypes;
3840
using IotaWalletNet.Domain.PlatformInvoke;
3941
using MediatR;
@@ -56,6 +58,11 @@ public Account(IMediator mediator, string username, IWallet wallet)
5658
public IWallet Wallet { get; }
5759

5860

61+
public async Task<BuildBasicOutputResponse> BuildBasicOutput(BuildBasicOutputData buildBasicOutputData)
62+
{
63+
return await _mediator.Send(new BuildBasicOutputCommand(buildBasicOutputData, Username, this));
64+
}
65+
5966
public async Task<Task> EnablePeriodicSyncing(int intervalInMilliSeconds)
6067
{
6168
return await _mediator.Send(new EnablePeriodicSyncingCommand(this, intervalInMilliSeconds));
Lines changed: 22 additions & 0 deletions
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.OutputDataTypes;
3+
using MediatR;
4+
5+
namespace IotaWalletNet.Application.AccountContext.Commands.BuildBasicOutput
6+
{
7+
public class BuildBasicOutputCommand : IRequest<BuildBasicOutputResponse>
8+
{
9+
public BuildBasicOutputCommand(BuildBasicOutputData data, string username, IAccount account)
10+
{
11+
Data = data;
12+
Username = username;
13+
Account = account;
14+
}
15+
16+
public BuildBasicOutputData Data { 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.Commands.BuildBasicOutput
6+
{
7+
public class BuildBasicOutputCommandHandler : IRequestHandler<BuildBasicOutputCommand, BuildBasicOutputResponse>
8+
{
9+
public async Task<BuildBasicOutputResponse> Handle(BuildBasicOutputCommand request, CancellationToken cancellationToken)
10+
{
11+
BuildBasicOutputCommandMessage message = new BuildBasicOutputCommandMessage(request.Username, request.Data);
12+
string jsonMessage = JsonConvert.SerializeObject(message);
13+
14+
RustBridgeGenericResponse rustBridgeGenericResponse = await request.Account.SendMessageAsync(jsonMessage);
15+
16+
BuildBasicOutputResponse buildBasicOutputResponse = rustBridgeGenericResponse.As<BuildBasicOutputResponse>()!;
17+
18+
return buildBasicOutputResponse;
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using IotaWalletNet.Domain.Common.Models;
2+
using IotaWalletNet.Domain.Common.Models.Output.OutputDataTypes;
3+
4+
namespace IotaWalletNet.Application.AccountContext.Commands.BuildBasicOutput
5+
{
6+
public class BuildBasicOutputCommandMessage : AccountMessage<BuildBasicOutputData>
7+
{
8+
private const string METHOD_NAME = "buildBasicOutput";
9+
public BuildBasicOutputCommandMessage(string username, BuildBasicOutputData? methodData)
10+
: base(username, METHOD_NAME, methodData)
11+
{
12+
}
13+
}
14+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using IotaWalletNet.Domain.Common.Models.Output.OutputTypes;
2+
using IotaWalletNet.Domain.PlatformInvoke;
3+
4+
namespace IotaWalletNet.Application.AccountContext.Commands.BuildBasicOutput
5+
{
6+
public class BuildBasicOutputResponse : RustBridgeResponseBase<BasicOutput>
7+
{
8+
9+
}
10+
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using IotaWalletNet.Application.AccountContext.Commands.BurnNativeTokens;
1+
using IotaWalletNet.Application.AccountContext.Commands.BuildBasicOutput;
2+
using IotaWalletNet.Application.AccountContext.Commands.BurnNativeTokens;
23
using IotaWalletNet.Application.AccountContext.Commands.BurnNft;
34
using IotaWalletNet.Application.AccountContext.Commands.ClaimOutputs;
45
using IotaWalletNet.Application.AccountContext.Commands.ConsolidateOutputs;
@@ -31,6 +32,7 @@
3132
using IotaWalletNet.Domain.Common.Models.Network;
3233
using IotaWalletNet.Domain.Common.Models.Nft;
3334
using IotaWalletNet.Domain.Common.Models.Output;
35+
using IotaWalletNet.Domain.Common.Models.Output.OutputDataTypes;
3436
using IotaWalletNet.Domain.Common.Models.Transaction.PayloadTypes;
3537

3638
namespace IotaWalletNet.Application.Common.Interfaces
@@ -72,5 +74,6 @@ public interface IAccount : IRustBridgeCommunicator
7274
SendMicroAmountBuilder SendMicroAmountUsingBuilder();
7375
Task<GetOutputsWithAdditionalUnlockConditionsResponse> GetOutputsWithAdditionalUnlockConditionsAsync(OutputTypeToClaim outputTypeToClaim);
7476
Task<Task> EnablePeriodicSyncing(int intervalInMilliSeconds);
77+
Task<BuildBasicOutputResponse> BuildBasicOutput(BuildBasicOutputData buildBasicOutputData);
7578
}
7679
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using IotaWalletNet.Domain.Common.Interfaces;
2+
using IotaWalletNet.Domain.Common.Models.Coin;
3+
4+
namespace IotaWalletNet.Domain.Common.Models.Output.OutputDataTypes
5+
{
6+
public class BuildBasicOutputData
7+
{
8+
public BuildBasicOutputData(string? amount, NativeToken? nativeTokens, List<IUnlockConditionType> unlockConditions, List<IFeatureType>? features)
9+
{
10+
Amount = amount;
11+
NativeTokens = nativeTokens;
12+
UnlockConditions = unlockConditions;
13+
Features = features;
14+
}
15+
16+
/// <summary>
17+
/// If not provided, minimum storage deposit will be used
18+
/// </summary>
19+
public string? Amount { get; set; }
20+
21+
public NativeToken? NativeTokens { get; set; }
22+
23+
public List<IUnlockConditionType> UnlockConditions{ get; set; }
24+
25+
public List<IFeatureType>? Features { get; set; }
26+
}
27+
}

0 commit comments

Comments
 (0)