From 4dd6d75e2dceb0fc89e1d0dd0c9ed4aefd95a782 Mon Sep 17 00:00:00 2001 From: Florian Bouron Date: Sat, 17 Feb 2024 13:50:46 +0100 Subject: [PATCH] Remove custom type AccountTransaction --- .../TransactionListing/TransactionDetails.tsx | 176 +++++---- .../TransactionListing.mock.ts | 344 +++++++++++++----- .../TransactionListing.test.tsx | 13 +- .../TransactionListing/TransactionListing.tsx | 10 +- .../TransactionListing/format.util.ts | 8 +- .../src/components/pages/History/History.tsx | 4 +- .../contexts/LedgerContext/LedgerContext.tsx | 8 +- .../extension/src/types/transaction.types.ts | 11 - 8 files changed, 365 insertions(+), 209 deletions(-) diff --git a/packages/extension/src/components/organisms/TransactionListing/TransactionDetails.tsx b/packages/extension/src/components/organisms/TransactionListing/TransactionDetails.tsx index 791bb218f..75645710f 100644 --- a/packages/extension/src/components/organisms/TransactionListing/TransactionDetails.tsx +++ b/packages/extension/src/components/organisms/TransactionListing/TransactionDetails.tsx @@ -1,19 +1,18 @@ import { FC } from 'react'; import { Divider, List, ListItem, ListItemText } from '@mui/material'; -import { convertHexToString, dropsToXrp } from 'xrpl'; +import { AccountTxTransaction, convertHexToString, dropsToXrp } from 'xrpl'; import { useMainToken } from '../../../hooks'; -import { AccountTransaction } from '../../../types'; import { formatFlagsToNumber } from '../../../utils'; import { formatDate, formatTransaction } from './format.util'; export interface TransactionDetailsProps { - transaction: AccountTransaction | null; + transaction: AccountTxTransaction | null; publicAddress: string; } -const renderDestinationField = (transaction: AccountTransaction): JSX.Element | null => { +const renderDestinationField = (transaction: AccountTxTransaction): JSX.Element | null => { if (transaction.tx && 'Destination' in transaction.tx) { return ( @@ -32,91 +31,88 @@ export const TransactionDetails: FC = ({ transaction, p } return ( - - - - - - {renderDestinationField(transaction)} - - - - - - - - - - - - - - {transaction.tx?.Memos?.[0]?.Memo?.MemoData ? ( - <> - - - - - - ) : null} - {transaction.meta && - typeof transaction.meta === 'object' && - 'nftoken_id' in transaction.meta ? ( - <> - - - - - - ) : null} - {transaction.meta && - typeof transaction.meta === 'object' && - 'offer_id' in transaction.meta ? ( - <> - - - - - - ) : null} - - - - - {transaction.tx && 'DestinationTag' in transaction.tx && transaction.tx?.DestinationTag ? ( - <> - - - - - - ) : null} - {transaction.tx && 'Flags' in transaction.tx && transaction.tx?.Flags ? ( - <> - - - - - - ) : null} - - - - - - - + + + + + + {renderDestinationField(transaction)} + + + + + + + + + + + + + + {transaction.tx?.Memos?.[0]?.Memo?.MemoData ? ( + <> + + + + + + ) : null} + {transaction.meta && + typeof transaction.meta === 'object' && + 'nftoken_id' in transaction.meta ? ( + <> + + + + + + ) : null} + {transaction.meta && + typeof transaction.meta === 'object' && + 'offer_id' in transaction.meta ? ( + <> + + + + + + ) : null} + + + + + {transaction.tx && 'DestinationTag' in transaction.tx && transaction.tx?.DestinationTag ? ( + <> + + + + + + ) : null} + {transaction.tx && 'Flags' in transaction.tx && transaction.tx?.Flags ? ( + <> + + + + + + ) : null} + + + + + + + ); }; diff --git a/packages/extension/src/components/organisms/TransactionListing/TransactionListing.mock.ts b/packages/extension/src/components/organisms/TransactionListing/TransactionListing.mock.ts index eab4b00f2..6c808ac88 100644 --- a/packages/extension/src/components/organisms/TransactionListing/TransactionListing.mock.ts +++ b/packages/extension/src/components/organisms/TransactionListing/TransactionListing.mock.ts @@ -1,3 +1,5 @@ +import { AccountTxTransaction } from 'xrpl'; + export const mockTransactions = [ { meta: { @@ -5,61 +7,177 @@ export const mockTransactions = [ { ModifiedNode: { FinalFields: { - Account: 'r3Hd1bNLn4PuLFsKwMhfK8sig7tQcKkXJi', - Balance: '979999928', Flags: 0, - OwnerCount: 1, - Sequence: 35320136 + IndexPrevious: '13', + Owner: 'rwtDvu9QDfCskWuyE2TSEt3s56RbiWUKJN', + RootIndex: 'CCEB67796D07A8C1E40DAA24D549A7F911B63B28B9F3C4C6652B6F970F85C174' + }, + LedgerEntryType: 'DirectoryNode', + LedgerIndex: '3EECA02A5439B273B0898FD25C5485C0DC19E807C4D1DCDB9AC317280B5CB143' + } + }, + { + CreatedNode: { + LedgerEntryType: 'DirectoryNode', + LedgerIndex: '3EF64D8BDB28BF40BCC86FA1FEE30E1936A6A6CD5F47FF84116B48B00CD59517', + NewFields: { + Owner: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', + RootIndex: '3EF64D8BDB28BF40BCC86FA1FEE30E1936A6A6CD5F47FF84116B48B00CD59517' + } + } + }, + { + ModifiedNode: { + FinalFields: { + Account: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', + Balance: '9949999964', + FirstNFTokenSequence: 45473676, + Flags: 0, + MintedNFTokens: 1, + OwnerCount: 2, + Sequence: 45473678 }, LedgerEntryType: 'AccountRoot', - LedgerIndex: '305943B19E70AB8F508058D67576BD263EA4402C5232E15D94E18052A3AEAA74', + LedgerIndex: '62303A08E846D1C72535F4F2E4643ECB62A7474D4481EF73D1064E2DFFB01DC2', PreviousFields: { - Balance: '999999940', - Sequence: 35320135 + Balance: '9949999976', + OwnerCount: 1, + Sequence: 45473677 }, - PreviousTxnID: '8A40367A3F4BFFA45E1EDA4F4E3CD03BCC7C20366CA3D695CB9E13E3675FA638', - PreviousTxnLgrSeq: 35325872 + PreviousTxnID: '5B5CC68203CED2763893F088F913D3254D68F09B881F8EE7491ED6EFAE5A3A3E', + PreviousTxnLgrSeq: 45473736 + } + }, + { + CreatedNode: { + LedgerEntryType: 'RippleState', + LedgerIndex: 'B40FA21B84B3F33D13224BE446D87BDDB4BB7A82415B0D3888EDF8F01C3E3BCB', + NewFields: { + Balance: { + currency: 'USD', + issuer: 'rrrrrrrrrrrrrrrrrrrrBZbvji', + value: '0' + }, + Flags: 2228224, + HighLimit: { + currency: 'USD', + issuer: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', + value: '1000000' + }, + LowLimit: { + currency: 'USD', + issuer: 'rwtDvu9QDfCskWuyE2TSEt3s56RbiWUKJN', + value: '0' + }, + LowNode: '14' + } } }, + { + ModifiedNode: { + LedgerEntryType: 'AccountRoot', + LedgerIndex: 'D306EAC125ABC5434050CAC5444C8DAF1DD67C49BC93276242E03904D3EB588F', + PreviousTxnID: '679E6E07D31228D8466D6210F9DB3648539CFA91390D008C95645C0C293B369B', + PreviousTxnLgrSeq: 44714449 + } + } + ], + TransactionIndex: 1, + TransactionResult: 'tesSUCCESS' + }, + tx: { + Account: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', + Fee: '12', + Flags: 131072, + LastLedgerSequence: 45473762, + LimitAmount: { + currency: 'USD', + issuer: 'rwtDvu9QDfCskWuyE2TSEt3s56RbiWUKJN', + value: '1000000' + }, + Sequence: 45473677, + SigningPubKey: 'EDA98D497A8849719B4352518E0C72A9F797B51420CD93635A667DF888CD648868', + TransactionType: 'TrustSet', + TxnSignature: + 'F2AC2B8BD00A18311CA4AFCA271C3DD08530BD2A5E61F16777A542BB03CA8B6B4A6E618F8C610E45DC18D51713174EB539D7651A1AED1A655A457E4698076102', + date: 761489290, + hash: '05544009627ECF570707221100E9699B1185D4028CCFF43CAED83A4E4F2F3641', + inLedger: 45473744, + ledger_index: 45473744 + }, + validated: true + }, + { + meta: { + AffectedNodes: [ { ModifiedNode: { FinalFields: { - Account: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', - Balance: '479993543', + Account: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', + Balance: '9949999976', + FirstNFTokenSequence: 45473676, Flags: 0, - OwnerCount: 4, - Sequence: 34325154 + MintedNFTokens: 1, + OwnerCount: 1, + Sequence: 45473677 }, LedgerEntryType: 'AccountRoot', - LedgerIndex: 'ED3BE698EB952BF74DC1A42BEB30DBDABFE946914A7B1AC06213791755A68358', + LedgerIndex: '62303A08E846D1C72535F4F2E4643ECB62A7474D4481EF73D1064E2DFFB01DC2', PreviousFields: { - Balance: '459993543' + Balance: '9949999988', + OwnerCount: 0, + Sequence: 45473676 }, - PreviousTxnID: '88B55BF2C181014ABDBEADBF6703945F1BAD7C47ED97A5138849D64DDD7D6764', - PreviousTxnLgrSeq: 35320142 + PreviousTxnID: '67BAF225007D5E4FF66761044DFE9371F0E6E7145116BA59EAB40A9A28B9D392', + PreviousTxnLgrSeq: 45473730 + } + }, + { + CreatedNode: { + LedgerEntryType: 'NFTokenPage', + LedgerIndex: 'F5726A3B64D5C433A1854A69B5790561E4ADF8DAFFFFFFFFFFFFFFFFFFFFFFFF', + NewFields: { + NFTokens: [ + { + NFToken: { + NFTokenID: '000A0BB8F5726A3B64D5C433A1854A69B5790561E4ADF8DA7E73352702B5DF8C', + URI: '4D696E746564207468726F7567682047656D57616C6C657421' + } + } + ] + } } } ], TransactionIndex: 1, TransactionResult: 'tesSUCCESS', - delivered_amount: '20000000' + nftoken_id: '000A0BB8F5726A3B64D5C433A1854A69B5790561E4ADF8DA7E73352702B5DF8C' }, tx: { - Account: 'r3Hd1bNLn4PuLFsKwMhfK8sig7tQcKkXJi', - Amount: '20000000', - Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', + Account: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', Fee: '12', - Flags: 0, - LastLedgerSequence: 35332317, - Sequence: 35320135, - SigningPubKey: 'ED40DB7D4322B72D47ECF6F4E2BB4DCFBF39A6ABF2DB03148F8ED1F1132FC42784', - TransactionType: 'Payment', + Flags: 10, + LastLedgerSequence: 45473754, + Memos: [ + { + Memo: { + MemoData: '54657374206D656D6F', + MemoType: '4465736372697074696F6E' + } + } + ], + NFTokenTaxon: 0, + Sequence: 45473676, + SigningPubKey: 'EDA98D497A8849719B4352518E0C72A9F797B51420CD93635A667DF888CD648868', + TransactionType: 'NFTokenMint', + TransferFee: 3000, TxnSignature: - '1ACCA4362FB75B7EEE36D224CD470005CC100FE561AAFB2083F9FD39F8A0C9AE80B2BE0465F6AA0CBF5308DCB758ED05506E9CD4367FB792E873158E41EB0108', - date: 729538290, - hash: '02F07E4C5FA312325D0A00F7823B6AD5CE0416A95ABD2038288914F4678D0B6F', - inLedger: 35332299, - ledger_index: 35332299 + '25A9CC5A78E6AF505118BECE2EEC2C2E1FF44CD30D88BC21617F9C575CC12AB8E231AF5139C1EBA6649A96837D0D17FED47F9E012F20BBF44585B68708BAE305', + URI: '4D696E746564207468726F7567682047656D57616C6C657421', + date: 761489262, + hash: '5B5CC68203CED2763893F088F913D3254D68F09B881F8EE7491ED6EFAE5A3A3E', + inLedger: 45473736, + ledger_index: 45473736 }, validated: true }, @@ -69,45 +187,62 @@ export const mockTransactions = [ { ModifiedNode: { FinalFields: { - Account: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', - Balance: '459993543', + Account: 'rMrXopFSnCDSd5Eej4TpeHrV7SPjKtLpo2', + Balance: '5110000150', + Flags: 0, + OwnerCount: 0, + Sequence: 32441114 + }, + LedgerEntryType: 'AccountRoot', + LedgerIndex: '3AD90E6733C529A44CCAA383B3EA60738057EC042FEB5195BF021CDD1688C6DC', + PreviousFields: { + Balance: '5060000150' + }, + PreviousTxnID: '820F05D153DD027D3D4049E848F83C8008827EF68D474130B80B1F0D7D5A6358', + PreviousTxnLgrSeq: 45443813 + } + }, + { + ModifiedNode: { + FinalFields: { + Account: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', + Balance: '9949999988', Flags: 0, - OwnerCount: 4, - Sequence: 34325154 + OwnerCount: 0, + Sequence: 45473676 }, LedgerEntryType: 'AccountRoot', - LedgerIndex: 'ED3BE698EB952BF74DC1A42BEB30DBDABFE946914A7B1AC06213791755A68358', + LedgerIndex: '62303A08E846D1C72535F4F2E4643ECB62A7474D4481EF73D1064E2DFFB01DC2', PreviousFields: { - Balance: '459993555', - Sequence: 34325153 + Balance: '10000000000', + Sequence: 45473675 }, - PreviousTxnID: 'A51FF5E411248D77D92E1085DFAC3902401CE54C1924D3D0B415C83D4EA6A03F', - PreviousTxnLgrSeq: 35320122 + PreviousTxnID: '2124CD469DC2325039934C02E186996922038608F5A1D79F545092AD1F28A26B', + PreviousTxnLgrSeq: 45473675 } } ], - TransactionIndex: 0, - TransactionResult: 'tesSUCCESS' + TransactionIndex: 1, + TransactionResult: 'tesSUCCESS', + delivered_amount: '50000000' }, tx: { - Account: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', + Account: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', + Amount: '50000000', + DeliverMax: '50000000', + Destination: 'rMrXopFSnCDSd5Eej4TpeHrV7SPjKtLpo2', Fee: '12', Flags: 0, - LastLedgerSequence: 35320160, - LimitAmount: { - currency: 'USD', - issuer: 'rwtDvu9QDfCskWuyE2TSEt3s56RbiWUKJN', - value: '10000000' - }, - Sequence: 34325153, - SigningPubKey: 'ED320B639DE36DD5779AE0E41A1930889BCD09A667E1848C96E38C65FB9D1F77DA', - TransactionType: 'TrustSet', + LastLedgerSequence: 45473748, + Sequence: 45473675, + SigningPubKey: 'EDA98D497A8849719B4352518E0C72A9F797B51420CD93635A667DF888CD648868', + TransactionType: 'Payment', TxnSignature: - 'E1D827FA13B3B46BAE3B235B54B014F59BA214E3AE806D1056AD4929A3EC05CD144658359A5E8990B8D2C7810DE3CBD5ED10BB4D948ABA599ED57F88D71D500D', - date: 729499733, - hash: '88B55BF2C181014ABDBEADBF6703945F1BAD7C47ED97A5138849D64DDD7D6764', - inLedger: 35320142, - ledger_index: 35320142 + '3639FBF7CB5FC95C3843AE9350295A5C5BFDAA0140B1982413C8B4F20557AAF37DAEACDB38901A3BA30FC41100D52376083D917A6F58A2BFB8BF1514D4B4B300', + date: 761489243, + hash: '67BAF225007D5E4FF66761044DFE9371F0E6E7145116BA59EAB40A9A28B9D392', + inLedger: 45473730, + ledger_index: 45473730 }, validated: true }, @@ -117,46 +252,87 @@ export const mockTransactions = [ { ModifiedNode: { FinalFields: { - Account: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', - Balance: '459993543', + Account: 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe', + Balance: '59546638909059252', Flags: 0, - OwnerCount: 4, - Sequence: 34325154 + OwnerCount: 161, + Sequence: 9923202, + TicketCount: 161 }, LedgerEntryType: 'AccountRoot', - LedgerIndex: 'ED3BE698EB952BF74DC1A42BEB30DBDABFE946914A7B1AC06213791755A68358', + LedgerIndex: '31CCE9D28412FF973E9AB6D0FA219BACF19687D9A2456A0C2ABC3280E9D47E37', PreviousFields: { - Balance: '459993555', - Sequence: 34325153 + Balance: '59546648909059264', + OwnerCount: 162, + TicketCount: 162 + }, + PreviousTxnID: '5717775A5C2C901B3094100AB2C73CE5A3299D7DBC9FB1475AA8920ECFFD6E84', + PreviousTxnLgrSeq: 45473675 + } + }, + { + CreatedNode: { + LedgerEntryType: 'AccountRoot', + LedgerIndex: '62303A08E846D1C72535F4F2E4643ECB62A7474D4481EF73D1064E2DFFB01DC2', + NewFields: { + Account: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', + Balance: '10000000000', + Sequence: 45473675 + } + } + }, + { + ModifiedNode: { + FinalFields: { + Flags: 0, + IndexNext: '7dd', + IndexPrevious: '7db', + Owner: 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe', + RootIndex: '781518F4E11A068CB35BF18DA3CBEC220E6CDAF406131C56368453759252A78D' }, - PreviousTxnID: 'A51FF5E411248D77D92E1085DFAC3902401CE54C1924D3D0B415C83D4EA6A03F', - PreviousTxnLgrSeq: 35320122 + LedgerEntryType: 'DirectoryNode', + LedgerIndex: '82F02EF4619EF99586D6359FE9CFB41F74BD27AEE8C423BF07BAE96801066284' + } + }, + { + DeletedNode: { + FinalFields: { + Account: 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe', + Flags: 0, + OwnerNode: '7dc', + PreviousTxnID: '1039742A110FB7D6616A03D7262EB375628D7B8F7EB5FABE5D018BA4EBC698A0', + PreviousTxnLgrSeq: 45473339, + TicketSequence: 9922974 + }, + LedgerEntryType: 'Ticket', + LedgerIndex: 'DA870739092372EA3350C0BF1FB1880A86B491CB3AE6AFA5415F2326A635A4B9' } } ], - TransactionIndex: 0, - TransactionResult: 'tesSUCCESS' + TransactionIndex: 1, + TransactionResult: 'tesSUCCESS', + delivered_amount: '10000000000' }, tx: { - Account: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', + Account: 'rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe', + Amount: '10000000000', + DeliverMax: '10000000000', + Destination: 'rP4oc6rCDNQmcohYVUhY5uRJ6w6ytsacGq', Fee: '12', Flags: 0, - LastLedgerSequence: 35320163, - LimitAmount: { - currency: 'USDC', - issuer: 'rwtDvu9QDfCskWuyE2TSEt3s56RbiWUKJN', - value: '1000000' - }, - Sequence: 34325153, - SigningPubKey: 'ED320B639DE36DD5779AE0E41A1930889BCD09A667E1848C96E38C65FB9D1F77DA', - TransactionType: 'New Transaction Type', + LastLedgerSequence: 45473693, + Sequence: 0, + SigningPubKey: '02356E89059A75438887F9FEE2056A2890DB82A68353BE9C0C0C8F89C0018B37FC', + TicketSequence: 9922974, + TransactionType: 'Payment', TxnSignature: - 'E1D827FA13B3B46BAE3B235B54B014F59BA214E3AE806D1056AD4929A3EC05CD144658359A5E8990B8D2C7810DE3CBD5ED10BB4D948ABA599ED57F88D71D500D', - date: 729499754, - hash: '88B55BF2C181014ABDBEADBF6703945F1BAD7C47ED97A5138849D64DDD7D6765', - inLedger: 35320144, - ledger_index: 35320144 + '3044022041474FFC777F57D62A0D85CE32E966E52CFDC50834C91DE1D2448CC2D7BDD8DB0220049ABDA26247D88F1789D93C6D0F4982EA24EB35D5E11460A828C46545571FA0', + date: 761489080, + hash: '2124CD469DC2325039934C02E186996922038608F5A1D79F545092AD1F28A26B', + inLedger: 45473675, + ledger_index: 45473675 }, validated: true } -]; + // Casting as AccountTxTransaction[] as there are still some wrong typing on XRPL JS. +] as AccountTxTransaction[]; diff --git a/packages/extension/src/components/organisms/TransactionListing/TransactionListing.test.tsx b/packages/extension/src/components/organisms/TransactionListing/TransactionListing.test.tsx index ce372d5de..036ec1838 100644 --- a/packages/extension/src/components/organisms/TransactionListing/TransactionListing.test.tsx +++ b/packages/extension/src/components/organisms/TransactionListing/TransactionListing.test.tsx @@ -4,7 +4,6 @@ import userEvent from '@testing-library/user-event'; import { generateWalletContext } from '../../../mocks'; import { TransactionListing } from './TransactionListing'; import { mockTransactions } from './TransactionListing.mock'; -import { AccountTransaction } from '../../../types'; import { vi } from 'vitest'; const user = userEvent.setup(); @@ -34,9 +33,7 @@ describe('TransactionListing', () => { }); test('renders the list of transactions', async () => { - const screen = render( - - ); + const screen = render(); expect(screen.getByText('Payment sent - 20 XRP')).toBeInTheDocument(); expect(screen.getByText('Feb 12, 2023 - 17:31')).toBeInTheDocument(); expect(screen.getByText('TrustLine transaction')).toBeInTheDocument(); @@ -44,9 +41,7 @@ describe('TransactionListing', () => { }); test('renders the transaction details when the transaction is clicked', async () => { - const screen = render( - - ); + const screen = render(); const transaction = await screen.findByText('Payment sent - 20 XRP'); expect(transaction).toBeInTheDocument(); await user.click(transaction); @@ -64,9 +59,7 @@ describe('TransactionListing', () => { }); test('dialog renders properly', async () => { - const screen = render( - - ); + const screen = render(); const transaction = await screen.findByText('Payment sent - 20 XRP'); expect(transaction).toBeInTheDocument(); await user.click(transaction); diff --git a/packages/extension/src/components/organisms/TransactionListing/TransactionListing.tsx b/packages/extension/src/components/organisms/TransactionListing/TransactionListing.tsx index 443c063bd..04452273f 100644 --- a/packages/extension/src/components/organisms/TransactionListing/TransactionListing.tsx +++ b/packages/extension/src/components/organisms/TransactionListing/TransactionListing.tsx @@ -3,27 +3,27 @@ import { FC, useCallback, useMemo, useState } from 'react'; import TransactionIcon from '@mui/icons-material/CompareArrows'; import { List, ListItem, ListItemIcon, ListItemText, Paper, Typography } from '@mui/material'; import { unix } from 'dayjs'; +import { AccountTxTransaction } from 'xrpl'; import { useWallet } from '../../../contexts'; import { useMainToken } from '../../../hooks'; -import { AccountTransaction } from '../../../types'; import { InformationMessage } from '../../molecules'; import { DialogPage, PageWithSpinner } from '../../templates'; import { formatDate, formatTransaction } from './format.util'; import { TransactionDetails } from './TransactionDetails'; export interface TransactionListingProps { - transactions: AccountTransaction[]; + transactions: AccountTxTransaction[]; } export const TransactionListing: FC = ({ transactions }) => { - const [openedTx, setOpenedTx] = useState(null); + const [openedTx, setOpenedTx] = useState(null); const mainToken = useMainToken(); const { getCurrentWallet } = useWallet(); const wallet = getCurrentWallet(); - const handleClick = useCallback((transaction: AccountTransaction) => { + const handleClick = useCallback((transaction: AccountTxTransaction) => { setOpenedTx(transaction); }, []); @@ -32,7 +32,7 @@ export const TransactionListing: FC = ({ transactions } }, []); const transactionsByDate = useMemo(() => { - const grouped = new Map(); + const grouped = new Map(); transactions.forEach((transaction) => { const date = transaction.tx?.date ? unix(946684800 + transaction.tx.date).format('MMM DD, YYYY') diff --git a/packages/extension/src/components/organisms/TransactionListing/format.util.ts b/packages/extension/src/components/organisms/TransactionListing/format.util.ts index 3caed2743..8282b045f 100644 --- a/packages/extension/src/components/organisms/TransactionListing/format.util.ts +++ b/packages/extension/src/components/organisms/TransactionListing/format.util.ts @@ -1,7 +1,7 @@ import { unix } from 'dayjs'; -import { DepositPreauth, Payment, SetRegularKey } from 'xrpl'; +import { AccountTxTransaction, DepositPreauth, Payment, SetRegularKey } from 'xrpl'; -import { AccountTransaction, TransactionTypes } from '../../../types'; +import { TransactionTypes } from '../../../types'; import { formatAmount } from '../../../utils'; export const formatDate = (unixTimestamp: number): string => { @@ -9,7 +9,7 @@ export const formatDate = (unixTimestamp: number): string => { }; type TransactionFormatter = ( - transaction: AccountTransaction, + transaction: AccountTxTransaction, publicAddress: string, mainToken: string ) => string; @@ -57,7 +57,7 @@ const transactionMappers: Record = { }; export const formatTransaction = ( - transaction: AccountTransaction, + transaction: AccountTxTransaction, publicAddress: string, mainToken: string ): string => { diff --git a/packages/extension/src/components/pages/History/History.tsx b/packages/extension/src/components/pages/History/History.tsx index 84b7da39f..0b0f04f82 100644 --- a/packages/extension/src/components/pages/History/History.tsx +++ b/packages/extension/src/components/pages/History/History.tsx @@ -1,10 +1,10 @@ import { FC, useEffect, useState } from 'react'; +import { AccountTxTransaction } from 'xrpl'; import { Button, CircularProgress, Typography } from '@mui/material'; import * as Sentry from '@sentry/react'; import { LEDGER_CONNECTION_ERROR, useLedger, useNetwork } from '../../../contexts'; -import { AccountTransaction } from '../../../types'; import { InformationMessage } from '../../molecules'; import { TransactionListing } from '../../organisms'; import { PageWithHeader } from '../../templates'; @@ -13,7 +13,7 @@ export const History: FC = () => { const { getTransactions } = useLedger(); const { reconnectToNetwork } = useNetwork(); - const [transactions, setTransactions] = useState(null); + const [transactions, setTransactions] = useState(null); const [isTxFailed, setIsTxFailed] = useState(false); useEffect(() => { diff --git a/packages/extension/src/contexts/LedgerContext/LedgerContext.tsx b/packages/extension/src/contexts/LedgerContext/LedgerContext.tsx index 50529ff36..9739835ac 100644 --- a/packages/extension/src/contexts/LedgerContext/LedgerContext.tsx +++ b/packages/extension/src/contexts/LedgerContext/LedgerContext.tsx @@ -6,6 +6,8 @@ import { AccountDelete, AccountInfoResponse, AccountSet, + AccountTxRequest, + AccountTxTransaction, Client, LedgerEntryRequest, LedgerEntryResponse, @@ -47,7 +49,7 @@ import { XRPLTransaction } from '@gemwallet/constants'; -import { AccountTransaction, WalletLedger } from '../../types'; +import { WalletLedger } from '../../types'; import { toUIError } from '../../utils/errors'; import { resolveNFTData } from '../../utils/NFTDataResolver'; import { useNetwork } from '../NetworkContext'; @@ -142,7 +144,7 @@ export interface LedgerContextType { signMessage: (message: string) => string | undefined; estimateNetworkFees: (payload: Transaction) => Promise; getNFTs: (payload?: GetNFTRequest) => Promise; - getTransactions: () => Promise; + getTransactions: () => Promise; fundWallet: () => Promise; mintNFT: (payload: NFTokenMint) => Promise; createNFTOffer: (payload: NFTokenCreateOffer) => Promise; @@ -759,7 +761,7 @@ const LedgerProvider: FC = ({ children }) => { throw new Error('You need to have a wallet connected to make a transaction'); } else { // Prepare the transaction - const prepared = await client.request({ + const prepared = await client.request({ command: 'account_tx', account: wallet.publicAddress }); diff --git a/packages/extension/src/types/transaction.types.ts b/packages/extension/src/types/transaction.types.ts index 3f7b28ca4..c486bc88e 100644 --- a/packages/extension/src/types/transaction.types.ts +++ b/packages/extension/src/types/transaction.types.ts @@ -1,6 +1,3 @@ -import { Transaction, TransactionMetadata } from 'xrpl'; -import { ResponseOnlyTxInfo } from 'xrpl/dist/npm/models/common'; - export enum TransactionStatus { // waiting: waiting for a user interaction Waiting = 'WAITING', @@ -38,11 +35,3 @@ export enum TransactionTypes { TicketCreate = 'TicketCreate', TrustSet = 'TrustSet' } - -export interface AccountTransaction { - ledger_index: number; - meta: string | TransactionMetadata; - tx?: Transaction & ResponseOnlyTxInfo; - tx_blob?: string; - validated: boolean; -}