* More Options refactoring
Continues refactoring config classes to use the propert Options pattern where possible.
DataDirectories and DatabaseOptions are now configured the Options pattern and the BTCPayOptions is now moved alongside the other config setup
* Move COnfigure logic for Options to the Startup
* Remove only dependency on Dbriize (TextSearch in new invoice column)
* Switch to table for invoice text search
* Adding missing using after rebase
* Removing database migration in preparation for refresh
* Database Migration: Adding InvoiceSearchData
* Refactoring InvoicesRepository to make AddToTextSearch static and non-async
Operation as async is too expensive for simple filtering and AddRange
* Renaming InvoiceQuery property to Take
More inline with what property does by convention, Take is used in conjuction with Skip
* Refactoring SettingsRepository so update of settings can happen in another context
* Adding DbMigrationsHostedService that performs long running data migrations
* Commenting special placing of MigrationStartupTask
* Simplifying code and leaving comment on expected flow
* Resolving problems after merge
* Database Migration: Refreshing database migration, ensuring no unintended changes on ModelSnapshot
Co-authored-by: rockstardev <rockstardev@users.noreply.github.com>
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
This allows plugins to create custom dbcontexts, which would be namespaced in the scheme with a prefix. Migrations are supported too and the table would be prefixed too
Almost an exact replica of https://developer.wordpress.org/plugins/hooks/
This will allow plugins to extend specific points in business logic, such as validation, invoice payload changes, etc
* BTCPay Extensions Part 2
This PR cleans up the extension system a bit in that:
* It renames the test extension to a more uniform name
* Allows yo uto have system extensions, which are extensions but bundled by default with the release (and cannot be removed)
* Adds a tool to help you generate an extension package from a csproj
* Refactors the UI extension points to a view component
* Moves some more interfaces to the Abstractions csproj
* Rename to plugins
* Remove SQLite as default option
IF MERGED, STORES WITH NO DB CONFIG WILL NOT START UNTIL CONFIG IS UPDATED WITH `sqlitefile=sqlite.db`
* remove sqlite conn string option
* toggle between abs path or relative for sqlite db
* Update DefaultConfiguration.cs
Added dedicated endpoint that generates an invoice or returns an existing one as needed for a shopify order
Added rate limiter to shopify endpoint to prevent abuse
Reduce shopify js to a small file
Use events from btcpay modal to reduce constant pinging to btcpay server
Register invoice payment failures on the shopify backend.
replaces #1591 and #1592 , closes#1571 Replaces the Currencies.txt to a json format which includes the networks too ( there is also a test to check now) Also makes CurrencyPair not depend on network and instead use CurrencyNameTable
* Auto label utxos based on invoice and payjoin
This PR introduces automatic labelling to transactions.
* If it is an incoming tx to an invoice, it will tag it as such.
* If it was a payjoin tx , it will tag it as such.
* If a transaction's inputs were exposed to a payjoin sender, we tag it as such.
* wip
* wip
* support in coinselection
* remove ugly hack
* support wallet transactions page
* remove messy loop
* better label template helpers
* add tests and susbcribe to event
* simplify data
* fix test
* fix label + color
* fix remove label
* renove useless call
* add toString
* fix potential crash by txid
* trim json keyword in manual label
* format file
* WIP: Add Tor Http Client Factory
This PR adds a Tor Http Client Factory so that we can do HTTP requests over socks5( which we usually use tor's socks5).
Using it for payjoin when possible.
Currently have an issue where a 503 is always returned. Must be something wrong with my tor config or the socks proxy lib Im using
* fix
* remove external dependency
* make payjoin client use tor client if available
* fix docker test
* use tor client only if available and necessary
* remove bip 79 mention