* feat: corelightning `maxfee` and custom pay command
we should use maxfee instead of calculating the ratio and pass it
through.
also make it possible to run a custom pay command
* change for cln rest aswell
* fix: balances view on use non deleted wallets
closes#2224
* fixup! fix: balances view on use non deleted wallets
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* chore: remove lnurl wallet and withdraw feature
this feature is undocumented and the code is very outdated. i don't think it is worth to keep.
looking at the `/lnurlwallet` endpoint for example, it creates a new user and wallet without even checking if the creation of users is allowed
* remove lnurl callback
---------
Co-authored-by: Arc <33088785+arcbtc@users.noreply.github.com>
basically use `list` and `type` instead of `List` and `Type`
this is save to use for python3.9 and has been deprecated. also has some
performance drawbacks.
read more here: https://docs.astral.sh/ruff/rules/non-pep585-annotation/
* chore: adhere to ruff's "N" rules
WARN: reinstall failing extensions!
bunch of more consistent variable naming. inspired by this issue.
https://github.com/lnbits/lnbits/issues/2308
* fixup! chore: adhere to ruff's "N" rules
* rename to funding_source
* skip jmeter
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* refactor: use new fastapi lifespan instead of events
recommended use: https://fastapi.tiangolo.com/advanced/events/?h=lifespan
threw warnings in pytest
* make startup and shutdown functions
* nix: add override for asgi-lifespan
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* test: remove warnings for `TemplateResponse`
removes warnings
```
tests/core/views/test_generic.py::test_core_views_generic
tests/core/views/test_generic.py::test_get_wallet_with_user_and_wallet
tests/core/views/test_generic.py::test_get_extensions
tests/core/views/test_public_api.py::test_core_views_generic
/home/dni/.cache/pypoetry/virtualenvs/lnbits-XeqO4Z-j-py3.10/lib/python3.10/site-packages/starlette/templating.py:178: DeprecationWarning: The `name` is not the first para
meter anymore. The first parameter should be the `Request` instance.
Replace `TemplateResponse(name, {"request": request})` by `TemplateResponse(request, name)`.
warnings.warn(
```
this logically groups api endpoints and gioves them specific openapi tags. which makes them nice on the `/docs` endpoint and makes the `api.py` more approachable
* add wallets list endpoint
* remove trailing slashes from endpoints
* fixup topup url
* fix trailing slash on auth
* backwards compatibility
* bug: releasing docker image had invalid credentials
closes#2345
also removed the duplicate dockerhub upload for latest. that was kinda dump (i introduced it), because you could also manually tag a special release which would than always push to latest tag aswell which makes no sense.
- add to admin ui
- move to `ExtensionsSettings`
- hide left navbar when disabled
- do not register extension routes on startup
- do not check for installed extensions on startup
- reafctor into register_all_ext_routes
* hotfix: initial currency conversion on balance
fiat amount not shown in balance on initial pageload, lets reintroduce the first fetch_balance to fix it.
maybe in the future balance call and wallet itself should give the current fiat value if the wallet uses fiat tracking
* feat: reduce initial request on wallet page
- refactor allowed_currencies into function to use in generic and api.
- remove currencies request in frontend move it to generic
- dont request balance on first payments fetch
* refactor: move registering of tasks into `app.py`
let the app have the responsibility to create the tasks not a helper function inside tasks.py.
makes it way easier to follow on how those background tasks are ran.
this is especially useful for extension.
with this an extension can only call `create_permanent_unique_task("my-ext", task)` and it will restarted when it exists and cancels when lnbits is stopped
* fix: webhook sent raise a failed request
is not raised even failed webhook would be marked is sent
* add warn log
* fix error
* improve exceptions
* fixup!
* ConnectError is already captured by RequestError
https://www.python-httpx.org/exceptions/
* log exception
it was only used in lnpay, opennode and alby which all had it disabled anayways with a pretty old TODO, so i guess the feature is disabled for a y ear now and nobody used it, so i just removed it
changes the `register_invoice_listener` to use a non unique key so you its not possible to have a listeners running twice and throw a warning when trying to.
* feat: add node url to api keys & docs
closes#2277
* add finnish to tools/i18n-ai-tool.py
* regenerate localization with i18n-ai-tool
* chore: make bundle
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* [FEAT] docker ci pipeline
* add release workflow
* depend on release
* move tag
* remove push to main
* fixup release workflow
* add latest tag on dockerhub
* cleanup
* Update .github/workflows/docker.yml
Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com>
* use latest versions of actions
---------
Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com>
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* refactor: add `prepareFilterQuery` to utils
factored out the preparation of the url params for a paginated table and its requests.
usermanager will also use that.
move authentication into security in preparation of user manager pr where users tab will be removed.
move service fee into server tab, i think its more fitting there.
* feat: `cleanup-wallet` cli command
`lnbits-cli db cleanup-wallets` removes all wallets that never had an transaction.
this helps against spammers creating random wallets, eventually slowing down the db.
* add commands
* add to example env
* db_versions was used in app
* add delta as cli argument
* use days unit
* simplify cli argument name (cleanup_wallet_days -> days)!
---------
Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com>
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* feat: add `created_at` and `updated_at` to wallets and accounts
the title says it all :)
* fixup!
* nitpicks :)
* fixup!
* sqlite fix
* sqlite compat
* fixup!
* mypy
* revert db py
* motorinas suggestions
* int(time()) proper default values in migration
* uncomment migration
* use now = int(time()) idiom to make code more readable
also this fixes the issue where time() is called multiple times
providing different return values for multiple invocations
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>