Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0a00acdc6 |
@@ -0,0 +1,6 @@
|
||||
VITE_BASE_URL=https://v4.testnet.dydx.exchange
|
||||
|
||||
VITE_ALCHEMY_API_KEY=FP275q327Yh7qswtZWenbPXdZZdnAFmC
|
||||
|
||||
VITE_WALLETCONNECT1_BRIDGE=wss://api.dydx.exchange/wc/
|
||||
VITE_WALLETCONNECT2_PROJECT_ID=fbe94eaa691fa8d929561f8567062b32
|
||||
@@ -4,6 +4,7 @@ VITE_ALCHEMY_API_KEY=
|
||||
|
||||
VITE_PK_ENCRYPTION_KEY=
|
||||
|
||||
VITE_WALLETCONNECT1_BRIDGE=
|
||||
VITE_WALLETCONNECT2_PROJECT_ID=
|
||||
|
||||
VITE_V3_TOKEN_ADDRESS=
|
||||
@@ -13,7 +13,6 @@ dist
|
||||
dist-ssr
|
||||
*.local
|
||||
*.key
|
||||
.env
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 193 KiB |
@@ -35,8 +35,6 @@
|
||||
"name": "v4 Dev",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydxprotocol-testnet",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -96,8 +94,6 @@
|
||||
"name": "v4 Dev 2",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydxprotocol-testnet",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -156,8 +152,6 @@
|
||||
"name": "v4 Dev 4",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydxprotocol-testnet",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -216,8 +210,6 @@
|
||||
"name": "v4 Dev 5",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydxprotocol-testnet",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -276,8 +268,6 @@
|
||||
"name": "v4 Staging",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydxprotocol-testnet",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -340,8 +330,6 @@
|
||||
"name": "v4 Staging West",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydxprotocol-testnet",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -404,8 +392,6 @@
|
||||
"name": "v4 Public Testnet",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydx-testnet-3",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -470,8 +456,6 @@
|
||||
"name": "v4 Public Testnet/dYdX",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydx-testnet-3",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -535,8 +519,6 @@
|
||||
"name": "v4 Public Testnet/DSRV",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydx-testnet-3",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -600,8 +582,6 @@
|
||||
"name": "v4 Public Testnet/nodefleet",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydx-testnet-3",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -665,8 +645,6 @@
|
||||
"name": "v4 Public Testnet/KingNodes",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydx-testnet-3",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -730,8 +708,6 @@
|
||||
"name": "v4 Public Testnet/Liquify",
|
||||
"ethereumChainId": "5",
|
||||
"dydxChainId": "dydx-testnet-3",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": false,
|
||||
"tokens": {
|
||||
"chain": {
|
||||
@@ -795,8 +771,6 @@
|
||||
"name": "v4",
|
||||
"ethereumChainId": "1",
|
||||
"dydxChainId": "[mainnet chain id]",
|
||||
"chainName": "dYdX Chain",
|
||||
"chainLogo": "dydx-chain.png",
|
||||
"isMainNet": true,
|
||||
"tokens": {
|
||||
"comment": "Change according to mainnet release",
|
||||
|
||||
+449
-439
@@ -1,464 +1,474 @@
|
||||
[
|
||||
{
|
||||
"id": "c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96",
|
||||
"name": "MetaMask",
|
||||
"description": "",
|
||||
"homepage": "https://metamask.io/",
|
||||
"chains": [
|
||||
"eip155:1",
|
||||
"eip155:42161",
|
||||
"eip155:43114"
|
||||
],
|
||||
"versions": [
|
||||
"1"
|
||||
],
|
||||
"app": {
|
||||
"browser": "",
|
||||
"ios": "https://apps.apple.com/us/app/metamask/id1438144202",
|
||||
"android": "https://play.google.com/store/apps/details?id=io.metamask",
|
||||
"mac": "",
|
||||
"windows": "",
|
||||
"linux": ""
|
||||
},
|
||||
"mobile": {
|
||||
"native": "metamask:",
|
||||
"universal": "https://metamask.app.link"
|
||||
},
|
||||
"desktop": {
|
||||
"native": "",
|
||||
"universal": ""
|
||||
},
|
||||
"metadata": {
|
||||
"shortName": "MetaMask",
|
||||
"colors": {
|
||||
"primary": "rgb(255, 255, 255)",
|
||||
"secondary": ""
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"comment": "MetaMask",
|
||||
"iosMinVersion": "0",
|
||||
"imageUrl": "",
|
||||
"encoding": "=\"#%/<>?@\\^`{|}:&",
|
||||
"connections": [
|
||||
{
|
||||
"type": "walletConnectV2",
|
||||
"native": "metamask:",
|
||||
"universal": "https://metamask.app.link"
|
||||
"id":"c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96",
|
||||
"name":"MetaMask",
|
||||
"description":"",
|
||||
"homepage":"https://metamask.io/",
|
||||
"chains":[
|
||||
"eip155:1",
|
||||
"eip155:42161",
|
||||
"eip155:43114"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://apps.apple.com/us/app/metamask/id1438144202",
|
||||
"android":"https://play.google.com/store/apps/details?id=io.metamask",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"metamask:",
|
||||
"universal":"https://metamask.app.link"
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"MetaMask",
|
||||
"colors":{
|
||||
"primary":"rgb(255, 255, 255)",
|
||||
"secondary":""
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
"eth_sendTransaction",
|
||||
"personal_sign",
|
||||
"eth_signTypedData",
|
||||
"wallet_addEthereumChain"
|
||||
]
|
||||
},
|
||||
"userFields": {
|
||||
"analyticEvent": "METAMASK",
|
||||
"imageName": "metamask.png"
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"MetaMask",
|
||||
"iosMinVersion":"0",
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/metamask.png",
|
||||
"image":"metamask.png",
|
||||
"encoding":"=\"#%/<>?@\\^`{|}:&",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletConnectV2",
|
||||
"native":"metamask:",
|
||||
"universal":"https://metamask.app.link"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"METAMASK"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "coinbase-wallet",
|
||||
"name": "Coinbase Wallet",
|
||||
"description": "",
|
||||
"homepage": "https://www.coinbase.com/wallet",
|
||||
"chains": [
|
||||
"eip155:1"
|
||||
],
|
||||
"versions": [
|
||||
"1"
|
||||
],
|
||||
"app": {
|
||||
"browser": "",
|
||||
"ios": "https://apps.apple.com/us/app/coinbase-wallet-nfts-crypto/id1278383455",
|
||||
"android": "https://play.google.com/store/apps/details?id=org.toshi",
|
||||
"mac": "",
|
||||
"windows": "",
|
||||
"linux": ""
|
||||
},
|
||||
"mobile": {
|
||||
"native": "cbwallet:",
|
||||
"universal": ""
|
||||
},
|
||||
"desktop": {
|
||||
"native": "",
|
||||
"universal": ""
|
||||
},
|
||||
"metadata": {
|
||||
"shortName": "Coinbase",
|
||||
"colors": {
|
||||
"primary": "rgb(255, 255, 255)",
|
||||
"secondary": ""
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"comment": "Coinbase",
|
||||
"iosMinVersion": "1.8.0",
|
||||
"imageUrl": "",
|
||||
"encoding": "=\"#%/<>?@\\^`{|}:&",
|
||||
"connections": [
|
||||
{
|
||||
"type": "walletSegue",
|
||||
"native": "cbwallet:",
|
||||
"universal": ""
|
||||
"id":"coinbase-wallet",
|
||||
"name":"Coinbase Wallet",
|
||||
"description":"",
|
||||
"homepage":"https://www.coinbase.com/wallet",
|
||||
"chains":[
|
||||
"eip155:1"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://apps.apple.com/us/app/coinbase-wallet-nfts-crypto/id1278383455",
|
||||
"android":"https://play.google.com/store/apps/details?id=org.toshi",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"cbwallet:",
|
||||
"universal":""
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"Coinbase",
|
||||
"colors":{
|
||||
"primary":"rgb(255, 255, 255)",
|
||||
"secondary":""
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
"eth_sendTransaction",
|
||||
"personal_sign",
|
||||
"eth_signTypedData",
|
||||
"wallet_addEthereumChain"
|
||||
]
|
||||
},
|
||||
"userFields": {
|
||||
"analyticEvent": "COINBASE_WALLET",
|
||||
"imageName": "coinbase-wallet.png"
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"Coinbase",
|
||||
"iosMinVersion":"1.8.0",
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/coinbase-wallet.png",
|
||||
"image":"coinbase-wallet.png",
|
||||
"encoding":"=\"#%/<>?@\\^`{|}:&",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletSegue",
|
||||
"native":"cbwallet:",
|
||||
"universal":""
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"COINBASE_WALLET"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "9d373b43ad4d2cf190fb1a774ec964a1addf406d6fd24af94ab7596e58c291b2",
|
||||
"name": "imToken",
|
||||
"description": "",
|
||||
"homepage": "https://token.im/",
|
||||
"chains": [
|
||||
"eip155:1"
|
||||
],
|
||||
"versions": [
|
||||
"1"
|
||||
],
|
||||
"app": {
|
||||
"browser": "",
|
||||
"ios": "https://itunes.apple.com/us/app/imtoken2/id1384798940",
|
||||
"android": "https://play.google.com/store/apps/details?id=im.token.app",
|
||||
"mac": "",
|
||||
"windows": "",
|
||||
"linux": ""
|
||||
},
|
||||
"mobile": {
|
||||
"native": "imtokenv2:",
|
||||
"universal": ""
|
||||
},
|
||||
"desktop": {
|
||||
"native": "",
|
||||
"universal": ""
|
||||
},
|
||||
"metadata": {
|
||||
"shortName": "imToken",
|
||||
"colors": {
|
||||
"primary": "rgb(255, 255, 255)",
|
||||
"secondary": ""
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"comment": "imToken",
|
||||
"iosMinVersion": "0",
|
||||
"imageUrl": "",
|
||||
"connections": [
|
||||
{
|
||||
"type": "walletConnectV2",
|
||||
"native": "imtokenv2:",
|
||||
"universal": ""
|
||||
"id":"9d373b43ad4d2cf190fb1a774ec964a1addf406d6fd24af94ab7596e58c291b2",
|
||||
"name":"imToken",
|
||||
"description":"",
|
||||
"homepage":"https://token.im/",
|
||||
"chains":[
|
||||
"eip155:1"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://itunes.apple.com/us/app/imtoken2/id1384798940",
|
||||
"android":"https://play.google.com/store/apps/details?id=im.token.app",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"imtokenv2:",
|
||||
"universal":""
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"imToken",
|
||||
"colors":{
|
||||
"primary":"rgb(255, 255, 255)",
|
||||
"secondary":""
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
"eth_sendTransaction",
|
||||
"personal_sign",
|
||||
"eth_signTypedData"
|
||||
]
|
||||
},
|
||||
"userFields": {
|
||||
"analyticEvent": "IMTOKEN",
|
||||
"imageName": "imtoken.png"
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"imToken",
|
||||
"iosMinVersion":"0",
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/imtoken.png",
|
||||
"image":"imtoken.png",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletConnect",
|
||||
"native":"imtokenv2:",
|
||||
"universal":""
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"IMTOKEN"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "4622a2b2d6af1c9844944291e5e7351a6aa24cd7b23099efac1b2fd875da31a0",
|
||||
"name": "Trust Wallet",
|
||||
"description": "",
|
||||
"homepage": "https://trustwallet.com/",
|
||||
"chains": [
|
||||
"eip155:1",
|
||||
"eip155:42161",
|
||||
"eip155:43114"
|
||||
],
|
||||
"versions": [
|
||||
"1"
|
||||
],
|
||||
"app": {
|
||||
"browser": "",
|
||||
"ios": "https://apps.apple.com/app/apple-store/id1288339409",
|
||||
"android": "https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp",
|
||||
"mac": "",
|
||||
"windows": "",
|
||||
"linux": ""
|
||||
},
|
||||
"mobile": {
|
||||
"native": "trust:",
|
||||
"universal": "https://link.trustwallet.com"
|
||||
},
|
||||
"desktop": {
|
||||
"native": "",
|
||||
"universal": ""
|
||||
},
|
||||
"metadata": {
|
||||
"shortName": "Trust",
|
||||
"colors": {
|
||||
"primary": "rgb(51, 117, 187)",
|
||||
"secondary": ""
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"comment": "Trust Wallet",
|
||||
"iosMinVersion": "0",
|
||||
"encoding": "=\"#%/<>?@\\^`{|}:&",
|
||||
"imageUrl": "",
|
||||
"connections": [
|
||||
{
|
||||
"type": "walletConnectV2",
|
||||
"native": "trust:",
|
||||
"universal": "https://link.trustwallet.com"
|
||||
"id":"4622a2b2d6af1c9844944291e5e7351a6aa24cd7b23099efac1b2fd875da31a0",
|
||||
"name":"Trust Wallet",
|
||||
"description":"",
|
||||
"homepage":"https://trustwallet.com/",
|
||||
"chains":[
|
||||
"eip155:1",
|
||||
"eip155:42161",
|
||||
"eip155:43114"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://apps.apple.com/app/apple-store/id1288339409",
|
||||
"android":"https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"trust:",
|
||||
"universal":"https://link.trustwallet.com"
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"Trust",
|
||||
"colors":{
|
||||
"primary":"rgb(51, 117, 187)",
|
||||
"secondary":""
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
"eth_sendTransaction",
|
||||
"personal_sign",
|
||||
"eth_signTypedData"
|
||||
]
|
||||
},
|
||||
"userFields": {
|
||||
"analyticEvent": "TRUST_WALLET",
|
||||
"imageName": "trust-wallet.png"
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"Trust Wallet",
|
||||
"iosMinVersion":"0",
|
||||
"encoding":"=\"#%/<>?@\\^`{|}:&",
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/trust-wallet.png",
|
||||
"image":"trust-wallet.png",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletConnectV2",
|
||||
"native":"trust:",
|
||||
"universal":"https://link.trustwallet.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"TRUST_WALLET"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "Zerion",
|
||||
"name": "Zerion",
|
||||
"description": "",
|
||||
"homepage": "https://zerion.io/",
|
||||
"chains": [
|
||||
"eip155:1"
|
||||
],
|
||||
"versions": [
|
||||
"1"
|
||||
],
|
||||
"app": {
|
||||
"browser": "",
|
||||
"ios": "https://apps.apple.com/app/apple-store/id1456732565",
|
||||
"android": "https://play.google.com/store/apps/details?id=io.zerion.android",
|
||||
"mac": "",
|
||||
"windows": "",
|
||||
"linux": ""
|
||||
},
|
||||
"mobile": {
|
||||
"native": "zerion:",
|
||||
"universal": ""
|
||||
},
|
||||
"desktop": {
|
||||
"native": "",
|
||||
"universal": ""
|
||||
},
|
||||
"metadata": {
|
||||
"shortName": "Zerion",
|
||||
"colors": {
|
||||
"primary": "rgb(51, 117, 187)",
|
||||
"secondary": ""
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"comment": "Zerion Wallet",
|
||||
"iosMinVersion": "0",
|
||||
"encoding": "=\"#%/<>?@\\^`{|}:&",
|
||||
"imageUrl": "",
|
||||
"connections": [
|
||||
{
|
||||
"type": "walletConnectV2",
|
||||
"native": "zerion:",
|
||||
"universal": ""
|
||||
"id":"Zerion",
|
||||
"name":"Zerion",
|
||||
"description":"",
|
||||
"homepage":"https://zerion.io/",
|
||||
"chains":[
|
||||
"eip155:1"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://apps.apple.com/app/apple-store/id1456732565",
|
||||
"android":"https://play.google.com/store/apps/details?id=io.zerion.android",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"zerion:",
|
||||
"universal":""
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"Zerion",
|
||||
"colors":{
|
||||
"primary":"rgb(51, 117, 187)",
|
||||
"secondary":""
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
"eth_sendTransaction",
|
||||
"personal_sign",
|
||||
"eth_signTypedData"
|
||||
]
|
||||
},
|
||||
"userFields": {
|
||||
"analyticEvent": "ZERION",
|
||||
"imageName": "zerion.png"
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"Zerion Wallet",
|
||||
"iosMinVersion":"0",
|
||||
"encoding":"=\"#%/<>?@\\^`{|}:&",
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/zerion.png",
|
||||
"image":"zerion.png",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletConnectV2",
|
||||
"native":"zerion:",
|
||||
"universal":""
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"ZERION"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "20459438007b75f4f4acb98bf29aa3b800550309646d375da5fd4aac6c2a2c66",
|
||||
"name": "TokenPocket",
|
||||
"description": "",
|
||||
"homepage": "https://tokenpocket.pro/",
|
||||
"chains": [
|
||||
"eip155:1"
|
||||
],
|
||||
"versions": [
|
||||
"1"
|
||||
],
|
||||
"app": {
|
||||
"browser": "",
|
||||
"ios": "https://apps.apple.com/us/app/tokenpocket-trusted-wallet/id1436028697",
|
||||
"android": "https://play.google.com/store/apps/details?id=vip.mytokenpocket",
|
||||
"mac": "",
|
||||
"windows": "",
|
||||
"linux": ""
|
||||
},
|
||||
"mobile": {
|
||||
"native": "tpoutside:",
|
||||
"universal": ""
|
||||
},
|
||||
"desktop": {
|
||||
"native": "",
|
||||
"universal": ""
|
||||
},
|
||||
"metadata": {
|
||||
"shortName": "TokenPocket",
|
||||
"colors": {
|
||||
"primary": "rgb(41, 128, 254)",
|
||||
"secondary": ""
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"comment": "TokenPocket",
|
||||
"iosMinVersion": "0",
|
||||
"imageUrl": "",
|
||||
"connections": [
|
||||
{
|
||||
"type": "walletConnectV2",
|
||||
"native": "tpoutside:",
|
||||
"universal": ""
|
||||
"id":"20459438007b75f4f4acb98bf29aa3b800550309646d375da5fd4aac6c2a2c66",
|
||||
"name":"TokenPocket",
|
||||
"description":"",
|
||||
"homepage":"https://tokenpocket.pro/",
|
||||
"chains":[
|
||||
"eip155:1"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://apps.apple.com/us/app/tokenpocket-trusted-wallet/id1436028697",
|
||||
"android":"https://play.google.com/store/apps/details?id=vip.mytokenpocket",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"tpoutside:",
|
||||
"universal":""
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"TokenPocket",
|
||||
"colors":{
|
||||
"primary":"rgb(41, 128, 254)",
|
||||
"secondary":""
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
"eth_sendTransaction",
|
||||
"personal_sign",
|
||||
"eth_signTypedData"
|
||||
]
|
||||
},
|
||||
"userFields": {
|
||||
"analyticEvent": "TOKEN_POCKET",
|
||||
"imageName": "tokenpocket.png"
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"TokenPocket",
|
||||
"iosMinVersion":"0",
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/tokenpocket.png",
|
||||
"image":"tokenpocket.png",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletConnect",
|
||||
"native":"tpoutside:",
|
||||
"universal":""
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"TOKEN_POCKET"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "1ae92b26df02f0abca6304df07debccd18262fdf5fe82daa81593582dac9a369",
|
||||
"name": "Rainbow",
|
||||
"description": "",
|
||||
"homepage": "https://rainbow.me/",
|
||||
"chains": [
|
||||
"eip155:1"
|
||||
],
|
||||
"versions": [
|
||||
"1"
|
||||
],
|
||||
"app": {
|
||||
"browser": "",
|
||||
"ios": "https://apps.apple.com/us/app/rainbow-ethereum-wallet/id1457119021",
|
||||
"android": "",
|
||||
"mac": "",
|
||||
"windows": "",
|
||||
"linux": ""
|
||||
},
|
||||
"mobile": {
|
||||
"native": "rainbow:",
|
||||
"universal": "https://rnbwapp.com"
|
||||
},
|
||||
"desktop": {
|
||||
"native": "",
|
||||
"universal": ""
|
||||
},
|
||||
"metadata": {
|
||||
"shortName": "Rainbow",
|
||||
"colors": {
|
||||
"primary": "rgb(0, 30, 89)",
|
||||
"secondary": ""
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"comment": "Rainbow",
|
||||
"iosMinVersion": "0",
|
||||
"encoding": "=\"#%/<>?@\\^`{|}:&",
|
||||
"backlinked": true,
|
||||
"imageUrl": "",
|
||||
"connections": [
|
||||
{
|
||||
"type": "walletConnectV2",
|
||||
"native": "rainbow:",
|
||||
"universal": "https://rnbwapp.com"
|
||||
"id":"1ae92b26df02f0abca6304df07debccd18262fdf5fe82daa81593582dac9a369",
|
||||
"name":"Rainbow",
|
||||
"description":"",
|
||||
"homepage":"https://rainbow.me/",
|
||||
"chains":[
|
||||
"eip155:1"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://apps.apple.com/us/app/rainbow-ethereum-wallet/id1457119021",
|
||||
"android":"",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"rainbow:",
|
||||
"universal":"https://rnbwapp.com"
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"Rainbow",
|
||||
"colors":{
|
||||
"primary":"rgb(0, 30, 89)",
|
||||
"secondary":""
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
"eth_sendTransaction",
|
||||
"personal_sign",
|
||||
"eth_signTypedData"
|
||||
]
|
||||
},
|
||||
"userFields": {
|
||||
"analyticEvent": "RAINBOW_WALLET",
|
||||
"imageName": "rainbow-wallet.png"
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"Rainbow",
|
||||
"iosMinVersion":"0",
|
||||
"encoding":"=\"#%/<>?@\\^`{|}:&",
|
||||
"backlinked":true,
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/rainbow-wallet.png",
|
||||
"image":"rainbow-wallet.png",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletConnectV2",
|
||||
"native":"rainbow:",
|
||||
"universal":"https://rnbwapp.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"RAINBOW_WALLET"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "09102e7bbbd3f92001eda104abe23803181629f695e8f1b95af96d88ff7d5890",
|
||||
"name": "1inch Wallet",
|
||||
"description": "",
|
||||
"homepage": "https://1inch.io/wallet/",
|
||||
"chains": [
|
||||
"eip155:1",
|
||||
"eip155:56"
|
||||
],
|
||||
"versions": [
|
||||
"1"
|
||||
],
|
||||
"app": {
|
||||
"browser": "",
|
||||
"ios": "https://apps.apple.com/us/app/1inch-defi-wallet/id1546049391",
|
||||
"android": "",
|
||||
"mac": "",
|
||||
"windows": "",
|
||||
"linux": ""
|
||||
},
|
||||
"mobile": {
|
||||
"native": "oneinch:",
|
||||
"universal": "https://wallet.1inch.io"
|
||||
},
|
||||
"desktop": {
|
||||
"native": "",
|
||||
"universal": ""
|
||||
},
|
||||
"metadata": {
|
||||
"shortName": "1inch",
|
||||
"colors": {
|
||||
"primary": "rgb(31, 36, 46)",
|
||||
"secondary": ""
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"comment": "1inch",
|
||||
"iosMinVersion": "0",
|
||||
"encoding": "=\"#%/<>?@\\^`{|}:&",
|
||||
"imageUrl": "",
|
||||
"connections": [
|
||||
{
|
||||
"type": "walletConnectV2",
|
||||
"native": "oneinch:",
|
||||
"universal": "https://wallet.1inch.io"
|
||||
"id":"09102e7bbbd3f92001eda104abe23803181629f695e8f1b95af96d88ff7d5890",
|
||||
"name":"1inch Wallet",
|
||||
"description":"",
|
||||
"homepage":"https://1inch.io/wallet/",
|
||||
"chains":[
|
||||
"eip155:1",
|
||||
"eip155:56"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://apps.apple.com/us/app/1inch-defi-wallet/id1546049391",
|
||||
"android":"",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"oneinch:",
|
||||
"universal":"https://wallet.1inch.io"
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"1inch",
|
||||
"colors":{
|
||||
"primary":"rgb(31, 36, 46)",
|
||||
"secondary":""
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
"eth_sendTransaction",
|
||||
"personal_sign",
|
||||
"eth_signTypedData"
|
||||
]
|
||||
},
|
||||
"userFields": {
|
||||
"analyticEvent": "1INCH",
|
||||
"imageName": "1inch.png"
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"1inch",
|
||||
"iosMinVersion":"0",
|
||||
"encoding":"=\"#%/<>?@\\^`{|}:&",
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/1inch.png",
|
||||
"image":"1inch.png",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletConnect",
|
||||
"native":"oneinch:",
|
||||
"universal":"https://wallet.1inch.io"
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"1INCH"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id":"bae74827272509a6d63ea25514d9c68ad235c14e45e183518c7ded4572a1b0c4",
|
||||
"name":"Huobi Wallet",
|
||||
"description":"",
|
||||
"homepage":"https://huobiwallet.com/",
|
||||
"chains":[
|
||||
"eip155:1"
|
||||
],
|
||||
"versions":[
|
||||
"1"
|
||||
],
|
||||
"app":{
|
||||
"browser":"",
|
||||
"ios":"https://apps.apple.com/us/app/id1433883012",
|
||||
"android":"https://play.google.com/store/apps/details?id=com.huobionchainwallet.gp",
|
||||
"mac":"",
|
||||
"windows":"",
|
||||
"linux":""
|
||||
},
|
||||
"mobile":{
|
||||
"native":"huobiwallet:",
|
||||
"universal":""
|
||||
},
|
||||
"desktop":{
|
||||
"native":"",
|
||||
"universal":""
|
||||
},
|
||||
"metadata":{
|
||||
"shortName":"Huobi",
|
||||
"colors":{
|
||||
"primary":"rgb(45,101,248)",
|
||||
"secondary":""
|
||||
}
|
||||
},
|
||||
"config":{
|
||||
"comment":"Huobi",
|
||||
"iosMinVersion":"0",
|
||||
"encoding":"=\"#%/<>?@\\^`{|}:&",
|
||||
"imageUrl":"https://v4.testnet.dydx.exchange/wallets/huobi-wallet.png",
|
||||
"image":"huobi-wallet.png",
|
||||
"connections":[
|
||||
{
|
||||
"type":"walletConnect",
|
||||
"native":"huobiwallet:",
|
||||
"universal":""
|
||||
}
|
||||
]
|
||||
},
|
||||
"userFields":{
|
||||
"analyticEvent":"HUOBI_WALLET"
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.5 MiB |
@@ -8,5 +8,5 @@ export const AVAILABLE_ENVIRONMENTS =
|
||||
|
||||
export const CURRENT_ABACUS_DEPLOYMENT = import.meta.env.MODE === 'production' ? 'TESTNET' : 'DEV';
|
||||
export const ENVIRONMENT_CONFIG_MAP = environments.environments;
|
||||
export type DydxNetwork = keyof typeof ENVIRONMENT_CONFIG_MAP;
|
||||
export type DydxNetwork = (typeof AVAILABLE_ENVIRONMENTS.environments)[number];
|
||||
export const DEFAULT_APP_ENVIRONMENT = AVAILABLE_ENVIRONMENTS.default as DydxNetwork;
|
||||
|
||||
+69
-12
@@ -32,6 +32,7 @@ export enum WalletConnectionType {
|
||||
CoinbaseWalletSdk = 'coinbaseWalletSdk',
|
||||
CosmosSigner = 'CosmosSigner',
|
||||
InjectedEip1193 = 'injectedEip1193',
|
||||
WalletConnect1 = 'walletConnect1',
|
||||
WalletConnect2 = 'walletConnect2',
|
||||
}
|
||||
|
||||
@@ -61,6 +62,10 @@ export const walletConnectionTypes: Record<WalletConnectionType, WalletConnectio
|
||||
name: 'injected EIP-1193 provider',
|
||||
wagmiConnectorId: 'injected',
|
||||
},
|
||||
[WalletConnectionType.WalletConnect1]: {
|
||||
name: 'WalletConnect 1.0',
|
||||
wagmiConnectorId: 'walletConnectLegacy',
|
||||
},
|
||||
[WalletConnectionType.WalletConnect2]: {
|
||||
name: 'WalletConnect 2.0',
|
||||
wagmiConnectorId: 'walletConnect',
|
||||
@@ -87,6 +92,7 @@ export enum WalletType {
|
||||
Rainbow = 'RAINBOW_WALLET',
|
||||
TokenPocket = 'TOKEN_POCKET',
|
||||
TrustWallet = 'TRUST_WALLET',
|
||||
WalletConnect = 'WALLETCONNECT',
|
||||
WalletConnect2 = 'WALLETCONNECT_2',
|
||||
// TestWallet = 'TEST_WALLET',
|
||||
OtherWallet = 'OTHER_WALLET',
|
||||
@@ -98,6 +104,7 @@ type WalletConfig = {
|
||||
icon: string;
|
||||
connectionTypes: WalletConnectionType[];
|
||||
matchesInjectedEip1193?: (provider: ExternalProvider & any) => boolean;
|
||||
walletconnect1Name?: string;
|
||||
walletconnect2Id?: string;
|
||||
};
|
||||
|
||||
@@ -110,6 +117,7 @@ export const wallets: Record<WalletType, WalletConfig> = {
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
// WalletConnectionType.CoinbaseWalletSdk,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) =>
|
||||
Object.entries(wallets).every(
|
||||
@@ -123,23 +131,30 @@ export const wallets: Record<WalletType, WalletConfig> = {
|
||||
type: WalletType.BitKeep,
|
||||
stringKey: STRING_KEYS.BITKEEP,
|
||||
icon: BitkeepIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect2],
|
||||
connectionTypes: [
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) => provider.isBitKeep, // isBitKeepChrome, isBitEthereum
|
||||
walletconnect1Name: 'bitkeep',
|
||||
walletconnect2Id: '38f5d18bd8522c244bdd70cb4a68e0e718865155811c043f052fb9f1c51de662',
|
||||
},
|
||||
[WalletType.BitPie]: {
|
||||
type: WalletType.BitPie,
|
||||
stringKey: STRING_KEYS.BITPIE,
|
||||
icon: BitpieIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193],
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect1],
|
||||
matchesInjectedEip1193: (provider) => provider.isBitpie,
|
||||
walletconnect1Name: 'bitpie',
|
||||
},
|
||||
[WalletType.CloverWallet]: {
|
||||
type: WalletType.CloverWallet,
|
||||
stringKey: STRING_KEYS.CLOVER_WALLET,
|
||||
icon: CloverWalletIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193],
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect1],
|
||||
matchesInjectedEip1193: (provider) => provider.isClover,
|
||||
// walletconnect1Name: 'clover',
|
||||
},
|
||||
[WalletType.CoinbaseWallet]: {
|
||||
type: WalletType.CoinbaseWallet,
|
||||
@@ -148,23 +163,33 @@ export const wallets: Record<WalletType, WalletConfig> = {
|
||||
connectionTypes: [
|
||||
WalletConnectionType.CoinbaseWalletSdk,
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) => provider.isCoinbaseWallet, // provider.selectedProvider?.isCoinbaseWallet,
|
||||
walletconnect1Name: 'coinbase',
|
||||
},
|
||||
[WalletType.Coin98]: {
|
||||
type: WalletType.Coin98,
|
||||
stringKey: STRING_KEYS.COIN98,
|
||||
icon: Coin98Icon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect2],
|
||||
connectionTypes: [
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) => provider.isCoin98,
|
||||
walletconnect1Name: 'coin98',
|
||||
walletconnect2Id: '2a3c89040ac3b723a1972a33a125b1db11e258a6975d3a61252cd64e6ea5ea01',
|
||||
},
|
||||
[WalletType.HuobiWallet]: {
|
||||
type: WalletType.HuobiWallet,
|
||||
stringKey: STRING_KEYS.HUOBI_WALLET,
|
||||
icon: HuobiIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect2],
|
||||
connectionTypes: [
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) => provider.isHbWallet,
|
||||
walletconnect2Id: '797c615e2c556b610c048eb35535f212c0dd58de5d03e763120e90a7d1350a77',
|
||||
},
|
||||
@@ -172,48 +197,74 @@ export const wallets: Record<WalletType, WalletConfig> = {
|
||||
type: WalletType.ImToken,
|
||||
stringKey: STRING_KEYS.IMTOKEN,
|
||||
icon: ImTokenIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect2],
|
||||
connectionTypes: [
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) => provider.isImToken,
|
||||
walletconnect1Name: 'imtoken',
|
||||
walletconnect2Id: 'ef333840daf915aafdc4a004525502d6d49d77bd9c65e0642dbaefb3c2893bef',
|
||||
},
|
||||
[WalletType.MathWallet]: {
|
||||
type: WalletType.MathWallet,
|
||||
stringKey: STRING_KEYS.MATH_WALLET,
|
||||
icon: MathWalletIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193],
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect1],
|
||||
matchesInjectedEip1193: (provider) => provider.isMathWallet,
|
||||
walletconnect1Name: 'math',
|
||||
walletconnect2Id: '7674bb4e353bf52886768a3ddc2a4562ce2f4191c80831291218ebd90f5f5e26',
|
||||
},
|
||||
[WalletType.MetaMask]: {
|
||||
type: WalletType.MetaMask,
|
||||
stringKey: STRING_KEYS.METAMASK,
|
||||
icon: MetaMaskIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect2],
|
||||
connectionTypes: [
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: isMetaMask,
|
||||
walletconnect1Name: 'metamask',
|
||||
walletconnect2Id: 'c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96',
|
||||
},
|
||||
[WalletType.Rainbow]: {
|
||||
type: WalletType.Rainbow,
|
||||
stringKey: STRING_KEYS.RAINBOW_WALLET,
|
||||
icon: RainbowIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect2],
|
||||
connectionTypes: [
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) => provider.isRainbowWallet,
|
||||
walletconnect1Name: 'rainbow',
|
||||
walletconnect2Id: '1ae92b26df02f0abca6304df07debccd18262fdf5fe82daa81593582dac9a369',
|
||||
},
|
||||
[WalletType.TokenPocket]: {
|
||||
type: WalletType.TokenPocket,
|
||||
stringKey: STRING_KEYS.TOKEN_POCKET,
|
||||
icon: TokenPocketIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect2],
|
||||
connectionTypes: [
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) => provider.isTokenPocket,
|
||||
walletconnect1Name: 'tokenpocket',
|
||||
walletconnect2Id: '20459438007b75f4f4acb98bf29aa3b800550309646d375da5fd4aac6c2a2c66',
|
||||
},
|
||||
[WalletType.TrustWallet]: {
|
||||
type: WalletType.TrustWallet,
|
||||
stringKey: STRING_KEYS.TRUST_WALLET,
|
||||
icon: TrustWalletIcon,
|
||||
connectionTypes: [WalletConnectionType.InjectedEip1193, WalletConnectionType.WalletConnect2],
|
||||
connectionTypes: [
|
||||
WalletConnectionType.InjectedEip1193,
|
||||
WalletConnectionType.WalletConnect2,
|
||||
WalletConnectionType.WalletConnect1,
|
||||
],
|
||||
matchesInjectedEip1193: (provider) => provider.isTrust,
|
||||
walletconnect1Name: 'trust',
|
||||
walletconnect2Id: '4622a2b2d6af1c9844944291e5e7351a6aa24cd7b23099efac1b2fd875da31a0',
|
||||
},
|
||||
[WalletType.WalletConnect2]: {
|
||||
@@ -222,6 +273,12 @@ export const wallets: Record<WalletType, WalletConfig> = {
|
||||
icon: WalletConnectIcon,
|
||||
connectionTypes: [WalletConnectionType.WalletConnect2],
|
||||
},
|
||||
[WalletType.WalletConnect]: {
|
||||
type: WalletType.WalletConnect,
|
||||
stringKey: STRING_KEYS.WALLET_CONNECT,
|
||||
icon: WalletConnectIcon,
|
||||
connectionTypes: [WalletConnectionType.WalletConnect1],
|
||||
},
|
||||
[WalletType.Keplr]: {
|
||||
type: WalletType.Keplr,
|
||||
stringKey: STRING_KEYS.KEPLR,
|
||||
|
||||
@@ -2,23 +2,27 @@ import { WalletType } from '@/constants/wallets';
|
||||
|
||||
import { isTruthy } from '@/lib/isTruthy';
|
||||
|
||||
import { useSelectedNetwork } from './useSelectedNetwork';
|
||||
|
||||
export const useDisplayedWallets = () => {
|
||||
const { selectedNetwork } = useSelectedNetwork();
|
||||
|
||||
return [
|
||||
WalletType.MetaMask,
|
||||
|
||||
import.meta.env.MODE !== 'production' && WalletType.Keplr,
|
||||
|
||||
WalletType.WalletConnect2,
|
||||
|
||||
WalletType.WalletConnect,
|
||||
|
||||
WalletType.CoinbaseWallet,
|
||||
|
||||
// Hide these wallet options until they can be properly tested on mainnet
|
||||
// WalletType.ImToken,
|
||||
// WalletType.Rainbow,
|
||||
// WalletType.TrustWallet,
|
||||
// WalletType.HuobiWallet,
|
||||
// WalletType.BitKeep,
|
||||
// WalletType.Coin98,
|
||||
|
||||
WalletType.ImToken,
|
||||
WalletType.Rainbow,
|
||||
WalletType.TrustWallet,
|
||||
WalletType.HuobiWallet,
|
||||
WalletType.BitKeep,
|
||||
WalletType.Coin98,
|
||||
|
||||
WalletType.OtherWallet,
|
||||
].filter(isTruthy);
|
||||
|
||||
@@ -10,6 +10,7 @@ import { useLocalStorage } from '@/hooks';
|
||||
import { initializeLocalization } from '@/state/app';
|
||||
|
||||
import abacusStateManager from '@/lib/abacus';
|
||||
import { validateAgainstAvailableEnvironments } from '@/lib/network';
|
||||
|
||||
export const useInitializePage = () => {
|
||||
const dispatch = useDispatch();
|
||||
@@ -18,6 +19,7 @@ export const useInitializePage = () => {
|
||||
const [localStorageNetwork] = useLocalStorage<DydxNetwork>({
|
||||
key: LocalStorageKey.SelectedNetwork,
|
||||
defaultValue: DEFAULT_APP_ENVIRONMENT,
|
||||
validateFn: validateAgainstAvailableEnvironments,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -110,18 +110,18 @@ export const notificationTypes = [
|
||||
const stringGetter = useStringGetter();
|
||||
const { transferNotifications } = useLocalNotifications();
|
||||
|
||||
const getTitleStringKey = useCallback((type: 'deposit' | 'withdrawal', finished: boolean) => {
|
||||
const getTitleStringKey = useCallback((type: 'deposit' | 'withdraw', finished: boolean) => {
|
||||
if (type === 'deposit' && !finished) return STRING_KEYS.DEPOSIT_IN_PROGRESS;
|
||||
if (type === 'deposit' && finished) return STRING_KEYS.DEPOSIT;
|
||||
if (type === 'withdrawal' && !finished) return STRING_KEYS.WITHDRAW_IN_PROGRESS;
|
||||
if (type === 'withdraw' && !finished) return STRING_KEYS.WITHDRAW_IN_PROGRESS;
|
||||
return STRING_KEYS.WITHDRAW;
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
for (const transfer of transferNotifications) {
|
||||
const { fromChainId, status, txHash, toAmount } = transfer;
|
||||
const { toChainId, status, txHash, toAmount } = transfer;
|
||||
const finished = Boolean(status) && status?.squidTransactionStatus !== 'ongoing';
|
||||
const type = fromChainId === TESTNET_CHAIN_ID ? 'withdrawal' : 'deposit';
|
||||
const type = toChainId === TESTNET_CHAIN_ID ? 'deposit' : 'withdraw';
|
||||
// @ts-ignore status.errors is not in the type definition but can be returned
|
||||
const error = status?.errors?.length ? status?.errors[0] : status?.error;
|
||||
|
||||
@@ -154,7 +154,6 @@ export const notificationTypes = [
|
||||
description: description,
|
||||
customContent: (
|
||||
<TransferStatusToast
|
||||
type={type}
|
||||
toAmount={transfer.toAmount}
|
||||
triggeredAt={transfer.triggeredAt}
|
||||
status={transfer.status}
|
||||
@@ -163,7 +162,7 @@ export const notificationTypes = [
|
||||
customMenuContent: !finished && (
|
||||
<div>
|
||||
{description}
|
||||
<TransferStatusSteps status={transfer.status} type={type} />
|
||||
<TransferStatusSteps status={transfer.status} />
|
||||
</div>
|
||||
),
|
||||
toastSensitivity: 'foreground',
|
||||
|
||||
@@ -9,6 +9,8 @@ import { useAccounts, useLocalStorage } from '@/hooks';
|
||||
import { setSelectedNetwork } from '@/state/app';
|
||||
import { getSelectedNetwork } from '@/state/appSelectors';
|
||||
|
||||
import { validateAgainstAvailableEnvironments } from '@/lib/network';
|
||||
|
||||
export const useSelectedNetwork = (): {
|
||||
switchNetwork: (network: DydxNetwork) => void;
|
||||
selectedNetwork: DydxNetwork;
|
||||
@@ -20,6 +22,7 @@ export const useSelectedNetwork = (): {
|
||||
const [, setLocalStorageNetwork] = useLocalStorage<DydxNetwork>({
|
||||
key: LocalStorageKey.SelectedNetwork,
|
||||
defaultValue: DEFAULT_APP_ENVIRONMENT,
|
||||
validateFn: validateAgainstAvailableEnvironments,
|
||||
});
|
||||
|
||||
const switchNetwork = useCallback(
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import environments from '../../../public/configs/env.json';
|
||||
|
||||
import { validateAgainstAvailableEnvironments } from '../network';
|
||||
|
||||
describe('validateAgainstAvailableEnvironments', () => {
|
||||
describe('production environment', () => {
|
||||
beforeAll(() => {
|
||||
jest.mock('../../constants/networks', () => ({
|
||||
AVAILABLE_ENVIRONMENTS: {
|
||||
environments: [],
|
||||
default: 'dydxprotocol-testnet-dydx',
|
||||
}, //environments.deployments.TESTNET,
|
||||
}));
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
jest.unmock('../../constants/networks');
|
||||
});
|
||||
|
||||
it('Returns true for valid environments', () => {
|
||||
expect(validateAgainstAvailableEnvironments('dydxprotocol-testnet-dydx')).toEqual(true);
|
||||
});
|
||||
|
||||
it('Returns false for invalid environments', () => {
|
||||
expect(validateAgainstAvailableEnvironments('dydxprotocol-dev')).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('staging environment', () => {
|
||||
it('Returns true for valid environments', () => {
|
||||
expect(validateAgainstAvailableEnvironments('dydxprotocol-dev')).toEqual(true);
|
||||
});
|
||||
|
||||
it('Returns false for invalid environments', () => {
|
||||
expect(validateAgainstAvailableEnvironments('INVALID')).toEqual(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -45,11 +45,15 @@ describe('getStringsForDateTimeDiff', () => {
|
||||
|
||||
describe('getStringsForTimeInterval', () => {
|
||||
it.each([
|
||||
[Duration.fromObject({ months: 2 }), '2', 'MONTHS_ABBREVIATED'],
|
||||
[Duration.fromObject({ weeks: 3, days: 2 }), '3', 'WEEKS_ABBREVIATED'],
|
||||
[Duration.fromObject({ days: 5, hours: 12 }), '6', 'DAYS_ABBREVIATED'],
|
||||
[Duration.fromObject({ hours: 8, minutes: 30 }), '9', 'HOURS_ABBREVIATED'],
|
||||
[Duration.fromObject({ minutes: 45 }), '45', 'MINUTES_ABBREVIATED'],
|
||||
[Duration.fromObject({ months: 2 }), '2', 'APP.GENERAL.TIME_STRINGS.MONTHS_ABBREVIATED'],
|
||||
[Duration.fromObject({ weeks: 3, days: 2 }), '3', 'APP.GENERAL.TIME_STRINGS.WEEKS_ABBREVIATED'],
|
||||
[Duration.fromObject({ days: 5, hours: 12 }), '6', 'APP.GENERAL.TIME_STRINGS.DAYS_ABBREVIATED'],
|
||||
[
|
||||
Duration.fromObject({ hours: 8, minutes: 30 }),
|
||||
'9',
|
||||
'APP.GENERAL.TIME_STRINGS.HOURS_ABBREVIATED',
|
||||
],
|
||||
[Duration.fromObject({ minutes: 45 }), '45', 'APP.GENERAL.TIME_STRINGS.MINUTES_ABBREVIATED'],
|
||||
])(
|
||||
'returns the correct timeString and unitStringKey',
|
||||
(timeInterval, expectedTimeString, expectedUnitStringKey) => {
|
||||
@@ -0,0 +1,4 @@
|
||||
import { AVAILABLE_ENVIRONMENTS, type DydxNetwork } from '@/constants/networks';
|
||||
|
||||
export const validateAgainstAvailableEnvironments = (value: DydxNetwork) =>
|
||||
AVAILABLE_ENVIRONMENTS.environments.includes(value);
|
||||
@@ -10,7 +10,7 @@ export const getTimestamp = (value?: BigNumberish | null) =>
|
||||
? value
|
||||
: typeof value === 'string'
|
||||
? new Date(value).getTime()
|
||||
: new Date(value.toString()).getTime()
|
||||
: new Date(value.toNumber()).getTime()
|
||||
: undefined;
|
||||
|
||||
export const getStringsForDateTimeDiff = (dateTime: DateTime) => {
|
||||
@@ -77,4 +77,4 @@ export const formatSeconds = (seconds: number) => {
|
||||
const minutes = Math.floor(seconds / 60);
|
||||
const remainingSeconds = seconds % 60;
|
||||
return `${getTimeString(minutes)}:${getTimeString(remainingSeconds)}`;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -87,6 +87,14 @@ const injectedConnectorOptions = {
|
||||
},
|
||||
};
|
||||
|
||||
const walletconnect1ConnectorOptions = {
|
||||
chains,
|
||||
options: {
|
||||
bridge: import.meta.env.VITE_WALLETCONNECT1_BRIDGE,
|
||||
qrcode: true,
|
||||
},
|
||||
};
|
||||
|
||||
const walletconnect2ConnectorOptions: ConstructorParameters<typeof WalletConnectConnector>[0] = {
|
||||
chains,
|
||||
options: {
|
||||
@@ -134,6 +142,7 @@ const connectors = [
|
||||
reloadOnDisconnect: false,
|
||||
},
|
||||
}),
|
||||
new WalletConnectLegacyConnector(walletconnect1ConnectorOptions),
|
||||
new WalletConnectConnector(walletconnect2ConnectorOptions),
|
||||
new InjectedConnector(injectedConnectorOptions),
|
||||
];
|
||||
@@ -156,6 +165,19 @@ const createInjectedConnectorWithProvider = (provider: ExternalProvider) =>
|
||||
provider as unknown as Awaited<ReturnType<InjectedConnector['getProvider']>>;
|
||||
})(injectedConnectorOptions) as InjectedConnector;
|
||||
|
||||
// Create a custom wagmi WalletConnectLegacyConnector with a modal showing only wallet links matching the given name
|
||||
const createWalletConnect1ConnectorWithName = (walletconnect1Name: string) =>
|
||||
new WalletConnectLegacyConnector({
|
||||
...walletconnect1ConnectorOptions,
|
||||
options: {
|
||||
...walletconnect1ConnectorOptions.options,
|
||||
qrcodeModalOptions: {
|
||||
desktopLinks: [walletconnect1Name],
|
||||
mobileLinks: [walletconnect1Name],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const createWalletConnect2ConnectorWithId = (walletconnect2Id: string) =>
|
||||
new WalletConnectConnector({
|
||||
...walletconnect2ConnectorOptions,
|
||||
@@ -191,6 +213,9 @@ export const resolveWagmiConnector = ({
|
||||
|
||||
return walletConnection.type === WalletConnectionType.InjectedEip1193 && walletConnection.provider
|
||||
? createInjectedConnectorWithProvider(walletConnection.provider)
|
||||
: walletConnection.type === WalletConnectionType.WalletConnect1 &&
|
||||
walletConfig.walletconnect1Name
|
||||
? createWalletConnect1ConnectorWithName(walletConfig.walletconnect1Name)
|
||||
: walletConnection.type === WalletConnectionType.WalletConnect2 && walletConfig.walletconnect2Id
|
||||
? createWalletConnect2ConnectorWithId(walletConfig.walletconnect2Id)
|
||||
: connectors.find(({ id }: { id: string }) => id === walletConnectionConfig.wagmiConnectorId);
|
||||
|
||||
@@ -45,6 +45,12 @@ export const getWalletConnection = ({
|
||||
break;
|
||||
}
|
||||
|
||||
case WalletConnectionType.WalletConnect1: {
|
||||
return {
|
||||
type: WalletConnectionType.WalletConnect1,
|
||||
};
|
||||
}
|
||||
|
||||
case WalletConnectionType.WalletConnect2: {
|
||||
return {
|
||||
type: WalletConnectionType.WalletConnect2,
|
||||
|
||||
@@ -6,6 +6,7 @@ import { LocalStorageKey } from '@/constants/localStorage';
|
||||
import { DEFAULT_APP_ENVIRONMENT, type DydxNetwork } from '@/constants/networks';
|
||||
|
||||
import { getLocalStorage } from '@/lib/localStorage';
|
||||
import { validateAgainstAvailableEnvironments } from '@/lib/network';
|
||||
|
||||
export interface AppState {
|
||||
apiState: AbacusApiState | undefined;
|
||||
@@ -19,6 +20,7 @@ const initialState: AppState = {
|
||||
selectedNetwork: getLocalStorage({
|
||||
key: LocalStorageKey.SelectedNetwork,
|
||||
defaultValue: DEFAULT_APP_ENVIRONMENT,
|
||||
validateFn: validateAgainstAvailableEnvironments,
|
||||
}),
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { useCallback, useState, useMemo } from 'react';
|
||||
import styled, { type AnyStyledComponent } from 'styled-components';
|
||||
import { TESTNET_CHAIN_ID } from '@dydxprotocol/v4-client-js';
|
||||
import { Root, Trigger, Content } from '@radix-ui/react-collapsible';
|
||||
import { StatusResponse } from '@0xsquid/sdk';
|
||||
|
||||
@@ -20,14 +21,12 @@ import { LoadingDots } from '@/components/Loading/LoadingDots';
|
||||
import { layoutMixins } from '@/styles/layoutMixins';
|
||||
|
||||
type ElementProps = {
|
||||
type: 'withdrawal' | 'deposit';
|
||||
toAmount?: number;
|
||||
triggeredAt?: number;
|
||||
status?: StatusResponse;
|
||||
};
|
||||
|
||||
export const TransferStatusToast = ({
|
||||
type,
|
||||
toAmount,
|
||||
triggeredAt = Date.now(),
|
||||
status,
|
||||
@@ -39,6 +38,11 @@ export const TransferStatusToast = ({
|
||||
// @ts-ignore status.errors is not in the type definition but can be returned
|
||||
const error = status?.errors?.length ? status?.errors[0] : status?.error;
|
||||
|
||||
const type = useMemo(
|
||||
() => (status?.toChain?.chainData?.chainId === TESTNET_CHAIN_ID ? 'deposit' : 'withdrawal'),
|
||||
[status]
|
||||
);
|
||||
|
||||
const updateSecondsLeft = useCallback(() => {
|
||||
const fromChainEta = (status?.fromChain?.chainData?.estimatedRouteDuration || 0) * 1000;
|
||||
const toChainEta = (status?.toChain?.chainData?.estimatedRouteDuration || 0) * 1000;
|
||||
@@ -65,7 +69,7 @@ export const TransferStatusToast = ({
|
||||
side="bottom"
|
||||
slotReceipt={
|
||||
<Styled.Receipt>
|
||||
<TransferStatusSteps status={status} type={type} />
|
||||
<TransferStatusSteps status={status} />
|
||||
</Styled.Receipt>
|
||||
}
|
||||
>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { useMemo } from 'react';
|
||||
import styled, { css, keyframes, type AnyStyledComponent } from 'styled-components';
|
||||
import { StatusResponse } from '@0xsquid/sdk';
|
||||
import { TESTNET_CHAIN_ID } from '@dydxprotocol/v4-client-js';
|
||||
|
||||
import { useStringGetter } from '@/hooks';
|
||||
|
||||
@@ -14,7 +15,6 @@ import { STRING_KEYS } from '@/constants/localization';
|
||||
|
||||
type ElementProps = {
|
||||
status?: StatusResponse;
|
||||
type: 'withdrawal' | 'deposit';
|
||||
};
|
||||
|
||||
enum TransferStatusStep {
|
||||
@@ -24,13 +24,14 @@ enum TransferStatusStep {
|
||||
Complete,
|
||||
}
|
||||
|
||||
export const TransferStatusSteps = ({ status, type }: ElementProps) => {
|
||||
export const TransferStatusSteps = ({ status }: ElementProps) => {
|
||||
const stringGetter = useStringGetter();
|
||||
|
||||
const { currentStep, steps } = useMemo(() => {
|
||||
const { currentStep, steps, type } = useMemo(() => {
|
||||
const routeStatus = status?.routeStatus;
|
||||
const fromChain = status?.fromChain?.chainData?.chainId;
|
||||
const toChain = status?.toChain?.chainData?.chainId;
|
||||
const type = toChain === TESTNET_CHAIN_ID ? 'deposit' : 'withdrawal';
|
||||
|
||||
const steps = [
|
||||
{
|
||||
@@ -73,10 +74,6 @@ export const TransferStatusSteps = ({ status, type }: ElementProps) => {
|
||||
currentStep = TransferStatusStep.FromChain;
|
||||
}
|
||||
|
||||
if (status?.squidTransactionStatus === 'success') {
|
||||
currentStep = TransferStatusStep.Complete;
|
||||
}
|
||||
|
||||
return {
|
||||
currentStep,
|
||||
steps,
|
||||
|
||||
Reference in New Issue
Block a user