mirror of
https://github.com/aljazceru/BTCPayServerPlugins.git
synced 2025-12-17 07:34:24 +01:00
upd prism
This commit is contained in:
@@ -40,7 +40,7 @@ namespace BTCPayServer.Plugins.FixedFloat
|
||||
{
|
||||
var k = $"{nameof(FixedFloatSettings)}_{storeId}";
|
||||
await _storeRepository.UpdateSetting(storeId, nameof(FixedFloatSettings), fixedFloatSettings);
|
||||
_memoryCache.Set(k, fixedFloatSettings);
|
||||
_memoryCache.Remove(k);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<PropertyGroup>
|
||||
<Product>LN Prism</Product>
|
||||
<Description>Automated value splits for lightning.</Description>
|
||||
<Version>1.1.10</Version>
|
||||
<Version>1.1.11</Version>
|
||||
</PropertyGroup>
|
||||
<!-- Plugin development properties -->
|
||||
<PropertyGroup>
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
}
|
||||
<span class="form-text">An alias to reference in destinations of prisms.</span>
|
||||
</div>
|
||||
@if (WorkingCopy is not null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label class="form-label">Destination</label>
|
||||
<input type="text" @bind="WorkingCopy.Destination" class="form-control"/>
|
||||
@@ -33,9 +35,10 @@
|
||||
<button type="button" class="btn btn-secondary" @onclick="Cancel">Cancel</button>
|
||||
@if (!string.IsNullOrEmpty(OriginalWorkingId))
|
||||
{
|
||||
<button type="button" class="btn btn-outline-danger" @onclick="() => SettingsChanged.InvokeAsync(null)">Remove</button>
|
||||
<button type="button" class="btn btn-outline-danger" @onclick="() => OnUpdate.InvokeAsync((OriginalWorkingId, null))">Remove</button>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div >
|
||||
|
||||
@code {
|
||||
@@ -48,6 +51,7 @@
|
||||
|
||||
[Parameter]
|
||||
public EventCallback OnCancel { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public Func<string, bool> ValidateDestination { get; set; }
|
||||
|
||||
@@ -73,7 +77,6 @@ public EventCallback OnCancel { get; set; }
|
||||
{
|
||||
if (OriginalWorkingId != value)
|
||||
{
|
||||
|
||||
WorkingId = value;
|
||||
OriginalWorkingId = value;
|
||||
InvalidId = false;
|
||||
@@ -93,14 +96,12 @@ public EventCallback OnCancel { get; set; }
|
||||
{
|
||||
return;
|
||||
}
|
||||
await IdChanged.InvokeAsync(WorkingId).ContinueWith(task => SettingsChanged.InvokeAsync(WorkingCopy));
|
||||
await OnUpdate.InvokeAsync((WorkingId, WorkingCopy));
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<PrismDestination?> SettingsChanged { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<string> IdChanged { get; set; }
|
||||
public EventCallback<(string Id, PrismDestination? Destination)> OnUpdate { get; set; }
|
||||
|
||||
|
||||
private Task Cancel()
|
||||
|
||||
@@ -126,8 +126,8 @@ else
|
||||
ValidateId="ValidateId"
|
||||
ValidateDestination="s => ValidateDestination(s, false)"
|
||||
Id="@SelectedDestinationId"
|
||||
IdChanged="OnIdRenamed"
|
||||
@bind-Settings="SelectedDestination"
|
||||
Settings="@SelectedDestination"
|
||||
OnUpdate="OnDestinationUpdated"
|
||||
OnCancel="o => SelectedDestinationId = null">
|
||||
</PrismDestinationEditor>
|
||||
}
|
||||
@@ -190,31 +190,6 @@ else
|
||||
Settings.Destinations.TryGetValue(SelectedDestinationId, out var res);
|
||||
return res;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (SelectedDestinationId is null)
|
||||
return;
|
||||
if (value is null)
|
||||
{
|
||||
Settings.Destinations.Remove(SelectedDestinationId);
|
||||
|
||||
foreach (var settingsSplit in Settings.Splits)
|
||||
{
|
||||
settingsSplit.Destinations.RemoveAll(split => split.Destination == SelectedDestinationId);
|
||||
}
|
||||
|
||||
SelectedDestinationId = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
Settings.Destinations.AddOrReplace(SelectedDestinationId, value);
|
||||
|
||||
SelectedDestinationId = "null";
|
||||
}
|
||||
|
||||
_ = SaveDestinations();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public string[] Destinations => Settings.Destinations.Keys.ToArray();
|
||||
@@ -454,46 +429,6 @@ else
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task OnIdRenamed(string s)
|
||||
{
|
||||
if (SelectedDestinationId == s)
|
||||
return;
|
||||
if (string.IsNullOrEmpty(SelectedDestinationId))
|
||||
{
|
||||
SelectedDestinationId = s;
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
await SatBreaker._updateLock.WaitAsync();
|
||||
|
||||
if (SelectedDestinationId == s)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// find all prisms splits that use this id + all destination balances that use this id + all pending payouts that use this id and rename them
|
||||
foreach (var destination in Settings.Splits.SelectMany(split => split.Destinations.Where(destination => destination.Destination == SelectedDestinationId)))
|
||||
{
|
||||
destination.Destination = s;
|
||||
}
|
||||
if (Settings.DestinationBalance.Remove(SelectedDestinationId, out var db))
|
||||
{
|
||||
Settings.DestinationBalance.Add(s, db);
|
||||
}
|
||||
if (Settings.Destinations.Remove(SelectedDestinationId, out var dest))
|
||||
{
|
||||
Settings.Destinations.Add(s, dest);
|
||||
}
|
||||
SelectedDestinationId = s;
|
||||
|
||||
await SatBreaker.UpdatePrismSettingsForStore(StoreId, Settings, true);
|
||||
}
|
||||
finally
|
||||
{
|
||||
SatBreaker._updateLock.Release();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task OnUpdateBalance((string destination, long newBalance) obj)
|
||||
{
|
||||
try
|
||||
@@ -515,4 +450,63 @@ else
|
||||
}
|
||||
}
|
||||
|
||||
private async Task OnDestinationUpdated((string Id, PrismDestination? Destination) obj)
|
||||
{
|
||||
|
||||
if (obj.Destination is null && !string.IsNullOrEmpty(SelectedDestinationId))
|
||||
{
|
||||
Settings.Destinations.Remove(SelectedDestinationId);
|
||||
|
||||
foreach (var settingsSplit in Settings.Splits)
|
||||
{
|
||||
settingsSplit.Destinations.RemoveAll(split => split.Destination == SelectedDestinationId);
|
||||
}
|
||||
|
||||
SelectedDestinationId = null;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Settings.Destinations.AddOrReplace(SelectedDestinationId, obj.Destination);
|
||||
await SaveDestinations();
|
||||
var needSave = false;
|
||||
if (!string.IsNullOrEmpty(SelectedDestinationId) && SelectedDestinationId != obj.Id)
|
||||
{
|
||||
try
|
||||
{
|
||||
await SatBreaker._updateLock.WaitAsync();
|
||||
|
||||
// find all prisms splits that use this id + all destination balances that use this id + all pending payouts that use this id and rename them
|
||||
foreach (var destination in Settings.Splits.SelectMany(split => split.Destinations.Where(destination => destination.Destination == SelectedDestinationId)))
|
||||
{
|
||||
destination.Destination = obj.Id;
|
||||
needSave = true;
|
||||
}
|
||||
if (Settings.DestinationBalance.Remove(SelectedDestinationId, out var db))
|
||||
{
|
||||
needSave = true;
|
||||
Settings.DestinationBalance.Add( obj.Id, db);
|
||||
}
|
||||
if (Settings.Destinations.Remove(SelectedDestinationId, out var dest))
|
||||
{
|
||||
needSave = true;
|
||||
Settings.Destinations.Add( obj.Id, dest);
|
||||
}
|
||||
if (needSave)
|
||||
{
|
||||
await SatBreaker.UpdatePrismSettingsForStore(StoreId, Settings, true);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
SatBreaker._updateLock.Release();
|
||||
}
|
||||
}
|
||||
SelectedDestinationId = "null";
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user