Skip to content

Commit 9a2940d

Browse files
Define GetAddressRequest and remove dependency on RpcBalanceInfo
1 parent c0bec45 commit 9a2940d

6 files changed

Lines changed: 46 additions & 17 deletions

File tree

Monero/Wallet/MoneroWalletRpc.cs

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -711,21 +711,21 @@ public async Task<List<MoneroSubaddress>> GetSubaddresses(uint accountIdx,
711711
bool skipBalances, List<uint>? subaddressIndices)
712712
{
713713
// fetch subaddresses
714-
MoneroJsonRpcParams parameters = [];
715-
parameters.Add("account_index", accountIdx);
716-
if (subaddressIndices != null && subaddressIndices.Count > 0)
717-
{
718-
parameters.Add("address_index", subaddressIndices);
719-
}
720-
721-
var result = await _rpc.SendCommandAsync<MoneroJsonRpcParams, GetAddressResponse>("get_address", parameters);
714+
GetAddressRequest addressRequest = new() { AccountIndex = accountIdx, AddressIndex = subaddressIndices };
715+
var result = await _rpc.SendCommandAsync<GetAddressRequest, GetAddressResponse>("get_address", addressRequest);
722716

723717
// initialize subaddresses
724718
List<MoneroSubaddress> subaddresses = [];
725-
foreach (RpcBalanceInfo rpcSubaddress in result.Addresses)
719+
foreach (RpcAddressInfo rpcAddress in result.Addresses)
726720
{
727-
MoneroSubaddress subaddress = ConvertRpcSubaddress(rpcSubaddress);
728-
subaddress.AccountIndex = accountIdx;
721+
MoneroSubaddress subaddress = new()
722+
{
723+
AccountIndex = accountIdx,
724+
Index = rpcAddress.AddressIndex
725+
};
726+
subaddress.SetAddress(rpcAddress.Address);
727+
subaddress.SetLabel(rpcAddress.Label);
728+
subaddress.SetIsUsed(rpcAddress.Used);
729729
subaddresses.Add(subaddress);
730730
}
731731

@@ -742,7 +742,8 @@ public async Task<List<MoneroSubaddress>> GetSubaddresses(uint accountIdx,
742742
}
743743

744744
// fetch and initialize balances
745-
var getBalanceResult = await _rpc.SendCommandAsync<MoneroJsonRpcParams, GetBalanceResponse>("get_balance", parameters);
745+
GetBalanceRequest balanceRequest = new() { AccountIndex = accountIdx, AddressIndices = subaddressIndices };
746+
var getBalanceResult = await _rpc.SendCommandAsync<GetBalanceRequest, GetBalanceResponse>("get_balance", balanceRequest);
746747
foreach (RpcBalanceInfo rpcSubaddress in
747748
getBalanceResult.PerSubaddress)
748749
{
@@ -1484,10 +1485,12 @@ private async Task<List<ulong>> GetBalances(uint? accountIdx, uint? subaddressId
14841485
return [balance, unlockedBalance];
14851486
}
14861487

1487-
MoneroJsonRpcParams parameters = [];
1488-
parameters.Add("account_index", accountIdx);
1489-
parameters.Add("address_indices", subaddressIdx == null ? null : new List<uint?> { subaddressIdx });
1490-
var result = await _rpc.SendCommandAsync<MoneroJsonRpcParams, GetBalanceResponse>("get_balance", parameters);
1488+
GetBalanceRequest balanceRequest = new()
1489+
{
1490+
AccountIndex = accountIdx.Value,
1491+
AddressIndices = subaddressIdx.HasValue ? [subaddressIdx.Value] : null
1492+
};
1493+
var result = await _rpc.SendCommandAsync<GetBalanceRequest, GetBalanceResponse>("get_balance", balanceRequest);
14911494
if (subaddressIdx == null)
14921495
{
14931496
return [result.Balance, result.UnlockedBalance];
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using System.Text.Json.Serialization;
2+
3+
namespace Monero.Wallet.Rpc;
4+
5+
public class GetAddressRequest
6+
{
7+
[JsonPropertyName("account_index")] public uint AccountIndex { get; set; }
8+
[JsonPropertyName("address_index")] public List<uint>? AddressIndex { get; set; }
9+
}

Monero/Wallet/Rpc/GetAddressResponse.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ namespace Monero.Wallet.Rpc;
44

55
public class GetAddressResponse
66
{
7-
[JsonPropertyName("addresses")] public List<RpcBalanceInfo> Addresses { get; set; } = [];
7+
[JsonPropertyName("address")] public string Address { get; set; } = "";
8+
[JsonPropertyName("addresses")] public List<RpcAddressInfo> Addresses { get; set; } = [];
89
}

Monero/Wallet/Rpc/GetBalanceRequest.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@ namespace Monero.Wallet.Rpc;
44

55
public class GetBalanceRequest
66
{
7+
[JsonPropertyName("account_index")] public uint AccountIndex { get; set; }
8+
[JsonPropertyName("address_indices")] public List<uint>? AddressIndices { get; set; }
79
[JsonPropertyName("all_accounts")] public bool AllAccounts { get; set; }
10+
[JsonPropertyName("strict")] public bool Strict { get; set; }
811
}

Monero/Wallet/Rpc/GetBalanceResponse.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@ public class GetBalanceResponse
1010
public ulong Balance { get; set; }
1111

1212
[JsonPropertyName("unlocked_balance")] public ulong UnlockedBalance { get; set; }
13+
[JsonPropertyName("time_to_unlock")] public ulong TimeToUnlock { get; set; }
14+
[JsonPropertyName("blocks_to_unlock")] public ulong BlocksToUnlock { get; set; }
1315
[JsonPropertyName("per_subaddress")] public List<RpcBalanceInfo> PerSubaddress { get; set; } = [];
1416
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System.Text.Json.Serialization;
2+
3+
namespace Monero.Wallet.Rpc;
4+
5+
public class RpcAddressInfo
6+
{
7+
[JsonPropertyName("address")] public string Address { get; set; } = "";
8+
[JsonPropertyName("address_index")] public uint AddressIndex { get; set; }
9+
[JsonPropertyName("label")] public string Label { get; set; } = "";
10+
[JsonPropertyName("used")] public bool Used { get; set; }
11+
}

0 commit comments

Comments
 (0)