From 00f7cb00e43fa79af1a6fd6f816dd99aa0b794df Mon Sep 17 00:00:00 2001 From: Kukks Date: Fri, 12 May 2023 14:18:43 +0200 Subject: [PATCH] update discovery --- .../BTCPayServer.Plugins.Wabisabi.csproj | 2 +- .../Coordinator/WabisabiCoordinatorService.cs | 4 ++-- .../Shared/Wabisabi/AddCoordinator.cshtml | 1 + .../UpdateWabisabiStoreSettings.cshtml | 15 +++++-------- .../WabisabiCoordinatorClientInstance.cs | 21 ++++++++++++++++--- .../WabisabiStoreController.cs | 2 +- 6 files changed, 28 insertions(+), 17 deletions(-) diff --git a/Plugins/BTCPayServer.Plugins.Wabisabi/BTCPayServer.Plugins.Wabisabi.csproj b/Plugins/BTCPayServer.Plugins.Wabisabi/BTCPayServer.Plugins.Wabisabi.csproj index 74d5532..a815aaa 100644 --- a/Plugins/BTCPayServer.Plugins.Wabisabi/BTCPayServer.Plugins.Wabisabi.csproj +++ b/Plugins/BTCPayServer.Plugins.Wabisabi/BTCPayServer.Plugins.Wabisabi.csproj @@ -13,7 +13,7 @@ Wabisabi Coinjoin Allows you to integrate your btcpayserver store with coinjoins. - 1.0.39 + 1.0.40 diff --git a/Plugins/BTCPayServer.Plugins.Wabisabi/Coordinator/WabisabiCoordinatorService.cs b/Plugins/BTCPayServer.Plugins.Wabisabi/Coordinator/WabisabiCoordinatorService.cs index c2271ac..79d5a0b 100644 --- a/Plugins/BTCPayServer.Plugins.Wabisabi/Coordinator/WabisabiCoordinatorService.cs +++ b/Plugins/BTCPayServer.Plugins.Wabisabi/Coordinator/WabisabiCoordinatorService.cs @@ -179,7 +179,7 @@ public class WabisabiCoordinatorService : PeriodicRunner { foreach (var discoveredCoordinator in settings.DiscoveredCoordinators) { - _instanceManager.AddCoordinator(discoveredCoordinator.Name, discoveredCoordinator.Name, _ => discoveredCoordinator.Uri ); + _instanceManager.AddCoordinator(discoveredCoordinator.Name, discoveredCoordinator.Name, _ => discoveredCoordinator.Uri, null, discoveredCoordinator.Description ); } } if (settings.Enabled) @@ -197,7 +197,7 @@ public class WabisabiCoordinatorService : PeriodicRunner { instance.WasabiCoordinatorStatusFetcher.OverrideConnected = null; } - _instanceManager.AddCoordinator("Local Coordinator", "local", _ => null, cachedSettings.TermsConditions); + _instanceManager.AddCoordinator("Local Coordinator", "local", _ => null, cachedSettings.TermsConditions, cachedSettings.CoordinatorDescription); } public async Task StopAsync(CancellationToken cancellationToken) diff --git a/Plugins/BTCPayServer.Plugins.Wabisabi/Views/Shared/Wabisabi/AddCoordinator.cshtml b/Plugins/BTCPayServer.Plugins.Wabisabi/Views/Shared/Wabisabi/AddCoordinator.cshtml index 7be0444..90d5119 100644 --- a/Plugins/BTCPayServer.Plugins.Wabisabi/Views/Shared/Wabisabi/AddCoordinator.cshtml +++ b/Plugins/BTCPayServer.Plugins.Wabisabi/Views/Shared/Wabisabi/AddCoordinator.cshtml @@ -16,6 +16,7 @@ @Model.Uri +

@Model.Description

diff --git a/Plugins/BTCPayServer.Plugins.Wabisabi/Views/WabisabiStore/UpdateWabisabiStoreSettings.cshtml b/Plugins/BTCPayServer.Plugins.Wabisabi/Views/WabisabiStore/UpdateWabisabiStoreSettings.cshtml index 2850245..d751579 100644 --- a/Plugins/BTCPayServer.Plugins.Wabisabi/Views/WabisabiStore/UpdateWabisabiStoreSettings.cshtml +++ b/Plugins/BTCPayServer.Plugins.Wabisabi/Views/WabisabiStore/UpdateWabisabiStoreSettings.cshtml @@ -217,18 +217,12 @@ @coordinator.Coordinator
- @if (!coordinator.WasabiCoordinatorStatusFetcher.Connected) - { -

Coordinator Status: Not connected

- } - else - { -

- Coordinator Status: Connected +

@(coordinator.WasabiCoordinatorStatusFetcher.Connected? "Coordinator Status: Not connected": "Coordinator Status: Connected")
-

+ @if (!string.IsNullOrEmpty(coordinator.Description)) + { +

@coordinator.Description

} - @if (coordinator.RoundStateUpdater.AnyRound && coordinator.RoundStateUpdater.RoundStates.Any(pair => pair.Value.BlameOf == uint256.Zero)) { var round = coordinator.RoundStateUpdater.RoundStates.Last(pair => pair.Value.BlameOf == uint256.Zero).Value; @@ -309,6 +303,7 @@ By enabling this coordinator, you agree to their terms and conditions.
+
@{ var canEnable = coordinator.WasabiCoordinatorStatusFetcher.Connected && coordinator.RoundStateUpdater.AnyRound; diff --git a/Plugins/BTCPayServer.Plugins.Wabisabi/WabisabiCoordinatorClientInstance.cs b/Plugins/BTCPayServer.Plugins.Wabisabi/WabisabiCoordinatorClientInstance.cs index e13dc05..b6a4ac0 100644 --- a/Plugins/BTCPayServer.Plugins.Wabisabi/WabisabiCoordinatorClientInstance.cs +++ b/Plugins/BTCPayServer.Plugins.Wabisabi/WabisabiCoordinatorClientInstance.cs @@ -18,6 +18,7 @@ using WalletWasabi.WabiSabi.Client; using WalletWasabi.WabiSabi.Client.RoundStateAwaiters; using WalletWasabi.WabiSabi.Client.StatusChangedEvents; using WalletWasabi.Wallets; +using WalletWasabi.WebClients.Wasabi; using HttpClientFactory = WalletWasabi.WebClients.Wasabi.HttpClientFactory; namespace BTCPayServer.Plugins.Wabisabi; @@ -78,7 +79,7 @@ public class WabisabiCoordinatorClientInstanceManager:IHostedService public void AddCoordinator(string displayName, string name, - Func fetcher, string termsConditions = null) + Func fetcher, string termsConditions = null, string description = null) { if (termsConditions is null && name == "zksnacks") { @@ -98,7 +99,7 @@ public class WabisabiCoordinatorClientInstanceManager:IHostedService var instance = new WabisabiCoordinatorClientInstance( displayName, name, new Uri(url), _provider.GetService(), _provider, UTXOLocker, - _provider.GetService(), termsConditions); + _provider.GetService(), termsConditions, description); if (HostedServices.TryAdd(instance.CoordinatorName, instance)) { if(started) @@ -131,6 +132,7 @@ public class WabisabiCoordinatorClientInstance public RoundStateUpdater RoundStateUpdater { get; set; } public WasabiCoordinatorStatusFetcher WasabiCoordinatorStatusFetcher { get; set; } public CoinJoinManager CoinJoinManager { get; set; } + public string Description { get; set; } public WabisabiCoordinatorClientInstance(string coordinatorDisplayName, string coordinatorName, @@ -138,7 +140,7 @@ public class WabisabiCoordinatorClientInstance ILoggerFactory loggerFactory, IServiceProvider serviceProvider, IUTXOLocker utxoLocker, - WalletProvider walletProvider, string termsConditions, string coordinatorIdentifier = "CoinJoinCoordinatorIdentifier") + WalletProvider walletProvider, string termsConditions, string description,string coordinatorIdentifier = "CoinJoinCoordinatorIdentifier") { _utxoLocker = utxoLocker; @@ -154,6 +156,7 @@ public class WabisabiCoordinatorClientInstance Coordinator = coordinator; WalletProvider = walletProvider; TermsConditions = termsConditions; + Description = description; _logger = loggerFactory.CreateLogger(coordinatorName); IWabiSabiApiRequestHandler sharedWabisabiClient; if (coordinatorName == "local") @@ -167,6 +170,18 @@ public class WabisabiCoordinatorClientInstance var roundStateUpdaterCircuit = new PersonCircuit(); var roundStateUpdaterHttpClient = WasabiHttpClientFactory.NewHttpClient(Mode.SingleCircuitPerLifetime, roundStateUpdaterCircuit); + if (termsConditions is null) + { + _ = new WasabiClient(roundStateUpdaterHttpClient) + .GetLegalDocumentsAsync(CancellationToken.None) + .ContinueWith(task => + { + if (task.Status == TaskStatus.RanToCompletion) + { + TermsConditions = task.Result; + } + }); + } sharedWabisabiClient = new WabiSabiHttpApiClient(roundStateUpdaterHttpClient); } diff --git a/Plugins/BTCPayServer.Plugins.Wabisabi/WabisabiStoreController.cs b/Plugins/BTCPayServer.Plugins.Wabisabi/WabisabiStoreController.cs index ebef1bc..4bcde99 100644 --- a/Plugins/BTCPayServer.Plugins.Wabisabi/WabisabiStoreController.cs +++ b/Plugins/BTCPayServer.Plugins.Wabisabi/WabisabiStoreController.cs @@ -229,7 +229,7 @@ namespace BTCPayServer.Plugins.Wabisabi { coordSettings.DiscoveredCoordinators.Add(viewModel); await _wabisabiCoordinatorService.UpdateSettings(coordSettings); - _instanceManager.AddCoordinator(viewModel.Name, viewModel.Name, provider => viewModel.Uri); + _instanceManager.AddCoordinator(viewModel.Name, viewModel.Name, provider => viewModel.Uri, viewModel.Description); TempData["SuccessMessage"] = $"Coordinator {viewModel.Name } added and started"; }