mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import type { Transaction, TransactionsSortingValue } from 'types/api/transaction';
|
|
|
|
import compareBns from 'lib/bigint/compareBns';
|
|
|
|
export default function sortTxs(sorting: TransactionsSortingValue | undefined) {
|
|
return function sortingFn(tx1: Transaction, tx2: Transaction) {
|
|
switch (sorting) {
|
|
case 'value-desc':
|
|
return compareBns(tx2.value, tx1.value);
|
|
case 'value-asc':
|
|
return compareBns(tx1.value, tx2.value);
|
|
case 'fee-desc':
|
|
return compareBns(tx2.fee.value || 0, tx1.fee.value || 0);
|
|
case 'fee-asc':
|
|
return compareBns(tx1.fee.value || 0, tx2.fee.value || 0);
|
|
case 'block_number-asc': {
|
|
if (tx1.block_number && tx2.block_number) {
|
|
return tx1.block_number - tx2.block_number;
|
|
}
|
|
return 0;
|
|
}
|
|
default:
|
|
return 0;
|
|
}
|
|
};
|
|
}
|
|
|
|
export function sortTxsFromSocket(sorting: TransactionsSortingValue | undefined) {
|
|
if (sorting && sorting !== 'default') {
|
|
return sortTxs(sorting);
|
|
}
|
|
|
|
return function sortingFn(tx1: Transaction, tx2: Transaction) {
|
|
if (!tx1.timestamp) {
|
|
return -1;
|
|
}
|
|
|
|
if (!tx2.timestamp) {
|
|
return 1;
|
|
}
|
|
|
|
return tx2.timestamp.localeCompare(tx1.timestamp);
|
|
};
|
|
}
|