mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex.git
synced 2026-09-21 16:52:00 -07:00
feat(completeTx()): Uses user wallet to complete sale
This commit is contained in:
@@ -41,7 +41,9 @@ const Order = new mongoose.Schema({
|
||||
nostrEventId: { type: String, required: true }, // Nostr Event Id.
|
||||
|
||||
// Additional properties found in createOrder
|
||||
dataType: { type: String, required: true }
|
||||
dataType: { type: String, required: true },
|
||||
|
||||
userId: { type: String, required: true }
|
||||
})
|
||||
|
||||
export default mongoose.model('order', Order)
|
||||
|
||||
+11
-4
@@ -465,7 +465,7 @@ class WalletAdapter {
|
||||
|
||||
// Complete the partially signed transaction by signing the first input,
|
||||
// then broadcasting the transaction to the network.
|
||||
async completeTx (hex, hdIndex) {
|
||||
async completeTx (hex, hdIndex, mnemonic) {
|
||||
try {
|
||||
// Input validation
|
||||
if (!hex || typeof hex !== 'string') {
|
||||
@@ -474,10 +474,17 @@ class WalletAdapter {
|
||||
if (typeof hdIndex !== 'number' || hdIndex < 0) {
|
||||
throw new Error('hdIndex must be a non-negative number!')
|
||||
}
|
||||
if (!mnemonic || typeof mnemonic !== 'string') {
|
||||
throw new Error('mnemonic must be a string!')
|
||||
}
|
||||
// console.log('hex: ', hex)
|
||||
console.log('completeTx() hdIndex: ', hdIndex)
|
||||
console.log('completeTx() mnemonic: ', mnemonic)
|
||||
|
||||
const bchjs = this.bchWallet.bchjs
|
||||
// Instantiate the user wallet
|
||||
const userWallet = await this.instanceWallet({ mnemonic })
|
||||
|
||||
const bchjs = userWallet.bchjs
|
||||
|
||||
// instance of transaction builder
|
||||
// const transactionBuilder = new bchjs.TransactionBuilder()
|
||||
@@ -500,10 +507,10 @@ class WalletAdapter {
|
||||
// 'mainnet'
|
||||
// )
|
||||
|
||||
console.log('completeTx() this.walletInfo: ', this.walletInfo)
|
||||
console.log('completeTx() userWallet.walletInfo: ', userWallet.walletInfo)
|
||||
|
||||
// Get the keypair for the address used in the Order
|
||||
const keyPair = await this.getKeyPair(hdIndex)
|
||||
const keyPair = await userWallet.getKeyPair(hdIndex)
|
||||
console.log(`maker keyPair: ${JSON.stringify(keyPair, null, 2)}`)
|
||||
const makerECPair = bchjs.ECPair.fromWIF(keyPair.wif)
|
||||
|
||||
|
||||
@@ -607,8 +607,19 @@ class OfferUseCases {
|
||||
throw new Error(`The Counter Offer has an output address of ${addrInCounterOffer}, which does not match the Maker address of ${makerAddr} in the Offer.`)
|
||||
}
|
||||
|
||||
// Get the User ID from the Order model.
|
||||
const userId = orderData.userId
|
||||
|
||||
// Get the User model from the database.
|
||||
this.UserModel = this.adapters.localdb.Users
|
||||
const user = await this.UserModel.findById(userId)
|
||||
console.log('user: ', user)
|
||||
|
||||
// Get the HD index from the Order model.
|
||||
const hdIndex = orderData.hdIndex
|
||||
|
||||
// Sign and broadcast the transaction.
|
||||
const txid = await this.adapters.wallet.completeTx(txHex, orderData.hdIndex)
|
||||
const txid = await this.adapters.wallet.completeTx(txHex, hdIndex, user.mnemonic)
|
||||
console.log('txid: ', txid)
|
||||
|
||||
return txid
|
||||
|
||||
@@ -114,6 +114,7 @@ class OrderLib {
|
||||
|
||||
// Add P2WDB specific flag for signaling that this is a new offer.
|
||||
orderEntity.dataType = 'offer'
|
||||
orderEntity.userId = user._id
|
||||
|
||||
// Post the new Order information to Nostr under the topic set in the
|
||||
// config file.
|
||||
|
||||
Reference in New Issue
Block a user