Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
19a32b6
Account page refactoring - account header, account summary and accoun…
kuan121 Sep 7, 2025
864d98d
no message
kuan121 Sep 30, 2025
e8e7fdd
Add console logs for asset components
kuan121 Sep 30, 2025
a6bbab4
Update heldIOUs
kuan121 Oct 1, 2025
0cda16e
Simplify NFT code
kuan121 Oct 1, 2025
3600f53
Handle transfer fee and frozen status for held IOUs
kuan121 Oct 1, 2025
8776f5b
Handle issued IOUs
kuan121 Oct 1, 2025
97f27ac
New commit
kuan121 Oct 1, 2025
997cd0e
Use hardcoded LOS endpoints temporarily in IOUs asset components
kuan121 Oct 1, 2025
b2a434e
Add spinning circle to asset tab button when data is loading in addit…
kuan121 Oct 2, 2025
51974bc
Rename CurrencyOption to NumberFormatOption
kuan121 Oct 2, 2025
a33e462
Extract common USD and Balance formatting logic into utils file
kuan121 Oct 2, 2025
0c23b57
Exclude frozen balance from Issued IOU supply
kuan121 Oct 2, 2025
05c3be6
Delete old account asset/token components
kuan121 Oct 2, 2025
df02a38
Update non en-US translation files
kuan121 Oct 2, 2025
b82de6e
Remove unused translations that were used in old account asset compon…
kuan121 Oct 2, 2025
d5573a6
Make the two Asset sections collapsable for better UX on mobile view
kuan121 Oct 2, 2025
0445c48
Use the USD price of IOU token from LOS Token API
kuan121 Oct 2, 2025
3224aa4
Increase limit of getNFTsIssuedByAccount from 25 to 50
kuan121 Oct 2, 2025
c30fe65
Read LOS API from env variable
kuan121 Oct 2, 2025
e6850ad
Move shortenXyz methods from rippled/lib/utils.js to shared/utils.js
kuan121 Oct 3, 2025
510d679
Replace browser built-in tooltip with the Explorer custom tooltip to …
kuan121 Oct 3, 2025
e153c3a
Add missing translations for account flag title and reorder some tran…
kuan121 Oct 4, 2025
13da037
Minor updates: reduce font-size for No Tokens Found text and replace …
kuan121 Oct 4, 2025
3b7e50a
Handle exception thrown from getBalances call
kuan121 Oct 4, 2025
70d9883
Create getAMMInfoByAMMAccount and getAMMInfoByAssets
kuan121 Oct 5, 2025
c98fdea
Minor refactoring of HeldLPTokens.tsx
kuan121 Oct 5, 2025
2c17472
Update how to detect LP Tokens in IOU components
kuan121 Oct 5, 2025
b540bd5
CSS update to transaction header to make it match other headers on th…
kuan121 Oct 6, 2025
dbfc506
Remove info console logs to avoid logging debug logs in production
kuan121 Oct 6, 2025
048e679
Rename shortAccount to displayText for Account.tsx
kuan121 Oct 7, 2025
3f40bc5
Add tests for formatTransferFee
kuan121 Oct 7, 2025
5b2df14
Add unit tests for FutureDataIcon.tsx
kuan121 Oct 7, 2025
28e2de2
Replace magic numbers with constants
kuan121 Oct 7, 2025
273bf74
Add unit tests for 7 asset table components and the main AccountAsset…
kuan121 Oct 7, 2025
3d5c5f5
Add unit test for AccountHeader.tsx
kuan121 Oct 8, 2025
1a85708
Fixed failed unit tests for AccountTransactionTable.tsx
kuan121 Oct 8, 2025
a28d6b2
More unit tests for AccountAsset index.tsx
kuan121 Oct 8, 2025
5be7e53
Add unit tests for AccountSummary components
kuan121 Oct 8, 2025
5a2b997
Fixed failed tests for Accounts/index.test.tsx and updated tests to R…
kuan121 Oct 8, 2025
89ed0bd
Fix typescript-check errors
kuan121 Oct 8, 2025
b4e7dd4
Fix linting errors
kuan121 Oct 8, 2025
4bc0d52
Add and updated unit tests for existing and new functions and components
kuan121 Oct 8, 2025
60db069
package-lock.json update by running `npm-install` to add new dependen…
kuan121 Oct 8, 2025
d38b28f
UX improvement to Held IOUs: show the IOUs table immediately, then pr…
kuan121 Oct 8, 2025
e9debef
Make changes to the titles, descriptions and status value to some Acc…
kuan121 Oct 9, 2025
41fed1a
Update unit tests for HeldIOUs.tsx to verify the logic of sorting by …
kuan121 Oct 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@ VITE_DATA_URL=https://data.xrpl.org/v1/network
# Whether to use ws instead of wss (boolean)
# Only used locally (the deployed Explorer requires wss)
VITE_INSECURE_WS=0

# LOS Endpoint URL
VITE_LOS_URL=https://los.dev.ripplex.io

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: could we update the example to the prod url just in the rare case that someone tries to use it?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For testing purpose, I think dev endpoint should be sufficient. In general, it's not a good idea to expose prod endpoint even though we have DDoS protection in place.

250 changes: 216 additions & 34 deletions package-lock.json

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,8 @@
"version": "1.5.0",
"dependencies": {
"@rollup/plugin-inject": "^5.0.5",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^12.1.5",
"@vitejs/plugin-react": "^4.2.1",
"@xrplf/isomorphic": "^1.0.0-beta.1",
"@xrplf/prettier-config": "^1.9.1",
"assert": "^2.1.0",
"autoprefixer": "^10.4.20",
"axios": "^1.6.5",
Expand Down Expand Up @@ -58,6 +55,9 @@
"@babel/eslint-parser": "^7.22.6",
"@babel/preset-env": "^7.25.7",
"@babel/preset-react": "^7.27.1",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^12.1.5",
"@testing-library/react-hooks": "^8.0.1",
"@types/create-hash": "^1.2.6",
"@types/enzyme": "^3.10.12",
"@types/jest": "^26.0.24",
Expand All @@ -69,6 +69,7 @@
"@types/testing-library__jest-dom": "^5.14.9",
"@typescript-eslint/eslint-plugin": "^8.32.1",
"@typescript-eslint/parser": "^8.32.1",
"@xrplf/prettier-config": "^1.9.1",
"babel-jest": "^29.7.0",
"cheerio": "1.0.0-rc.3",
"enzyme": "3.11.0",
Expand Down
91 changes: 86 additions & 5 deletions public/locales/ca-CA/translations.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
{
"action": "acció",
"assets": "Actius",
"assets.nft_tab_title": "NFTs",
"assets.issued_tab_title": "Tokens encunyats",
"assets.no_issued_message": "No s'han trobat Tokens",
"assets.no_nfts_message": "No s'han trobat NFTs",
"network": "Xarxa",
"amendments": "Amendments",
Expand Down Expand Up @@ -540,7 +537,6 @@
"holders": null,
"trustlines": null,
"website": null,
"assets.mpt_tab_title": null,
"assets.no_mpts_message": null,
"transaction_type_name_MPTokenIssuanceCreate": null,
"transaction_type_name_MPTokenIssuanceDestroy": null,
Expand Down Expand Up @@ -610,5 +606,90 @@
"vault_create_table_detail": null,
"withdraws": null,
"deletes": null,
"vault_delete_table_detail": null
"vault_delete_table_detail": null,
"account_flag_title_lsf_global_freeze": null,
"account_flag_title_lsf_disable_master": null,
"account_flag_title_lsf_default_ripple": null,
"account_flag_title_lsf_allow_trustline_clawback": null,
"account_flag_title_lsf_require_destination_tag": null,
"account_flag_title_lsf_no_freeze": null,
"account_flag_title_lsf_require_auth": null,
"account_flag_title_lsf_disallow_xrp": null,
"account_flag_title_lsf_disallow_incoming_trustline": null,
"account_flag_title_lsf_disallow_incoming_pay_chan": null,
"account_flag_title_lsf_disallow_incoming_nft_token_offer": null,
"account_flag_title_asf_authorized_nft_token_minter": null,
"account_flag_title_lsf_disallow_incoming_check": null,
"account_flag_title_lsf_deposit_auth": null,
"account_flag_title_asf_account_txn_id": null,
"account_flag_description_lsf_global_freeze": null,
"account_flag_description_lsf_disable_master": null,
"account_flag_description_lsf_default_ripple": null,
"account_flag_description_lsf_allow_trustline_clawback": null,
"account_flag_description_lsf_require_destination_tag": null,
"account_flag_description_lsf_no_freeze": null,
"account_flag_description_lsf_require_auth": null,
"account_flag_description_lsf_disallow_xrp": null,
"account_flag_description_lsf_disallow_incoming_trustline": null,
"account_flag_description_lsf_disallow_incoming_pay_chan": null,
"account_flag_description_lsf_disallow_incoming_nft_token_offer": null,
"account_flag_description_asf_authorized_nft_token_minter": null,
"account_flag_description_lsf_disallow_incoming_check": null,
"account_flag_description_lsf_deposit_auth": null,
"account_flag_description_asf_account_txn_id": null,
"account_page_address": null,
"account_page_address_tag": null,
"account_page_classic_address": null,
"account_page_deleted_account_label": null,
"account_page_deleted_account_warning": null,
"account_page_extended_address": null,
"account_page_domain": null,
"account_page_reserve_balance": null,
"account_page_xrp_balance": null,
"account_page_xrp_balance_in_usd": null,
"account_page_account_properties": null,
"account_page_flags": null,
"account_page_flag_status_enabled": null,
"account_page_flag_status_disabled": null,
"account_page_signers": null,
"account_page_signer_weight": null,
"account_page_details": null,
"account_page_current_sequence": null,
"account_page_ticket_count": null,
"account_page_email_hash": null,
"account_page_payment_channels": null,
"account_page_payment_channels_text": null,
"account_page_nft_minter": null,
"account_page_asset_held_title": null,
"account_page_asset_issued_title": null,
"account_page_asset_tab_iou": null,
"account_page_asset_tab_lptoken": null,
"account_page_asset_tab_mpt": null,
"account_page_asset_tab_nft": null,
"account_page_asset_table_column_amm_instance": null,
"account_page_asset_table_column_amm_pair": null,
"account_page_asset_table_column_asset_class": null,
"account_page_asset_table_column_balance": null,
"account_page_asset_table_column_balance_usd": null,
"account_page_asset_table_column_currency_code": null,
"account_page_asset_table_column_frozen": null,
"account_page_asset_table_column_highest_bid": null,
"account_page_asset_table_column_holders": null,
"account_page_asset_table_column_issuer": null,
"account_page_asset_table_column_locked": null,
"account_page_asset_table_column_lowest_ask": null,
"account_page_asset_table_column_price_usd": null,
"account_page_asset_table_column_share": null,
"account_page_asset_table_column_supply": null,
"account_page_asset_table_column_ticker": null,
"account_page_asset_table_column_token_id": null,
"account_page_asset_table_column_transfer_fee": null,
"account_page_asset_table_column_trustlines": null,
"account_page_asset_table_column_url": null,
"account_page_asset_table_mpt_locked_global": null,
"account_page_asset_table_mpt_locked_individual": null,
"account_page_asset_table_no_iou": null,
"account_page_asset_table_no_lptoken": null,
"account_page_asset_table_no_mpt": null,
"account_page_asset_table_no_nft": null
}
91 changes: 86 additions & 5 deletions public/locales/en-US/translations.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
{
"action": "action",
"assets": "Assets",
"assets.nft_tab_title": "Non-Fungible Tokens",
"assets.mpt_tab_title": "Multi-Purpose Tokens",
"assets.issued_tab_title": "Issued Tokens",
"assets.no_issued_message": "No tokens found.",
"assets.no_nfts_message": "No NFTs found.",
"assets.no_mpts_message": "No MPTs found.",
"network": "Network",
Expand Down Expand Up @@ -617,5 +613,90 @@
"vault_create_table_detail": "vault for <Asset/>",
"withdraws": "withdraws",
"deletes": "deletes",
"vault_delete_table_detail": "vault with id"
"vault_delete_table_detail": "vault with id",
"account_flag_title_lsf_global_freeze": "Global Freeze",
"account_flag_title_lsf_disable_master": "Master Key Disabled",
"account_flag_title_lsf_default_ripple": "Rippling",
"account_flag_title_lsf_allow_trustline_clawback": "Clawback",
"account_flag_title_lsf_require_destination_tag": "Require Destination Tag",
"account_flag_title_lsf_no_freeze": "No Freeze",
"account_flag_title_lsf_require_auth": "Require Authorization",
"account_flag_title_lsf_disallow_xrp": "No XRP Allowed",
"account_flag_title_lsf_disallow_incoming_trustline": "Block Trustlines",
"account_flag_title_lsf_disallow_incoming_pay_chan": "Block Payment Channels",
"account_flag_title_lsf_disallow_incoming_nft_token_offer": "Block NFT Offers",
"account_flag_title_asf_authorized_nft_token_minter": "NFT Minter",
"account_flag_title_lsf_disallow_incoming_check": "Block Checks",
"account_flag_title_lsf_deposit_auth": "Deposit Authorization",
"account_flag_title_asf_account_txn_id": "Track Account Latest Transaction",
"account_flag_description_lsf_global_freeze": "Freeze all assets issued by this account.",
"account_flag_description_lsf_disable_master": "Disable the account's master key pair.",
"account_flag_description_lsf_default_ripple": "Enable rippling on this account's trust lines by default.",
"account_flag_description_lsf_allow_trustline_clawback": "Allow account to claw back tokens it has issued.",
"account_flag_description_lsf_require_destination_tag": "Require a destination tag to send transactions to this account.",
"account_flag_description_lsf_no_freeze": "Permanently give up the ability to freeze individual trust lines or disable Global Freeze. This flag can never be disabled after being enabled.",
Comment thread
Patel-Raj11 marked this conversation as resolved.
"account_flag_description_lsf_require_auth": "Require authorization for users to hold balances issued by this address.",
"account_flag_description_lsf_disallow_xrp": "XRP should not be sent to this account.",
"account_flag_description_lsf_disallow_incoming_trustline": "Block incoming trust lines.",
"account_flag_description_lsf_disallow_incoming_pay_chan": "Block incoming Payment Channels.",
"account_flag_description_lsf_disallow_incoming_nft_token_offer": "Block incoming NFTokenOffers.",
"account_flag_description_asf_authorized_nft_token_minter": "Enable to allow another account to mint non-fungible tokens (NFTokens) on this account's behalf.",
"account_flag_description_lsf_disallow_incoming_check": "Block incoming Checks.",
"account_flag_description_lsf_deposit_auth": "Enable Deposit Authorization on this account.",
"account_flag_description_asf_account_txn_id": "Track the ID of this account's most recent transaction.",
"account_page_address": "Address",
"account_page_address_tag": "Tag",
"account_page_classic_address": "Classic Address",
"account_page_deleted_account_label": "Account Deleted",
"account_page_deleted_account_warning": "This account has been deleted from the XRP Ledger. Historical data is shown for reference only.",
"account_page_extended_address": "Extended Address (X-Address)",
"account_page_domain": "Domain",
"account_page_reserve_balance": "Reserve Balance",
"account_page_xrp_balance": "XRP Balance",
"account_page_xrp_balance_in_usd": "XRP Balance (USD)",
"account_page_account_properties": "Account Properties",
"account_page_flags": "Flags",
"account_page_flag_status_enabled": "Enabled",
"account_page_flag_status_disabled": "Disabled",
"account_page_signers": "Signers",
"account_page_signer_weight": "Weight",
"account_page_details": "Details",
"account_page_current_sequence": "Current Sequence",
"account_page_ticket_count": "Ticket Count",
"account_page_email_hash": "Email Hash",
"account_page_payment_channels": "Payment Channels",
"account_page_payment_channels_text": "{{currency}} available in {{number}} channel(s)",
"account_page_nft_minter": "NFT Minter",
"account_page_asset_held_title": "Assets Held",
"account_page_asset_issued_title": "Assets Issued",
"account_page_asset_tab_iou": "IOUs ({{count}})",
"account_page_asset_tab_lptoken": "LP Tokens ({{count}})",
"account_page_asset_tab_mpt": "MPTs ({{count}})",
"account_page_asset_tab_nft": "NFTs ({{count}})",
"account_page_asset_table_column_amm_instance": "AMM Instance",
"account_page_asset_table_column_amm_pair": "AMM Pair",
"account_page_asset_table_column_asset_class": "Asset Class",
"account_page_asset_table_column_balance": "Balance",
"account_page_asset_table_column_balance_usd": "Balance (USD)",
"account_page_asset_table_column_currency_code": "Currency Code",
"account_page_asset_table_column_frozen": "Frozen",
"account_page_asset_table_column_highest_bid": "Highest Bid",
"account_page_asset_table_column_holders": "Holders",
"account_page_asset_table_column_issuer": "Issuer",
"account_page_asset_table_column_locked": "Locked",
"account_page_asset_table_column_lowest_ask": "Lowest Ask",
"account_page_asset_table_column_price_usd": "Price (USD)",
"account_page_asset_table_column_share": "Share (%)",
"account_page_asset_table_column_supply": "Supply",
"account_page_asset_table_column_ticker": "Ticker",
"account_page_asset_table_column_token_id": "Token ID",
"account_page_asset_table_column_transfer_fee": "Transfer Fee",
"account_page_asset_table_column_trustlines": "Trustlines",
"account_page_asset_table_column_url": "URL",
"account_page_asset_table_mpt_locked_global": "Global",
"account_page_asset_table_mpt_locked_individual": "Individual",
"account_page_asset_table_no_iou": "No IOUs found",
"account_page_asset_table_no_lptoken": "No LP Tokens found",
"account_page_asset_table_no_mpt": "No MPTs found",
"account_page_asset_table_no_nft": "No NFTs found"
}
91 changes: 86 additions & 5 deletions public/locales/es-ES/translations.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
{
"action": "acción",
"assets": "Activos",
"assets.nft_tab_title": "Tokens No-Fungibles",
"assets.issued_tab_title": "Tokens Emitidos",
"assets.no_issued_message": "No se han encontrado tokens.",
"assets.no_nfts_message": "NFTs no encontrados.",
"network": "Red",
"amendments": null,
Expand Down Expand Up @@ -551,7 +548,6 @@
"can_transfer": "Puede Transferir",
"can_clawback": "Puede Recuperar",
"search_results_banner": "¡La búsqueda de tokens por nombre y cuenta ya está disponible! Intenta buscar USD",
"assets.mpt_tab_title": null,
"assets.no_mpts_message": null,
"transaction_type_name_MPTokenIssuanceCreate": null,
"transaction_type_name_MPTokenIssuanceDestroy": null,
Expand Down Expand Up @@ -611,5 +607,90 @@
"vault_create_table_detail": null,
"withdraws": null,
"deletes": null,
"vault_delete_table_detail": null
"vault_delete_table_detail": null,
"account_flag_title_lsf_global_freeze": null,
"account_flag_title_lsf_disable_master": null,
"account_flag_title_lsf_default_ripple": null,
"account_flag_title_lsf_allow_trustline_clawback": null,
"account_flag_title_lsf_require_destination_tag": null,
"account_flag_title_lsf_no_freeze": null,
"account_flag_title_lsf_require_auth": null,
"account_flag_title_lsf_disallow_xrp": null,
"account_flag_title_lsf_disallow_incoming_trustline": null,
"account_flag_title_lsf_disallow_incoming_pay_chan": null,
"account_flag_title_lsf_disallow_incoming_nft_token_offer": null,
"account_flag_title_asf_authorized_nft_token_minter": null,
"account_flag_title_lsf_disallow_incoming_check": null,
"account_flag_title_lsf_deposit_auth": null,
"account_flag_title_asf_account_txn_id": null,
"account_flag_description_lsf_global_freeze": null,
"account_flag_description_lsf_disable_master": null,
"account_flag_description_lsf_default_ripple": null,
"account_flag_description_lsf_allow_trustline_clawback": null,
"account_flag_description_lsf_require_destination_tag": null,
"account_flag_description_lsf_no_freeze": null,
"account_flag_description_lsf_require_auth": null,
"account_flag_description_lsf_disallow_xrp": null,
"account_flag_description_lsf_disallow_incoming_trustline": null,
"account_flag_description_lsf_disallow_incoming_pay_chan": null,
"account_flag_description_lsf_disallow_incoming_nft_token_offer": null,
"account_flag_description_asf_authorized_nft_token_minter": null,
"account_flag_description_lsf_disallow_incoming_check": null,
"account_flag_description_lsf_deposit_auth": null,
"account_flag_description_asf_account_txn_id": null,
"account_page_address": null,
"account_page_address_tag": null,
"account_page_classic_address": null,
"account_page_deleted_account_label": null,
"account_page_deleted_account_warning": null,
"account_page_extended_address": null,
"account_page_domain": null,
"account_page_reserve_balance": null,
"account_page_xrp_balance": null,
"account_page_xrp_balance_in_usd": null,
"account_page_account_properties": null,
"account_page_flags": null,
"account_page_flag_status_enabled": null,
"account_page_flag_status_disabled": null,
"account_page_signers": null,
"account_page_signer_weight": null,
"account_page_details": null,
"account_page_current_sequence": null,
"account_page_ticket_count": null,
"account_page_email_hash": null,
"account_page_payment_channels": null,
"account_page_payment_channels_text": null,
"account_page_nft_minter": null,
"account_page_asset_held_title": null,
"account_page_asset_issued_title": null,
"account_page_asset_tab_iou": null,
"account_page_asset_tab_lptoken": null,
"account_page_asset_tab_mpt": null,
"account_page_asset_tab_nft": null,
"account_page_asset_table_column_amm_instance": null,
"account_page_asset_table_column_amm_pair": null,
"account_page_asset_table_column_asset_class": null,
"account_page_asset_table_column_balance": null,
"account_page_asset_table_column_balance_usd": null,
"account_page_asset_table_column_currency_code": null,
"account_page_asset_table_column_frozen": null,
"account_page_asset_table_column_highest_bid": null,
"account_page_asset_table_column_holders": null,
"account_page_asset_table_column_issuer": null,
"account_page_asset_table_column_locked": null,
"account_page_asset_table_column_lowest_ask": null,
"account_page_asset_table_column_price_usd": null,
"account_page_asset_table_column_share": null,
"account_page_asset_table_column_supply": null,
"account_page_asset_table_column_ticker": null,
"account_page_asset_table_column_token_id": null,
"account_page_asset_table_column_transfer_fee": null,
"account_page_asset_table_column_trustlines": null,
"account_page_asset_table_column_url": null,
"account_page_asset_table_mpt_locked_global": null,
"account_page_asset_table_mpt_locked_individual": null,
"account_page_asset_table_no_iou": null,
"account_page_asset_table_no_lptoken": null,
"account_page_asset_table_no_mpt": null,
"account_page_asset_table_no_nft": null
}
Loading