Compare commits

..

11 Commits

Author SHA1 Message Date
d738f797ec bump 2023-04-17 11:11:00 +09:00
b5de97f785 Update changelog 2023-04-17 10:54:00 +09:00
b0c1b0895d Fix crash if auto detect language on checkout page, and the language couldn't be detected (Fix ) () 2023-04-17 10:53:45 +09:00
8e60932f81 Migrate reference to AppType in server settings (Fix ) 2023-04-17 10:34:41 +09:00
7d14cd74f2 LightningLikePaymentData: Null-check preimage ()
Fixes .
2023-04-17 00:08:40 +02:00
717f1610f5 Update changelog 2023-04-13 16:28:30 +09:00
f1abe6497f Fix wrong data mapping to store data instead of store user data. () 2023-04-13 16:27:40 +09:00
046129a57d Bumping LND to 0.16.0-beta () 2023-04-13 14:48:47 +09:00
90d300a490 Remove superflous category in API doc 2023-04-13 08:41:46 +09:00
a2d506c0db Checkout v2: Confetti for processing payments ()
Let's not spoil the fun for those paying on-chain.
2023-04-13 08:40:21 +09:00
58748a24da What's New entry for v1.9 ()
Copy is just a proposal from my side. Link check expected to fail, because the blog post isn't up yet.
2023-04-12 20:40:20 +09:00
16 changed files with 102 additions and 15 deletions

@ -188,8 +188,10 @@ namespace BTCPayServer.Tests
});
s.Driver.Navigate().Refresh();
// Pay full amount
s.PayInvoice();
// Processing
TestUtils.Eventually(() =>
{
@ -197,8 +199,9 @@ namespace BTCPayServer.Tests
Assert.True(processingSection.Displayed);
Assert.Contains("Payment Received", processingSection.Text);
Assert.Contains("Your payment has been received and is now processing", processingSection.Text);
Assert.True(s.Driver.ElementDoesNotExist(By.Id("confetti")));
});
s.Driver.FindElement(By.Id("confetti"));
// Mine
s.MineBlockOnInvoiceCheckout();
TestUtils.Eventually(() =>

@ -2445,6 +2445,31 @@ namespace BTCPayServer.Tests
Assert.False(fn.Seen);
}
[Fact(Timeout = LongRunningTestTimeout)]
[Trait("Integration", "Integration")]
public async Task CanFixMappedDomainAppType()
{
using var tester = CreateServerTester(newDb: true);
await tester.StartAsync();
var f = tester.PayTester.GetService<ApplicationDbContextFactory>();
using (var ctx = f.CreateContext())
{
var setting = new SettingData() { Id = "BTCPayServer.Services.PoliciesSettings" };
setting.Value = JObject.Parse("{\"RootAppId\": null, \"RootAppType\": 1, \"Experimental\": false, \"PluginSource\": null, \"LockSubscription\": false, \"DisableSSHService\": false, \"PluginPreReleases\": false, \"BlockExplorerLinks\": [],\"DomainToAppMapping\": [{\"AppId\": \"87kj5yKay8mB4UUZcJhZH5TqDKMD3CznjwLjiu1oYZXe\", \"Domain\": \"donate.nicolas-dorier.com\", \"AppType\": 0}], \"CheckForNewVersions\": false, \"AllowHotWalletForAll\": false, \"RequiresConfirmedEmail\": false, \"DiscourageSearchEngines\": false, \"DisableInstantNotifications\": false, \"DisableNonAdminCreateUserApi\": false, \"AllowHotWalletRPCImportForAll\": false, \"AllowLightningInternalNodeForAll\": false, \"DisableStoresToUseServerEmailSettings\": false}").ToString();
ctx.Settings.Add(setting);
await ctx.SaveChangesAsync();
}
await RestartMigration(tester);
using (var ctx = f.CreateContext())
{
var setting = await ctx.Settings.FirstOrDefaultAsync(c => c.Id == "BTCPayServer.Services.PoliciesSettings");
var o = JObject.Parse(setting.Value);
Assert.Equal("Crowdfund", o["RootAppType"].Value<string>());
o = (JObject)((JArray)o["DomainToAppMapping"])[0];
Assert.Equal("PointOfSale", o["AppType"].Value<string>());
}
}
[Fact(Timeout = LongRunningTestTimeout)]
[Trait("Integration", "Integration")]
public async Task CanDoLightningInternalNodeMigration()

@ -243,7 +243,7 @@ services:
- "5432"
merchant_lnd:
image: btcpayserver/lnd:v0.15.4-beta-1
image: btcpayserver/lnd:v0.16.0-beta
restart: unless-stopped
environment:
LND_CHAIN: "btc"
@ -278,7 +278,7 @@ services:
- bitcoind
customer_lnd:
image: btcpayserver/lnd:v0.15.4-beta-1
image: btcpayserver/lnd:v0.16.0-beta
restart: unless-stopped
environment:
LND_CHAIN: "btc"

@ -230,7 +230,7 @@ services:
- "5432"
merchant_lnd:
image: btcpayserver/lnd:v0.15.4-beta-1
image: btcpayserver/lnd:v0.16.0-beta
restart: unless-stopped
environment:
LND_CHAIN: "btc"
@ -267,7 +267,7 @@ services:
- bitcoind
customer_lnd:
image: btcpayserver/lnd:v0.15.4-beta-1
image: btcpayserver/lnd:v0.16.0-beta
restart: unless-stopped
environment:
LND_CHAIN: "btc"

@ -754,7 +754,7 @@ namespace BTCPayServer.Controllers
{
case "auto":
case null when storeBlob.AutoDetectLanguage:
lang = _languageService.AutoDetectLanguageUsingHeader(HttpContext.Request.Headers, null).Code;
lang = _languageService.AutoDetectLanguageUsingHeader(HttpContext.Request.Headers, null)?.Code;
break;
case { } langs when !string.IsNullOrEmpty(langs):
{

@ -242,6 +242,12 @@ namespace BTCPayServer.Hosting
settings.FixSeqAfterSqliteMigration = true;
await _Settings.UpdateSetting(settings);
}
if (!settings.FixMappedDomainAppType)
{
await FixMappedDomainAppType();
settings.FixMappedDomainAppType = true;
await _Settings.UpdateSetting(settings);
}
}
catch (Exception ex)
{
@ -250,6 +256,44 @@ namespace BTCPayServer.Hosting
}
}
private async Task FixMappedDomainAppType()
{
await using var ctx = _DBContextFactory.CreateContext();
var setting = await ctx.Settings.FirstOrDefaultAsync(s => s.Id == "BTCPayServer.Services.PoliciesSettings");
if (setting?.Value is null)
return;
string MapToString(int v)
{
return v switch
{
0 => "PointOfSale",
1 => "Crowdfund",
_ => throw new NotSupportedException()
};
}
var data = JObject.Parse(setting.Value);
if (data["RootAppType"]?.Type is JTokenType.Integer)
{
var v = data["RootAppType"].Value<int>();
data["RootAppType"] = new JValue(MapToString(v));
}
var arr = data["DomainToAppMapping"] as JArray;
if (arr != null)
{
foreach (var map in arr)
{
if (map["AppType"]?.Type is JTokenType.Integer)
{
var v = map["AppType"].Value<int>();
map["AppType"] = new JValue(MapToString(v));
}
}
}
setting.Value = data.ToString();
await ctx.SaveChangesAsync();
}
private async Task FixSeqAfterSqliteMigration()
{
await using var ctx = _DBContextFactory.CreateContext();

@ -66,7 +66,7 @@ namespace BTCPayServer.Payments.Lightning
public string GetPaymentProof()
{
return Preimage.ToString();
return Preimage?.ToString();
}
}
}

@ -36,5 +36,6 @@ namespace BTCPayServer.Services
public bool MigrateWalletColors { get; set; }
public bool FileSystemStorageAsDefault { get; set; }
public bool FixSeqAfterSqliteMigration { get; set; }
public bool FixMappedDomainAppType { get; set; }
}
}

@ -112,6 +112,7 @@
<div v-if="isProcessing" id="processing" key="processing">
<div class="top">
<span class="icn">
<div id="confetti" v-if="srvModel.celebratePayment" v-on:click="celebratePayment(5000)"></div>
<vc:icon symbol="payment-sent" />
</span>
<h4 v-t="'payment_received'"></h4>

@ -167,7 +167,7 @@
<div class="form-check">
<input asp-for="AutoDetectLanguage" type="checkbox" class="form-check-input" />
<label asp-for="AutoDetectLanguage" class="form-check-label"></label>
<div class="form-text">Detects the language of the customer's browser with 99.9% accuracy.</div>
<div class="form-text">Detects the language of the customer's browser.</div>
</div>
</div>
<div class="form-group">

@ -34,6 +34,10 @@
</button>
</div>
<div class="modal-body">
<h5 class="alert-heading">Updated in <a href="https://blog.btcpayserver.org/btcpay-server-1-9-0/" target="_blank" rel="noreferrer noopener">v1.9.0</a></h5>
<p class="mb-2">Lots of improvements for our new checkout experience, which is now also the default for new stores — better NFC support, improved receipts and … confetti! 🎉</p>
<p class="mb-0">You'll also notice that wallet labels are featured more prominently. And the invoice details page now contains all the information you'd expect.</p>
<hr style="height:1px;background-color:var(--btcpay-body-text-muted);margin:var(--btcpay-space-m) 0;" />
<h5 class="alert-heading">Updated in <a href="https://blog.btcpayserver.org/btcpay-server-1-8-0/" target="_blank" rel="noreferrer noopener">v1.8.0</a></h5>
<p class="mb-2">Bear markets are for building: This version brings custom checkout forms, store branding options, a redesigned Point of Sale keypad view, new notification icons and address labeling.</p>
<p class="mb-0">You like that? Consider <a href="https://opensats.org/projects/btcpayserver" target="_blank" rel="noreferrer noopener">supporting BTCPay Server via OpenSats</a>.</p>
@ -41,10 +45,6 @@
<h5 class="alert-heading">Updated in <a href="https://blog.btcpayserver.org/btcpay-server-1-7-0/" target="_blank" rel="noreferrer noopener">v1.7.0</a></h5>
<p class="mb-2">We've redesigned the checkout and the new version is available as an opt-in feature. We're looking forward to your <a href="https://github.com/btcpayserver/btcpayserver/discussions/4308" target="_blank" rel="noreferrer noopener">feedback</a>!</p>
<p class="mb-0">You can now also request customer data (e.g. their shipping address) when they pay an invoice.</p>
<hr style="height:1px;background-color:var(--btcpay-body-text-muted);margin:var(--btcpay-space-m) 0;" />
<h5 class="alert-heading">Updated in <a href="https://blog.btcpayserver.org/btcpay-server-1-6-0/" target="_blank" rel="noreferrer noopener">v1.6.0</a></h5>
<p class="mb-2">The dashboard now contains your Lightning balances and services, as well as Point of Sale statistics.</p>
<p class="mb-0">We've also added invoice receipts and LNURL withdraw for payouts.</p>
</div>
</div>
</div>

@ -192,6 +192,11 @@ function initApp() {
if (newValue === true && oldValue === false) {
// poll from here on
this.listenForConfirmations();
// celebration!
const self = this;
Vue.nextTick(function () {
self.celebratePayment(5000);
});
}
},
isSettled: function (newValue, oldValue) {

@ -128,7 +128,6 @@
"get": {
"tags": [
"Apps",
"POS",
"Point of Sale"
],
"operationId": "Apps_GetPointOfSaleApp",

@ -189,7 +189,7 @@
"StoreUserDataList": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StoreData"
"$ref": "#/components/schemas/StoreUserData"
}
},
"StoreUserData": {

@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<Version>1.9.0</Version>
<Version>1.9.1</Version>
</PropertyGroup>
</Project>

@ -1,5 +1,13 @@
# Changelog
## 1.9.1
### Bug fixes
* Fix crash if auto detect language on checkout page, and the language couldn't be detected (Fix #4881) @NicolasDorier
* Error 500 when viewing Receipt Page (Fix #4884) @dennisreimann
* When updating to version v1.9.0 the mapping to the APP stops working (Fix #4882) @NicolasDorier
## 1.9.0
### Breaking change
@ -40,6 +48,7 @@ We introduce another flag, `--deprecated`, which allows you to start with SQLite
* Point of Sale: Fix escaped HTML entities in item title (#4798) @dennisreimann
* Fix: Labels added by payouts to transactions shouldn't show HTML markups (#4790) @dennisreimann
* If store user is Guest, "issue refund" shouldn't be an option (#4595 #3512) @Kukks
* Fix wrong data mapping to store data instead of store user data (#4874) @ndeet
### Improvements