1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import axios from "axios";
- import {getTransfers} from "./getTransfers.js";
- async function fetchTransactions(url, Json_data, headers) {
- const response = await axios.post(url, Json_data, {headers: headers});
- let transactions = [];
- response.data.data['transactions']['edges'].forEach((item) => {
- const {
- actual_fee_display,
- initiator_address,
- initiator_identifier,
- nonce,
- timestamp,
- transaction_hash,
- } = item['node'];
- transactions.push({
- actual_fee_display,
- initiator_address,
- initiator_identifier,
- nonce,
- timestamp,
- transaction_hash,
- transfers: []
- })
- });
- return {
- transactions: transactions,
- hasNextPage: response.data.data['transactions']['pageInfo']['hasNextPage'],
- endCursor: response.data.data['transactions']['pageInfo']['endCursor'],
- }
- }
- export default async function getTransactions(address) {
- const url = "https://starkscan.stellate.sh/";
- const headers = {
- 'authority': 'starkscan.stellate.sh',
- 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
- }
- const Json_data = {
- 'query': 'query TransactionsTableQuery(\n $first: Int!\n $after: String\n $input: TransactionsInput!\n) {\n ...TransactionsTablePaginationFragment_transactions_2DAjA4\n}\n\nfragment TransactionsTableExpandedItemFragment_transaction on Transaction {\n entry_point_selector_name\n calldata_decoded\n entry_point_selector\n calldata\n initiator_address\n initiator_identifier\n actual_fee\n actual_fee_display\n main_calls {\n selector\n selector_name\n calldata_decoded\n selector_identifier\n calldata\n contract_address\n contract_identifier\n id\n }\n}\n\nfragment TransactionsTablePaginationFragment_transactions_2DAjA4 on Query {\n transactions(first: $first, after: $after, input: $input) {\n edges {\n node {\n id\n ...TransactionsTableRowFragment_transaction\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment TransactionsTableRowFragment_transaction on Transaction {\n id\n transaction_hash\n block_number\n transaction_status\n transaction_type\n timestamp\n nonce\n contract_address\n contract_identifier\n sender_address\n sender_identifier\n initiator_address\n initiator_identifier\n initiator {\n is_social_verified\n id\n }\n main_calls {\n selector_identifier\n id\n }\n ...TransactionsTableExpandedItemFragment_transaction\n}\n',
- 'variables': {
- 'first': 100,
- 'after': null,
- 'input': {
- 'initiator_address': address,
- 'sort_by': 'timestamp',
- 'order_by': 'desc',
- 'min_block_number': null,
- 'max_block_number': null,
- 'min_timestamp': null,
- 'max_timestamp': null
- }
- }
- };
- let allTransactions = [];
- let results = await fetchTransactions(url, Json_data, headers);
- allTransactions.push(...results.transactions);
- while (results.hasNextPage) {
- Json_data['variables']['after'] = results.endCursor;
- results = await fetchTransactions(url, Json_data, headers);
- allTransactions.push(...results.transactions);
- }
- const transfers = await getTransfers(address)
- transfers.forEach((transfer) => {
- allTransactions.forEach((transaction) => {
- if (transfer['transaction_hash'] === transaction['transaction_hash']) {
- transaction['transfers'].push(transfer)
- }
- })
- })
- // const localTransactions = JSON.parse(localStorage.getItem('stark_transactions'));
- // if (localTransactions === null) {
- // localStorage.setItem('stark_transactions', JSON.stringify([{
- // address: address,
- // transactions: allTransactions
- // }]))
- // return allTransactions;
- // } else {
- // const index = localTransactions.findIndex((item) => item.address === address);
- // if (index === -1) {
- // localTransactions.push({
- // address: address,
- // transactions: allTransactions
- // })
- // } else {
- // localTransactions[index].transactions = allTransactions;
- // }
- // localStorage.setItem('stark_transactions', JSON.stringify(localTransactions));
- // }
- return {transfers, transactions: allTransactions}
- }
|