Skip to content

Commit 31c3b6f

Browse files
committed
feat: add functionality to bulk-add addresses
1 parent 79dc272 commit 31c3b6f

File tree

4 files changed

+31
-27
lines changed

4 files changed

+31
-27
lines changed

BTCPayServer.Plugins.USDt/Controllers/UITronUSDtLikeStoreController.cs

+24-21
Original file line numberDiff line numberDiff line change
@@ -143,41 +143,44 @@ public async Task<IActionResult> GetStoreTronUSDtLikePaymentMethod(EditTronUSDtP
143143

144144
if (string.IsNullOrEmpty(viewModel.Address) == false)
145145
{
146-
// if (TronUSDtAddressHelper.IsValid(viewModel.Address) == false)
147-
// {
148-
// TempData.SetStatusMessageModel(new StatusMessageModel
149-
// {
150-
// Message = $"{viewModel.Address} is not a TRON address (Base58 format expected).",
151-
// Severity = StatusMessageModel.StatusSeverity.Error
152-
// });
153-
//
154-
//
155-
// return RedirectToAction("GetStoreTronUSDtLikePaymentMethod", new { storeId = store.Id, cryptoCode });
156-
// }
157-
158-
//todo check tron format
159-
if (currentPaymentMethodConfig.Addresses.Contains(viewModel.Address))
146+
var addresses = viewModel.Address.Split([',', ';', ' ', '\r', '\n'], StringSplitOptions.RemoveEmptyEntries)
147+
.Where(TronUSDtAddressHelper.IsValid)
148+
.Where(s => currentPaymentMethodConfig.Addresses.Contains(s) == false).ToArray();
149+
150+
if(addresses.Any() == false)
160151
{
161152
TempData.SetStatusMessageModel(new StatusMessageModel
162153
{
163-
Message = $"{viewModel.Address} is already configured to being tracked for {paymentMethodId}.",
154+
Message = "No addresses were added. Please make sure the addresses are valid and not already being tracked.",
164155
Severity = StatusMessageModel.StatusSeverity.Error
165156
});
166157

167158
return RedirectToAction("GetStoreTronUSDtLikePaymentMethod", new { storeId = store.Id, paymentMethodId = paymentMethodId });
168159
}
169-
160+
170161
currentPaymentMethodConfig.Addresses =
171162
[
172163
.. currentPaymentMethodConfig.Addresses,
173-
.. new[] { viewModel.Address }
164+
.. addresses
174165
];
175166

176-
TempData.SetStatusMessageModel(new StatusMessageModel
167+
168+
if (addresses.Length == 1)
177169
{
178-
Message = $"{viewModel.Address} is now being tracked for {paymentMethodId}",
179-
Severity = StatusMessageModel.StatusSeverity.Success
180-
});
170+
TempData.SetStatusMessageModel(new StatusMessageModel
171+
{
172+
Message = $"{addresses[0]} is now being tracked for {paymentMethodId}",
173+
Severity = StatusMessageModel.StatusSeverity.Success
174+
});
175+
}
176+
else
177+
{
178+
TempData.SetStatusMessageModel(new StatusMessageModel
179+
{
180+
Message = $"{addresses.Length} addresses were added to {paymentMethodId}",
181+
Severity = StatusMessageModel.StatusSeverity.Success
182+
});
183+
}
181184
}
182185
else if (viewModel.Enabled == blob.IsExcluded(paymentMethodId))
183186
{

BTCPayServer.Plugins.USDt/Services/TronUSDtRPCProvider.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,11 @@ private static bool IsAvailable(TronUSDtLikeSummary summary)
8181
{
8282
var configuration = _usdtPluginConfiguration.TronUSDtLikeConfigurationItems[pmi];
8383
var tokenService = new StandardTokenService(GetWeb3Client(pmi), TronUSDtAddressHelper.Base58ToHex(configuration.SmartContractAddress));
84-
var hexAddresses = addresses.Select(TronUSDtAddressHelper.Base58ToHex);
85-
84+
var hexAddresses = addresses.Select(b => (b, TronUSDtAddressHelper.Base58ToHex(b)));
8685

8786
List<(string, decimal?)> results = [];
88-
foreach (var address in hexAddresses)
87+
foreach (var (base58Address, address) in hexAddresses)
8988
{
90-
var base58Address = TronUSDtAddressHelper.HexToBase58(address);
9189
try
9290
{
9391
var balanceResult = await tokenService.BalanceOfQueryAsync(address);

BTCPayServer.Plugins.USDt/Views/UITronUSDtLikeStore/GetStoreTronUSDtLikePaymentMethod.cshtml

+4-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@
3939
class="mt-4" enctype="multipart/form-data">
4040
<div class="d-flex flex-wrap align-items-center gap-3">
4141
<input asp-for="Address" type="text" class="form-control" placeholder="TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL" style="flex: 1 1 14rem">
42-
<button type="submit" role="button" class="btn btn-primary text-nowrap flex-grow-1 flex-sm-grow-0">Add address</button>
42+
<button type="submit" role="button" class="btn btn-primary text-nowrap flex-grow-1 flex-sm-grow-0">Add address(es)</button>
43+
</div>
44+
<div class="form-text">
45+
You can add multiple addresses separated by a comma or a new line.
4346
</div>
4447
</form>
4548
@if (Model.Addresses.Any())

submodules/btcpayserver

Submodule btcpayserver updated 384 files

0 commit comments

Comments
 (0)