Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions nextjs/src/app/client/JupiterClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Connection, Keypair, VersionedTransaction } from '@solana/web3.js';
// import { TokenInfo } from "@solana/spl-token-registry"
import fetch from 'cross-fetch';
// import { Wallet } from '@project-serum/anchor';
// import bs58 from 'bs58';
import base58 from "bs58";
import dotenv from 'dotenv';


Expand Down Expand Up @@ -100,7 +100,7 @@ async function priceSwap(buyTkId, sellTkId, amount) {

//pass in platformFeeBps as a parameter in the quote.

const quoteUrl =`https://quote-api.jup.ag/v6/quote?inputMint=${sellTokenInfo.address}&outputMint=${buyTokenInfo.address}&amount=${swapItem.buyQty * 10 ^ buyTokenInfo.decimals}&slippageBps=50`;
const quoteUrl =`https://quote-api.jup.ag/v6/quote?inputMint=${sellTokenInfo.address}&outputMint=${buyTokenInfo.address}&amount=${swapItem.buyQty * 10 ^ buyTokenInfo.decimals}&slippageBps=50&asLegacyTransaction=true`;
const quoteResponseRaw = await (await fetch(quoteUrl)).json();

console.log({ quoteResponseRaw });
Expand Down Expand Up @@ -139,7 +139,7 @@ async function priceSwap(buyTkId, sellTkId, amount) {
return transaction;
}));

console.dir(transactions, { depth: null });
console.dir('created transactions: ',transactions, { depth: null });
return transactions;
// // sign the transaction
// transaction.sign([wallet.payer]);
Expand All @@ -160,16 +160,25 @@ async function priceSwap(buyTkId, sellTkId, amount) {
// console.log(`https://solscan.io/tx/${signature}`);
}

async function confirmTransactions(transactions, signature){
async function confirmTransactions(signedTransactions){
console.log('confirming transactions')
console.log(transactions)
console.log(signature)
console.log(signedTransactions)
const connection = new Connection(RPC, 'confirmed');
const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();

await Promise.all(transactions.map(async (transaction) => {
await connection.confirmTransaction({signature, blockhash, lastValidBlockHeight});
}));
signedTransactions.forEach(async (transaction) => {
const signature = base58.encode(transaction.signatures[0]);
console.log("signature: ",signature);
const confirmation = await connection.confirmTransaction({signature, blockhash, lastValidBlockHeight});
console.log("confirmation: ",confirmation);
});

// await Promise.all(signedTransactions.map(async (transaction) => {
// const signature = base58.encode(transaction.signatures[0]);
// console.log("signature: ",signature);
// const confirmation = await connection.confirmTransaction({signature, blockhash, lastValidBlockHeight});
// console.log("confirmation: ",confirmation);
// }));
}

async function confirmTransaction(signature,connection){
Expand Down
2 changes: 1 addition & 1 deletion nextjs/src/app/client/LightClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ let rpcUrl = process.env.NEXT_PUBLIC_MAINNET_RPC;
const provider = await light.Provider.init({
wallet: solanaWallet,
relayer: testRelayer,
confirmConfig
confirmConfig
});

const user = await light.User.init({ provider });
Expand Down
32 changes: 19 additions & 13 deletions nextjs/src/app/transact/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,23 +200,29 @@ export default function Swap() {
console.log('swap items:', swapItems)
console.log('public key:', publicKey.toString())
const transactions = await createSwapTransactions(swapItems, publicKey.toString());
console.log('transactions', transactions);
// const signedTransactions = await signAllTransactions(transactions);
console.log('transactions : ', transactions);

const signedTransactions = await signAllTransactions(transactions);

console.log('signed transactions : ', signedTransactions);

const {
context: { slot: minContextSlot },
value: { blockhash, lastValidBlockHeight },
} = await connection.getLatestBlockhashAndContext();

//execute the transactions
// const signature = await sendTransaction(transactions[0], connection, { minContextSlot });
// console.log('signature found , ', signature);
// let confirmation = await connection.confirmTransaction({ blockhash, lastValidBlockHeight, signature });
// console.log("confirmation when through -------> ",confirmation)

const signatures = signedTransactions.map(t => base58.encode(t.signatures[0]));
console.log('signatures : ', signatures);

const confirmation = await confirmTransactions(signedTransactions);

const signature = await sendTransaction(transactions[0], connection, { minContextSlot });
console.log(signature)
let confirmation = await connection.confirmTransaction({ blockhash, lastValidBlockHeight, signature });

console.log(confirmation)
// const signatures = signedTransactions.map(t => t.signatures);
// console.log('signatures', signatures);
// await confirmTransactions(transactions, base58.encode(signedTransactions[0].signatures[0]));
console.log('confirmation : ', confirmation);

//signature
// await confirmTransaction(base58.encode(signature),connection);
Expand All @@ -227,14 +233,14 @@ export default function Swap() {
const updateBuyAmountForRow = async (rowId) => {
const row = rows.find(r => r.id === rowId);
if (!row || !row.fromToken || !row.toToken || !row.sellAmount) {
console.log("Incomplete input for price update");
// console.log("Incomplete input for price update");
return;
}

await new Promise(resolve => setTimeout(resolve, 2000));

try {
console.log('Updating buy amount for row', rowId);
// console.log('Updating buy amount for row', rowId);
let priceData = await priceSwap(row.toToken, row.fromToken, row.sellAmount);

setRows(currentRows =>
Expand Down Expand Up @@ -562,7 +568,7 @@ export default function Swap() {
className="bg-gray-50 py-2 px-8 text-lg border border-gray-300 hover:bg-gray-200 text-gray-900 rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5"
onClick={() => submitTransaction()}
>
Transact
Transact
</button>
</div>
{jupPriceData.buyTkId != null && (
Expand Down