Quantcast
Channel: Recent Questions - Solana Stack Exchange
Viewing all articles
Browse latest Browse all 7881

i set getTransactions for incoming and outcoming log but it only shows the outcoming log can anyone help me with this

$
0
0

please help me to get both incoming and outcoming transactions

static async getTransactions(wallet) {            try {                const provider = await ProviderFactory.getProvider(wallet.chain)                const pubKey = new PublicKey(wallet.walletAddress)            const desiredLimit = 10;            let transactions = [];            let beforeSignature = null;        while (transactions.length < desiredLimit) {            const transactionSignatures = await provider.connection.getSignaturesForAddress(                pubKey,                { limit: desiredLimit - transactions.length, before: beforeSignature }            );            if (transactionSignatures.length === 0) break;            const transactionPromises = transactionSignatures.map(signatureInfo =>                provider.connection.getTransaction(signatureInfo.signature)            );            const transactionsData = await Promise.all(transactionPromises);            for (let i = 0; i < transactionsData.length; i++) {                const transaction = transactionsData[i];                if (transaction && transaction.meta &&                    transaction.meta.postTokenBalances &&                    transaction.meta.preTokenBalances) {                    const signatureInfo = transactionSignatures[i];                    const txHash = signatureInfo.signature;                    // Track token movements for the relevant mint                    const tokenTransfers = transaction.meta.postTokenBalances                        .filter(balance => balance.mint === wallet.contract)                        .map(postBalance => {                            const preBalance = transaction.meta.preTokenBalances.find(balance =>                                balance.mint === wallet.contract && balance.owner === postBalance.owner                            );                            const change = postBalance.uiTokenAmount.uiAmount - (preBalance ? preBalance.uiTokenAmount.uiAmount : 0);                            return { owner: postBalance.owner, change };                        });                    // Identify sender and receiver based on balance changes                    let from, to;                    if (tokenTransfers.some(transfer => transfer.owner === wallet.walletAddress && transfer.change > 0)) {                        // Receive transaction                        to = wallet.walletAddress;                        from = tokenTransfers.find(transfer => transfer.change < 0)?.owner;                    } else if (tokenTransfers.some(transfer => transfer.owner === wallet.walletAddress && transfer.change < 0)) {                        // Send transaction                        from = wallet.walletAddress;                        to = tokenTransfers.find(transfer => transfer.change > 0)?.owner;                    }                    if (!to || !from) continue;                    const status = transaction.meta.err ? '0' : '-1';                    const createdAt = moment(transaction.blockTime * 1000).fromNow();                    const value = Math.abs(tokenTransfers.find(transfer => transfer.owner === to)?.change || 0);                    const gasFee = transaction.meta.fee;                    const isSender = wallet.walletAddress === from;                    const explore = configProperties.solana.explore + `tx/${txHash}`;                    const type = isSender ? 'outgoing' : 'incoming';                    transactions.push({                        txHash, to, from, status, createdAt, gasFee, value, isSender, explore, type                    });                }            }            beforeSignature = transactionSignatures[transactionSignatures.length - 1]?.signature;        }        return {            success: true,            data: transactions        };    } catch (error) {        Logs.info('WalletFactory: getTransactions', error);        throw new Error(error.message)    }}

Viewing all articles
Browse latest Browse all 7881

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>