From dfc329083737d41ec64dc1bd6712edb0539ecd09 Mon Sep 17 00:00:00 2001 From: stjet <49297268+stjet@users.noreply.github.com> Date: Fri, 24 Jan 2025 15:34:43 +0000 Subject: [PATCH] receive only once and correctly if registrar accidentally sends twice also style fix --- package-lock.json | 8 ++++---- src/lib/Declare.svelte | 17 ++++++++++++++++- src/routes/register/+page.svelte | 3 ++- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ada1185..0897dcc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "test", "version": "0.0.1", "dependencies": { - "banani": "^1.0.5", + "banani": "^1.0.7", "banani-bns": "^0.0.9", "mongodb": "^6.10.0", "qrcode": "^1.5.4" @@ -1120,9 +1120,9 @@ "license": "MIT" }, "node_modules/banani": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/banani/-/banani-1.0.6.tgz", - "integrity": "sha512-wB4nijscW0g18aojQqOm4Lqghg9TDHGQe+AnravbZoH37c3fJXSgQV+pKzBqpT3VIzcASfOjFyAqmUsTDWREHA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/banani/-/banani-1.0.8.tgz", + "integrity": "sha512-3yO8ywvWsEwI/r0Jvr9EhWN1pdLvw9D+W7gM4tBGnMs0mkug7jXsyCLX33F0jUOniAAJvDX8JXHe/WCq/RwwPA==", "license": "MIT", "dependencies": { "blake2b": "^2.1.4" diff --git a/src/lib/Declare.svelte b/src/lib/Declare.svelte index 6cd6bfe..d019f67 100644 --- a/src/lib/Declare.svelte +++ b/src/lib/Declare.svelte @@ -12,7 +12,22 @@ if (browser && resolve_to.startsWith("ban_") && resolve_to.length === 64) { const rpc = new window.bns.banani.RPC("https://kaliumapi.appditto.com/api"); const wallet = new window.bns.banani.Wallet(rpc, seed); - await wallet.receive_all(); + const hashes = (await wallet.get_account_receivable()).blocks; + const infos = (await rpc.get_blocks(hashes)).blocks; + //in case registrar accidentally sends the domain twice, only the first send (with lowest height) will be valid, so receive that + //BUT kalium rpc doesn't return height yet (augh) so we'll go for the one with the higher balance (since that was almost certainly sent first) + let to_receive; + for (const hash of hashes) { + const balance = BigInt(infos[hash].balance); + if (!to_receive || balance > to_receive?.balance) { + to_receive = { + hash, + balance, + }; + } + console.log(to_receive, balance); + } + await wallet.receive(to_receive.hash); const domain_manager = new window.bns.DomainAccountManager(rpc, wallet); await domain_manager.declare_domain_resolve_to(resolve_to); progress = Progress.Done; diff --git a/src/routes/register/+page.svelte b/src/routes/register/+page.svelte index 0b4a3d1..3c1090d 100644 --- a/src/routes/register/+page.svelte +++ b/src/routes/register/+page.svelte @@ -59,7 +59,8 @@