Merge branch 'main' into the-federation-layer-v0.6.0

This commit is contained in:
Reckless_Satoshi 2024-01-28 20:52:41 +00:00 committed by GitHub
commit 0f8ebdc0b1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 215 additions and 192 deletions

View File

@ -11,6 +11,7 @@ from rest_framework.authtoken.models import TokenProxy
from api.logics import Logics from api.logics import Logics
from api.models import Currency, LNPayment, MarketTick, OnchainPayment, Order, Robot from api.models import Currency, LNPayment, MarketTick, OnchainPayment, Order, Robot
from api.utils import objects_to_hyperlinks from api.utils import objects_to_hyperlinks
from api.tasks import send_notification
admin.site.unregister(Group) admin.site.unregister(Group)
admin.site.unregister(User) admin.site.unregister(User)
@ -135,6 +136,7 @@ class OrderAdmin(AdminChangeLinksMixin, admin.ModelAdmin):
return format_html(f'<table style="width: 100%">{with_hyperlinks}</table>') return format_html(f'<table style="width: 100%">{with_hyperlinks}</table>')
actions = [ actions = [
"cancel_public_order",
"maker_wins", "maker_wins",
"taker_wins", "taker_wins",
"return_everything", "return_everything",
@ -142,6 +144,37 @@ class OrderAdmin(AdminChangeLinksMixin, admin.ModelAdmin):
"compute_median_trade_time", "compute_median_trade_time",
] ]
@admin.action(description="Close public order")
def cancel_public_order(self, request, queryset):
"""
Closes an existing Public/Paused order.
"""
for order in queryset:
if order.status in [Order.Status.PUB, Order.Status.PAU]:
if Logics.return_bond(order.maker_bond):
order.update_status(Order.Status.UCA)
self.message_user(
request,
f"Order {order.id} successfully closed",
messages.SUCCESS,
)
send_notification.delay(
order_id=order.id, message="coordinator_cancelled"
)
else:
self.message_user(
request,
f"Could not unlock bond of {order.id}",
messages.ERROR,
)
else:
self.message_user(
request,
f"Order {order.id} is not public or paused",
messages.ERROR,
)
@admin.action(description="Solve dispute: maker wins") @admin.action(description="Solve dispute: maker wins")
def maker_wins(self, request, queryset): def maker_wins(self, request, queryset):
""" """

View File

@ -185,3 +185,9 @@ class Telegram:
self.send_message(user.robot.telegram_chat_id, text) self.send_message(user.robot.telegram_chat_id, text)
return return
def coordinator_cancelled(self, order):
if order.maker.robot.telegram_enabled:
text = f"🛠️ Your order with ID {order.id} has been cancelled by the coordinator {config('COORDINATOR_ALIAS', cast=str, default='NoAlias')} for the upcoming maintenance stop."
self.send_message(order.maker.robot.telegram_chat_id, text)
return

View File

@ -304,4 +304,7 @@ def send_notification(order_id=None, chat_message_id=None, message=None):
elif message == "new_chat_message": elif message == "new_chat_message":
telegram.new_chat_message(order, chat_message) telegram.new_chat_message(order, chat_message)
elif message == "coordinator_cancelled":
telegram.coordinator_cancelled(order)
return return

View File

@ -30,7 +30,7 @@ masthead_title : # overrides the website title displayed in the masthe
# breadcrumbs : false # true, false (default) # breadcrumbs : false # true, false (default)
words_per_minute : words_per_minute :
robosats: robosats:
node_id : 0282eb467bc073833a039940392592bf10cf338a830ba4e392c1667d7697654c7e node_id : 037ff12b6a4e4bcb4b944b6d20af08cdff61b3461c1dff0d00a88697414d891bc7
maker_fee : 0.025 # In percent (%) maker_fee : 0.025 # In percent (%)
taker_fee : 0.175 # In percent (%) taker_fee : 0.175 # In percent (%)
total_fee : 0.2 # In percent (%) total_fee : 0.2 # In percent (%)

View File

@ -91,6 +91,8 @@ tutorial:
url: "/watch/fr/" url: "/watch/fr/"
- title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/polish.svg"/> Polski</span>' - title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/polish.svg"/> Polski</span>'
url: "/watch/pl/" url: "/watch/pl/"
- title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/russian.svg"/> Русский</span>'
url: "/watch/ru/"
- title: '<span class="side-bar-item"><img id="side-icon-big" src="/assets/vector/readme.svg"/>Read</span>' - title: '<span class="side-bar-item"><img id="side-icon-big" src="/assets/vector/readme.svg"/>Read</span>'
url: "/watch/en/" url: "/watch/en/"
children: children:
@ -100,6 +102,8 @@ tutorial:
url: "/read/es/" url: "/read/es/"
- title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/german.svg"/> Deutsch</span>' - title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/german.svg"/> Deutsch</span>'
url: "/read/de/" url: "/read/de/"
- title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/russian.svg"/> Русский</span>'
url: "/read/ru/"
contribute: contribute:
- title: '<span class="side-bar-item"><img id="side-icon-big" src="/assets/vector/handshake-angle.svg"/>Contribute</span>' - title: '<span class="side-bar-item"><img id="side-icon-big" src="/assets/vector/handshake-angle.svg"/>Contribute</span>'

View File

@ -15,13 +15,11 @@ We do, however, get approached by very enthusiastic bitcoiners who want to boost
You can donate the following ways: You can donate the following ways:
- **Zap us on Nostr:** - **Tip the [RoboSats DevFund Node](https://amboss.space/node/{{site.robosats.node_id}}) via KeySend:**
All Nostr zaps will go towards the social media team. <div>
Here is the nPub for RoboSats account : <lightning-widget name="DevFund Node" accent="#9c27b0" to="robodevfund@vlt.ge" image="https://pbs.twimg.com/profile_images/1524391291475406850/ULKOymid_400x400.jpg"/>
<script src="https://embed.twentyuno.net/js/app.js"></script>
``` </div>
npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82
```
- **Directly tip the developer working on the features you like.** Check the [active PRs](https://github.com/RoboSats/robosats/pulls) and show your support to the developers with via Lightning tips. Simply write a message, for example "@developer_name, I would like to fund your development of this feature with 6000 Sats". The developer should reply with an LN invoice with a long expiration time. - **Directly tip the developer working on the features you like.** Check the [active PRs](https://github.com/RoboSats/robosats/pulls) and show your support to the developers with via Lightning tips. Simply write a message, for example "@developer_name, I would like to fund your development of this feature with 6000 Sats". The developer should reply with an LN invoice with a long expiration time.
@ -47,14 +45,13 @@ npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82
{{site.robosats.leaddev_paynym_code}} {{site.robosats.leaddev_paynym_code}}
``` ```
- **Tip the [experimental RoboSats coordinator](https://amboss.space/node/{{site.robosats.node_id}}) via KeySend:** - **Zap us on Nostr:**
<div> All Nostr zaps will go towards the social media team.
<lightning-widget name="Experimental Coordinator" accent="#9c27b0" to="{{site.robosats.node_id}}" image="https://pbs.twimg.com/profile_images/1524391291475406850/ULKOymid_400x400.jpg"/> Here is the nPub for RoboSats account :
<script src="https://embed.twentyuno.net/js/app.js"></script>
</div>
```
npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82
```

View File

@ -0,0 +1,13 @@
---
layout: single
title: Самоучитель RoboSats
permalink: /read/ru/
toc: true
toc_sticky: true
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/chalkboard-user.svg"/>Учебное пособие'
nav: tutorial
---
![image](https://21ideas.org/img/main-section/main_light.png)
### <a href="https://21ideas.org/robosats/" target="_blank">RoboSats Простой и приватный способ обмена биткоина</a>
Великолепное руководство по использованию "RoboSats" от 21ideas.org

View File

@ -10,6 +10,9 @@ sidebar:
src: "_pages/docs/tutorials/videos-de.md" src: "_pages/docs/tutorials/videos-de.md"
--- ---
#### OrangedMike: ROBOSATS - Bitcoin Kauf, Verkauf und Swap
<iframe width="560" height="315" src="https://www.youtube.com/embed/f5LZzvEp_Zw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
#### Einundzwanzig: Bitcoin unabhängig und ohne Registrierung kaufen #### Einundzwanzig: Bitcoin unabhängig und ohne Registrierung kaufen
<iframe width="560" height="315" src="https://www.youtube.com/embed/kmd46irWXvw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <iframe width="560" height="315" src="https://www.youtube.com/embed/kmd46irWXvw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

View File

@ -0,0 +1,16 @@
---
layout: single
title: Смотрите и учитесь
permalink: /watch/ru/
toc: true
toc_sticky: true
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/circle-play.svg"/>Учебники'
nav: tutorial
src: "_pages/docs/tutorials/videos-ru.md"
---
### BitKorn Guide | RoboSats. Покупка и продажа Биткоина
<iframe width="560" height="315" src="https://www.youtube.com/embed/QCGWXObIsKY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
{% include add_tutorials %}

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9 6" width="900" height="600"><rect fill="#fff" width="9" height="3"/><rect fill="#d52b1e" y="3" width="9" height="3"/><rect fill="#0039a6" y="2" width="9" height="2"/></svg>

After

Width:  |  Height:  |  Size: 265 B

View File

@ -18,8 +18,8 @@
"@mui/lab": "^5.0.0-alpha.136", "@mui/lab": "^5.0.0-alpha.136",
"@mui/material": "^5.15.3", "@mui/material": "^5.15.3",
"@mui/system": "^5.15.3", "@mui/system": "^5.15.3",
"@mui/x-data-grid": "^6.17.0", "@mui/x-data-grid": "^6.19.2",
"@mui/x-date-pickers": "^6.17.0", "@mui/x-date-pickers": "^6.19.2"
"@nivo/core": "^0.84.0", "@nivo/core": "^0.84.0",
"@nivo/line": "^0.84.0", "@nivo/line": "^0.84.0",
"base-ex": "^0.8.1", "base-ex": "^0.8.1",
@ -33,13 +33,13 @@
"js-sha256": "^0.10.1", "js-sha256": "^0.10.1",
"leaflet": "^1.9.4", "leaflet": "^1.9.4",
"light-bolt11-decoder": "^3.0.0", "light-bolt11-decoder": "^3.0.0",
"npm": "^10.3.0", "npm": "^10.4.0",
"openpgp": "^5.11.0", "openpgp": "^5.11.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-countdown": "^2.3.5", "react-countdown": "^2.3.5",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-grid-layout": "^1.4.4", "react-grid-layout": "^1.4.4",
"react-i18next": "^14.0.0", "react-i18next": "^14.0.1",
"react-image": "^4.1.0", "react-image": "^4.1.0",
"react-leaflet": "^4.2.1", "react-leaflet": "^4.2.1",
"react-qr-code": "^2.0.11", "react-qr-code": "^2.0.11",
@ -3408,12 +3408,12 @@
} }
}, },
"node_modules/@mui/x-data-grid": { "node_modules/@mui/x-data-grid": {
"version": "6.17.0", "version": "6.19.2",
"resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.17.0.tgz", "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.19.2.tgz",
"integrity": "sha512-HlpavV9jR7bLDYfi7n05R0xSsLl5ZxCTy3J5g4OfQtxhg9Zsu1uOkkLfudsM5LFqTbi5o+3PvZ9Kh33VvNUN/w==", "integrity": "sha512-+wizP1jEzCKB5BSQ6OD5TP6RspEbWmFWcxi1XBgKrzryUZii1o4G2BW1+d/n4p3xETCUMKRkYfItrOJGlM/dBw==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.23.2", "@babel/runtime": "^7.23.2",
"@mui/utils": "^5.14.14", "@mui/utils": "^5.14.16",
"clsx": "^2.0.0", "clsx": "^2.0.0",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
"reselect": "^4.1.8" "reselect": "^4.1.8"
@ -3441,9 +3441,9 @@
} }
}, },
"node_modules/@mui/x-date-pickers": { "node_modules/@mui/x-date-pickers": {
"version": "6.17.0", "version": "6.19.2",
"resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.17.0.tgz", "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.19.2.tgz",
"integrity": "sha512-rBKiw6GL1bTJpfSuD0KnOgxrERhoSip7eyqXzHbh0GODmp9f5bonE9gRZ74XmlyMQT7tcSzXdzk0c1X0HhmP1A==", "integrity": "sha512-/bdWZabexuz+1rKG15XryxiMGb5D0XVx65NU7CZYKm/1+HuUzc0FX9smKEa/YVZnLSNsAp6SULIyPZtAKE+3AA==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.23.2", "@babel/runtime": "^7.23.2",
"@mui/base": "^5.0.0-beta.20", "@mui/base": "^5.0.0-beta.20",
@ -10360,9 +10360,9 @@
} }
}, },
"node_modules/npm": { "node_modules/npm": {
"version": "10.3.0", "version": "10.4.0",
"resolved": "https://registry.npmjs.org/npm/-/npm-10.3.0.tgz", "resolved": "https://registry.npmjs.org/npm/-/npm-10.4.0.tgz",
"integrity": "sha512-9u5GFc1UqI2DLlGI7QdjkpIaBs3UhTtY8KoCqYJK24gV/j/tByaI4BA4R7RkOc+ASqZMzFPKt4Pj2Z8JcGo//A==", "integrity": "sha512-RS7Mx0OVfXlOcQLRePuDIYdFCVBPCNapWHplDK+mh7GDdP/Tvor4ocuybRRPSvfcRb2vjRJt1fHCqw3cr8qACQ==",
"bundleDependencies": [ "bundleDependencies": [
"@isaacs/string-locale-compare", "@isaacs/string-locale-compare",
"@npmcli/arborist", "@npmcli/arborist",
@ -10426,7 +10426,6 @@
"semver", "semver",
"spdx-expression-parse", "spdx-expression-parse",
"ssri", "ssri",
"strip-ansi",
"supports-color", "supports-color",
"tar", "tar",
"text-table", "text-table",
@ -10444,8 +10443,8 @@
"@npmcli/map-workspaces": "^3.0.4", "@npmcli/map-workspaces": "^3.0.4",
"@npmcli/package-json": "^5.0.0", "@npmcli/package-json": "^5.0.0",
"@npmcli/promise-spawn": "^7.0.1", "@npmcli/promise-spawn": "^7.0.1",
"@npmcli/run-script": "^7.0.3", "@npmcli/run-script": "^7.0.4",
"@sigstore/tuf": "^2.2.0", "@sigstore/tuf": "^2.3.0",
"abbrev": "^2.0.0", "abbrev": "^2.0.0",
"archy": "~1.0.0", "archy": "~1.0.0",
"cacache": "^18.0.2", "cacache": "^18.0.2",
@ -10491,7 +10490,7 @@
"npm-user-validate": "^2.0.0", "npm-user-validate": "^2.0.0",
"npmlog": "^7.0.1", "npmlog": "^7.0.1",
"p-map": "^4.0.0", "p-map": "^4.0.0",
"pacote": "^17.0.5", "pacote": "^17.0.6",
"parse-conflict-json": "^3.0.1", "parse-conflict-json": "^3.0.1",
"proc-log": "^3.0.0", "proc-log": "^3.0.0",
"qrcode-terminal": "^0.12.0", "qrcode-terminal": "^0.12.0",
@ -10499,7 +10498,6 @@
"semver": "^7.5.4", "semver": "^7.5.4",
"spdx-expression-parse": "^3.0.1", "spdx-expression-parse": "^3.0.1",
"ssri": "^10.0.5", "ssri": "^10.0.5",
"strip-ansi": "^7.1.0",
"supports-color": "^9.4.0", "supports-color": "^9.4.0",
"tar": "^6.2.0", "tar": "^6.2.0",
"text-table": "~0.2.0", "text-table": "~0.2.0",
@ -10554,6 +10552,17 @@
"node": ">=12" "node": ">=12"
} }
}, },
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": {
"version": "6.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
"version": "9.2.2", "version": "9.2.2",
"inBundle": true, "inBundle": true,
@ -10575,6 +10584,20 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": {
"version": "7.1.0",
"inBundle": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/npm/node_modules/@isaacs/string-locale-compare": { "node_modules/npm/node_modules/@isaacs/string-locale-compare": {
"version": "1.1.0", "version": "1.1.0",
"inBundle": true, "inBundle": true,
@ -10596,7 +10619,7 @@
} }
}, },
"node_modules/npm/node_modules/@npmcli/arborist": { "node_modules/npm/node_modules/@npmcli/arborist": {
"version": "7.3.0", "version": "7.3.1",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -10627,7 +10650,7 @@
"parse-conflict-json": "^3.0.0", "parse-conflict-json": "^3.0.0",
"proc-log": "^3.0.0", "proc-log": "^3.0.0",
"promise-all-reject-late": "^1.0.0", "promise-all-reject-late": "^1.0.0",
"promise-call-limit": "^1.0.2", "promise-call-limit": "^3.0.1",
"read-package-json-fast": "^3.0.2", "read-package-json-fast": "^3.0.2",
"semver": "^7.3.7", "semver": "^7.3.7",
"ssri": "^10.0.5", "ssri": "^10.0.5",
@ -10812,14 +10835,14 @@
} }
}, },
"node_modules/npm/node_modules/@npmcli/run-script": { "node_modules/npm/node_modules/@npmcli/run-script": {
"version": "7.0.3", "version": "7.0.4",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@npmcli/node-gyp": "^3.0.0", "@npmcli/node-gyp": "^3.0.0",
"@npmcli/package-json": "^5.0.0",
"@npmcli/promise-spawn": "^7.0.0", "@npmcli/promise-spawn": "^7.0.0",
"node-gyp": "^10.0.0", "node-gyp": "^10.0.0",
"read-package-json-fast": "^3.0.0",
"which": "^4.0.0" "which": "^4.0.0"
}, },
"engines": { "engines": {
@ -10836,7 +10859,7 @@
} }
}, },
"node_modules/npm/node_modules/@sigstore/bundle": { "node_modules/npm/node_modules/@sigstore/bundle": {
"version": "2.1.0", "version": "2.1.1",
"inBundle": true, "inBundle": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
@ -10846,6 +10869,14 @@
"node": "^16.14.0 || >=18.0.0" "node": "^16.14.0 || >=18.0.0"
} }
}, },
"node_modules/npm/node_modules/@sigstore/core": {
"version": "0.2.0",
"inBundle": true,
"license": "Apache-2.0",
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@sigstore/protobuf-specs": { "node_modules/npm/node_modules/@sigstore/protobuf-specs": {
"version": "0.2.1", "version": "0.2.1",
"inBundle": true, "inBundle": true,
@ -10855,11 +10886,12 @@
} }
}, },
"node_modules/npm/node_modules/@sigstore/sign": { "node_modules/npm/node_modules/@sigstore/sign": {
"version": "2.2.0", "version": "2.2.1",
"inBundle": true, "inBundle": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@sigstore/bundle": "^2.1.0", "@sigstore/bundle": "^2.1.1",
"@sigstore/core": "^0.2.0",
"@sigstore/protobuf-specs": "^0.2.1", "@sigstore/protobuf-specs": "^0.2.1",
"make-fetch-happen": "^13.0.0" "make-fetch-happen": "^13.0.0"
}, },
@ -10868,12 +10900,25 @@
} }
}, },
"node_modules/npm/node_modules/@sigstore/tuf": { "node_modules/npm/node_modules/@sigstore/tuf": {
"version": "2.2.0", "version": "2.3.0",
"inBundle": true, "inBundle": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@sigstore/protobuf-specs": "^0.2.1", "@sigstore/protobuf-specs": "^0.2.1",
"tuf-js": "^2.1.0" "tuf-js": "^2.2.0"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/@sigstore/verify": {
"version": "0.1.0",
"inBundle": true,
"license": "Apache-2.0",
"dependencies": {
"@sigstore/bundle": "^2.1.1",
"@sigstore/core": "^0.2.0",
"@sigstore/protobuf-specs": "^0.2.1"
}, },
"engines": { "engines": {
"node": "^16.14.0 || >=18.0.0" "node": "^16.14.0 || >=18.0.0"
@ -10931,14 +10976,11 @@
} }
}, },
"node_modules/npm/node_modules/ansi-regex": { "node_modules/npm/node_modules/ansi-regex": {
"version": "6.0.1", "version": "5.0.1",
"inBundle": true, "inBundle": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=12" "node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
} }
}, },
"node_modules/npm/node_modules/ansi-styles": { "node_modules/npm/node_modules/ansi-styles": {
@ -11099,25 +11141,6 @@
"node": ">= 10" "node": ">= 10"
} }
}, },
"node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": {
"version": "5.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": {
"version": "6.0.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/cli-table3": { "node_modules/npm/node_modules/cli-table3": {
"version": "0.6.3", "version": "0.6.3",
"inBundle": true, "inBundle": true,
@ -11184,25 +11207,6 @@
"node": ">=8.0.0" "node": ">=8.0.0"
} }
}, },
"node_modules/npm/node_modules/columnify/node_modules/ansi-regex": {
"version": "5.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/columnify/node_modules/strip-ansi": {
"version": "6.0.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/common-ancestor-path": { "node_modules/npm/node_modules/common-ancestor-path": {
"version": "1.0.1", "version": "1.0.1",
"inBundle": true, "inBundle": true,
@ -11388,25 +11392,6 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0" "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
} }
}, },
"node_modules/npm/node_modules/gauge/node_modules/ansi-regex": {
"version": "5.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/gauge/node_modules/strip-ansi": {
"version": "6.0.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/glob": { "node_modules/npm/node_modules/glob": {
"version": "10.3.10", "version": "10.3.10",
"inBundle": true, "inBundle": true,
@ -11673,7 +11658,7 @@
} }
}, },
"node_modules/npm/node_modules/libnpmdiff": { "node_modules/npm/node_modules/libnpmdiff": {
"version": "6.0.5", "version": "6.0.6",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -11692,7 +11677,7 @@
} }
}, },
"node_modules/npm/node_modules/libnpmexec": { "node_modules/npm/node_modules/libnpmexec": {
"version": "7.0.6", "version": "7.0.7",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -11713,7 +11698,7 @@
} }
}, },
"node_modules/npm/node_modules/libnpmfund": { "node_modules/npm/node_modules/libnpmfund": {
"version": "5.0.3", "version": "5.0.4",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -11748,7 +11733,7 @@
} }
}, },
"node_modules/npm/node_modules/libnpmpack": { "node_modules/npm/node_modules/libnpmpack": {
"version": "6.0.5", "version": "6.0.6",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -11762,7 +11747,7 @@
} }
}, },
"node_modules/npm/node_modules/libnpmpublish": { "node_modules/npm/node_modules/libnpmpublish": {
"version": "9.0.3", "version": "9.0.4",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -11772,7 +11757,7 @@
"npm-registry-fetch": "^16.0.0", "npm-registry-fetch": "^16.0.0",
"proc-log": "^3.0.0", "proc-log": "^3.0.0",
"semver": "^7.3.7", "semver": "^7.3.7",
"sigstore": "^2.1.0", "sigstore": "^2.2.0",
"ssri": "^10.0.5" "ssri": "^10.0.5"
}, },
"engines": { "engines": {
@ -12230,7 +12215,7 @@
} }
}, },
"node_modules/npm/node_modules/pacote": { "node_modules/npm/node_modules/pacote": {
"version": "17.0.5", "version": "17.0.6",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@ -12249,7 +12234,7 @@
"promise-retry": "^2.0.1", "promise-retry": "^2.0.1",
"read-package-json": "^7.0.0", "read-package-json": "^7.0.0",
"read-package-json-fast": "^3.0.0", "read-package-json-fast": "^3.0.0",
"sigstore": "^2.0.0", "sigstore": "^2.2.0",
"ssri": "^10.0.0", "ssri": "^10.0.0",
"tar": "^6.1.11" "tar": "^6.1.11"
}, },
@ -12325,7 +12310,7 @@
} }
}, },
"node_modules/npm/node_modules/promise-call-limit": { "node_modules/npm/node_modules/promise-call-limit": {
"version": "1.0.2", "version": "3.0.1",
"inBundle": true, "inBundle": true,
"license": "ISC", "license": "ISC",
"funding": { "funding": {
@ -12487,14 +12472,16 @@
} }
}, },
"node_modules/npm/node_modules/sigstore": { "node_modules/npm/node_modules/sigstore": {
"version": "2.1.0", "version": "2.2.0",
"inBundle": true, "inBundle": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@sigstore/bundle": "^2.1.0", "@sigstore/bundle": "^2.1.1",
"@sigstore/core": "^0.2.0",
"@sigstore/protobuf-specs": "^0.2.1", "@sigstore/protobuf-specs": "^0.2.1",
"@sigstore/sign": "^2.1.0", "@sigstore/sign": "^2.2.1",
"@sigstore/tuf": "^2.1.0" "@sigstore/tuf": "^2.3.0",
"@sigstore/verify": "^0.1.0"
}, },
"engines": { "engines": {
"node": "^16.14.0 || >=18.0.0" "node": "^16.14.0 || >=18.0.0"
@ -12601,56 +12588,15 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/npm/node_modules/string-width-cjs/node_modules/ansi-regex": {
"version": "5.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/string-width-cjs/node_modules/strip-ansi": {
"version": "6.0.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/string-width/node_modules/ansi-regex": {
"version": "5.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/string-width/node_modules/strip-ansi": {
"version": "6.0.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/strip-ansi": { "node_modules/npm/node_modules/strip-ansi": {
"version": "7.1.0", "version": "6.0.1",
"inBundle": true, "inBundle": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"ansi-regex": "^6.0.1" "ansi-regex": "^5.0.1"
}, },
"engines": { "engines": {
"node": ">=12" "node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
} }
}, },
"node_modules/npm/node_modules/strip-ansi-cjs": { "node_modules/npm/node_modules/strip-ansi-cjs": {
@ -12665,14 +12611,6 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/npm/node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
"version": "5.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/supports-color": { "node_modules/npm/node_modules/supports-color": {
"version": "9.4.0", "version": "9.4.0",
"inBundle": true, "inBundle": true,
@ -12749,7 +12687,7 @@
} }
}, },
"node_modules/npm/node_modules/tuf-js": { "node_modules/npm/node_modules/tuf-js": {
"version": "2.1.0", "version": "2.2.0",
"inBundle": true, "inBundle": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -12884,14 +12822,6 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1" "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
} }
}, },
"node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
"version": "5.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
"version": "4.3.0", "version": "4.3.0",
"inBundle": true, "inBundle": true,
@ -12906,15 +12836,15 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1" "url": "https://github.com/chalk/ansi-styles?sponsor=1"
} }
}, },
"node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
"version": "6.0.1", "version": "6.0.1",
"inBundle": true, "inBundle": true,
"license": "MIT", "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": { "engines": {
"node": ">=8" "node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
} }
}, },
"node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
@ -12938,6 +12868,20 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "7.1.0",
"inBundle": true,
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/npm/node_modules/write-file-atomic": { "node_modules/npm/node_modules/write-file-atomic": {
"version": "5.0.1", "version": "5.0.1",
"inBundle": true, "inBundle": true,
@ -13624,9 +13568,9 @@
} }
}, },
"node_modules/react-i18next": { "node_modules/react-i18next": {
"version": "14.0.0", "version": "14.0.1",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.0.tgz", "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.1.tgz",
"integrity": "sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==", "integrity": "sha512-TMV8hFismBmpMdIehoFHin/okfvgjFhp723RYgIqB4XyhDobVMyukyM3Z8wtTRmajyFMZrBl/OaaXF2P6WjUAw==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.22.5", "@babel/runtime": "^7.22.5",
"html-parse-stringify": "^3.0.1" "html-parse-stringify": "^3.0.1"

View File

@ -57,8 +57,8 @@
"@mui/lab": "^5.0.0-alpha.136", "@mui/lab": "^5.0.0-alpha.136",
"@mui/material": "^5.15.3", "@mui/material": "^5.15.3",
"@mui/system": "^5.15.3", "@mui/system": "^5.15.3",
"@mui/x-data-grid": "^6.17.0", "@mui/x-data-grid": "^6.19.2",
"@mui/x-date-pickers": "^6.17.0", "@mui/x-date-pickers": "^6.19.2",
"@nivo/core": "^0.84.0", "@nivo/core": "^0.84.0",
"@nivo/line": "^0.84.0", "@nivo/line": "^0.84.0",
"base-ex": "^0.8.1", "base-ex": "^0.8.1",
@ -72,13 +72,13 @@
"js-sha256": "^0.10.1", "js-sha256": "^0.10.1",
"leaflet": "^1.9.4", "leaflet": "^1.9.4",
"light-bolt11-decoder": "^3.0.0", "light-bolt11-decoder": "^3.0.0",
"npm": "^10.3.0", "npm": "^10.4.0",
"openpgp": "^5.11.0", "openpgp": "^5.11.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-countdown": "^2.3.5", "react-countdown": "^2.3.5",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-grid-layout": "^1.4.4", "react-grid-layout": "^1.4.4",
"react-i18next": "^14.0.0", "react-i18next": "^14.0.1",
"react-image": "^4.1.0", "react-image": "^4.1.0",
"react-leaflet": "^4.2.1", "react-leaflet": "^4.2.1",
"react-qr-code": "^2.0.11", "react-qr-code": "^2.0.11",

View File

@ -1,4 +1,4 @@
coverage==7.4.0 coverage==7.4.1
ruff==0.1.14 ruff==0.1.14
drf-openapi-tester==2.3.3 drf-openapi-tester==2.3.3
pre-commit==3.6.0 pre-commit==3.6.0

View File

@ -2,6 +2,7 @@ import os
import json import json
import requests import requests
import base64 import base64
from datetime import datetime
devfund_data_path = os.path.normpath(os.path.join("..", "devfund_pubkey.json")) devfund_data_path = os.path.normpath(os.path.join("..", "devfund_pubkey.json"))
@ -19,7 +20,9 @@ response_data = r.json()
for invoice in response_data["invoices"]: for invoice in response_data["invoices"]:
if invoice["is_keysend"] and invoice["htlcs"][0]["custom_records"]["34349334"]: if invoice["is_keysend"] and invoice["htlcs"][0]["custom_records"]["34349334"]:
dt = datetime.fromtimestamp(int(invoice["creation_date"]))
print(f"Index {invoice['add_index']}") print(f"Index {invoice['add_index']}")
print(f'Timestamp {dt.strftime("%Y-%m-%d %H:%M:%S")}')
print( print(
f"{base64.b64decode(invoice['htlcs'][0]['custom_records']['34349334']).decode('utf-8')}" f"{base64.b64decode(invoice['htlcs'][0]['custom_records']['34349334']).decode('utf-8')}"
) )