From 6162c2d0d5fcb65fc8d3660c7b773a76158840eb Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Thu, 13 Aug 2020 22:57:53 +0800 Subject: [PATCH] Add token registry to explorer (#11612) --- explorer/public/tokens/serum-32.png | Bin 0 -> 725 bytes explorer/public/tokens/serum-64.png | Bin 0 -> 3326 bytes explorer/src/components/SearchBar.tsx | 81 +++++-- .../components/account/OwnedTokensCard.tsx | 228 +++++++++++++++--- .../account/TokenAccountSection.tsx | 60 +++-- .../components/account/TokenHistoryCard.tsx | 2 +- .../account/TokenLargestAccountsCard.tsx | 7 +- explorer/src/components/common/Address.tsx | 19 +- explorer/src/components/common/Signature.tsx | 1 - explorer/src/pages/AccountDetailsPage.tsx | 46 +++- explorer/src/scss/_solana-variables-dark.scss | 1 + explorer/src/scss/_solana.scss | 17 ++ explorer/src/tokenRegistry.ts | 38 +++ explorer/src/utils/tx.ts | 36 ++- explorer/src/validators/accounts/token.ts | 13 +- 15 files changed, 438 insertions(+), 111 deletions(-) create mode 100644 explorer/public/tokens/serum-32.png create mode 100644 explorer/public/tokens/serum-64.png create mode 100644 explorer/src/tokenRegistry.ts diff --git a/explorer/public/tokens/serum-32.png b/explorer/public/tokens/serum-32.png new file mode 100644 index 0000000000000000000000000000000000000000..83881ecf015c83c65b65639b20a8ac517737b62d GIT binary patch literal 725 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 IM6N<$f__WePXGV_ literal 0 HcmV?d00001 diff --git a/explorer/src/components/SearchBar.tsx b/explorer/src/components/SearchBar.tsx index 8d6ed7dd4..3b27b4755 100644 --- a/explorer/src/components/SearchBar.tsx +++ b/explorer/src/components/SearchBar.tsx @@ -3,13 +3,16 @@ import bs58 from "bs58"; import { useHistory, useLocation } from "react-router-dom"; import Select, { InputActionMeta, ActionMeta, ValueType } from "react-select"; import StateManager from "react-select"; -import { PROGRAM_IDS, SYSVAR_IDS } from "utils/tx"; +import { PROGRAM_IDS, SYSVAR_IDS, ProgramName } from "utils/tx"; +import { TokenRegistry } from "tokenRegistry"; +import { Cluster, useCluster } from "providers/cluster"; export function SearchBar() { const [search, setSearch] = React.useState(""); const selectRef = React.useRef | null>(null); const history = useHistory(); const location = useLocation(); + const { cluster } = useCluster(); const onChange = ({ pathname }: ValueType, meta: ActionMeta) => { if (meta.action === "select-option") { @@ -29,9 +32,9 @@ export function SearchBar() {