265 Commits

Author SHA1 Message Date
monicamuyama
5a487985f4 Issue 6918 re enable plugin (#6930)
* Added the enable button on disabled plugins

* Added the disable function and button for installed plugins

* Changes based on the coderabbitai comments

* Removed markers and added the disable in the same if block as the unistall

* Hide the uninstall button when plugin is queued for enabling

* Removed the duplicate enale function

* Removed the disable button for installed plugins

* Removed the disableplugin functions as they are no longer needed

* Trigger CI pipeline after dotnet restore

* reverted the git ignore
2025-11-21 05:23:12 -06:00
Nicolas Dorier
0a518320ea Fix missing assignation 2025-11-21 10:28:57 +09:00
Nicolas Dorier
e002f59f4c Tests: All plugin integration tests to resolve plugin's types
Reported by @napoly

In an integration test for a plugin, attempt to resolve a type provided by that plugin using `BTCPayServerTester`.

For example:
```
tester.GetService<MoneroRPCProvider>();
```

The type should be resolved successfully.

The type fails to resolve.

During the test run, the dotnet runtime attempts to load `MoneroRPCProvider` in the default load context (`AssemblyLoadContext.Default`). It locates the plugin assembly in the test directory and loads it there.

In contrast, when BTCPay Server loads a plugin, it creates a dedicated plugin load context, and the plugin’s `MoneroRPCProvider` is loaded inside that context. This results in two distinct `MoneroRPCProvider` types: one in the default context and one in the plugin context.

This PR forces the plugin context, during integration tests, to load the types it resolves into the default assembly context rather than its own. This prevents duplicate type definitions.

As a side effect, behavior may differ slightly between running BTCPay Server normally and running tests, but this should be acceptable in most cases.

Relevant discussion: #6851
2025-11-21 09:11:01 +09:00
Nicolas Dorier
50b5c9a2b9 Merge branch 'pending-invoice' 2025-11-19 15:01:02 +09:00
Nicolas Dorier
2f8be8c9f0 Add a 'Pending invoice' pill in portal subscription when invoice processing 2025-11-19 15:00:39 +09:00
Nicolas Dorier
0e649a68bf Add buyerEmail to invoice metadata created by suscribers 2025-11-19 14:46:00 +09:00
Nicolas Dorier
749c772218 Validate scopes of service injections in tests 2025-11-15 22:46:14 +09:00
Nicolas Dorier
41f5588257 Feature: Plugin can extend whether an account can login or not 2025-11-14 18:00:20 +09:00
Nicolas Dorier
b6c635c29b Refactor: Move email services to the email plugin directory 2025-11-12 11:35:04 +09:00
Nicolas Dorier
666896df5c Merge pull request #6979 from NicolasDorier/server-email-rules
Add Server Email Rules
2025-11-12 08:52:23 +09:00
Nicolas Dorier
46156a5a39 Remove the store invitation notification to store owners 2025-11-12 08:49:48 +09:00
Nicolas Dorier
894643c5a3 Fix: When running more than one test in a test run, only the first would load plugins correctly (#6985)
Reported by @napoly.

## Actual behavior

Two tests were created. When we would run the tests through the runner,
ASP.NET wouldn't find the registered view of the plugin.

## Expected behavior

The second test should works find, ASP.NET should properly find the
views of the plugin when there are more than one test in the same test
run.

## Cause

If we detected that a plugin assemly was already in the AppDomain, then
we were not loading the ApplicationParts of such assembly.
This wasn't the case for the first test run, but would be after.

The reason for initially doing this was that long time ago, we would
test plugins by referencing them from BTCPaySevrer project. But since
this is not how we are doing things anymore, I think it is safe to
remove this "Feature".
This feature was broken anyway since we started loading plugins in their
own context, but this wouldn't happen with the old way of referencing
plugins from BTCPayServer. (#6851)
2025-11-12 00:15:31 +09:00
Nicolas Dorier
3948eb13cd Add default server email rules in migration 2025-11-10 17:24:27 +09:00
Nicolas Dorier
dcf60e20b9 Add CC and BCC to emails 2025-11-10 17:24:27 +09:00
Nicolas Dorier
d7fcd55707 Add invite and confirmation emails 2025-11-10 17:24:27 +09:00
Nicolas Dorier
88d3e7ad55 Fix: Rich TextBox (Summernote) not saving changes in code-view
The richtext box had an annoying bug: If you switch to code view, modify
the code then save, the changes would be ignored.

One had to switch back to preview mode prior to save. (See
summernote/summernote#94 for more details)
2025-11-10 17:24:27 +09:00
Nicolas Dorier
b7aed3e3d8 Add Server Email Rules 2025-11-10 17:24:27 +09:00
Nicolas Dorier
54cec83507 Refactor access to the ViewModel of the MainLayout (#6970) 2025-11-01 00:02:11 +09:00
nicolas.dorier
b1cba47adf [Features] Subscriptions 2025-10-28 15:33:23 +09:00
Nicolas Dorier
ff02c0f5d7 Unify delete confirmation confirm dialog (#6965) 2025-10-26 12:37:55 +09:00
Nicolas Dorier
42490c389d Fix: Unable to reset email settings (#6963) 2025-10-23 17:29:42 +09:00
rockstardev
83cc198124 Merge pull request #6958 from btcpayserver/fix/pos-full-status
Providing full status for review in POS recent transactions
2025-10-21 11:03:50 -05:00
Nicolas Dorier
e8282ca849 Refactoring of Webhooks and Email Rules (#6954) 2025-10-19 22:31:24 +09:00
rockstardev
5ade3b99b1 Providing full status for review in POS recent transactions 2025-10-17 14:39:02 -05:00
thgO.O
3d8dc1040b refactor: let exceptions bubble and remove noisy logs 2025-09-02 12:19:22 -03:00
thgO.O
0352edd56d refactor: add GetShortBtcpayVersion to DRY version parsing 2025-08-27 15:04:42 -03:00
thgO.O
d608072efa refactor: improve logging context in MapToAvailablePlugin 2025-08-27 14:40:35 -03:00
thgO.O
b02d113a76 refactor: add query param encoding and improve error handling 2025-08-27 14:39:59 -03:00
thgO.O
b733a8e079 refactor: make HttpClient a readonly field and adopt _httpClient naming 2025-08-27 14:36:42 -03:00
thgO.O
5802966b23 refactor: drop #nullable enable and return empty array 2025-08-27 13:15:25 -03:00
thgO.O
2fcaf9bbf6 refactor: improve null-safety and error handling 2025-08-27 13:15:10 -03:00
thgO.O
ffa3ea82ed refactor: handle malformed JSON in updates response 2025-08-27 12:25:38 -03:00
thgO.O
f58e790672 refactor: move update check logic for installed plugins to plugin-builder 2025-08-26 01:03:57 -03:00
thgO.O
a787eabf13 feat: add InstalledPluginRequest and GetInstalledPluginsUpdates 2025-08-26 00:54:57 -03:00
thgO.O
5035b47e7a refactor: add parallel checks and DRY mapper 2025-08-21 00:51:20 -03:00
thgO.O
9e8f99c1d3 fix: ensure unlisted installed plugins appear as updatable 2025-08-20 01:41:50 -03:00
rockstardev
6183635b92 Asking for confirmation to display QR code if user is store owner 2025-07-31 09:22:31 +02:00
thgO.O
bacb6502a1 refactor: replace GetPublishedVersions with GetPluginVersionsForDownload in download flow 2025-07-29 23:32:55 -03:00
nicolas.dorier
7273e9953f Installing a plugin should install all plugin dependencies 2025-07-19 13:09:18 +09:00
Nicolas Dorier
e77d785358 Plugins can load assemblies from their dependent plugins (#6851) 2025-07-17 22:38:40 +09:00
nicolas.dorier
d7cabf0f58 Small perf improvement for the update PoS page 2025-07-04 22:03:51 +09:00
nicolas.dorier
9f04bd473a Apply taxes and set receipt properly for PoS Print View 2025-06-12 17:51:26 +09:00
Nicolas Dorier
46aafe7b8d Enable the Charge button on KeyPad when amount is 0 (#6785) 2025-06-11 23:57:40 +09:00
nicolas.dorier
8f3c67b3ee Fix: Custom amount in Product List mode would return error 404 2025-06-11 22:16:24 +09:00
nicolas.dorier
d30a8a7530 Fix tests and potential regression 2025-06-11 09:47:42 +09:00
nicolas.dorier
f52cb053fe Fix: Free items in the PoS were generating top-up invoices rather than settled invoices 2025-06-10 21:23:45 +02:00
Andrew Camilleri (Kukks)
886df54469 Fix: When a POS has a form, the amount adjusts incorrectly 2025-06-10 21:16:45 +02:00
Nicolas Dorier
5f7a686833 Show tax rate in receipt, adjust keypad display (#6739)
* Show tax rate in receipt, adjust keypad display

* Adjust small nits in the view
2025-05-20 13:31:29 +09:00
Nicolas Dorier
932d313dee Can apply tax rates to PoS items (#6724) 2025-05-19 10:35:46 +09:00
nicolas.dorier
5f908322c2 Make Rider a bit less verbose Code cleanup 2025-04-23 16:51:56 +09:00