From 8858b75cfb8f32ae6c6e0bb25427106193fc0aab Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 00:36:54 +0200 Subject: [PATCH 01/11] Migrate token schema --- packages/extension/src/shared/token/storage.ts | 14 ++++++++++++++ packages/extension/src/ui/App.tsx | 3 +++ 2 files changed, 17 insertions(+) diff --git a/packages/extension/src/shared/token/storage.ts b/packages/extension/src/shared/token/storage.ts index 686664909..2e2a291e8 100644 --- a/packages/extension/src/shared/token/storage.ts +++ b/packages/extension/src/shared/token/storage.ts @@ -45,3 +45,17 @@ export async function removeToken(token: BaseToken) { await assertSchema(baseTokenSchema, token) return tokenStore.remove((t) => equalToken(t, token)) } + + +export async function migrateTokens() { + console.log("Migrating tokens") + const allTokens = await tokenStore.get() + + for (const token of allTokens) { + if (token.verified === undefined) { + await removeToken(token) + const verified = knownAlephiumTokens.findIndex((knownToken) => knownToken.id === token.id) !== -1 + await addToken({ verified, ...token }) + } + } +} \ No newline at end of file diff --git a/packages/extension/src/ui/App.tsx b/packages/extension/src/ui/App.tsx index 36a6f9f91..ccb4d2b79 100644 --- a/packages/extension/src/ui/App.tsx +++ b/packages/extension/src/ui/App.tsx @@ -2,6 +2,7 @@ import { ThemeProvider as ArgentTheme, SetDarkMode } from "@argent/ui" import { ThemeProvider as MuiThemeProvider } from "@mui/material" import { FC, Suspense } from "react" import { SWRConfig } from "swr" +import { migrateTokens } from "../shared/token/storage" import AppErrorBoundaryFallback from "./AppErrorBoundaryFallback" import { AppRoutes } from "./AppRoutes" @@ -18,6 +19,8 @@ import { ThemeProvider, muiTheme } from "./theme" export const App: FC = () => { useTracking() useSentryInit() + // Migrate tokens + migrateTokens() return ( From 577837b449fc7aa9399b9d566b310a403a41ec43 Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 02:09:49 +0200 Subject: [PATCH 02/11] Update tokens SWR immutable cache name --- packages/extension/src/shared/token/storage.ts | 4 ++-- .../extension/src/ui/features/accountTokens/tokens.state.ts | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/extension/src/shared/token/storage.ts b/packages/extension/src/shared/token/storage.ts index 2e2a291e8..347d8949c 100644 --- a/packages/extension/src/shared/token/storage.ts +++ b/packages/extension/src/shared/token/storage.ts @@ -48,7 +48,7 @@ export async function removeToken(token: BaseToken) { export async function migrateTokens() { - console.log("Migrating tokens") + console.debug("Migrating tokens") const allTokens = await tokenStore.get() for (const token of allTokens) { @@ -58,4 +58,4 @@ export async function migrateTokens() { await addToken({ verified, ...token }) } } -} \ No newline at end of file +} diff --git a/packages/extension/src/ui/features/accountTokens/tokens.state.ts b/packages/extension/src/ui/features/accountTokens/tokens.state.ts index 7344963a4..0c04410f0 100644 --- a/packages/extension/src/ui/features/accountTokens/tokens.state.ts +++ b/packages/extension/src/ui/features/accountTokens/tokens.state.ts @@ -182,7 +182,7 @@ export const useNonFungibleTokens = ( selectedAccount && [ getAccountIdentifier(selectedAccount), allUserTokens, - "accountNonFungibleTokens", + "selectedAccountNonFungibleTokens", ], async () => { const network = await getNetwork(networkId) @@ -218,14 +218,13 @@ export const useFungibleTokens = ( }, [selectedAccount?.networkId]) const cachedTokens = useTokensInNetwork(networkId) - const { data: fungibleTokens } = useSWRImmutable( selectedAccount && [ getAccountIdentifier(selectedAccount), allUserTokens, - "accountFungibleTokens", + "selectedAccountFungibleTokens", ], async () => { const result = cachedTokens.filter((token) => token.showAlways).map(t => [t, -1] as [Token, number]) From b677f0688edd4d379b822f1abf199ec28aef5e0a Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 02:41:41 +0200 Subject: [PATCH 03/11] update the immutable cache accountFungibleTokens when cached tokens is updated --- .../extension/src/ui/features/accountTokens/tokens.state.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/extension/src/ui/features/accountTokens/tokens.state.ts b/packages/extension/src/ui/features/accountTokens/tokens.state.ts index 0c04410f0..cedc2d059 100644 --- a/packages/extension/src/ui/features/accountTokens/tokens.state.ts +++ b/packages/extension/src/ui/features/accountTokens/tokens.state.ts @@ -182,7 +182,7 @@ export const useNonFungibleTokens = ( selectedAccount && [ getAccountIdentifier(selectedAccount), allUserTokens, - "selectedAccountNonFungibleTokens", + "accountNonFungibleTokens", ], async () => { const network = await getNetwork(networkId) @@ -224,7 +224,8 @@ export const useFungibleTokens = ( selectedAccount && [ getAccountIdentifier(selectedAccount), allUserTokens, - "selectedAccountFungibleTokens", + cachedTokens, + "accountFungibleTokens", ], async () => { const result = cachedTokens.filter((token) => token.showAlways).map(t => [t, -1] as [Token, number]) From 707a16a507f739500ad1d88350676ad5cc867f27 Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 08:09:47 +0200 Subject: [PATCH 04/11] Run token migration in the canonical way --- .../extension/src/shared/token/storage.ts | 19 +++------------ .../src/shared/token/storeMigration.ts | 24 +++++++++++++++++++ .../src/shared/wallet/storeMigration.ts | 2 ++ packages/extension/src/ui/App.tsx | 3 --- 4 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 packages/extension/src/shared/token/storeMigration.ts diff --git a/packages/extension/src/shared/token/storage.ts b/packages/extension/src/shared/token/storage.ts index 347d8949c..588c60250 100644 --- a/packages/extension/src/shared/token/storage.ts +++ b/packages/extension/src/shared/token/storage.ts @@ -1,12 +1,11 @@ import * as yup from "yup" - import { ArrayStorage } from "../storage" import { assertSchema } from "../utils/schema" import { BaseToken, Token } from "./type" import { equalToken, knownAlephiumTokens } from "./utils" export const tokenStore = new ArrayStorage(knownAlephiumTokens, { - namespace: "core:tokens", + namespace: "core:tokens-v2", areaName: "local", compare: equalToken, }) @@ -28,6 +27,8 @@ export const tokenSchema: yup.Schema = baseTokenSchema decimals: yup.number().required("Decimals is required"), logoURI: yup.string().url(), showAlways: yup.boolean(), + description: yup.string(), + verified: yup.boolean() }) export async function addToken(token: Token) { @@ -45,17 +46,3 @@ export async function removeToken(token: BaseToken) { await assertSchema(baseTokenSchema, token) return tokenStore.remove((t) => equalToken(t, token)) } - - -export async function migrateTokens() { - console.debug("Migrating tokens") - const allTokens = await tokenStore.get() - - for (const token of allTokens) { - if (token.verified === undefined) { - await removeToken(token) - const verified = knownAlephiumTokens.findIndex((knownToken) => knownToken.id === token.id) !== -1 - await addToken({ verified, ...token }) - } - } -} diff --git a/packages/extension/src/shared/token/storeMigration.ts b/packages/extension/src/shared/token/storeMigration.ts new file mode 100644 index 000000000..f4c8da05a --- /dev/null +++ b/packages/extension/src/shared/token/storeMigration.ts @@ -0,0 +1,24 @@ +import { addToken } from "./storage" +import { equalToken, knownAlephiumTokens } from "./utils" +import { Token } from "./type" + +export async function migrateTokens() { + try { + const needsMigration = window.localStorage.getItem('core:tokens') + if (!needsMigration) { + return + } + + const oldTokens: Token[] = JSON.parse(needsMigration) + + for (const oldToken of oldTokens) { + if (knownAlephiumTokens.findIndex((knownToken) => equalToken(knownToken, oldToken)) === -1) { + await addToken({ verified: false, ...oldToken }) + } + } + + window.localStorage.removeItem('core:tokens') + } catch (e) { + console.error(e) + } +} diff --git a/packages/extension/src/shared/wallet/storeMigration.ts b/packages/extension/src/shared/wallet/storeMigration.ts index ccb660c8e..97f934c89 100644 --- a/packages/extension/src/shared/wallet/storeMigration.ts +++ b/packages/extension/src/shared/wallet/storeMigration.ts @@ -4,6 +4,7 @@ import browser from "webextension-polyfill" import { Wallet } from "../../background/wallet" import { walletStore } from "../../shared/wallet/walletStore" import { migrateWalletAccounts } from "../account/storeMigration" +import { migrateTokens } from "../token/storeMigration" export async function migrateWallet() { await Promise.allSettled([ @@ -11,6 +12,7 @@ export async function migrateWallet() { migrateDiscoveredOnce(), migrateSelected(), migrateWalletAccounts(), + migrateTokens() ]) } diff --git a/packages/extension/src/ui/App.tsx b/packages/extension/src/ui/App.tsx index ccb4d2b79..36a6f9f91 100644 --- a/packages/extension/src/ui/App.tsx +++ b/packages/extension/src/ui/App.tsx @@ -2,7 +2,6 @@ import { ThemeProvider as ArgentTheme, SetDarkMode } from "@argent/ui" import { ThemeProvider as MuiThemeProvider } from "@mui/material" import { FC, Suspense } from "react" import { SWRConfig } from "swr" -import { migrateTokens } from "../shared/token/storage" import AppErrorBoundaryFallback from "./AppErrorBoundaryFallback" import { AppRoutes } from "./AppRoutes" @@ -19,8 +18,6 @@ import { ThemeProvider, muiTheme } from "./theme" export const App: FC = () => { useTracking() useSentryInit() - // Migrate tokens - migrateTokens() return ( From b26f37f218dc5a9f7b0804f690c7bc10187e05db Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 10:52:47 +0200 Subject: [PATCH 05/11] Only store manually added token in token storage --- .../extension/src/shared/token/storage.ts | 11 ++++++-- .../src/shared/token/storeMigration.ts | 14 ++-------- packages/extension/src/shared/token/utils.ts | 8 +++--- .../ui/features/accountTokens/tokens.state.ts | 28 +++++++++---------- 4 files changed, 28 insertions(+), 33 deletions(-) diff --git a/packages/extension/src/shared/token/storage.ts b/packages/extension/src/shared/token/storage.ts index 588c60250..5d2c3ae99 100644 --- a/packages/extension/src/shared/token/storage.ts +++ b/packages/extension/src/shared/token/storage.ts @@ -2,9 +2,9 @@ import * as yup from "yup" import { ArrayStorage } from "../storage" import { assertSchema } from "../utils/schema" import { BaseToken, Token } from "./type" -import { equalToken, knownAlephiumTokens } from "./utils" +import { equalToken, tokensFromAlephiumTokenList } from "./utils" -export const tokenStore = new ArrayStorage(knownAlephiumTokens, { +export const tokenStore = new ArrayStorage([] as Token[], { namespace: "core:tokens-v2", areaName: "local", compare: equalToken, @@ -33,11 +33,16 @@ export const tokenSchema: yup.Schema = baseTokenSchema export async function addToken(token: Token) { await assertSchema(tokenSchema, token) - return tokenStore.push(token) + return tokenStore.push({ verified: true, ...token }) } export async function hasToken(token: BaseToken) { await assertSchema(baseTokenSchema, token) + const tokenListHit = tokensFromAlephiumTokenList.find((t) => equalToken(t, token)) + if (tokenListHit) { + return Boolean(tokenListHit) + } + const [hit] = await tokenStore.get((t) => equalToken(t, token)) return Boolean(hit) } diff --git a/packages/extension/src/shared/token/storeMigration.ts b/packages/extension/src/shared/token/storeMigration.ts index f4c8da05a..d80eec26e 100644 --- a/packages/extension/src/shared/token/storeMigration.ts +++ b/packages/extension/src/shared/token/storeMigration.ts @@ -1,7 +1,3 @@ -import { addToken } from "./storage" -import { equalToken, knownAlephiumTokens } from "./utils" -import { Token } from "./type" - export async function migrateTokens() { try { const needsMigration = window.localStorage.getItem('core:tokens') @@ -9,14 +5,8 @@ export async function migrateTokens() { return } - const oldTokens: Token[] = JSON.parse(needsMigration) - - for (const oldToken of oldTokens) { - if (knownAlephiumTokens.findIndex((knownToken) => equalToken(knownToken, oldToken)) === -1) { - await addToken({ verified: false, ...oldToken }) - } - } - + // We also stored tokens fetched from full node in `core:tokens` in v0.8.0. + // Maybe we should start from a clean slate. window.localStorage.removeItem('core:tokens') } catch (e) { console.error(e) diff --git a/packages/extension/src/shared/token/utils.ts b/packages/extension/src/shared/token/utils.ts index 1de6f69a1..9d6c1c055 100644 --- a/packages/extension/src/shared/token/utils.ts +++ b/packages/extension/src/shared/token/utils.ts @@ -7,7 +7,7 @@ import { defaultNetworkIds } from "../network/defaults" export const equalToken = (a: BaseToken, b: BaseToken) => a.networkId === b.networkId && isEqualTokenId(a.id, b.id) -const alphTokens: Token[] = defaultNetworkIds.map((networkId) => { +export const alphTokens: Token[] = defaultNetworkIds.map((networkId) => { return { ...ALPH, "networkId": networkId, @@ -17,9 +17,9 @@ const alphTokens: Token[] = defaultNetworkIds.map((networkId) => { } }) -const knownTokensFromAlephiumTokenList: Token[] = [mainnetTokensMetadata, testnetTokensMetadata].flatMap(convertTokenList) - -export const knownAlephiumTokens = alphTokens.concat(knownTokensFromAlephiumTokenList) +export const tokensFromAlephiumTokenList: Token[] = alphTokens.concat( + [mainnetTokensMetadata, testnetTokensMetadata].flatMap(convertTokenList) +) export const dustALPHAmount = BigInt(1000000000000000) diff --git a/packages/extension/src/ui/features/accountTokens/tokens.state.ts b/packages/extension/src/ui/features/accountTokens/tokens.state.ts index cedc2d059..be0ed8004 100644 --- a/packages/extension/src/ui/features/accountTokens/tokens.state.ts +++ b/packages/extension/src/ui/features/accountTokens/tokens.state.ts @@ -9,7 +9,7 @@ import { getNetwork, Network } from "../../../shared/network" import { useArrayStorage } from "../../../shared/storage/hooks" import { addToken, tokenStore } from "../../../shared/token/storage" import { BaseToken, Token } from "../../../shared/token/type" -import { equalToken } from "../../../shared/token/utils" +import { alphTokens, equalToken, tokensFromAlephiumTokenList } from "../../../shared/token/utils" import { BaseWalletAccount } from "../../../shared/wallet.model" import { getAccountIdentifier } from "../../../shared/wallet.service" import { useAccount } from "../accounts/accounts.state" @@ -32,21 +32,13 @@ const networkIdSelector = memoize( (networkId: string) => (token: Token) => token.networkId === networkId, ) -const feeTokenSelector = memoize( - (networkId: string) => (token: Token) => - token.networkId === networkId && token.symbol === "ALPH", -) - export const getNetworkFeeToken = async (networkId: string) => { - const [feeToken] = await tokenStore.get(feeTokenSelector(networkId)) + const feeToken = alphTokens.find((token) => token.networkId === networkId) return feeToken ?? null } export const useNetworkFeeToken = (networkId?: string) => { - const [feeToken] = useArrayStorage( - tokenStore, - networkId ? feeTokenSelector(networkId) : () => false, - ) + const feeToken = alphTokens.find((token) => token.networkId === networkId) return feeToken ?? null } @@ -55,8 +47,12 @@ const tokenSelector = memoize( (baseToken) => getAccountIdentifier({ networkId: baseToken.networkId, address: baseToken.id }), ) -export const useTokensInNetwork = (networkId: string) => - useArrayStorage(tokenStore, networkIdSelector(networkId)) +export const useTokensInNetwork = (networkId: string) => { + const tokensFromTokenList = tokensFromAlephiumTokenList.filter(networkIdSelector(networkId)) + const tokens: Token[] = useArrayStorage(tokenStore, networkIdSelector(networkId)) + return tokensFromTokenList.concat(tokens) +} + export const devnetTokenSymbol = (baseToken: { id: string }): string => { return baseToken.id.replace(/[^a-zA-Z]/gi, '').slice(0, 4).toUpperCase() @@ -74,6 +70,11 @@ export const devnetToken = (baseToken: BaseToken): Token => { } export const useToken = (baseToken: BaseToken): Token | undefined => { + const tokenFromTokenList = tokensFromAlephiumTokenList.find((t) => equalToken(t, baseToken)) + if (tokenFromTokenList) { + return tokenFromTokenList + } + const [token] = useArrayStorage(tokenStore, tokenSelector(baseToken)) if (token === undefined && baseToken.networkId === 'devnet') { return devnetToken(baseToken) @@ -240,7 +241,6 @@ export const useFungibleTokens = ( } else { const token = await fetchFungibleTokenFromFullNode(network, userToken.id) if (token) { - addToken(token) result.push([token, foundOnFullNodeIndex]) foundOnFullNodeIndex++ } From 3f467de5517cb818bc90df369c1b441743004f71 Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 11:06:35 +0200 Subject: [PATCH 06/11] Remove manually added token when it is already in the token list --- .../ui/features/accountTokens/tokens.state.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/extension/src/ui/features/accountTokens/tokens.state.ts b/packages/extension/src/ui/features/accountTokens/tokens.state.ts index be0ed8004..1b63523bd 100644 --- a/packages/extension/src/ui/features/accountTokens/tokens.state.ts +++ b/packages/extension/src/ui/features/accountTokens/tokens.state.ts @@ -7,7 +7,7 @@ import useSWRImmutable from 'swr/immutable' import { getNetwork, Network } from "../../../shared/network" import { useArrayStorage } from "../../../shared/storage/hooks" -import { addToken, tokenStore } from "../../../shared/token/storage" +import { removeToken, tokenStore } from "../../../shared/token/storage" import { BaseToken, Token } from "../../../shared/token/type" import { alphTokens, equalToken, tokensFromAlephiumTokenList } from "../../../shared/token/utils" import { BaseWalletAccount } from "../../../shared/wallet.model" @@ -48,9 +48,19 @@ const tokenSelector = memoize( ) export const useTokensInNetwork = (networkId: string) => { - const tokensFromTokenList = tokensFromAlephiumTokenList.filter(networkIdSelector(networkId)) + const tokensFromTokenList: Token[] = tokensFromAlephiumTokenList.filter(networkIdSelector(networkId)) const tokens: Token[] = useArrayStorage(tokenStore, networkIdSelector(networkId)) - return tokensFromTokenList.concat(tokens) + + const result: Token[] = tokensFromTokenList + for (const token of tokens) { + if (tokensFromTokenList.findIndex((t) => equalToken(t, token)) === -1) { + result.push(token) + } else { + // Remove manually added token when it is already in the token list + removeToken(token) + } + } + return result } @@ -71,11 +81,12 @@ export const devnetToken = (baseToken: BaseToken): Token => { export const useToken = (baseToken: BaseToken): Token | undefined => { const tokenFromTokenList = tokensFromAlephiumTokenList.find((t) => equalToken(t, baseToken)) + const [token] = useArrayStorage(tokenStore, tokenSelector(baseToken)) + if (tokenFromTokenList) { return tokenFromTokenList } - const [token] = useArrayStorage(tokenStore, tokenSelector(baseToken)) if (token === undefined && baseToken.networkId === 'devnet') { return devnetToken(baseToken) } From ff842c0e704e54ab2bedfa68eb860624d8266ccc Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 11:18:03 +0200 Subject: [PATCH 07/11] Migrate by removing tokens from token:list in core:tokens --- packages/extension/src/shared/token/storage.ts | 2 +- .../extension/src/shared/token/storeMigration.ts | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/extension/src/shared/token/storage.ts b/packages/extension/src/shared/token/storage.ts index 5d2c3ae99..4c4242175 100644 --- a/packages/extension/src/shared/token/storage.ts +++ b/packages/extension/src/shared/token/storage.ts @@ -5,7 +5,7 @@ import { BaseToken, Token } from "./type" import { equalToken, tokensFromAlephiumTokenList } from "./utils" export const tokenStore = new ArrayStorage([] as Token[], { - namespace: "core:tokens-v2", + namespace: "core:tokens", areaName: "local", compare: equalToken, }) diff --git a/packages/extension/src/shared/token/storeMigration.ts b/packages/extension/src/shared/token/storeMigration.ts index d80eec26e..a115400e4 100644 --- a/packages/extension/src/shared/token/storeMigration.ts +++ b/packages/extension/src/shared/token/storeMigration.ts @@ -1,13 +1,15 @@ +import { removeToken, tokenStore } from "./storage" +import { equalToken, tokensFromAlephiumTokenList } from "./utils" +import { Token } from "./type" + export async function migrateTokens() { try { - const needsMigration = window.localStorage.getItem('core:tokens') - if (!needsMigration) { - return + const allTokens: Token[] = await tokenStore.get() + for (const token of allTokens) { + if (tokensFromAlephiumTokenList.findIndex((knownToken) => equalToken(knownToken, token)) !== -1) { + removeToken(token) + } } - - // We also stored tokens fetched from full node in `core:tokens` in v0.8.0. - // Maybe we should start from a clean slate. - window.localStorage.removeItem('core:tokens') } catch (e) { console.error(e) } From ee4cac7335eca4ef6885af632c5c72968b9b20c6 Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 12:34:56 +0200 Subject: [PATCH 08/11] Fix manual add token --- packages/extension/src/ui/features/actions/AddTokenScreen.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/extension/src/ui/features/actions/AddTokenScreen.tsx b/packages/extension/src/ui/features/actions/AddTokenScreen.tsx index 2a37eada9..b7df22afd 100644 --- a/packages/extension/src/ui/features/actions/AddTokenScreen.tsx +++ b/packages/extension/src/ui/features/actions/AddTokenScreen.tsx @@ -108,7 +108,7 @@ export const AddTokenScreen: FC = ({ setTokenDecimals(found.decimals || 0) setLogoURI(found.logoURI || "") } - }, [tokenId, tokensInNetwork]) + }, [tokenId]) const compiledData = { id: tokenId, From 7b54ee1c879c171c2cb85a4038494041c23a71a7 Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 14:36:54 +0200 Subject: [PATCH 09/11] Fix addToken button in dApp --- packages/dapp/src/services/wallet.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dapp/src/services/wallet.service.ts b/packages/dapp/src/services/wallet.service.ts index 63ae67e82..f8080e870 100644 --- a/packages/dapp/src/services/wallet.service.ts +++ b/packages/dapp/src/services/wallet.service.ts @@ -43,7 +43,7 @@ export const addToken = async (id: string): Promise => { type: "AddNewToken", params: { id: id, - networkId: '', + networkId: 'devnet', symbol: '', decimals: 0, name: '', From b9bcfe5013066e23f0a3d5059f7be504fcb932c9 Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 14:37:37 +0200 Subject: [PATCH 10/11] Add full node token metadata --- .../extension/src/ui/features/accountTokens/tokens.state.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/extension/src/ui/features/accountTokens/tokens.state.ts b/packages/extension/src/ui/features/accountTokens/tokens.state.ts index 1b63523bd..ec9811c27 100644 --- a/packages/extension/src/ui/features/accountTokens/tokens.state.ts +++ b/packages/extension/src/ui/features/accountTokens/tokens.state.ts @@ -7,7 +7,7 @@ import useSWRImmutable from 'swr/immutable' import { getNetwork, Network } from "../../../shared/network" import { useArrayStorage } from "../../../shared/storage/hooks" -import { removeToken, tokenStore } from "../../../shared/token/storage" +import { addToken, removeToken, tokenStore } from "../../../shared/token/storage" import { BaseToken, Token } from "../../../shared/token/type" import { alphTokens, equalToken, tokensFromAlephiumTokenList } from "../../../shared/token/utils" import { BaseWalletAccount } from "../../../shared/wallet.model" @@ -252,6 +252,7 @@ export const useFungibleTokens = ( } else { const token = await fetchFungibleTokenFromFullNode(network, userToken.id) if (token) { + addToken(token) result.push([token, foundOnFullNodeIndex]) foundOnFullNodeIndex++ } From 91506ebfae489c5550a28a1dc26755d84708e14a Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Fri, 28 Jul 2023 16:01:58 +0200 Subject: [PATCH 11/11] Bump to 0.8.1 --- lerna.json | 2 +- package.json | 2 +- packages/dapp/package.json | 2 +- packages/extension/manifest/v2.json | 2 +- packages/extension/manifest/v3.json | 2 +- packages/extension/package.json | 2 +- packages/stack-router/package.json | 4 ++-- packages/storybook/package.json | 6 +++--- packages/ui/package.json | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lerna.json b/lerna.json index 0ea76fdc4..cf797cd6e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "packages": ["packages/*"], - "version": "0.8.0", + "version": "0.8.1", "npmClient": "yarn", "useWorkspaces": true } diff --git a/package.json b/package.json index 04630e056..b5c8c5cca 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "0.8.0", + "version": "0.8.1", "private": true, "name": "alephium-browser-extension-wallet", "repository": "github:alephium/extension-wallet", diff --git a/packages/dapp/package.json b/packages/dapp/package.json index de7d16512..2a4f32d8c 100644 --- a/packages/dapp/package.json +++ b/packages/dapp/package.json @@ -1,6 +1,6 @@ { "name": "@alephium/dapp", - "version": "0.8.0", + "version": "0.8.1", "private": true, "scripts": { "dev": "next dev", diff --git a/packages/extension/manifest/v2.json b/packages/extension/manifest/v2.json index 5a4deb908..15f7738de 100644 --- a/packages/extension/manifest/v2.json +++ b/packages/extension/manifest/v2.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/chrome-manifest.json", "name": "Alephium Extension Wallet", "description": "Alephium's official extension wallet with powerful features and a clean UI.", - "version": "0.8.0", + "version": "0.8.1", "manifest_version": 2, "browser_action": { "default_icon": { diff --git a/packages/extension/manifest/v3.json b/packages/extension/manifest/v3.json index c8302ac06..beae75a40 100644 --- a/packages/extension/manifest/v3.json +++ b/packages/extension/manifest/v3.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/chrome-manifest.json", "name": "Alephium Extension Wallet", "description": "Alephium's official extension wallet with powerful features and a clean UI.", - "version": "0.8.0", + "version": "0.8.1", "manifest_version": 3, "action": { "default_icon": { diff --git a/packages/extension/package.json b/packages/extension/package.json index 665a55d1b..9e9a3e966 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -1,6 +1,6 @@ { "name": "@alephium/extension", - "version": "0.8.0", + "version": "0.8.1", "main": "index.js", "license": "MIT", "devDependencies": { diff --git a/packages/stack-router/package.json b/packages/stack-router/package.json index 1834dbeef..acd3d9073 100644 --- a/packages/stack-router/package.json +++ b/packages/stack-router/package.json @@ -1,6 +1,6 @@ { "name": "@argent/stack-router", - "version": "0.8.0", + "version": "0.8.1", "license": "MIT", "private": true, "files": [ @@ -32,7 +32,7 @@ "lodash-es": "^4.17.21" }, "devDependencies": { - "@argent/ui": "^0.8.0", + "@argent/ui": "^0.8.1", "@types/lodash-es": "^4.17.6", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", diff --git a/packages/storybook/package.json b/packages/storybook/package.json index 228561410..5811a5781 100644 --- a/packages/storybook/package.json +++ b/packages/storybook/package.json @@ -1,10 +1,10 @@ { "name": "@argent-x/storybook", - "version": "0.8.0", + "version": "0.8.1", "private": true, "devDependencies": { - "@alephium/extension": "^0.8.0", - "@argent/ui": "^0.8.0", + "@alephium/extension": "^0.8.1", + "@argent/ui": "^0.8.1", "@babel/core": "^7.18.5", "@chakra-ui/storybook-addon": "^4.0.12", "@storybook/addon-actions": "^6.5.9", diff --git a/packages/ui/package.json b/packages/ui/package.json index 8f175583a..b4e6f28f8 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@argent/ui", - "version": "0.8.0", + "version": "0.8.1", "license": "MIT", "private": true, "files": [