diff --git a/.vscode/settings.json b/.vscode/settings.json index 73e6a5b81..6ef34251c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -65,6 +65,7 @@ "Decomp", "esbuild", "fakenode", + "fullfillment", "Hant", "healthz", "hexbin", @@ -74,12 +75,19 @@ "nftoken", "nodemodules", "pageview", + "paychannel", "paychannels", + "paystring", "paystrings", + "setfee", "stylelint", "svgr", "topojson", + "trustlines", + "Txns", + "unauth", "VITE", + "Xahau", "xchain", "xchainbridge" ] diff --git a/public/locales/ca-CA/translations.json b/public/locales/ca-CA/translations.json index a4b62daf5..4f4e91820 100644 --- a/public/locales/ca-CA/translations.json +++ b/public/locales/ca-CA/translations.json @@ -40,7 +40,6 @@ "30D": "30D", "total_transactions": "# de Txns", "total_fees": "Total de comissions", - "async_component_timedout": "La càrrega del component ha trigat més del que s'esperava", "async_component_failed": "Error en carregar el component", "account_not_found": "No s'ha trobat el compte", "account_empty_title": "No s'ha proporcionat l'ID del compte", diff --git a/public/locales/en-US/translations.json b/public/locales/en-US/translations.json index c7e8e0642..9192f4ca5 100644 --- a/public/locales/en-US/translations.json +++ b/public/locales/en-US/translations.json @@ -40,7 +40,6 @@ "30D": "30D", "total_transactions": "# of Txns", "total_fees": "Total Fees", - "async_component_timedout": "Loading component took longer than expected", "async_component_failed": "Failed to load Component", "account_not_found": "Account not found", "account_empty_title": "No account ID was supplied", @@ -246,7 +245,7 @@ "number_of_affected_node": "It affected {{count}} nodes in the ledger:", "nodes_type": "{{action}} nodes", "node_meta_type": "It {{action}} a node with type", - "transaction_balance_line_one": "It <1><0>{{action}} a <3><0>{{currency}} RippleState node between <5><0>{{account}} and <7><0>{{counterAccount}}", + "transaction_balance_line_one": "It <1><0>{{action}} a <4><0>{{currency}} RippleState node between <6><0>{{account}} and <8><0>{{counterAccount}}", "transaction_balance_line_two": "Balance changed by <1><0>{{change}} from <3><0>{{previousBalance}} to <5><0>{{finalBalance}}", "transaction_owned_directory": "It {{action}} a DirectoryNode node owned by", "transaction_unowned_directory": "It {{action}} a DirectoryNode node", @@ -255,13 +254,13 @@ "account_balance_increased": "Balance increased by <1><0>{{difference}}<1><0>{{currency}} from <3><0>{{previous}}<1><0>{{currency}} to <5><0>{{final}}<1><0>{{currency}}", "account_balance_decreased": "Balance decreased by <1><0>{{difference}}<1><0>{{currency}} from <3><0>{{previous}}<1><0>{{currency}} to <5><0>{{final}}<1><0>{{currency}}", "decreased_from_to": "decreased by <1><0>{{change}} from <3><0>{{previous}} to <5><0>{{final}}", - "offer_node_meta": "It <1><0>{{action}} a <3><0>{{pair}} offer node owned by <5><0>{{account}} with sequence # <7><0>{{sequence}}", + "offer_node_meta": "It {{action}} a / offer node owned by with sequence # {{sequence}}", "offer_replaces": "This offer replaces the existing offer #", - "offer_partially_filled": "The offer was partially filled", - "offer_filled": "The offer was filled", - "offer_cancelled": "The offer was cancelled", + "offer_partially_filled": "The offer was partially filled.", + "offer_filled": "The offer was filled.", + "offer_cancelled": "The offer was cancelled.", "offer_replaced": "This offer was replaced by the new offer #", - "offer_lack_of_funds": "The offer was partially filled, then cancelled due to lack of funds", + "offer_lack_of_funds": "The offer was partially filled, then cancelled due to lack of funds.", "transaction_sequence": "The transaction's sequence number is", "trust_set_description": "It establishes <1><0>{{amount}} as the maximum amount of <3><0>{{currency}} from <5><0>{{issuer}} that <7><0>{{account}} is willing to hold", "payment_desc_line_1": "The payment is from to ", @@ -279,12 +278,12 @@ "escrow_is_from": "The escrow is from <1><0>{{account}} to <3><0>{{destination}}", "escrow_is_created_by": "The escrow was created by <1><0>{{account}} and the funds will be returned to the same account", "escrowed_amount": "It escrowed", - "escrow_condition": "The escrow has a fullfilment condition of", + "escrow_condition": "The escrow has a fullfillment condition of", "describe_cancel_after": "It can be cancelled after", "describe_finish_after": "It can be finished after", "escrow_completion_desc": "Completion was triggered by", "escrow_completion_desc_2": "The escrowed amount of <1><0>{{amount}} was delivered to <3><0>{{destination}}", - "escrow_finish_fullfillment_desc": "The escrow condition is fullfilled by", + "escrow_finish_fullfillment_desc": "The escrow condition is fulfilled by", "escrow_cancellation_desc": "Cancellation was triggered by", "escrow_cancellation_desc_2": "The escrowed amount of <1><0>{{amount}} was returned to <3><0>{{owner}}", "escrow_after_transaction_cost": "after transaction cost", diff --git a/public/locales/es-ES/translations.json b/public/locales/es-ES/translations.json index 4245651b0..820a399be 100644 --- a/public/locales/es-ES/translations.json +++ b/public/locales/es-ES/translations.json @@ -40,7 +40,6 @@ "30D": "30D", "total_transactions": "# de Txs", "total_fees": "Comisiones Totales", - "async_component_timedout": "Cargar el componente tomó más tiempo del esperado", "async_component_failed": "Fallo al cargar Componente", "account_not_found": "Cuenta no encontrada", "account_empty_title": "El ID de la cuenta no fue facilitado", diff --git a/public/locales/fr-FR/translations.json b/public/locales/fr-FR/translations.json index 3265e919e..0421aacc3 100644 --- a/public/locales/fr-FR/translations.json +++ b/public/locales/fr-FR/translations.json @@ -39,8 +39,7 @@ "24H": "24H", "30D": "30J", "total_transactions": "# de Txns", - "total_fees": "Frais Totaux", - "async_component_timedout": "Le chargement du composant a pris plus de temps que prévu", + "total_fees": "Frais Totaux",\ "async_component_failed": "Impossible de charger le composant", "account_not_found": "Compte non trouvé", "account_empty_title": "Aucun id de compte n'a été fourni", diff --git a/public/locales/ja-JP/translations.json b/public/locales/ja-JP/translations.json index 76c396048..7f6064c0b 100644 --- a/public/locales/ja-JP/translations.json +++ b/public/locales/ja-JP/translations.json @@ -40,7 +40,6 @@ "30D": "30日", "total_transactions": "トランザクション数", "total_fees": "合計トランザクション手数料", - "async_component_timedout": "コンポーネントの読み込みに通常以上の時間がかかりました", "async_component_failed": "コンポーネントの読み込みに失敗しました", "account_not_found": "アカウントが見つかりません", "account_empty_title": "アカウントIDが入力されていません", diff --git a/public/locales/ko-KR/translations.json b/public/locales/ko-KR/translations.json index 73951775e..2a9a73711 100644 --- a/public/locales/ko-KR/translations.json +++ b/public/locales/ko-KR/translations.json @@ -42,7 +42,6 @@ "30D": "30일", "total_transactions": "트랜잭션 수", "total_fees": "총 수수료", - "async_component_timedout": "컴포넌트 로딩이 예상보다 오래 걸렸습니다", "async_component_failed": "컴포넌트 로드 실패", "account_not_found": "계정을 찾을 수 없습니다", "account_empty_title": "계정 ID가 제공되지 않았습니다", diff --git a/src/containers/Footer/index.jsx b/src/containers/Footer/index.tsx similarity index 100% rename from src/containers/Footer/index.jsx rename to src/containers/Footer/index.tsx diff --git a/src/containers/Transactions/DetailTab/Meta/AccountRoot.jsx b/src/containers/Transactions/DetailTab/Meta/AccountRoot.tsx similarity index 100% rename from src/containers/Transactions/DetailTab/Meta/AccountRoot.jsx rename to src/containers/Transactions/DetailTab/Meta/AccountRoot.tsx diff --git a/src/containers/Transactions/DetailTab/Meta/DirectoryNode.jsx b/src/containers/Transactions/DetailTab/Meta/DirectoryNode.tsx similarity index 77% rename from src/containers/Transactions/DetailTab/Meta/DirectoryNode.jsx rename to src/containers/Transactions/DetailTab/Meta/DirectoryNode.tsx index 62c6ec23f..70dd1a68a 100644 --- a/src/containers/Transactions/DetailTab/Meta/DirectoryNode.jsx +++ b/src/containers/Transactions/DetailTab/Meta/DirectoryNode.tsx @@ -1,6 +1,12 @@ +import { TFunction } from 'i18next' import { Account } from '../../../shared/components/Account' -const render = (t, action, node, index) => { +const render = ( + t: TFunction<'translations', undefined>, + action: string, + node: any, + index: number, +) => { const fields = node.FinalFields || node.NewFields return (
  • diff --git a/src/containers/Transactions/DetailTab/Meta/Offer.jsx b/src/containers/Transactions/DetailTab/Meta/Offer.jsx index 5131c4868..94c897ded 100644 --- a/src/containers/Transactions/DetailTab/Meta/Offer.jsx +++ b/src/containers/Transactions/DetailTab/Meta/Offer.jsx @@ -7,6 +7,7 @@ import { } from '../../../shared/transactionUtils' import { localizeNumber } from '../../../shared/utils' import { Account } from '../../../shared/components/Account' +import Currency from '../../../shared/components/Currency' const normalize = (value, currency) => currency === 'XRP' ? (value / XRP_BASE).toString() : value @@ -24,21 +25,18 @@ const renderChanges = (t, language, node, index) => { const changePays = normalize(prevPays - finalPays, paysCurrency) const changeGets = normalize(prevGets - finalGets, getsCurrency) - const renderIssuer = (issuer) => - issuer ? ( - <> - . - - - ) : null - if (prevPays && finalPays) { const options = { ...CURRENCY_OPTIONS, currency: paysCurrency } meta.push(
  • TakerPays - {paysCurrency} - {renderIssuer(final.TakerPays.issuer)}{' '} + + + {' '} decreased by {{ change: localizeNumber(changePays, language, options) }} @@ -71,8 +69,13 @@ const renderChanges = (t, language, node, index) => { meta.push(
  • TakerGets - {getsCurrency} - {renderIssuer(final.TakerGets.issuer)}{' '} + + + {' '} decreased by {{ change: localizeNumber(changeGets, language, options) }} @@ -115,9 +118,6 @@ const render = (t, language, action, node, index, tx) => { ) const invert = CURRENCY_ORDER.indexOf(getsCurrency) > CURRENCY_ORDER.indexOf(paysCurrency) - const pair = invert - ? `${getsCurrency}/${paysCurrency}` - : `${paysCurrency}/${getsCurrency}` if ( action === 'created' && @@ -175,12 +175,35 @@ const render = (t, language, action, node, index, tx) => { return (
  • - - It {action} a {pair} - owned by - - with sequence # {{ sequence: fields.Sequence }} - + + ), + Currency2: ( + + ), + Account: , + }} + />
      {lines}
  • ) diff --git a/src/containers/Transactions/DetailTab/Meta/RippleState.jsx b/src/containers/Transactions/DetailTab/Meta/RippleState.jsx index 6d50ce114..3261cde8a 100644 --- a/src/containers/Transactions/DetailTab/Meta/RippleState.jsx +++ b/src/containers/Transactions/DetailTab/Meta/RippleState.jsx @@ -1,6 +1,7 @@ import { Trans } from 'react-i18next' import { Account } from '../../../shared/components/Account' import { localizeNumber, computeBalanceChange } from '../../../shared/utils' +import Currency from '../../../shared/components/Currency' const render = (t, language, action, node, index) => { const { @@ -15,8 +16,11 @@ const render = (t, language, action, node, index) => { const line1 = ( - It {action} a {currency} - ripplestate node between + It {action} a{' '} + + + + RippleState node between and diff --git a/src/containers/Transactions/DetailTab/Meta/index.tsx b/src/containers/Transactions/DetailTab/Meta/index.tsx index 24335e480..e54255ad2 100644 --- a/src/containers/Transactions/DetailTab/Meta/index.tsx +++ b/src/containers/Transactions/DetailTab/Meta/index.tsx @@ -1,5 +1,6 @@ import { FC } from 'react' import { useTranslation } from 'react-i18next' +import { TFunction } from 'i18next' import renderAccountRoot from './AccountRoot' import renderDirectoryNode from './DirectoryNode' import renderOffer from './Offer' @@ -8,7 +9,12 @@ import renderPayChannel from './PayChannel' import { groupAffectedNodes } from '../../../shared/transactionUtils' import { useLanguage } from '../../../shared/hooks' -const renderDefault = (t, action, node, index) => ( +const renderDefault = ( + t: TFunction<'translations', undefined>, + action: string, + node: any, + index: number, +) => (
  • {t('node_meta_type', { action })} {node.LedgerEntryType}
  • @@ -18,7 +24,7 @@ export const TransactionMeta: FC<{ data: any }> = ({ data }) => { const language = useLanguage() const { t } = useTranslation() - const renderNodesMeta = (action, list, tx) => { + const renderNodesMeta = (action: string, list: any[], tx: any) => { const meta = list.map((node, index) => { switch (node.LedgerEntryType) { case 'AccountRoot': diff --git a/src/containers/shared/components/Transaction/OfferCreate/Description.tsx b/src/containers/shared/components/Transaction/OfferCreate/Description.tsx index aa31bc17f..846d1fec9 100644 --- a/src/containers/shared/components/Transaction/OfferCreate/Description.tsx +++ b/src/containers/shared/components/Transaction/OfferCreate/Description.tsx @@ -4,7 +4,6 @@ import { DATE_OPTIONS, CURRENCY_ORDER, XRP_BASE, - normalizeAmount, } from '../../../transactionUtils' import { Account } from '../../Account' import { @@ -12,6 +11,9 @@ import { TransactionDescriptionProps, } from '../types' import { convertRippleDate } from '../../../../../rippled/lib/utils' +import Currency from '../../Currency' +import { Amount } from '../../Amount' +import { formatAmount } from '../../../../../rippled/lib/txSummary/formatAmount' const normalize = (amount: any) => amount.value || amount / XRP_BASE @@ -33,9 +35,37 @@ const Description: TransactionDescriptionComponent = ( if (invert) { rate = 1 / rate - pair = `${getsCurrency}/${paysCurrency}` + pair = ( + + + / + + + ) } else { - pair = `${paysCurrency}/${getsCurrency}` + pair = ( + + + / + + + ) } const renderLine4 = () => { @@ -66,13 +96,11 @@ const Description: TransactionDescriptionComponent = ( offered to pay - {normalizeAmount(data.tx.TakerGets, language)} - {data.tx.TakerGets.currency || 'XRP'} + in order to receive - {normalizeAmount(data.tx.TakerPays, language)} - {data.tx.TakerPays.currency || 'XRP'} +
    @@ -80,7 +108,7 @@ const Description: TransactionDescriptionComponent = ( {t('offer_create_desc_line_2')} {rate.toPrecision(5)} - {pair} + {pair} {data.tx.OfferSequence && (