* feat: add timestamp on InputSelectionOption to enable date filtering
* feat(coin-selection): add page size options for 100, 250, and 500
* feat(coin-selection): add toggle all option
* feat(coin-selection): add filtering by amount and timestamp
* feat(coin-selection): add filter help section for advanced search options
* test: add tests for Coin Selection filters and select all
* refactor: remove unnecessary variable
* feat(coin-selection): enable copy-to-clipboard for filter examples
* refactor(coin-selection): separate sort and select-all controls into distinct layout blocks
* refactor(coin-selection): align selection logic with existing DOM-based approach
* test: refactor CanUseCoinSelection and CanUseCoinSelectionFilters
* test(coin-selection): replace magic numbers and delays with constants and Eventually
* refactor(coin-selection): improve select all performance with specific jQuery selector
* test(coin-selection): improve select all test with eventually and Equal
* Monoscaped font and right aligning for easier amounts view
* fix: coin selection toggling no longer unchecks unrelated inputs
* refactor(coin-selection): ensure UTXO date filters use proper Date comparison
* feat: add text-translate attributes for available filters section
* test: make Select All checkbox interaction more resilient to race conditions
---------
Co-authored-by: rockstardev <5191402+rockstardev@users.noreply.github.com>
* replicating selenium tests using playwright
* create playwright tester instance
* more playwright tests
* run playwright in CI
* changes
* resolve test
* clean up
- Used the same logic as the StoreUsers.cshtml page to design the remove modal
- Removed the unit test part related to the deletion of email rules, since using this way of remove above is not possible to unit test, at least I didn't found an example to look at.
* Store users: Ensure the last owner cannot be downgraded
Changes the behaviour of the `AddOrUpdateStoreUser` method to throw errors for the failure cases, so that the UI and API can report the actual problem. A role change might fail if the user already has that role or if they are the last owner of the store.
* Cleanup code
---------
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* fix: return 403 when unauthenticated user accesses an archived invoice receipt
* refactor: simplify archived invoice access check with pattern matching
* Return 404 for unauthorized users accessing archived invoice
Co-authored-by: d11n <mail@dennisreimann.de>
* feat: add archived invoice validation for unauthenticated access in Checkout and GetStatus
* test: add test case for unauthorized access to archived invoice returning not found
* test: add unauthorized checkout test for archived invoice
* Commenting code and adding test case for GetStatus
---------
Co-authored-by: d11n <mail@dennisreimann.de>
Co-authored-by: rockstardev <5191402+rockstardev@users.noreply.github.com>
* Adding endpoint in Greenfield to allow server email settings
* Adding related swagger file
* Refactoring EmailSettingsData to be more readable
* Adding server email masking
* Adding tests
* Update BTCPayServer/wwwroot/swagger/v1/swagger.template.serveremail.json
Co-authored-by: d11n <mail@dennisreimann.de>
* Masking smtp server email returned over greenfield api and test
* Retaining password if password mask is used
* Remove magic string *****
* Flatten request for server's settings. Fix bug on shared setting instances
* Remove useless doc
* Simplify code
* Fix Store Email settings page
---------
Co-authored-by: d11n <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
Fixes a regression introduced with d24adda700: The negation for the `_rateLimitService.Throttle` result was removed with that commit, which lead to all unauthenticated request getting throttled. (It was correctly implemented in #6415.
Fixesbtcpayserver/app#131.
Validates missing and duplicate IDs on the edit actions and when creating/updating apps via the API.
Fails gracefully by excluding existing items without ID or with duplicate ID for the rest of the cases.
Fixes#6227.
Clicking on Sign Transaction in the Wallet Send page, will, when a hot
wallet is setup, use PostRedirect page to redirect to the
broadcast screen. The problem was that sometimes, s.Driver.PageSource
would return this PostRedirect page rather than the broadcast page.
Waiting for an element of the broadcast page fixes this issue.
* Wallet: Generate receive address automatically
This circumvents landing on a blank page with only the "generate address" button and automatically generates a new address, unless the Unreserve action was used.
* Fix close button leading to same page
* Fix tests
* Remove unreserve feature
---------
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
* Handle password reset when SMTP isn't configured or the configuration cannot be validated
* include rel in external a tag
* Simplify it
* Test fix
* Simplify a bit
* selenium test to manage users
---------
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
* POS: Fix accounting for manually entered keypad amounts
For keypad orders where there are products AND manual amount entries, we didn't account for the latter.
Fixes#6168.
* Adjust wording: "Manual entry" becomes "Custom Amount"
* Fix divisibility in invoice details of lightning amounts
This PR will show 11 decimal in the invoice details for BTC amount
of lightning payment methods.
It also hacks around the fact that some
lightning clients don't create the requested amount of sats, which
resulted in over or under payments. (Blink not supporting msats, and
strike)
Now, In that case, a payment method fee (which can be negative) called tweak fee
will be added to the prompt.
We are also hiding this tweak fee from the user in the checkout page in
order to not disturb the UI with inconsequential fee of 0.000000001 sats.
* Only show 8 digits in checkout, even if amount is 11 digits
* Server: Make sending email optional when adding user
Closes#6158.
* Generate custom invite token and store it in user blob
Closes btcpayserver/app/#46.
* QR code for user invite
Closes#6157.
* Text fix
This is for the checkout page to properly redirect paid invoices with no payment methods (e.g. free invoices with zero amount) to either the receipt page or redirect URL. Only fall back to 404 if there is neither.
Fixes#6123.
* Cleanups
* Add text entries for dictionary pages
* Wording: Keep Clone title consistent with Payment Request cloning
* Dictionaries: List used one first; badge for marking In use
* UI: Move section navigation to sidebar
* Scroll active nav link into view
* Move CTAs to top right
* Server Settings: Make Policies first page
* Responsive table fixes
* Spacing fixes
* Add breadcrumb samples
* store settings fixes
* payment request fixes
* updates pull payment title
* adds invoice detail fix
* updates server settings breadcrumbs + copy fix
* Don't open Server Settings on Plugins page
* Add breadcrumbs to pull payment views
* adds breadcrumbs to account
* server and store breadcrumb fixes
* fixes access tokens
* Fix payment processor breadcrumbs
* fixes webhook 404
* Final touches
* Fix test
* Add breadcrumb for email rules page
* Design system updates
---------
Co-authored-by: dstrukt <gfxdsign@gmail.com>
* Design system updates
* Icon fix
* Add new icons, replace show/hide
* Icon replacements
* Test fix
* Icon replacements in Vault
* More icon replacements
* Final icon replacements, remove Font Awesome
* Show Lightning node availability in navigation
Instead of simply communicating the setup state of the store's LN node, this now also checks its availability.
Closes #5940.
* Cleanups
* Add Selenium test for public node page and status in nav
* Cache the available lightning node result
---------
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
Once more an improvement for the receipt, which also fixes#5882:
- Unify data displayed on the web and print version
- Split cart and additional data and ensure additional data is displayed
- Do not display extra subtotal row if there are no tips or discounts
- Make PosData partial more universal and backwards-compatible by using case insensitive key lookups