instead of asserting and returning Optional on get operation in crud, we
through and NotFoundError. in the context of an API request the FastApi
errorhandler will catch it and throw an 404 like we have for Invoice-
and PaymentError.
In non-api context we can simly try catch the notfound like so:
```python
try:
url = await get_tinyurl("test")
except NotFoundError:
# url does not exist do whatever
pass
```
* feat: add baseurl to admin ui settings
server tab with a hint that it is currently not used.
i ran into an issue developing an extension where i needed to know the
url inside a task, where i cannot pass the `Request` object.
so i depend on `settings.lnbits_baseurl` there
* feat: vue components lnbits-dynamic-fields validation
- add validation to fields if require = true
- add type hidden field (can be useful for create/update dialog with
passing item_id into update hidden field)
* feat: log with `console.error` on `notifyApiError`
usually why have code like that
```
getAudit() {
LNbits.api
.request('GET', '/admin/api/v1/audit',
this.g.user.wallets[0].adminkey)
.then(response => {
this.auditData = response.data
xonst myerror = isSwallowed()
})
.catch(function (error) {
LNbits.utils.notifyApiError(error)
})
},
```
which if you make a mistake hides your error. logging console.error here
again makes it easier to see what is happening while developing and
doesnt hurt for the user aswell
* chore: bundle
* fixup!
---------
Co-authored-by: Arc <33088785+arcbtc@users.noreply.github.com>
* feat: add generic lnurl error response handler
this is used multiple times in extensions to safeguard `views_lnurl.py`
endpoint to not return a wrong lnurl error response.
you use it by just setting following on your lnurl router/view
```
withdraw_ext_lnurl = APIRouter(prefix="/api/v1/lnurl")
withdraw_ext_lnurl.route_class = LNURLErrorResponseHandler
```
* feat: add boltz client standalone fundingsource
WIP.
https://docs.boltz.exchange/v/boltz-client
this fundingsource utilizing the boltz client standalone function: https://github.com/BoltzExchange/boltz-client/pull/123
this makes him act like a lightning node while submarine swapping everything on liquid network. like aqua does in its wallet.
* feat: paid_invoices_stream
* feat: proper invoice and payment status check
* feat: authenticate over insecure channel aswell
* chore: lint
* docs: add more setup instructions
* chore: add `boltz_client_cert` in frontend
* feat: populate fee_msat in get_payment_status and get_invoice_status
* fixup!
* chore: bundle
* added boltz logo
* add BoltzWallet to __all__
* chore: bump grpcio and protobuf deps and add grpcio-tools as dev dependency
* chore: update protos
* feat: pass description when creating swap
* fixup!
* chore: bundle
---------
Co-authored-by: jackstar12 <jkranawetter05@gmail.com>
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* feat: nwc funding source
* implement paid_invoices_stream, fix for unsettled invoices where settled_at is present but None
* cancel pending_payments_lookup_task on cleanup
* Rename subscription_timeout_task to timeout_task
* ensure preimage is not None
* Improve readability, return failed status on expiration in get_payment_status, ensure result_type is checked after error (some implementations might not set a result_type on error)
* fetch account info when possible
* workaround possible race condition on some nwc service providers, improve performance of fallback by using payment_hash from bolt11 invoice
* fundle
* make format
* fix formatting
* fix C901 `_on_message` is too complex (21 > 16)
* format
* fix lint
* format
* fix tests/wallets/test_nwc_wallets.py:80:11: C901 `run` is too complex (17 > 16)
* fix padding
* fix documentation for _verify_event method
* refactoring and fixes
* Split NWCWallet - NWCConnection
* refactor class methods into helpers
* update bundle
* format
* catch NWCError failure codes
* format and fix
* chore: bundle
* add example
* typos
---------
Co-authored-by: Riccardo Balbo <riccardo0blb@gmail.com>
Co-authored-by: benarc <ben@arc.wales>
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* fix: db helpers to be used with timestamps
those helpers are used in boltz extension and they did not take dates
into consideration yet
* vlad picks
* refactor get_placeholder
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* add Breez SDK wallet
* use more description status classes
* fix: add try-except
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
Co-authored-by: dni ⚡ <office@dnilabs.com>
Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com>
closes#2599
special thanks to bitkarrot for figuring that out, it was actually
initialized twice, the decorator alone is enough!
also was issue for first_install middleware