Skip to content

Commit

Permalink
[RPC API Improvement 1/n] - Transactions query pagination and merge a…
Browse files Browse the repository at this point in the history
…ll getTransactions* methods (MystenLabs#4919)

* transactions query pagination

* remove old examples

* regen open rpc

* refactoring

* regen openrpc spec

* remove TxSeqNumber

* update type script definition

* bugfix

* regen openrpc

* add back get transactions in range method

* fix test

* refactoring and fix test
added `Latest` TransactionQuery type

* update openrpc

* fixup after rebase

* add pagination test

* added ordering and unit tests

* fix tests

* fix tests

* fix clippy

* fix ts SDK

* revert test network changes

* address PR comments

* fixup after rebase

* remove get_recent_transaction
added getTransactions to TS SDK

* pnpm changeset

* impl void provider

* fix TS SDK

* fix TS SDK
regen openrpc.json

* fix test after rebase
  • Loading branch information
patrickkuo authored Oct 13, 2022
1 parent 0f95258 commit 1d036d4
Show file tree
Hide file tree
Showing 31 changed files with 1,104 additions and 1,194 deletions.
5 changes: 5 additions & 0 deletions .changeset/brown-mayflies-arrive.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@mysten/sui.js": minor
---

Transactions query pagination and merge all getTransactions\* methods
7 changes: 2 additions & 5 deletions apps/explorer/src/components/transaction-card/TxCardUtils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import styles from './RecentTxCard.module.css';

export type TxnData = {
To?: string;
seq: number;
txId: string;
status: ExecutionStatusType;
txGas: number;
Expand Down Expand Up @@ -145,9 +144,9 @@ export const getDataOnTxDigests = (
return (
txEffs
.map((txEff) => {
const [seq, digest] = transactions.filter(
const digest = transactions.filter(
(transactionId) =>
transactionId[1] ===
transactionId ===
getTransactionDigest(txEff.certificate)
)[0];
const res: CertifiedTransaction = txEff.certificate;
Expand All @@ -167,7 +166,6 @@ export const getDataOnTxDigests = (
getTransferSuiTransaction(txn)?.recipient;

return {
seq,
txId: digest,
status: getExecutionStatusType(txEff)!,
txGas: getTotalGasUsed(txEff),
Expand All @@ -184,6 +182,5 @@ export const getDataOnTxDigests = (
})
// Remove failed transactions and sort by sequence number
.filter((itm) => itm)
.sort((a, b) => b!.seq - a!.seq)
);
});
4 changes: 1 addition & 3 deletions apps/explorer/src/components/transaction-card/TxForID.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,7 @@ function TxForIDStatic({
id: string;
category: categoryType;
}) {
const data = deduplicate(
findTxfromID(id)?.data as [number, string][] | undefined
)
const data = deduplicate(findTxfromID(id)?.data as string[] | undefined)
.map((id) => findTxDatafromID(id))
.filter((x) => x !== undefined) as TxnData[];
if (!data) return <></>;
Expand Down
6 changes: 2 additions & 4 deletions apps/explorer/src/utils/searchUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@

import { IS_STATIC_ENV } from './envUtil';

const deduplicate = (results: [number, string][] | undefined) =>
const deduplicate = (results: string[] | undefined) =>
results
? results
.map((result) => result[1])
.filter((value, index, self) => self.indexOf(value) === index)
? results.filter((value, index, self) => self.indexOf(value) === index)
: [];

let navigateWithUnknown: Function;
Expand Down
13 changes: 0 additions & 13 deletions apps/explorer/src/utils/static/latest_transactions.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "XHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -14,7 +13,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "YHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -24,7 +22,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -34,7 +31,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZITP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -44,7 +40,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZJTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -54,7 +49,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZKTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -65,7 +59,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZLTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -75,7 +68,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZMTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -85,7 +77,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZNTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -95,7 +86,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZOTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -105,7 +95,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "ZPTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -115,7 +104,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "failure",
"txGas": 41,
"txId": "GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
Expand All @@ -125,7 +113,6 @@
"From": "senderAddress",
"To": "receiverAddress",
"kind": "Transfer",
"seq": 7787,
"status": "success",
"txGas": 41,
"txId": "Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4=",
Expand Down
68 changes: 34 additions & 34 deletions apps/explorer/src/utils/static/tx_for_id.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,45 @@
{
"id": "ownsAllAddress",
"data": [
[0, "XHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[1, "YHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[2, "ZHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[3, "ZITP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[4, "ZJTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[5, "ZKTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[6, "ZLTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[7, "ZMTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[8, "ZNTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[9, "ZOTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[10, "ZPTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[0, "GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[1, "GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[2, "Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4="],
[3, "GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[4, "Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4="],
[5, "Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4="]
"XHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"YHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZITP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZJTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZKTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZLTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZMTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZNTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZOTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZPTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4=",
"GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4=",
"Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4="
]
},
{
"id": "CollectionObject",
"data": [
[0, "XHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[1, "YHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[2, "ZHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[3, "ZITP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[4, "ZJTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[5, "ZKTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[6, "ZLTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[7, "ZMTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[8, "ZNTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[9, "ZOTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[10, "ZPTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[0, "GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[1, "GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[2, "Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4="],
[3, "GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8="],
[4, "Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4="],
[5, "Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4="]
"XHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"YHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZITP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZJTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZKTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZLTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZMTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZNTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZOTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"ZPTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4=",
"GHTP9gcFmF5KTspnz3KxXjvSH8Bx0jv68KFhdqfpdK8=",
"Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4=",
"Da4vHc9IwbvOYblE8LnrVsqXwryt2Kmms+xnJ7Zx5E4="
]
}
]
Expand Down
13 changes: 4 additions & 9 deletions apps/wallet/src/ui/app/redux/slices/txresults/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import type { AppThunkConfig } from '_store/thunk-extras';

export type TxResultState = {
to?: string;
seq: number;
txId: string;
status: ExecutionStatusType;
txGas: number;
Expand Down Expand Up @@ -64,11 +63,9 @@ const initialState: TransactionManualState = {
type TxResultByAddress = TxResultState[];

// Remove duplicate transactionsId, reduces the number of RPC calls
const deduplicate = (results: [number, string][] | undefined) =>
const deduplicate = (results: string[] | undefined) =>
results
? results
.map((result) => result[1])
.filter((value, index, self) => self.indexOf(value) === index)
? results.filter((value, index, self) => self.indexOf(value) === index)
: [];

// TODO: This is a temporary solution to get the NFT data from Call txn
Expand Down Expand Up @@ -97,9 +94,8 @@ export const getTransactionsByAddress = createAsyncThunk<
return [];
}
// Get all transactions txId for address
const transactions: GetTxnDigestsResponse = (
await api.instance.fullNode.getTransactionsForAddress(address)
).filter((tx) => tx);
const transactions: GetTxnDigestsResponse =
await api.instance.fullNode.getTransactionsForAddress(address);

if (!transactions || !transactions.length) {
return [];
Expand Down Expand Up @@ -172,7 +168,6 @@ export const getTransactionsByAddress = createAsyncThunk<
})
// Remove failed transactions and sort by sequence number
.filter(notEmpty)
.sort((a, b) => b.seq - a.seq)
);
});

Expand Down
Loading

0 comments on commit 1d036d4

Please sign in to comment.