Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 5 additions & 3 deletions src/api/hooks/useGetANS.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {useQuery} from "@tanstack/react-query";
import {knownAddresses, NetworkName, scamAddresses} from "../../constants";
import {NetworkName, scamAddresses} from "../../constants";
import {useGlobalState} from "../../global-config/GlobalConfig";
import {
fetchJsonResponse,
Expand All @@ -9,6 +9,7 @@ import {
} from "../../utils";
import {ResponseError} from "../client";
import {NameType} from "../../components/TitleHashButton";
import { useGetVerifiedAddresses } from "./useGetVerifiedAddresses";

const TTL = 60000; // 1 minute

Expand All @@ -35,13 +36,14 @@ export function useGetNameFromAddress(
nameType = NameType.ANY,
) {
const [state] = useGlobalState();
const {data: verifiedAddresses} = useGetVerifiedAddresses();
const queryResult = useQuery<string | null, ResponseError>({
queryKey: ["MNSName", address, shouldCache, state.network_name],
queryKey: ["MNSName", address, shouldCache, state.network_name, verifiedAddresses],
queryFn: () => {
const standardizedAddress = standardizeAddress(address);
const lowercaseStandardizedAddress = standardizedAddress.toLowerCase();
if (nameType !== NameType.ANS) {
const knownName = knownAddresses[lowercaseStandardizedAddress];
const knownName = verifiedAddresses?.[lowercaseStandardizedAddress];
if (knownName) {
return knownName;
}
Expand Down
36 changes: 36 additions & 0 deletions src/api/hooks/useGetVerifiedAddresses.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import {useQuery} from "@tanstack/react-query";
import {knownAddresses} from "../../constants";

export function useGetVerifiedAddresses() {
return useQuery<Record<string, string>>({
queryKey: ["verified_addresses"],
placeholderData: knownAddresses,
refetchOnMount: true,
queryFn: async () => {
console.log("fetching verified addresses");
let res;
try {
// TODO: Replace with the actual URL for verified addresses
res = await fetch(
"https://raw.githubusercontent.com/chiumax/nightly-sandbox/refs/heads/main/addr.json",
);
} catch (error) {
console.error("Failed to fetch verified addresses:", error);
return knownAddresses;
}

if (!res.ok) {
throw new Error("Failed to fetch verified addresses");
}

const addresses: Record<string, string> = await res.json();
console.log("addresses", addresses);
return {
...knownAddresses,
...addresses,
};
},
staleTime: 1000 * 60 * 60, // 1 hour
gcTime: 1000 * 60 * 60 * 24, // 24 hours
});
}
26 changes: 0 additions & 26 deletions src/constants.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -136,32 +136,6 @@ export const knownAddresses: Record<string, string> = {
"MOVE Coin Fungible Asset",
"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff":
"Burn Address",
"0x84b1675891d370d5de8f169031f9c3116d7add256ecf50a4bc71e3135ddba6e0":
"Bybit 1",
"0xbeda85a0a4e68adb980382a7182019a7b9a2ad4bba36f41024338dea5ff1eaac":
"Kucoin 1",
"0x0cf869189c785beaaad2f5c636ced4805aeae9cbf49070dc93aed2f16b99012a":
"Gate 1",
"0x31d0a30ae53e2ae852fcbdd1fce75a4ea6ad81417739ef96883eba9574ffe31e":
"MovePosition Vault 1",
"0x58739edcac2f86e62342466f20809b268430aedf32937eba32eaac7e0bbf5233":
"Echelon Vault 1",
"0x574ecf25ca263b4d9cbd43ded90bba6a52309e0cba2213f9606e4b4a3a20ffae":
"Layerbank Vault 1",
"0x79eb0f69a65a088d40776e1789bbc36f247bc5ec0eb2fa5fdbeaa1b1bb3a965a":
"MEXC 1",
"0x03f7399a0d3d646ce94ee0badf16c4c3f3c656fe3a5e142e83b5ebc011aa8b3d":
"Mosaic",
"0x26a95d4bd7d7fc3debf6469ff94837e03e887088bef3a3f2d08d1131141830d3":
"Mosaic AMM",
"0x373aab3f20ef3c31fc4caa287b0f18170f4a0b4a28c80f7ee79434458f70f241":
"Interest DEX",
"0x46566b4a16a1261ab400ab5b9067de84ba152b5eb4016b217187f2a2ca980c5a":
"YUZU",
"0x4c5058bc4cd77fe207b8b9990e8af91e1055b814073f0596068e3b95a7ccd31a":
"Move.Fun",
"0x4877ee1d4970d17283fb9477094fd9b203e2c93ec6d6886e5d831c0b84c2ecf7":
"Binance"
};

export const scamAddresses: Record<string, string> = {
Expand Down
5 changes: 3 additions & 2 deletions src/pages/layout/Search/Index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import {
import {getAssetSymbol, tryStandardizeAddress} from "../../../utils";
import {getEmojicoinMarketAddressAndTypeTags} from "../../../components/Table/VerifiedCell";
import {getBlockByHeight, getBlockByVersion} from "../../../api/v2";
import { useGetVerifiedAddresses } from "../../../api/hooks/useGetVerifiedAddresses";

export type SearchResult = {
label: string;
Expand Down Expand Up @@ -62,7 +63,7 @@ export default function HeaderSearch() {
const augmentToWithGlobalSearchParams = useAugmentToWithGlobalSearchParams();

const coinList = useGetCoinList();

const {data: verifiedAddresses} = useGetVerifiedAddresses();
useEffect(() => {
let timer: NodeJS.Timeout;

Expand Down Expand Up @@ -309,7 +310,7 @@ export default function HeaderSearch() {
): Promise<(SearchResult | null)[]> {
const searchResults: SearchResult[] = [];
const searchLowerCase = searchText.toLowerCase();
Object.entries(knownAddresses).forEach(([address, knownName]) => {
Object.entries(verifiedAddresses ?? knownAddresses).forEach(([address, knownName]) => {
if (address.toLowerCase() !== '0x000000000000000000000000000000000000000000000000000000000000000a' && prefixMatchLongerThan3(searchLowerCase, knownName)) {
searchResults.push({
label: `Account ${truncateAddress(address)} ${knownName}`,
Expand Down