mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex-taker-v2.git
synced 2026-09-21 16:52:01 -07:00
Merge pull request #79 from Permissionless-Software-Foundation/dh-counter-offer-data
feat(offer): Added more Counter Offer data
This commit is contained in:
Generated
+4
-4
@@ -15,7 +15,7 @@
|
||||
"@fortawesome/react-fontawesome": "0.2.2",
|
||||
"@noble/hashes": "1.8.0",
|
||||
"axios": "0.27.2",
|
||||
"bch-dex-lib": "2.2.0",
|
||||
"bch-dex-lib": "2.3.1",
|
||||
"bch-message-lib": "2.2.1",
|
||||
"bch-nostr": "1.3.4",
|
||||
"bch-token-sweep": "2.2.1",
|
||||
@@ -10043,9 +10043,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/bch-dex-lib": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/bch-dex-lib/-/bch-dex-lib-2.2.0.tgz",
|
||||
"integrity": "sha512-SORqn4qNmbxfL2SbbapOpbcCB+FtqasR+GT0XRifdkXFjA3aDL0gwMsHjh8IzLZnKtPYSBcfgzKQFxEsXCJNug==",
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/bch-dex-lib/-/bch-dex-lib-2.3.1.tgz",
|
||||
"integrity": "sha512-HlY21BpUUaSsuZNWF5LGPwSJU7m2kYbNMcS36o22RSHuO1kiBMONHwkV+v22kdbDk3T/Iz+AZN0mzJvH5neCXw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@chris.troutner/retry-queue": "1.0.10",
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
"@fortawesome/react-fontawesome": "0.2.2",
|
||||
"@noble/hashes": "1.8.0",
|
||||
"axios": "0.27.2",
|
||||
"bch-dex-lib": "2.2.0",
|
||||
"bch-dex-lib": "2.3.1",
|
||||
"bch-message-lib": "2.2.1",
|
||||
"bch-nostr": "1.3.4",
|
||||
"bch-token-sweep": "2.2.1",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
// Global npm libraries
|
||||
import React, { useState } from 'react'
|
||||
import { Button, Modal, Container, Row, Col, Spinner } from 'react-bootstrap'
|
||||
import AsyncLoad from '../../../services/async-load'
|
||||
|
||||
function BuyButton (props) {
|
||||
const { token, appData, onSuccess } = props
|
||||
@@ -45,10 +46,19 @@ function BuyButton (props) {
|
||||
|
||||
// Generate a counter offer.
|
||||
const bchDexLib = appData.dexLib
|
||||
const { offerData, partialHex } = await bchDexLib.take.takeOffer(
|
||||
const { offerData, partialHex, counterOfferUtxo } = await bchDexLib.take.takeOffer(
|
||||
targetOffer
|
||||
)
|
||||
|
||||
// Get counter offer data
|
||||
const asyncLoad = new AsyncLoad()
|
||||
const { takerAddr, takerNpub, counterOfferAddr } = await asyncLoad.getCounterOfferMetadata(appData)
|
||||
|
||||
offerData.takerAddr = takerAddr
|
||||
offerData.takerNpub = takerNpub
|
||||
offerData.counterOfferAddr = counterOfferAddr
|
||||
offerData.counterOfferUtxo = counterOfferUtxo.txid
|
||||
|
||||
progress.push(<p key='progress-msg2'>Uploading counter offer to Nostr...</p>)
|
||||
setProgressMsg(progress)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import React, { useState, useEffect, useCallback } from 'react'
|
||||
import { Container, Row, Col, Table, Button, Spinner } from 'react-bootstrap'
|
||||
import axios from 'axios'
|
||||
import { DatatableWrapper, TableBody, TableHeader } from 'react-bs-datatable'
|
||||
|
||||
import AsyncLoad from '../../../services/async-load'
|
||||
// Local libraries
|
||||
import config from '../../../config'
|
||||
import WaitingModal from '../../waiting-modal'
|
||||
@@ -100,10 +100,19 @@ function Offers (props) {
|
||||
|
||||
// Generate a counter offer.
|
||||
const bchDexLib = appData.dexLib
|
||||
const { offerData, partialHex } = await bchDexLib.take.takeOffer(
|
||||
const { offerData, partialHex, counterOfferUtxo } = await bchDexLib.take.takeOffer(
|
||||
targetOfferEventId
|
||||
)
|
||||
|
||||
// Get counter offer data
|
||||
const asyncLoad = new AsyncLoad()
|
||||
const { takerAddr, takerNpub, counterOfferAddr } = await asyncLoad.getCounterOfferMetadata(appData)
|
||||
|
||||
offerData.takerAddr = takerAddr
|
||||
offerData.takerNpub = takerNpub
|
||||
offerData.counterOfferAddr = counterOfferAddr
|
||||
offerData.counterOfferUtxo = counterOfferUtxo.txid
|
||||
|
||||
// Upload the counter offer to Nostr.
|
||||
const nostr = appData.nostr
|
||||
const { eventId, noteId } = await nostr.testNostrUpload({
|
||||
|
||||
@@ -334,7 +334,7 @@ class AsyncLoad {
|
||||
}
|
||||
}
|
||||
|
||||
async getDerivatedWallet (restURL, mnemonic, hdPath = "m/44'/245'/0'/0/0") {
|
||||
async getDerivatedWallet (restURL, mnemonic, hdPath = "m/44'/245'/0'/0/0", initialize = true) {
|
||||
try {
|
||||
const options = {
|
||||
interface: 'consumer-api',
|
||||
@@ -347,7 +347,9 @@ class AsyncLoad {
|
||||
|
||||
// Wait for wallet to initialize.
|
||||
await wallet.walletInfoPromise
|
||||
await wallet.initialize()
|
||||
if (initialize) {
|
||||
await wallet.initialize()
|
||||
}
|
||||
|
||||
return wallet
|
||||
} catch (error) {
|
||||
@@ -355,6 +357,35 @@ class AsyncLoad {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
// Get buyer and counter offer data.
|
||||
async getCounterOfferMetadata (appData) {
|
||||
try {
|
||||
const { bchWalletState, serverUrl } = appData
|
||||
// Start async load lib
|
||||
const asyncLoad = new AsyncLoad()
|
||||
await asyncLoad.loadWalletLib()
|
||||
|
||||
// Buyer wallet data
|
||||
const buyerWallet = await asyncLoad.getDerivatedWallet(serverUrl, bchWalletState.mnemonic, "m/44'/245'/0'/0/0", false)
|
||||
const buyerAddr = buyerWallet.walletInfo.cashAddress
|
||||
const buyerKeyPair = asyncLoad.nostrKeyPairFromWIF(buyerWallet.walletInfo.privateKey)
|
||||
const buyerNpub = buyerKeyPair.npub
|
||||
|
||||
// Counter offer wallet data
|
||||
const counterOfferWallet = await asyncLoad.getDerivatedWallet(serverUrl, bchWalletState.mnemonic, "m/44'/245'/0'/0/1", false)
|
||||
const counterOfferAddr = counterOfferWallet.walletInfo.cashAddress
|
||||
|
||||
return {
|
||||
takerAddr: buyerAddr,
|
||||
takerNpub: buyerNpub,
|
||||
counterOfferAddr
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error getCounterOfferMetadata()', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function sleep (ms) {
|
||||
|
||||
Reference in New Issue
Block a user