diff --git a/public/images/dapp_promotions/ledger_dApp_Staking_v3.png b/public/images/dapp_promotions/ledger_dApp_Staking_v3.png new file mode 100644 index 000000000..2e343dbf5 Binary files /dev/null and b/public/images/dapp_promotions/ledger_dApp_Staking_v3.png differ diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 000000000..27385446e --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,3 @@ +export enum HttpCodes { + NotFound = 404, +} diff --git a/src/data/dapp_promotions.json b/src/data/dapp_promotions.json index 6d4ca0bd4..642acd99a 100644 --- a/src/data/dapp_promotions.json +++ b/src/data/dapp_promotions.json @@ -1,4 +1,10 @@ [ + { + "name": "Ledger - dApp Staking V3", + "shortDescription": "Join dApp Staking V3 with your Ledger device using the new Astar Native app.", + "link": "https://docs.astar.network/docs/build/integrations/wallets/ledger/ledger-native", + "img": "images/dapp_promotions/ledger_dApp_Staking_v3.png" + }, { "name": "Archisinal", "shortDescription": "Pioneering Real-World-Assets in the built environment", diff --git a/src/hooks/xcm/useTransferRouter.ts b/src/hooks/xcm/useTransferRouter.ts index d81468fbe..676b90de4 100644 --- a/src/hooks/xcm/useTransferRouter.ts +++ b/src/hooks/xcm/useTransferRouter.ts @@ -26,7 +26,7 @@ export type TransferMode = 'local' | 'xcm'; export const astarNetworks = ['astar', 'shiden', 'shibuya']; export const astarNativeTokens = ['sdn', 'astr', 'sby']; // e.g.: endpointKey.SHIDEN; -const disabledXcmChain: endpointKey | undefined = undefined; +const disabledXcmChain: endpointKey | undefined = endpointKey.SHIDEN; export interface NetworkFromTo { from: string; diff --git a/src/modules/information/recent-history/transfer/index.ts b/src/modules/information/recent-history/transfer/index.ts index 68102f499..c5359a046 100644 --- a/src/modules/information/recent-history/transfer/index.ts +++ b/src/modules/information/recent-history/transfer/index.ts @@ -69,9 +69,16 @@ export const castTransferHistory = ({ const timestamp = String(tx.timestamp); const txType = HistoryTxType.Transfer; const note = `To ${getShortenAddress(to)}`; - const networkIdx = localStorage.getItem(NETWORK_IDX); - const subscan = providerEndpoints[Number(networkIdx)].subscan; - const explorerUrl = `${subscan}/extrinsic/${hash}`; + const networkIdx = Number(localStorage.getItem(NETWORK_IDX)); + let explorerUrl: string = ''; + + if (networkIdx === endpointKey.ASTAR_ZKEVM || networkIdx === endpointKey.ZKYOTO) { + const blockscount = providerEndpoints[networkIdx].blockscout; + explorerUrl = `${blockscount}/tx/${hash}`; + } else { + const subscan = providerEndpoints[networkIdx].subscan; + explorerUrl = `${subscan}/extrinsic/${hash}`; + } return { timestamp, txType, amount, symbol, note, explorerUrl }; }; diff --git a/src/staking-v3/logic/repositories/DappStakingRepository.ts b/src/staking-v3/logic/repositories/DappStakingRepository.ts index 63b238427..f90b41f21 100644 --- a/src/staking-v3/logic/repositories/DappStakingRepository.ts +++ b/src/staking-v3/logic/repositories/DappStakingRepository.ts @@ -47,6 +47,7 @@ import { Guard } from 'src/v2/common'; import { ethers } from 'ethers'; import { AnyTuple, Codec } from '@polkadot/types/types'; import { u8aToNumber } from '@polkadot/util'; +import { HttpCodes } from 'src/constants'; const ERA_LENGTHS = new Map([ [ @@ -95,13 +96,25 @@ export class DappStakingRepository implements IDappStakingRepository { } //* @inheritdoc - public async getDapp(network: string, dappAddress: string, forEdit = false): Promise { + public async getDapp( + network: string, + dappAddress: string, + forEdit = false + ): Promise { Guard.ThrowIfUndefined(network, 'network'); Guard.ThrowIfUndefined(dappAddress, 'dappAddress'); const url = `${TOKEN_API_URL}/v1/${network.toLowerCase()}/dapps-staking/dapps/${dappAddress}?forEdit=${forEdit}`; - const response = await axios.get(url); - return response.data; + try { + const response = await axios.get(url); + return response.data; + } catch (error) { + if (axios.isAxiosError(error) && error.response?.status === HttpCodes.NotFound) { + return undefined; + } + + throw error; + } } //* @inheritdoc diff --git a/src/staking-v3/logic/repositories/IDappStakingRepository.ts b/src/staking-v3/logic/repositories/IDappStakingRepository.ts index 5c826dea6..1821d085a 100644 --- a/src/staking-v3/logic/repositories/IDappStakingRepository.ts +++ b/src/staking-v3/logic/repositories/IDappStakingRepository.ts @@ -34,7 +34,7 @@ export interface IDappStakingRepository { * @param forEdit Flag to indicate if dapp data should be fetched with encoded images. * @returns A promise that resolves to a dapp data. */ - getDapp(network: string, dappAddress: string, forEdit?: boolean): Promise; + getDapp(network: string, dappAddress: string, forEdit?: boolean): Promise; /** * Gets protocol state for the given network.