diff --git a/api/admin.py b/api/admin.py index 0846ad678..d853d7da1 100644 --- a/api/admin.py +++ b/api/admin.py @@ -11,6 +11,7 @@ from api.logics import Logics from api.models import Currency, LNPayment, MarketTick, OnchainPayment, Order, Robot from api.utils import objects_to_hyperlinks +from api.tasks import send_notification admin.site.unregister(Group) admin.site.unregister(User) @@ -135,6 +136,7 @@ def _logs(self, obj): return format_html(f'<table style="width: 100%">{with_hyperlinks}</table>') actions = [ + "cancel_public_order", "maker_wins", "taker_wins", "return_everything", @@ -142,6 +144,37 @@ def _logs(self, obj): "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") def maker_wins(self, request, queryset): """ diff --git a/api/notifications.py b/api/notifications.py index 8d1e0e659..c1bd1f469 100644 --- a/api/notifications.py +++ b/api/notifications.py @@ -185,3 +185,9 @@ def new_chat_message(self, order, chat_message): self.send_message(user.robot.telegram_chat_id, text) 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 diff --git a/api/tasks.py b/api/tasks.py index 09ac9f5ac..dee5709ad 100644 --- a/api/tasks.py +++ b/api/tasks.py @@ -304,4 +304,7 @@ def send_notification(order_id=None, chat_message_id=None, message=None): elif message == "new_chat_message": telegram.new_chat_message(order, chat_message) + elif message == "coordinator_cancelled": + telegram.coordinator_cancelled(order) + return diff --git a/docs/_config.yml b/docs/_config.yml index b8a72fd6d..c85258051 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -30,7 +30,7 @@ masthead_title : # overrides the website title displayed in the masthe # breadcrumbs : false # true, false (default) words_per_minute : robosats: - node_id : 0282eb467bc073833a039940392592bf10cf338a830ba4e392c1667d7697654c7e + node_id : 037ff12b6a4e4bcb4b944b6d20af08cdff61b3461c1dff0d00a88697414d891bc7 maker_fee : 0.025 # In percent (%) taker_fee : 0.175 # In percent (%) total_fee : 0.2 # In percent (%) diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml index beb0ca9f7..1f6a8267e 100644 --- a/docs/_data/navigation.yml +++ b/docs/_data/navigation.yml @@ -91,6 +91,8 @@ tutorial: url: "/watch/fr/" - title: '<span class="side-bar-item"> <img style="width:22px;height:13px" src="/assets/vector/polish.svg"/> Polski</span>' url: "/watch/pl/" + - title: '<span class="side-bar-item"> <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>' url: "/watch/en/" children: @@ -100,6 +102,8 @@ tutorial: url: "/read/es/" - title: '<span class="side-bar-item"> <img style="width:22px;height:13px" src="/assets/vector/german.svg"/> Deutsch</span>' url: "/read/de/" + - title: '<span class="side-bar-item"> <img style="width:22px;height:13px" src="/assets/vector/russian.svg"/> Π ΡΡΡΠΊΠΈΠΉ</span>' + url: "/read/ru/" contribute: - title: '<span class="side-bar-item"><img id="side-icon-big" src="/assets/vector/handshake-angle.svg"/>Contribute</span>' diff --git a/docs/_pages/contribute/07-donate.md b/docs/_pages/contribute/07-donate.md index d0bd113ef..2faf1edbd 100644 --- a/docs/_pages/contribute/07-donate.md +++ b/docs/_pages/contribute/07-donate.md @@ -15,13 +15,11 @@ We do, however, get approached by very enthusiastic bitcoiners who want to boost You can donate the following ways: - - **Zap us on Nostr:** - All Nostr zaps will go towards the social media team. - Here is the nPub for RoboSats account : - - ``` -npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82 - ``` + - **Tip the [RoboSats DevFund Node](https://amboss.space/node/{{site.robosats.node_id}}) via KeySend:** + <div> + <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> - **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}} ``` - - **Tip the [experimental RoboSats coordinator](https://amboss.space/node/{{site.robosats.node_id}}) via KeySend:** - <div> - <lightning-widget name="Experimental Coordinator" accent="#9c27b0" to="{{site.robosats.node_id}}" image="https://pbs.twimg.com/profile_images/1524391291475406850/ULKOymid_400x400.jpg"/> - <script src="https://embed.twentyuno.net/js/app.js"></script> - </div> - - + - **Zap us on Nostr:** + All Nostr zaps will go towards the social media team. + Here is the nPub for RoboSats account : + ``` +npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82 + ``` diff --git a/docs/_pages/tutorials/read/how-to-use_ru.md b/docs/_pages/tutorials/read/how-to-use_ru.md new file mode 100644 index 000000000..c1b66715b --- /dev/null +++ b/docs/_pages/tutorials/read/how-to-use_ru.md @@ -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 +--- + +### <a href="https://21ideas.org/robosats/" target="_blank">RoboSats β ΠΡΠΎΡΡΠΎΠΉ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΠΌΠ΅Π½Π° Π±ΠΈΡΠΊΠΎΠΈΠ½Π°</a> +ΠΠ΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ "RoboSats" ΠΎΡ 21ideas.org \ No newline at end of file diff --git a/docs/_pages/tutorials/watch/videos-de.md b/docs/_pages/tutorials/watch/videos-de.md index 1fba7bedf..f1dc3cf4b 100644 --- a/docs/_pages/tutorials/watch/videos-de.md +++ b/docs/_pages/tutorials/watch/videos-de.md @@ -10,6 +10,9 @@ sidebar: 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 <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> diff --git a/docs/_pages/tutorials/watch/videos-ru.md b/docs/_pages/tutorials/watch/videos-ru.md new file mode 100644 index 000000000..7ecb47754 --- /dev/null +++ b/docs/_pages/tutorials/watch/videos-ru.md @@ -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 %} diff --git a/docs/assets/vector/russian.svg b/docs/assets/vector/russian.svg new file mode 100644 index 000000000..855b805a5 --- /dev/null +++ b/docs/assets/vector/russian.svg @@ -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> \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1faa30826..0f328dce4 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -18,8 +18,8 @@ "@mui/lab": "^5.0.0-alpha.136", "@mui/material": "^5.15.3", "@mui/system": "^5.15.3", - "@mui/x-data-grid": "^6.17.0", - "@mui/x-date-pickers": "^6.17.0", + "@mui/x-data-grid": "^6.19.2", + "@mui/x-date-pickers": "^6.19.2" "@nivo/core": "^0.84.0", "@nivo/line": "^0.84.0", "base-ex": "^0.8.1", @@ -33,13 +33,13 @@ "js-sha256": "^0.10.1", "leaflet": "^1.9.4", "light-bolt11-decoder": "^3.0.0", - "npm": "^10.3.0", + "npm": "^10.4.0", "openpgp": "^5.11.0", "react": "^18.2.0", "react-countdown": "^2.3.5", "react-dom": "^18.2.0", "react-grid-layout": "^1.4.4", - "react-i18next": "^14.0.0", + "react-i18next": "^14.0.1", "react-image": "^4.1.0", "react-leaflet": "^4.2.1", "react-qr-code": "^2.0.11", @@ -3408,12 +3408,12 @@ } }, "node_modules/@mui/x-data-grid": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.17.0.tgz", - "integrity": "sha512-HlpavV9jR7bLDYfi7n05R0xSsLl5ZxCTy3J5g4OfQtxhg9Zsu1uOkkLfudsM5LFqTbi5o+3PvZ9Kh33VvNUN/w==", + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.19.2.tgz", + "integrity": "sha512-+wizP1jEzCKB5BSQ6OD5TP6RspEbWmFWcxi1XBgKrzryUZii1o4G2BW1+d/n4p3xETCUMKRkYfItrOJGlM/dBw==", "dependencies": { "@babel/runtime": "^7.23.2", - "@mui/utils": "^5.14.14", + "@mui/utils": "^5.14.16", "clsx": "^2.0.0", "prop-types": "^15.8.1", "reselect": "^4.1.8" @@ -3441,9 +3441,9 @@ } }, "node_modules/@mui/x-date-pickers": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.17.0.tgz", - "integrity": "sha512-rBKiw6GL1bTJpfSuD0KnOgxrERhoSip7eyqXzHbh0GODmp9f5bonE9gRZ74XmlyMQT7tcSzXdzk0c1X0HhmP1A==", + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.19.2.tgz", + "integrity": "sha512-/bdWZabexuz+1rKG15XryxiMGb5D0XVx65NU7CZYKm/1+HuUzc0FX9smKEa/YVZnLSNsAp6SULIyPZtAKE+3AA==", "dependencies": { "@babel/runtime": "^7.23.2", "@mui/base": "^5.0.0-beta.20", @@ -10360,9 +10360,9 @@ } }, "node_modules/npm": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.3.0.tgz", - "integrity": "sha512-9u5GFc1UqI2DLlGI7QdjkpIaBs3UhTtY8KoCqYJK24gV/j/tByaI4BA4R7RkOc+ASqZMzFPKt4Pj2Z8JcGo//A==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.4.0.tgz", + "integrity": "sha512-RS7Mx0OVfXlOcQLRePuDIYdFCVBPCNapWHplDK+mh7GDdP/Tvor4ocuybRRPSvfcRb2vjRJt1fHCqw3cr8qACQ==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -10426,7 +10426,6 @@ "semver", "spdx-expression-parse", "ssri", - "strip-ansi", "supports-color", "tar", "text-table", @@ -10444,8 +10443,8 @@ "@npmcli/map-workspaces": "^3.0.4", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.1", - "@npmcli/run-script": "^7.0.3", - "@sigstore/tuf": "^2.2.0", + "@npmcli/run-script": "^7.0.4", + "@sigstore/tuf": "^2.3.0", "abbrev": "^2.0.0", "archy": "~1.0.0", "cacache": "^18.0.2", @@ -10491,7 +10490,7 @@ "npm-user-validate": "^2.0.0", "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.5", + "pacote": "^17.0.6", "parse-conflict-json": "^3.0.1", "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", @@ -10499,7 +10498,6 @@ "semver": "^7.5.4", "spdx-expression-parse": "^3.0.1", "ssri": "^10.0.5", - "strip-ansi": "^7.1.0", "supports-color": "^9.4.0", "tar": "^6.2.0", "text-table": "~0.2.0", @@ -10554,6 +10552,17 @@ "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": { "version": "9.2.2", "inBundle": true, @@ -10575,6 +10584,20 @@ "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": { "version": "1.1.0", "inBundle": true, @@ -10596,7 +10619,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.3.0", + "version": "7.3.1", "inBundle": true, "license": "ISC", "dependencies": { @@ -10627,7 +10650,7 @@ "parse-conflict-json": "^3.0.0", "proc-log": "^3.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", "semver": "^7.3.7", "ssri": "^10.0.5", @@ -10812,14 +10835,14 @@ } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.3", + "version": "7.0.4", "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", - "read-package-json-fast": "^3.0.0", "which": "^4.0.0" }, "engines": { @@ -10836,7 +10859,7 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.1.0", + "version": "2.1.1", "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -10846,6 +10869,14 @@ "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": { "version": "0.2.1", "inBundle": true, @@ -10855,11 +10886,12 @@ } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.2.0", + "version": "2.2.1", "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.0", + "@sigstore/bundle": "^2.1.1", + "@sigstore/core": "^0.2.0", "@sigstore/protobuf-specs": "^0.2.1", "make-fetch-happen": "^13.0.0" }, @@ -10868,12 +10900,25 @@ } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.2.0", + "version": "2.3.0", "inBundle": true, "license": "Apache-2.0", "dependencies": { "@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": { "node": "^16.14.0 || >=18.0.0" @@ -10931,14 +10976,11 @@ } }, "node_modules/npm/node_modules/ansi-regex": { - "version": "6.0.1", + "version": "5.0.1", "inBundle": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, "node_modules/npm/node_modules/ansi-styles": { @@ -11099,25 +11141,6 @@ "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": { "version": "0.6.3", "inBundle": true, @@ -11184,25 +11207,6 @@ "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": { "version": "1.0.1", "inBundle": true, @@ -11388,25 +11392,6 @@ "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": { "version": "10.3.10", "inBundle": true, @@ -11673,7 +11658,7 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.5", + "version": "6.0.6", "inBundle": true, "license": "ISC", "dependencies": { @@ -11692,7 +11677,7 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.6", + "version": "7.0.7", "inBundle": true, "license": "ISC", "dependencies": { @@ -11713,7 +11698,7 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.3", + "version": "5.0.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -11748,7 +11733,7 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.5", + "version": "6.0.6", "inBundle": true, "license": "ISC", "dependencies": { @@ -11762,7 +11747,7 @@ } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.3", + "version": "9.0.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -11772,7 +11757,7 @@ "npm-registry-fetch": "^16.0.0", "proc-log": "^3.0.0", "semver": "^7.3.7", - "sigstore": "^2.1.0", + "sigstore": "^2.2.0", "ssri": "^10.0.5" }, "engines": { @@ -12230,7 +12215,7 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "17.0.5", + "version": "17.0.6", "inBundle": true, "license": "ISC", "dependencies": { @@ -12249,7 +12234,7 @@ "promise-retry": "^2.0.1", "read-package-json": "^7.0.0", "read-package-json-fast": "^3.0.0", - "sigstore": "^2.0.0", + "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, @@ -12325,7 +12310,7 @@ } }, "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.2", + "version": "3.0.1", "inBundle": true, "license": "ISC", "funding": { @@ -12487,14 +12472,16 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "2.1.0", + "version": "2.2.0", "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.0", + "@sigstore/bundle": "^2.1.1", + "@sigstore/core": "^0.2.0", "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.1.0", - "@sigstore/tuf": "^2.1.0" + "@sigstore/sign": "^2.2.1", + "@sigstore/tuf": "^2.3.0", + "@sigstore/verify": "^0.1.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -12601,34 +12588,7 @@ "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": { + "node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", "inBundle": true, "license": "MIT", @@ -12639,20 +12599,6 @@ "node": ">=8" } }, - "node_modules/npm/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/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", @@ -12665,14 +12611,6 @@ "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": { "version": "9.4.0", "inBundle": true, @@ -12749,7 +12687,7 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "2.1.0", + "version": "2.2.0", "inBundle": true, "license": "MIT", "dependencies": { @@ -12884,14 +12822,6 @@ "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": { "version": "4.3.0", "inBundle": true, @@ -12906,15 +12836,15 @@ "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", "inBundle": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "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": { @@ -12938,6 +12868,20 @@ "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": { "version": "5.0.1", "inBundle": true, @@ -13624,9 +13568,9 @@ } }, "node_modules/react-i18next": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.0.tgz", - "integrity": "sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.1.tgz", + "integrity": "sha512-TMV8hFismBmpMdIehoFHin/okfvgjFhp723RYgIqB4XyhDobVMyukyM3Z8wtTRmajyFMZrBl/OaaXF2P6WjUAw==", "dependencies": { "@babel/runtime": "^7.22.5", "html-parse-stringify": "^3.0.1" diff --git a/frontend/package.json b/frontend/package.json index d81a072c6..117a604b0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -57,8 +57,8 @@ "@mui/lab": "^5.0.0-alpha.136", "@mui/material": "^5.15.3", "@mui/system": "^5.15.3", - "@mui/x-data-grid": "^6.17.0", - "@mui/x-date-pickers": "^6.17.0", + "@mui/x-data-grid": "^6.19.2", + "@mui/x-date-pickers": "^6.19.2", "@nivo/core": "^0.84.0", "@nivo/line": "^0.84.0", "base-ex": "^0.8.1", @@ -72,13 +72,13 @@ "js-sha256": "^0.10.1", "leaflet": "^1.9.4", "light-bolt11-decoder": "^3.0.0", - "npm": "^10.3.0", + "npm": "^10.4.0", "openpgp": "^5.11.0", "react": "^18.2.0", "react-countdown": "^2.3.5", "react-dom": "^18.2.0", "react-grid-layout": "^1.4.4", - "react-i18next": "^14.0.0", + "react-i18next": "^14.0.1", "react-image": "^4.1.0", "react-leaflet": "^4.2.1", "react-qr-code": "^2.0.11", diff --git a/requirements_dev.txt b/requirements_dev.txt index c4ee4f9f0..ce23ccc74 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,4 +1,4 @@ -coverage==7.4.0 +coverage==7.4.1 ruff==0.1.14 drf-openapi-tester==2.3.3 pre-commit==3.6.0 \ No newline at end of file diff --git a/scripts/get_devfund_donations.py b/scripts/get_devfund_donations.py index c7466a141..9d53cffd8 100644 --- a/scripts/get_devfund_donations.py +++ b/scripts/get_devfund_donations.py @@ -2,6 +2,7 @@ import json import requests import base64 +from datetime import datetime devfund_data_path = os.path.normpath(os.path.join("..", "devfund_pubkey.json")) @@ -19,7 +20,9 @@ for invoice in response_data["invoices"]: 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'Timestamp {dt.strftime("%Y-%m-%d %H:%M:%S")}') print( f"{base64.b64decode(invoice['htlcs'][0]['custom_records']['34349334']).decode('utf-8')}" )