From d867ef847c7dd658a8c15a17300c3d3e55be9e7f Mon Sep 17 00:00:00 2001
From: Imamah-Zafar <88320460+Imamah-Zafar@users.noreply.github.com>
Date: Wed, 22 Feb 2023 02:03:51 +0500
Subject: [PATCH 01/16] show alert on btc and ordinal address copy
---
package-lock.json | 280 +++++++-----------
src/app/components/AlertMessage/index.tsx | 64 +++-
src/app/components/accountRow/index.tsx | 17 +-
.../extendedScreenContainer/index.tsx | 52 +++-
src/app/components/screenContainer/index.tsx | 52 +++-
src/app/screens/home/index.tsx | 1 -
.../receiveNft/receiveCardComponent/index.tsx | 9 +
src/app/screens/receive/index.tsx | 7 +
.../stores/wallet/actions/actionCreators.ts | 14 +
src/app/stores/wallet/actions/types.ts | 19 +-
src/app/stores/wallet/walletReducer.ts | 14 +
src/locales/en.json | 8 +
12 files changed, 356 insertions(+), 181 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 332c443f4..2fdf7fb3f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "xverse-web-extension",
- "version": "0.2.0",
+ "version": "0.2.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "xverse-web-extension",
- "version": "0.2.0",
+ "version": "0.2.1",
"dependencies": {
"@react-spring/web": "^9.6.1",
"@secretkeylabs/xverse-core": "0.7.3",
@@ -119,7 +119,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
"integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.1.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -143,7 +142,6 @@
"version": "7.20.14",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz",
"integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -152,7 +150,6 @@
"version": "7.20.12",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz",
"integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==",
- "dev": true,
"dependencies": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
@@ -182,7 +179,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
"bin": {
"json5": "lib/cli.js"
},
@@ -194,7 +190,6 @@
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -251,7 +246,6 @@
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
"integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
- "dev": true,
"dependencies": {
"@babel/compat-data": "^7.20.5",
"@babel/helper-validator-option": "^7.18.6",
@@ -266,39 +260,10 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -349,7 +314,6 @@
"version": "7.20.11",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
"integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
- "dev": true,
"dependencies": {
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-module-imports": "^7.18.6",
@@ -376,7 +340,6 @@
"version": "7.20.2",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
"integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.20.2"
},
@@ -415,7 +378,6 @@
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
"integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -424,7 +386,6 @@
"version": "7.20.13",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz",
"integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==",
- "dev": true,
"dependencies": {
"@babel/template": "^7.20.7",
"@babel/traverse": "^7.20.13",
@@ -1583,7 +1544,6 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
"integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.0",
"@jridgewell/sourcemap-codec": "^1.4.10"
@@ -4976,6 +4936,19 @@
"semver": "^5.3.0"
}
},
+ "node_modules/babel-preset-env/node_modules/browserslist": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
+ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+ "dev": true,
+ "dependencies": {
+ "caniuse-lite": "^1.0.30000844",
+ "electron-to-chromium": "^1.3.47"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ }
+ },
"node_modules/babel-preset-env/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -5502,16 +5475,30 @@
}
},
"node_modules/browserslist": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
- "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
- "dev": true,
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
"dependencies": {
- "caniuse-lite": "^1.0.30000844",
- "electron-to-chromium": "^1.3.47"
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
},
"bin": {
"browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
"node_modules/bs-logger": {
@@ -5675,7 +5662,6 @@
"version": "1.0.30001452",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz",
"integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -6908,8 +6894,7 @@
"node_modules/electron-to-chromium": {
"version": "1.4.295",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz",
- "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==",
- "dev": true
+ "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw=="
},
"node_modules/elliptic": {
"version": "6.5.4",
@@ -7158,7 +7143,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -8313,7 +8297,6 @@
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -10987,7 +10970,6 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"dependencies": {
"yallist": "^3.0.2"
}
@@ -11454,8 +11436,7 @@
"node_modules/node-releases": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
- "dev": true
+ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
},
"node_modules/normalize-path": {
"version": "3.0.0",
@@ -11953,8 +11934,7 @@
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -14689,7 +14669,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -15261,34 +15240,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/webpack/node_modules/browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
"node_modules/webpack/node_modules/enhanced-resolve": {
"version": "5.12.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
@@ -15532,8 +15483,7 @@
"node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/yaml": {
"version": "1.10.2",
@@ -15601,7 +15551,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
"integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
"requires": {
"@jridgewell/gen-mapping": "^0.1.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -15618,14 +15567,12 @@
"@babel/compat-data": {
"version": "7.20.14",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz",
- "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==",
- "dev": true
+ "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw=="
},
"@babel/core": {
"version": "7.20.12",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz",
"integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==",
- "dev": true,
"requires": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
@@ -15647,14 +15594,12 @@
"json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}
}
},
@@ -15697,7 +15642,6 @@
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
"integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
- "dev": true,
"requires": {
"@babel/compat-data": "^7.20.5",
"@babel/helper-validator-option": "^7.18.6",
@@ -15706,23 +15650,10 @@
"semver": "^6.3.0"
},
"dependencies": {
- "browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- }
- },
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}
}
},
@@ -15760,7 +15691,6 @@
"version": "7.20.11",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
"integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
- "dev": true,
"requires": {
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-module-imports": "^7.18.6",
@@ -15781,7 +15711,6 @@
"version": "7.20.2",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
"integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
"requires": {
"@babel/types": "^7.20.2"
}
@@ -15807,14 +15736,12 @@
"@babel/helper-validator-option": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true
+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw=="
},
"@babel/helpers": {
"version": "7.20.13",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz",
"integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==",
- "dev": true,
"requires": {
"@babel/template": "^7.20.7",
"@babel/traverse": "^7.20.13",
@@ -16232,7 +16159,8 @@
"@emotion/use-insertion-effect-with-fallbacks": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
- "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A=="
+ "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
+ "requires": {}
},
"@emotion/utils": {
"version": "1.2.0",
@@ -16696,7 +16624,6 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
"integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
"requires": {
"@jridgewell/set-array": "^1.0.0",
"@jridgewell/sourcemap-codec": "^1.4.10"
@@ -18410,7 +18337,8 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
"integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@webpack-cli/info": {
"version": "1.5.0",
@@ -18425,7 +18353,8 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz",
"integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@xtuc/ieee754": {
"version": "1.2.0",
@@ -18483,13 +18412,15 @@
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"acorn-walk": {
"version": "7.2.0",
@@ -18551,7 +18482,8 @@
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"ansi-escapes": {
"version": "4.3.2",
@@ -19576,6 +19508,16 @@
"semver": "^5.3.0"
},
"dependencies": {
+ "browserslist": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
+ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30000844",
+ "electron-to-chromium": "^1.3.47"
+ }
+ },
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -20052,13 +19994,14 @@
}
},
"browserslist": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
- "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
- "dev": true,
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"requires": {
- "caniuse-lite": "^1.0.30000844",
- "electron-to-chromium": "^1.3.47"
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
}
},
"bs-logger": {
@@ -20188,8 +20131,7 @@
"caniuse-lite": {
"version": "1.0.30001452",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz",
- "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==",
- "dev": true
+ "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w=="
},
"chalk": {
"version": "3.0.0",
@@ -21149,8 +21091,7 @@
"electron-to-chromium": {
"version": "1.4.295",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz",
- "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==",
- "dev": true
+ "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw=="
},
"elliptic": {
"version": "6.5.4",
@@ -21351,8 +21292,7 @@
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
},
"escape-html": {
"version": "1.0.3",
@@ -21746,7 +21686,8 @@
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
"integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"eslint-scope": {
"version": "5.1.1",
@@ -22233,8 +22174,7 @@
"gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
},
"get-caller-file": {
"version": "2.0.5",
@@ -22343,7 +22283,8 @@
"goober": {
"version": "2.1.12",
"resolved": "https://registry.npmjs.org/goober/-/goober-2.1.12.tgz",
- "integrity": "sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q=="
+ "integrity": "sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q==",
+ "requires": {}
},
"gopd": {
"version": "1.0.1",
@@ -22781,7 +22722,8 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"ieee754": {
"version": "1.2.1",
@@ -23614,7 +23556,8 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
"integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"jest-regex-util": {
"version": "27.5.1",
@@ -24219,7 +24162,6 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"requires": {
"yallist": "^3.0.2"
}
@@ -24593,8 +24535,7 @@
"node-releases": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
- "dev": true
+ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
},
"normalize-path": {
"version": "3.0.0",
@@ -24968,8 +24909,7 @@
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"picomatch": {
"version": "2.3.1",
@@ -25074,7 +25014,8 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"postcss-modules-local-by-default": {
"version": "4.0.0",
@@ -25432,7 +25373,8 @@
"react-content-loader": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-6.2.0.tgz",
- "integrity": "sha512-r1dI6S+uHNLW68qraLE2njJYOuy6976PpCExuCZUcABWbfnF3FMcmuESRI8L4Bj45wnZ7n8g71hkPLzbma7/Cw=="
+ "integrity": "sha512-r1dI6S+uHNLW68qraLE2njJYOuy6976PpCExuCZUcABWbfnF3FMcmuESRI8L4Bj45wnZ7n8g71hkPLzbma7/Cw==",
+ "requires": {}
},
"react-dom": {
"version": "18.2.0",
@@ -25528,7 +25470,8 @@
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/react-refresh-typescript/-/react-refresh-typescript-2.0.7.tgz",
"integrity": "sha512-KbuW57FauO11e6a9gU836sCm3M3z0b2+J2qPhUudg0QplOfz0eAF3gMeshcUC/ChfNLJCK1SZxvYmUtRxiZE5A==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"react-router": {
"version": "6.8.1",
@@ -25575,7 +25518,8 @@
"react-spinners": {
"version": "0.13.8",
"resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.13.8.tgz",
- "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA=="
+ "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==",
+ "requires": {}
},
"react-switch": {
"version": "7.0.0",
@@ -25663,7 +25607,8 @@
"redux-persist": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz",
- "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ=="
+ "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==",
+ "requires": {}
},
"redux-saga": {
"version": "1.2.2",
@@ -26460,7 +26405,8 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"styled-components": {
"version": "5.3.6",
@@ -26985,7 +26931,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
- "dev": true,
"requires": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
@@ -27029,12 +26974,14 @@
"use-isomorphic-layout-effect": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
- "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA=="
+ "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "requires": {}
},
"use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
- "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA=="
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "requires": {}
},
"util": {
"version": "0.12.5",
@@ -27209,18 +27156,6 @@
"webpack-sources": "^3.2.3"
},
"dependencies": {
- "browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- }
- },
"enhanced-resolve": {
"version": "5.12.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
@@ -27395,7 +27330,8 @@
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz",
"integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==",
- "dev": true
+ "dev": true,
+ "requires": {}
}
}
},
@@ -27567,7 +27503,8 @@
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"xml-name-validator": {
"version": "3.0.0",
@@ -27590,8 +27527,7 @@
"yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"yaml": {
"version": "1.10.2",
diff --git a/src/app/components/AlertMessage/index.tsx b/src/app/components/AlertMessage/index.tsx
index 8d79ca59b..893c86b37 100644
--- a/src/app/components/AlertMessage/index.tsx
+++ b/src/app/components/AlertMessage/index.tsx
@@ -35,6 +35,21 @@ const RowContainer = styled.div((props) => ({
borderBottom: `1px solid ${props.theme.colors.background.elevation3}`,
}));
+const TickMarkButtonContainer = styled.div((props) => ({
+ display: 'flex',
+ flexDirection: 'row',
+ alignItems: 'center',
+ marginLeft: props.theme.spacing(8),
+ marginRight: props.theme.spacing(8),
+ marginBottom: props.theme.spacing(18),
+}));
+
+const TickMarkButtonText = styled.h1((props) => ({
+ ...props.theme.body_m,
+ color: props.theme.colors.white[0],
+ marginLeft: props.theme.spacing(4.25),
+}));
+
const TransparentButtonContainer = styled.div((props) => ({
marginRight: props.theme.spacing(6),
width: '100%',
@@ -44,6 +59,30 @@ const ButtonImage = styled.button({
backgroundColor: 'transparent',
});
+const TickButton = styled.input.attrs({ type: 'checkbox' })`
+ appearance: none;
+ border: 1.3px solid #ffffff;
+ width: 12px;
+ height: 12px;
+
+ &:checked {
+ position: relative;
+ &::before {
+ content: '\\2713';
+ font-size: 10px;
+ color: #fff;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ }
+ }
+
+ &:hover {
+ background-color: #303354;
+ }
+`;
+
const ButtonContainer = styled.div((props) => ({
display: 'flex',
flexDirection: 'row',
@@ -71,12 +110,15 @@ interface Props {
description: string;
buttonText?: string;
secondButtonText?: string;
+ tickMarkButtonText?: string;
onButtonClick?: () => void;
onSecondButtonClick?: () => void;
+ tickMarkButtonClick?:() => void;
+
}
function AlertMessage({
- onClose, title, description, buttonText, secondButtonText, onButtonClick, onSecondButtonClick,
+ onClose, title, description, buttonText, secondButtonText, tickMarkButtonText, onButtonClick, onSecondButtonClick, tickMarkButtonClick,
}: Props) {
return (
<>
@@ -104,6 +146,26 @@ function AlertMessage({
/>
)}
+ {!onSecondButtonClick && onButtonClick && (
+
+
+
+ )}
+ { tickMarkButtonText && tickMarkButtonClick && (
+
+ {
+ tickMarkButtonClick();
+ }}
+ />
+ {tickMarkButtonText}
+
+ )}
>
diff --git a/src/app/components/accountRow/index.tsx b/src/app/components/accountRow/index.tsx
index 55f21d1fa..0d304fd46 100644
--- a/src/app/components/accountRow/index.tsx
+++ b/src/app/components/accountRow/index.tsx
@@ -9,6 +9,9 @@ import Copy from '@assets/img/Copy.svg';
import { LoaderSize } from '@utils/constants';
import { Account } from '@secretkeylabs/xverse-core';
import { useState } from 'react';
+import { useDispatch } from 'react-redux';
+import { ChangeShowBtcReceiveAlertAction } from '@stores/wallet/actions/actionCreators';
+import useWalletSelector from '@hooks/useWalletSelector';
interface GradientCircleProps {
firstGradient: string;
@@ -107,12 +110,19 @@ interface Props {
}
function AccountRow({
- account, isSelected, onAccountSelected, allowCopyAddress,
+ account,
+ isSelected,
+ onAccountSelected,
+ allowCopyAddress,
}: Props) {
const { t } = useTranslation('translation', { keyPrefix: 'DASHBOARD_SCREEN' });
+ const {
+ showBtcReceiveAlert,
+ } = useWalletSelector();
const gradient = getAccountGradient(account?.stxAddress!);
const [onStxCopied, setOnStxCopied] = useState(false);
const [onBtcCopied, setOnBtcCopied] = useState(false);
+ const dispatch = useDispatch();
function getName() {
return account?.bnsName ?? `${t('ACCOUNT_NAME')} ${`${(account?.id ?? 0) + 1}`}`;
@@ -122,6 +132,7 @@ function AccountRow({
navigator.clipboard.writeText(account?.btcAddress!);
setOnBtcCopied(true);
setOnStxCopied(false);
+ if (showBtcReceiveAlert !== null) { dispatch(ChangeShowBtcReceiveAlertAction(true)); }
};
const handleOnStxAddressClick = () => {
@@ -131,7 +142,9 @@ function AccountRow({
};
const onRowClick = () => {
- if (!allowCopyAddress) { onAccountSelected(account!); }
+ if (!allowCopyAddress) {
+ onAccountSelected(account!);
+ }
};
const onClick = () => {
diff --git a/src/app/components/extendedScreenContainer/index.tsx b/src/app/components/extendedScreenContainer/index.tsx
index 9ebc9e9ee..828baa444 100644
--- a/src/app/components/extendedScreenContainer/index.tsx
+++ b/src/app/components/extendedScreenContainer/index.tsx
@@ -1,5 +1,9 @@
+import AlertMessage from '@components/alertMessage';
import useWalletSelector from '@hooks/useWalletSelector';
+import { ChangeShowBtcReceiveAlertAction, ChangeShowOrdinalReceiveAlertAction } from '@stores/wallet/actions/actionCreators';
+import { useState } from 'react';
import { useTranslation } from 'react-i18next';
+import { useDispatch } from 'react-redux';
import { Outlet } from 'react-router-dom';
import styled from 'styled-components';
@@ -31,15 +35,59 @@ const TestnetText = styled.h1((props) => ({
function ExtendedScreenContainer(): JSX.Element {
const {
network,
+ showBtcReceiveAlert,
+ showOrdinalReceiveAlert,
} = useWalletSelector();
- const { t } = useTranslation('translation', { keyPrefix: 'SETTING_SCREEN' });
+ const { t } = useTranslation('translation');
+ const [dontShowOrdinalReceiveAlert, setDontShowOrdinalReceiveAlert] = useState(false);
+ const [dontShowBtcReceiveAlert, setDontShowBtcReceiveAlert] = useState(false);
+ const dispatch = useDispatch();
+
+ const onReceiveAlertClose = () => {
+ if (dontShowBtcReceiveAlert) { dispatch(ChangeShowBtcReceiveAlertAction(null)); } else dispatch(ChangeShowBtcReceiveAlertAction(false));
+ };
+
+ const onReceiveOrdinalAlertClose = () => {
+ if (dontShowOrdinalReceiveAlert) { dispatch(ChangeShowOrdinalReceiveAlertAction(null)); } else dispatch(ChangeShowOrdinalReceiveAlertAction(false));
+ };
+
+ const onDontShowReceiveBtcAlert = () => {
+ setDontShowBtcReceiveAlert(true);
+ };
+
+ const onDontShowReceiveOrdinalAlert = () => {
+ setDontShowOrdinalReceiveAlert(true);
+ };
+
return (
{network.type === 'Testnet' && (
- {t('TESTNET')}
+ {t('SETTING_SCREEN.TESTNET')}
)}
+ {showBtcReceiveAlert && (
+
+ )}
+ {showOrdinalReceiveAlert && (
+
+ )}
);
diff --git a/src/app/components/screenContainer/index.tsx b/src/app/components/screenContainer/index.tsx
index cab1898ea..e6763208d 100644
--- a/src/app/components/screenContainer/index.tsx
+++ b/src/app/components/screenContainer/index.tsx
@@ -1,5 +1,9 @@
+import AlertMessage from '@components/alertMessage';
import useWalletSelector from '@hooks/useWalletSelector';
+import { ChangeShowBtcReceiveAlertAction, ChangeShowOrdinalReceiveAlertAction } from '@stores/wallet/actions/actionCreators';
+import { useState } from 'react';
import { useTranslation } from 'react-i18next';
+import { useDispatch } from 'react-redux';
import { Outlet } from 'react-router-dom';
import styled from 'styled-components';
@@ -32,15 +36,59 @@ const TestnetText = styled.h1((props) => ({
function ScreenContainer(): JSX.Element {
const {
network,
+ showBtcReceiveAlert,
+ showOrdinalReceiveAlert,
} = useWalletSelector();
- const { t } = useTranslation('translation', { keyPrefix: 'SETTING_SCREEN' });
+ const { t } = useTranslation('translation');
+ const [dontShowOrdinalReceiveAlert, setDontShowOrdinalReceiveAlert] = useState(false);
+ const [dontShowBtcReceiveAlert, setDontShowBtcReceiveAlert] = useState(false);
+ const dispatch = useDispatch();
+
+ const onReceiveAlertClose = () => {
+ if (dontShowBtcReceiveAlert) { dispatch(ChangeShowBtcReceiveAlertAction(null)); } else dispatch(ChangeShowBtcReceiveAlertAction(false));
+ };
+
+ const onReceiveOrdinalAlertClose = () => {
+ if (dontShowOrdinalReceiveAlert) { dispatch(ChangeShowOrdinalReceiveAlertAction(null)); } else dispatch(ChangeShowOrdinalReceiveAlertAction(false));
+ };
+
+ const onDontShowReceiveBtcAlert = () => {
+ setDontShowBtcReceiveAlert(true);
+ };
+
+ const onDontShowReceiveOrdinalAlert = () => {
+ setDontShowOrdinalReceiveAlert(true);
+ };
+
return (
{network.type === 'Testnet' && (
- {t('TESTNET')}
+ {t('SETTING_SCREEN.TESTNET')}
)}
+ {showBtcReceiveAlert && (
+
+ )}
+ {showOrdinalReceiveAlert && (
+
+ )}
);
diff --git a/src/app/screens/home/index.tsx b/src/app/screens/home/index.tsx
index 24a48391e..63f98c5fd 100644
--- a/src/app/screens/home/index.tsx
+++ b/src/app/screens/home/index.tsx
@@ -111,7 +111,6 @@ function Home() {
const {
stxAddress,
btcAddress,
- ordinalsAddress,
masterPubKey,
fiatCurrency,
btcFiatRate,
diff --git a/src/app/screens/nftDashboard/receiveNft/receiveCardComponent/index.tsx b/src/app/screens/nftDashboard/receiveNft/receiveCardComponent/index.tsx
index ffe734d4c..726f9556d 100644
--- a/src/app/screens/nftDashboard/receiveNft/receiveCardComponent/index.tsx
+++ b/src/app/screens/nftDashboard/receiveNft/receiveCardComponent/index.tsx
@@ -5,6 +5,9 @@ import { getShortTruncatedAddress } from '@utils/helper';
import Copy from '@assets/img/nftDashboard/Copy.svg';
import QrCode from '@assets/img/nftDashboard/QrCode.svg';
import { useTranslation } from 'react-i18next';
+import { ChangeShowOrdinalReceiveAlertAction } from '@stores/wallet/actions/actionCreators';
+import { useDispatch } from 'react-redux';
+import useWalletSelector from '@hooks/useWalletSelector';
interface Props {
icon: string;
@@ -83,7 +86,13 @@ function ReceiveCardComponent({
icon, title, address, onQrAddressClick,
}: Props) {
const { t } = useTranslation('translation', { keyPrefix: 'NFT_DASHBOARD_SCREEN' });
+ const dispatch = useDispatch();
+ const {
+ ordinalsAddress,
+ showOrdinalReceiveAlert,
+ } = useWalletSelector();
const onCopyClick = () => {
+ if (ordinalsAddress === address && showOrdinalReceiveAlert !== null) { dispatch(ChangeShowOrdinalReceiveAlertAction(true)); }
navigator.clipboard.writeText(address);
};
diff --git a/src/app/screens/receive/index.tsx b/src/app/screens/receive/index.tsx
index 47b9c88d6..3415efb70 100644
--- a/src/app/screens/receive/index.tsx
+++ b/src/app/screens/receive/index.tsx
@@ -10,6 +10,8 @@ import ActionButton from '@components/button';
import useWalletSelector from '@hooks/useWalletSelector';
import BottomTabBar from '@components/tabBar';
import InfoContainer from '@components/infoContainer';
+import { useDispatch } from 'react-redux';
+import { ChangeShowBtcReceiveAlertAction, ChangeShowOrdinalReceiveAlertAction } from '@stores/wallet/actions/actionCreators';
const OuterContainer = styled.div`
display: flex;
@@ -94,11 +96,14 @@ function Receive(): JSX.Element {
const { t } = useTranslation('translation', { keyPrefix: 'RECEIVE' });
const [addressCopied, setAddressCopied] = useState(false);
const navigate = useNavigate();
+ const dispatch = useDispatch();
const {
stxAddress,
btcAddress,
ordinalsAddress,
selectedAccount,
+ showBtcReceiveAlert,
+ showOrdinalReceiveAlert,
} = useWalletSelector();
const { currency } = useParams();
@@ -142,6 +147,8 @@ function Receive(): JSX.Element {
const handleOnClick = () => {
navigator.clipboard.writeText(getAddress());
setAddressCopied(true);
+ if (currency === 'BTC' && showBtcReceiveAlert !== null) { dispatch(ChangeShowBtcReceiveAlertAction(true)); }
+ if (currency === 'ORD' && showOrdinalReceiveAlert !== null) { dispatch(ChangeShowOrdinalReceiveAlertAction(true)); }
};
return (
<>
diff --git a/src/app/stores/wallet/actions/actionCreators.ts b/src/app/stores/wallet/actions/actionCreators.ts
index 119140de0..effe0abbb 100644
--- a/src/app/stores/wallet/actions/actionCreators.ts
+++ b/src/app/stores/wallet/actions/actionCreators.ts
@@ -270,3 +270,17 @@ export function ChangeActivateOrdinalsAction(hasActivatedOrdinalsKey: boolean):
hasActivatedOrdinalsKey,
};
}
+
+export function ChangeShowBtcReceiveAlertAction(showBtcReceiveAlert: boolean | null): actions.ChangeShowBtcReceiveAlert {
+ return {
+ type: actions.ChangeShowBtcReceiveAlertKey,
+ showBtcReceiveAlert,
+ };
+}
+
+export function ChangeShowOrdinalReceiveAlertAction(showOrdinalReceiveAlert: boolean | null): actions.ChangeShowOrdinalReceiveAlert {
+ return {
+ type: actions.ChangeShowOrdinalReceiveAlertKey,
+ showOrdinalReceiveAlert,
+ };
+}
diff --git a/src/app/stores/wallet/actions/types.ts b/src/app/stores/wallet/actions/types.ts
index 1cea74d56..740e32bff 100644
--- a/src/app/stores/wallet/actions/types.ts
+++ b/src/app/stores/wallet/actions/types.ts
@@ -46,6 +46,9 @@ export const FetchCoinDataFailureKey = 'FetchCoinDataFailure';
export const ChangeHasActivatedOrdinalsKey = 'ChangeHasActivatedOrdinalsKey';
+export const ChangeShowBtcReceiveAlertKey = 'ChangeShowBtcReceiveAlertKey';
+export const ChangeShowOrdinalReceiveAlertKey = 'ChangeShowOrdinalReceiveAlertKey';
+
export interface WalletState {
stxAddress: string;
btcAddress: string;
@@ -74,6 +77,8 @@ export interface WalletState {
feeMultipliers: FeesMultipliers | null;
networkAddress: string | undefined;
hasActivatedOrdinalsKey: boolean | undefined;
+ showBtcReceiveAlert: boolean | null;
+ showOrdinalReceiveAlert: boolean | null;
}
export interface SetWallet {
@@ -229,6 +234,16 @@ export interface ChangeActivateOrdinals {
hasActivatedOrdinalsKey: boolean;
}
+export interface ChangeShowBtcReceiveAlert {
+ type: typeof ChangeShowBtcReceiveAlertKey;
+ showBtcReceiveAlert: boolean | null;
+}
+
+export interface ChangeShowOrdinalReceiveAlert {
+ type: typeof ChangeShowOrdinalReceiveAlertKey;
+ showOrdinalReceiveAlert: boolean | null;
+}
+
export type WalletActions =
| SetWallet
| ResetWallet
@@ -256,4 +271,6 @@ export type WalletActions =
| ChangeFiatCurrency
| ChangeNetwork
| GetActiveAccounts
- | ChangeActivateOrdinals;
+ | ChangeActivateOrdinals
+ | ChangeShowBtcReceiveAlert
+ | ChangeShowOrdinalReceiveAlert;
diff --git a/src/app/stores/wallet/walletReducer.ts b/src/app/stores/wallet/walletReducer.ts
index 9355842fa..7136b0291 100644
--- a/src/app/stores/wallet/walletReducer.ts
+++ b/src/app/stores/wallet/walletReducer.ts
@@ -27,6 +27,8 @@ import {
GetActiveAccountsKey,
SetWalletSeedPhraseKey,
ChangeHasActivatedOrdinalsKey,
+ ChangeShowBtcReceiveAlertKey,
+ ChangeShowOrdinalReceiveAlertKey,
} from './actions/types';
const initialWalletState: WalletState = {
@@ -60,6 +62,8 @@ const initialWalletState: WalletState = {
hasRestoredMemoryKey: false,
networkAddress: undefined,
hasActivatedOrdinalsKey: undefined,
+ showBtcReceiveAlert: false,
+ showOrdinalReceiveAlert: false,
};
const walletReducer = (
@@ -213,6 +217,16 @@ const walletReducer = (
...state,
hasActivatedOrdinalsKey: action.hasActivatedOrdinalsKey,
};
+ case ChangeShowBtcReceiveAlertKey:
+ return {
+ ...state,
+ showBtcReceiveAlert: action.showBtcReceiveAlert,
+ };
+ case ChangeShowOrdinalReceiveAlertKey:
+ return {
+ ...state,
+ showOrdinalReceiveAlert: action.showOrdinalReceiveAlert,
+ };
default:
return state;
}
diff --git a/src/locales/en.json b/src/locales/en.json
index b58d526c5..8d7d3dad1 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -418,5 +418,13 @@
"WINDOW_CLOSED_ALERT": {
"TITLE": "Requesting window closed",
"BODY": "The window that initiated the request is closed, but you can still broadcast the transaction"
+ },
+ "ADDRESS_RECEIVE_ALERT_MESSAGE": {
+ "RECEIVING_ORDINALS": "Receiving Ordinals",
+ "RECEIVING_ORDINAL_INFO": "If you want to receive Bitcoin, do not use your Ordinal address ; go to the main tab and use your Bitcoin receive address instead.",
+ "RECEIVING_BTC": "Receiving Bitcoin",
+ "RECEIVING_BTC_INFO": "If you want to receive Ordinal, do not use your BTC address ; go to the NFT tab and use your Ordinal receive address instead.",
+ "I_UNDERSTAND": "I understand",
+ "DO_NOT_SHOW_MESSAGE": "Do not show this message again"
}
}
From fdc2bf6cd25e3819969e65bd41bbe3e3f040d93d Mon Sep 17 00:00:00 2001
From: DuskaT021
Date: Thu, 23 Feb 2023 12:37:07 +0100
Subject: [PATCH 02/16] Updated the copy
---
src/locales/en.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/locales/en.json b/src/locales/en.json
index 8d7d3dad1..8080167a9 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -421,9 +421,9 @@
},
"ADDRESS_RECEIVE_ALERT_MESSAGE": {
"RECEIVING_ORDINALS": "Receiving Ordinals",
- "RECEIVING_ORDINAL_INFO": "If you want to receive Bitcoin, do not use your Ordinal address ; go to the main tab and use your Bitcoin receive address instead.",
+ "RECEIVING_ORDINAL_INFO": "Use this address to receive Ordinals only. Do not use this address to receive Bitcoin payments.",
"RECEIVING_BTC": "Receiving Bitcoin",
- "RECEIVING_BTC_INFO": "If you want to receive Ordinal, do not use your BTC address ; go to the NFT tab and use your Ordinal receive address instead.",
+ "RECEIVING_BTC_INFO": "Use this address to receive Bitcoin payments only. Do not use this address to receive Ordinals.",
"I_UNDERSTAND": "I understand",
"DO_NOT_SHOW_MESSAGE": "Do not show this message again"
}
From 12c6a776d9a8352b0eec3acd738d78e32ed5b1b7 Mon Sep 17 00:00:00 2001
From: Mahmoud
Date: Fri, 24 Feb 2023 08:44:10 +0200
Subject: [PATCH 03/16] init ordinal transfers screens
---
package-lock.json | 298 +++++++-----------
package.json | 2 +-
src/app/components/infoContainer/index.tsx | 19 +-
src/app/components/sendForm/index.tsx | 11 +-
src/app/routes/index.tsx | 22 ++
.../confirmOrdinalTransaction/index.tsx | 232 ++++++++++++++
src/app/screens/nftDashboard/index.tsx | 2 +-
src/app/screens/ordinalDetail/index.tsx | 76 ++---
src/app/screens/sendOrdinal/index.tsx | 262 +++++++++++++++
src/app/utils/constants.ts | 2 +-
src/assets/img/Warning.svg | 5 +
src/locales/en.json | 4 +-
12 files changed, 699 insertions(+), 236 deletions(-)
create mode 100644 src/app/screens/confirmOrdinalTransaction/index.tsx
create mode 100644 src/app/screens/sendOrdinal/index.tsx
create mode 100644 src/assets/img/Warning.svg
diff --git a/package-lock.json b/package-lock.json
index 332c443f4..e9958af56 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "xverse-web-extension",
- "version": "0.2.0",
+ "version": "0.2.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "xverse-web-extension",
- "version": "0.2.0",
+ "version": "0.2.1",
"dependencies": {
"@react-spring/web": "^9.6.1",
- "@secretkeylabs/xverse-core": "0.7.3",
+ "@secretkeylabs/xverse-core": "0.7.4",
"@stacks/connect": "^6.10.2",
"@stacks/encryption": "4.3.5",
"@stacks/stacks-blockchain-api-types": "^6.1.1",
@@ -119,7 +119,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
"integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.1.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -143,7 +142,6 @@
"version": "7.20.14",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz",
"integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -152,7 +150,6 @@
"version": "7.20.12",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz",
"integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==",
- "dev": true,
"dependencies": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
@@ -182,7 +179,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
"bin": {
"json5": "lib/cli.js"
},
@@ -194,7 +190,6 @@
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -251,7 +246,6 @@
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
"integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
- "dev": true,
"dependencies": {
"@babel/compat-data": "^7.20.5",
"@babel/helper-validator-option": "^7.18.6",
@@ -266,39 +260,10 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -349,7 +314,6 @@
"version": "7.20.11",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
"integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
- "dev": true,
"dependencies": {
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-module-imports": "^7.18.6",
@@ -376,7 +340,6 @@
"version": "7.20.2",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
"integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
"dependencies": {
"@babel/types": "^7.20.2"
},
@@ -415,7 +378,6 @@
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
"integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -424,7 +386,6 @@
"version": "7.20.13",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz",
"integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==",
- "dev": true,
"dependencies": {
"@babel/template": "^7.20.7",
"@babel/traverse": "^7.20.13",
@@ -1583,7 +1544,6 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
"integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.0",
"@jridgewell/sourcemap-codec": "^1.4.10"
@@ -1959,9 +1919,9 @@
}
},
"node_modules/@secretkeylabs/xverse-core": {
- "version": "0.7.3",
- "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/0.7.3/17b23a971ca01d41255d20bb17c43ed2944f9e50",
- "integrity": "sha512-jajL4AKjlCrfiBQbF7V++ZkA7v1GWqVku5/8TE2kMb0FEFFXrSAymHAfBq4BPERTXAI2CA6csoAvDjMXcQvDiA==",
+ "version": "0.7.4",
+ "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/0.7.4/04a1d022b070b7af1b5ab149bc0ee7a45f4de4e0",
+ "integrity": "sha512-QjcvosTrQKm8Tr6yAld1bLgqZPrlQMDzMH0R2OqxRa3FCWKeCl2buZejeQl1BqevkzaAi+dap6RC3e30cUN0ww==",
"hasInstallScript": true,
"license": "ISC",
"dependencies": {
@@ -1982,7 +1942,7 @@
"buffer": "6.0.3",
"ecpair": "^2.1.0",
"jsontokens": "^4.0.1",
- "micro-btc-signer": "^0.4.0",
+ "micro-btc-signer": "^0.4.2",
"process": "^0.11.10",
"util": "^0.12.4"
}
@@ -4976,6 +4936,19 @@
"semver": "^5.3.0"
}
},
+ "node_modules/babel-preset-env/node_modules/browserslist": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
+ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+ "dev": true,
+ "dependencies": {
+ "caniuse-lite": "^1.0.30000844",
+ "electron-to-chromium": "^1.3.47"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ }
+ },
"node_modules/babel-preset-env/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -5502,16 +5475,30 @@
}
},
"node_modules/browserslist": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
- "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
- "dev": true,
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
"dependencies": {
- "caniuse-lite": "^1.0.30000844",
- "electron-to-chromium": "^1.3.47"
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
},
"bin": {
"browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
"node_modules/bs-logger": {
@@ -5675,7 +5662,6 @@
"version": "1.0.30001452",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz",
"integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -6908,8 +6894,7 @@
"node_modules/electron-to-chromium": {
"version": "1.4.295",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz",
- "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==",
- "dev": true
+ "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw=="
},
"node_modules/elliptic": {
"version": "6.5.4",
@@ -7158,7 +7143,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -8313,7 +8297,6 @@
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
"engines": {
"node": ">=6.9.0"
}
@@ -10987,7 +10970,6 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"dependencies": {
"yallist": "^3.0.2"
}
@@ -11454,8 +11436,7 @@
"node_modules/node-releases": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
- "dev": true
+ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
},
"node_modules/normalize-path": {
"version": "3.0.0",
@@ -11953,8 +11934,7 @@
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -14689,7 +14669,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -15261,34 +15240,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/webpack/node_modules/browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
"node_modules/webpack/node_modules/enhanced-resolve": {
"version": "5.12.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
@@ -15532,8 +15483,7 @@
"node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/yaml": {
"version": "1.10.2",
@@ -15601,7 +15551,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
"integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
"requires": {
"@jridgewell/gen-mapping": "^0.1.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -15618,14 +15567,12 @@
"@babel/compat-data": {
"version": "7.20.14",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz",
- "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==",
- "dev": true
+ "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw=="
},
"@babel/core": {
"version": "7.20.12",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz",
"integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==",
- "dev": true,
"requires": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
@@ -15647,14 +15594,12 @@
"json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}
}
},
@@ -15697,7 +15642,6 @@
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
"integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
- "dev": true,
"requires": {
"@babel/compat-data": "^7.20.5",
"@babel/helper-validator-option": "^7.18.6",
@@ -15706,23 +15650,10 @@
"semver": "^6.3.0"
},
"dependencies": {
- "browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- }
- },
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}
}
},
@@ -15760,7 +15691,6 @@
"version": "7.20.11",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
"integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
- "dev": true,
"requires": {
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-module-imports": "^7.18.6",
@@ -15781,7 +15711,6 @@
"version": "7.20.2",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
"integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
"requires": {
"@babel/types": "^7.20.2"
}
@@ -15807,14 +15736,12 @@
"@babel/helper-validator-option": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true
+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw=="
},
"@babel/helpers": {
"version": "7.20.13",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz",
"integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==",
- "dev": true,
"requires": {
"@babel/template": "^7.20.7",
"@babel/traverse": "^7.20.13",
@@ -16232,7 +16159,8 @@
"@emotion/use-insertion-effect-with-fallbacks": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
- "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A=="
+ "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
+ "requires": {}
},
"@emotion/utils": {
"version": "1.2.0",
@@ -16696,7 +16624,6 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
"integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
"requires": {
"@jridgewell/set-array": "^1.0.0",
"@jridgewell/sourcemap-codec": "^1.4.10"
@@ -16953,9 +16880,9 @@
}
},
"@secretkeylabs/xverse-core": {
- "version": "0.7.3",
- "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/0.7.3/17b23a971ca01d41255d20bb17c43ed2944f9e50",
- "integrity": "sha512-jajL4AKjlCrfiBQbF7V++ZkA7v1GWqVku5/8TE2kMb0FEFFXrSAymHAfBq4BPERTXAI2CA6csoAvDjMXcQvDiA==",
+ "version": "0.7.4",
+ "resolved": "https://npm.pkg.github.com/download/@secretkeylabs/xverse-core/0.7.4/04a1d022b070b7af1b5ab149bc0ee7a45f4de4e0",
+ "integrity": "sha512-QjcvosTrQKm8Tr6yAld1bLgqZPrlQMDzMH0R2OqxRa3FCWKeCl2buZejeQl1BqevkzaAi+dap6RC3e30cUN0ww==",
"requires": {
"@noble/secp256k1": "^1.7.1",
"@scure/base": "^1.1.1",
@@ -16974,7 +16901,7 @@
"buffer": "6.0.3",
"ecpair": "^2.1.0",
"jsontokens": "^4.0.1",
- "micro-btc-signer": "^0.4.0",
+ "micro-btc-signer": "^0.4.2",
"process": "^0.11.10",
"util": "^0.12.4"
},
@@ -18410,7 +18337,8 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
"integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@webpack-cli/info": {
"version": "1.5.0",
@@ -18425,7 +18353,8 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz",
"integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@xtuc/ieee754": {
"version": "1.2.0",
@@ -18483,13 +18412,15 @@
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"acorn-walk": {
"version": "7.2.0",
@@ -18551,7 +18482,8 @@
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"ansi-escapes": {
"version": "4.3.2",
@@ -19576,6 +19508,16 @@
"semver": "^5.3.0"
},
"dependencies": {
+ "browserslist": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
+ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30000844",
+ "electron-to-chromium": "^1.3.47"
+ }
+ },
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -20052,13 +19994,14 @@
}
},
"browserslist": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
- "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
- "dev": true,
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"requires": {
- "caniuse-lite": "^1.0.30000844",
- "electron-to-chromium": "^1.3.47"
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
}
},
"bs-logger": {
@@ -20188,8 +20131,7 @@
"caniuse-lite": {
"version": "1.0.30001452",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz",
- "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==",
- "dev": true
+ "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w=="
},
"chalk": {
"version": "3.0.0",
@@ -21149,8 +21091,7 @@
"electron-to-chromium": {
"version": "1.4.295",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz",
- "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==",
- "dev": true
+ "integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw=="
},
"elliptic": {
"version": "6.5.4",
@@ -21351,8 +21292,7 @@
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
},
"escape-html": {
"version": "1.0.3",
@@ -21746,7 +21686,8 @@
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
"integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"eslint-scope": {
"version": "5.1.1",
@@ -22233,8 +22174,7 @@
"gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
},
"get-caller-file": {
"version": "2.0.5",
@@ -22343,7 +22283,8 @@
"goober": {
"version": "2.1.12",
"resolved": "https://registry.npmjs.org/goober/-/goober-2.1.12.tgz",
- "integrity": "sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q=="
+ "integrity": "sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q==",
+ "requires": {}
},
"gopd": {
"version": "1.0.1",
@@ -22781,7 +22722,8 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"ieee754": {
"version": "1.2.1",
@@ -23614,7 +23556,8 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
"integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"jest-regex-util": {
"version": "27.5.1",
@@ -24219,7 +24162,6 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"requires": {
"yallist": "^3.0.2"
}
@@ -24593,8 +24535,7 @@
"node-releases": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
- "dev": true
+ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
},
"normalize-path": {
"version": "3.0.0",
@@ -24968,8 +24909,7 @@
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"picomatch": {
"version": "2.3.1",
@@ -25074,7 +25014,8 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"postcss-modules-local-by-default": {
"version": "4.0.0",
@@ -25432,7 +25373,8 @@
"react-content-loader": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-6.2.0.tgz",
- "integrity": "sha512-r1dI6S+uHNLW68qraLE2njJYOuy6976PpCExuCZUcABWbfnF3FMcmuESRI8L4Bj45wnZ7n8g71hkPLzbma7/Cw=="
+ "integrity": "sha512-r1dI6S+uHNLW68qraLE2njJYOuy6976PpCExuCZUcABWbfnF3FMcmuESRI8L4Bj45wnZ7n8g71hkPLzbma7/Cw==",
+ "requires": {}
},
"react-dom": {
"version": "18.2.0",
@@ -25528,7 +25470,8 @@
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/react-refresh-typescript/-/react-refresh-typescript-2.0.7.tgz",
"integrity": "sha512-KbuW57FauO11e6a9gU836sCm3M3z0b2+J2qPhUudg0QplOfz0eAF3gMeshcUC/ChfNLJCK1SZxvYmUtRxiZE5A==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"react-router": {
"version": "6.8.1",
@@ -25575,7 +25518,8 @@
"react-spinners": {
"version": "0.13.8",
"resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.13.8.tgz",
- "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA=="
+ "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==",
+ "requires": {}
},
"react-switch": {
"version": "7.0.0",
@@ -25663,7 +25607,8 @@
"redux-persist": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz",
- "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ=="
+ "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==",
+ "requires": {}
},
"redux-saga": {
"version": "1.2.2",
@@ -26460,7 +26405,8 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"styled-components": {
"version": "5.3.6",
@@ -26985,7 +26931,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
- "dev": true,
"requires": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
@@ -27029,12 +26974,14 @@
"use-isomorphic-layout-effect": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
- "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA=="
+ "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "requires": {}
},
"use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
- "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA=="
+ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "requires": {}
},
"util": {
"version": "0.12.5",
@@ -27209,18 +27156,6 @@
"webpack-sources": "^3.2.3"
},
"dependencies": {
- "browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- }
- },
"enhanced-resolve": {
"version": "5.12.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
@@ -27395,7 +27330,8 @@
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz",
"integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==",
- "dev": true
+ "dev": true,
+ "requires": {}
}
}
},
@@ -27567,7 +27503,8 @@
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"xml-name-validator": {
"version": "3.0.0",
@@ -27590,8 +27527,7 @@
"yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"yaml": {
"version": "1.10.2",
diff --git a/package.json b/package.json
index 3cd4b3e95..4577fb45c 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"private": true,
"dependencies": {
"@react-spring/web": "^9.6.1",
- "@secretkeylabs/xverse-core": "0.7.3",
+ "@secretkeylabs/xverse-core": "0.7.4",
"@stacks/connect": "^6.10.2",
"@stacks/encryption": "4.3.5",
"@stacks/stacks-blockchain-api-types": "^6.1.1",
diff --git a/src/app/components/infoContainer/index.tsx b/src/app/components/infoContainer/index.tsx
index 822392060..1ef1d73ca 100644
--- a/src/app/components/infoContainer/index.tsx
+++ b/src/app/components/infoContainer/index.tsx
@@ -1,7 +1,8 @@
import styled from 'styled-components';
import InfoIcon from '@assets/img/info.svg';
+import WarningIcon from '@assets/img/Warning.svg';
-const Container = styled.div((props) => ({
+const Container = styled.div<{ type: 'Info' | 'Warning' | undefined }>((props) => ({
display: 'flex',
flexDirection: 'row',
borderRadius: 12,
@@ -9,7 +10,9 @@ const Container = styled.div((props) => ({
backgroundColor: 'transparent',
padding: props.theme.spacing(8),
marginBottom: props.theme.spacing(6),
- border: '1px solid rgba(255, 255, 255, 0.2)',
+ border: `1px solid ${
+ props.type === 'Warning' ? props.theme.colors.feedback.error_700 : 'rgba(255, 255, 255, 0.2)'
+ }`,
}));
const TextContainer = styled.div((props) => ({
@@ -38,20 +41,22 @@ const Text = styled.h1((props) => ({
interface Props {
titleText?: string;
bodyText: string;
+ type?: 'Info' | 'Warning';
}
-function InfoContainer({ titleText, bodyText }: Props) {
+function InfoContainer({ titleText, bodyText, type }: Props) {
return (
-
-
+
+
{titleText ? (
<>
{titleText}
{bodyText}
>
- )
- : {bodyText}}
+ ) : (
+ {bodyText}
+ )}
);
diff --git a/src/app/components/sendForm/index.tsx b/src/app/components/sendForm/index.tsx
index 2bc4bd8fe..90c0f96fb 100644
--- a/src/app/components/sendForm/index.tsx
+++ b/src/app/components/sendForm/index.tsx
@@ -329,7 +329,7 @@ function SendForm({
@@ -379,7 +379,7 @@ function SendForm({
return (
<>
- {currencyType !== 'NFT' && (
+ {currencyType !== 'NFT' && currencyType !== 'Ordinal' && (
{addressError}
- {currencyType !== 'BTC' && currencyType !== 'NFT' && !hideMemo && (
+ {currencyType !== 'BTC' && currencyType !== 'NFT' && currencyType !== 'Ordinal' && !hideMemo && (
<>
{t('MEMO')}
@@ -419,6 +419,11 @@ function SendForm({
>
)}
+ {
+ currencyType === 'Ordinal' && (
+
+ )
+ }
diff --git a/src/app/routes/index.tsx b/src/app/routes/index.tsx
index f9fb02564..65e4016ad 100644
--- a/src/app/routes/index.tsx
+++ b/src/app/routes/index.tsx
@@ -40,6 +40,8 @@ import SignatureRequest from '@screens/signatureRequest';
import TransactionRequest from '@screens/transactionRequest';
import ErrorBoundary from '@screens/error';
import OrdinalDetailScreen from '@screens/ordinalDetail';
+import SendOrdinal from '@screens/sendOrdinal';
+import ConfirmOrdinalTransaction from '@screens/confirmOrdinalTransaction';
const router = createHashRouter([
{
@@ -195,6 +197,14 @@ const router = createHashRouter([
),
},
+ {
+ path: 'send-ordinal',
+ element: (
+
+
+
+ ),
+ },
],
},
{
@@ -226,6 +236,18 @@ const router = createHashRouter([
path: 'confirm-nft-tx/:id',
element: ,
},
+ {
+ path: 'confirm-ordinal-tx/:id',
+ element: ,
+ },
+ {
+ path: 'nft-dashboard/ordinal-detail/:id/send-ordinal',
+ element: (
+
+
+
+ ),
+ },
],
},
]);
diff --git a/src/app/screens/confirmOrdinalTransaction/index.tsx b/src/app/screens/confirmOrdinalTransaction/index.tsx
new file mode 100644
index 000000000..440946c0f
--- /dev/null
+++ b/src/app/screens/confirmOrdinalTransaction/index.tsx
@@ -0,0 +1,232 @@
+import { useTranslation } from 'react-i18next';
+import styled from 'styled-components';
+import { useMutation } from '@tanstack/react-query';
+import { useEffect, useState } from 'react';
+import { useDispatch, useSelector } from 'react-redux';
+import { useLocation, useNavigate, useParams } from 'react-router-dom';
+import ArrowLeft from '@assets/img/dashboard/arrow_left.svg';
+import Seperator from '@components/seperator';
+import { StoreState } from '@stores/index';
+import BottomBar from '@components/tabBar';
+import { fetchBtcWalletDataRequestAction } from '@stores/wallet/actions/actionCreators';
+import RecipientAddressView from '@components/recipinetAddressView';
+import useNftDataSelector from '@hooks/useNftDataSelector';
+import AccountHeaderComponent from '@components/accountHeader';
+import TopRow from '@components/topRow';
+import ConfirmBtcTransactionComponent from '@screens/confrimBtcTransaction/confirmBtcTransactionComponent';
+import { BtcTransactionBroadcastResponse, broadcastRawBtcTransaction } from '@secretkeylabs/xverse-core';
+import OrdinalImage from '@screens/ordinals/ordinalImage';
+
+const ScrollContainer = styled.div`
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ overflow-y: auto;
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ height: 600px;
+ width: 360px;
+ margin: auto;
+`;
+
+const InfoContainer = styled.div((props) => ({
+ display: 'flex',
+ flexDirection: 'column',
+ marginTop: props.theme.spacing(12),
+}));
+
+const TitleText = styled.h1((props) => ({
+ ...props.theme.headline_category_s,
+ color: props.theme.colors.white['400'],
+ textTransform: 'uppercase',
+}));
+
+const ButtonContainer = styled.div((props) => ({
+ display: 'flex',
+ flexDirection: 'row',
+ marginLeft: '15%',
+ marginTop: props.theme.spacing(40),
+}));
+
+const Button = styled.button((props) => ({
+ display: 'flex',
+ flexDirection: 'row',
+ justifyContent: 'flex-end',
+ alignItems: 'center',
+ borderRadius: props.theme.radius(1),
+ backgroundColor: 'transparent',
+ opacity: 0.8,
+ marginTop: props.theme.spacing(5),
+}));
+
+const ButtonText = styled.div((props) => ({
+ ...props.theme.body_xs,
+ fontWeight: 400,
+ fontSize: 14,
+ color: props.theme.colors.white['0'],
+ textAlign: 'center',
+}));
+
+const ButtonImage = styled.img((props) => ({
+ marginRight: props.theme.spacing(3),
+ alignSelf: 'center',
+ transform: 'all',
+}));
+
+const IndicationText = styled.h1((props) => ({
+ ...props.theme.headline_category_s,
+ color: props.theme.colors.white['400'],
+ textTransform: 'uppercase',
+ fontSize: 14,
+}));
+
+const ValueText = styled.h1((props) => ({
+ ...props.theme.body_m,
+ marginTop: props.theme.spacing(2),
+ wordBreak: 'break-all',
+}));
+
+const Container = styled.div({
+ display: 'flex',
+ flexDirection: 'column',
+ justifyContent: 'center',
+ alignItems: 'center',
+});
+
+const NFtContainer = styled.div((props) => ({
+ maxWidth: 120,
+ maxHeight: 120,
+ width: '60%',
+ display: 'flex',
+ aspectRatio: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: 8,
+ padding: props.theme.spacing(5),
+ marginBottom: props.theme.spacing(6),
+}));
+
+const OrdinalInscriptionNumber = styled.h1((props) => ({
+ ...props.theme.headline_s,
+ color: props.theme.colors.white['0'],
+ textAlign: 'center',
+}));
+
+function ConfirmOrdinalTransaction() {
+ const { t } = useTranslation('translation', { keyPrefix: 'CONFIRM_TRANSACTION' });
+ const isGalleryOpen: boolean = document.documentElement.clientWidth > 360;
+ const navigate = useNavigate();
+ const dispatch = useDispatch();
+ const {
+ network, btcAddress, stxBtcRate, btcFiatRate,
+ } = useSelector(
+ (state: StoreState) => state.walletState,
+ );
+ const [recipientAddress, setRecipientAddress] = useState('');
+ const location = useLocation();
+ const { fee, amount, signedTxHex } = location.state;
+ const {
+ isLoading,
+ error: txError,
+ data: btcTxBroadcastData,
+ mutate,
+ } = useMutation(
+ async ({ signedTx }) => broadcastRawBtcTransaction(signedTx, network.type),
+ );
+ const { id } = useParams();
+ const { ordinalsData } = useNftDataSelector();
+ const ordinalId = id!.split('::');
+ const ordinal = ordinalsData.find((inscription) => inscription?.metadata?.id === ordinalId[0]);
+
+ useEffect(() => {
+ setRecipientAddress(location.state.recipientAddress);
+ }, [location]);
+
+ useEffect(() => {
+ if (btcTxBroadcastData) {
+ navigate('/tx-status', {
+ state: {
+ txid: btcTxBroadcastData.tx.hash,
+ currency: 'BTC',
+ error: '',
+ },
+ });
+ setTimeout(() => {
+ dispatch(
+ fetchBtcWalletDataRequestAction(btcAddress, network.type, stxBtcRate, btcFiatRate),
+ );
+ }, 1000);
+ }
+ }, [btcTxBroadcastData]);
+
+ useEffect(() => {
+ if (txError) {
+ navigate('/tx-status', {
+ state: {
+ txid: '',
+ currency: 'BTC',
+ error: txError.toString(),
+ },
+ });
+ }
+ }, [txError]);
+
+ const networkInfoSection = (
+
+ {t('NETWORK')}
+ {network.type}
+
+ );
+
+ const handleOnConfirmClick = (txHex: string) => {
+ mutate({ signedTx: txHex });
+ };
+
+ const handleOnCancelClick = () => {
+ navigate(-1);
+ };
+
+ return (
+ <>
+ {isGalleryOpen && (
+ <>
+
+
+
+
+ >
+ )}
+
+ {!isGalleryOpen && }
+
+
+
+
+
+ {ordinal?.inscriptionNumber}
+
+
+ {networkInfoSection}
+
+
+ {!isGalleryOpen && }
+
+ >
+ );
+}
+export default ConfirmOrdinalTransaction;
diff --git a/src/app/screens/nftDashboard/index.tsx b/src/app/screens/nftDashboard/index.tsx
index 571ee4ca3..c08ad80cf 100644
--- a/src/app/screens/nftDashboard/index.tsx
+++ b/src/app/screens/nftDashboard/index.tsx
@@ -16,7 +16,7 @@ import ShareDialog from '@components/shareNft';
import AccountHeaderComponent from '@components/accountHeader';
import useNetworkSelector from '@hooks/useNetwork';
import Ordinal from '@screens/ordinals';
-import AlertMessage from '@components/alertMessage';
+import AlertMessage from '@components/AlertMessage';
import { ChangeActivateOrdinalsAction } from '@stores/wallet/actions/actionCreators';
import { useDispatch } from 'react-redux';
import { BtcOrdinal, NftsListData } from '@secretkeylabs/xverse-core/types';
diff --git a/src/app/screens/ordinalDetail/index.tsx b/src/app/screens/ordinalDetail/index.tsx
index 1db908279..5cdafcc61 100644
--- a/src/app/screens/ordinalDetail/index.tsx
+++ b/src/app/screens/ordinalDetail/index.tsx
@@ -213,7 +213,6 @@ function OrdinalDetailScreen() {
const { storeOrdinalsMetaData } = useOrdinalDataReducer();
const { id } = useParams();
const [ordinalData, setOrdinalData] = useState();
- const [showSendOridnalsAlert, setshowSendOridnalsAlert] = useState(false);
const [notSupportedOrdinal, setNotSupportedOrdinal] = useState(false);
const isGalleryOpen: boolean = document.documentElement.clientWidth > 360;
const {
@@ -250,18 +249,18 @@ function OrdinalDetailScreen() {
navigate('/nft-dashboard');
};
- const onCloseAlert = () => {
- setshowSendOridnalsAlert(false);
- };
-
const openInGalleryView = async () => {
await chrome.tabs.create({
url: chrome.runtime.getURL(`options.html#/nft-dashboard/ordinal-detail/${id}`),
});
};
- const showAlert = () => {
- setshowSendOridnalsAlert(true);
+ const handleSendOrdinal = () => {
+ navigate('send-ordinal', {
+ state: {
+ ordinal: ordinalData,
+ },
+ });
};
const ownedByView = (
@@ -294,11 +293,9 @@ function OrdinalDetailScreen() {
>
- {notSupportedOrdinal && (
-
- )}
+ {notSupportedOrdinal && }
-
+
>
);
@@ -317,10 +314,12 @@ function OrdinalDetailScreen() {
>
- {ordinalData?.inscriptionNumber ?? t('INSCRIPTION')}
+
+ {ordinalData?.inscriptionNumber ?? t('INSCRIPTION')}
+
-
+
@@ -330,36 +329,38 @@ function OrdinalDetailScreen() {
{t('DESCRIPTION')}
- {notSupportedOrdinal && (
-
- )}
+ {notSupportedOrdinal && }
{ordinalData?.metadata['content length'] && (
-
+
)}
{ordinalData?.metadata['content type'] && (
-
+
)}
{ordinalData?.metadata['output value'] && (
-
+
+ )}
+ {ordinalData?.metadata.timestamp && (
+
)}
- {ordinalData?.metadata.timestamp && }
{ordinalData?.metadata['genesis height'] && (
-
+
+ )}
+ {ordinalData?.metadata.location && (
+
)}
- {ordinalData?.metadata.location && }
@@ -373,13 +374,6 @@ function OrdinalDetailScreen() {
)}
- {showSendOridnalsAlert && (
-
- )}
{isGalleryOpen ? galleryView : extensionView}
{!isGalleryOpen && (
diff --git a/src/app/screens/sendOrdinal/index.tsx b/src/app/screens/sendOrdinal/index.tsx
new file mode 100644
index 000000000..d7832ad55
--- /dev/null
+++ b/src/app/screens/sendOrdinal/index.tsx
@@ -0,0 +1,262 @@
+import styled from 'styled-components';
+import { useTranslation } from 'react-i18next';
+import { useEffect, useState } from 'react';
+import { useMutation, useQuery } from '@tanstack/react-query';
+import { useLocation, useNavigate, useParams } from 'react-router-dom';
+import {
+ BtcOrdinal, ErrorCodes, OrdinalInfo, ResponseError,
+} from '@secretkeylabs/xverse-core/types';
+import { validateBtcAddress } from '@secretkeylabs/xverse-core/wallet';
+import { getOrdinalsByAddress } from '@secretkeylabs/xverse-core/api';
+import {
+ SignedBtcTx,
+ signOrdinalSendTransaction,
+ getBtcFeesForOrdinalSend,
+} from '@secretkeylabs/xverse-core/transactions/btc';
+import useNftDataSelector from '@hooks/useNftDataSelector';
+import useWalletSelector from '@hooks/useWalletSelector';
+import SendForm from '@components/sendForm';
+import TopRow from '@components/topRow';
+import BottomBar from '@components/tabBar';
+import AccountHeaderComponent from '@components/accountHeader';
+import OrdinalImage from '@screens/ordinals/ordinalImage';
+import ArrowLeft from '@assets/img/dashboard/arrow_left.svg';
+import { getBtcFiatEquivalent } from '@secretkeylabs/xverse-core';
+
+const ScrollContainer = styled.div`
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ overflow-y: auto;
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ width: 360px;
+ margin: auto;
+`;
+
+const Container = styled.div({
+ display: 'flex',
+ flexDirection: 'column',
+ justifyContent: 'center',
+ alignItems: 'center',
+ flex: 1,
+});
+
+const NFtContainer = styled.div((props) => ({
+ maxHeight: 148,
+ width: 148,
+ display: 'flex',
+ aspectRatio: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: 8,
+ marginTop: props.theme.spacing(16),
+ marginBottom: props.theme.spacing(12),
+}));
+
+const OrdinalInscriptionNumber = styled.h1((props) => ({
+ ...props.theme.headline_s,
+ color: props.theme.colors.white['0'],
+ textAlign: 'center',
+}));
+
+const BottomBarContainer = styled.div({
+ marginTop: 'auto',
+});
+
+const ButtonContainer = styled.div((props) => ({
+ display: 'flex',
+ flexDirection: 'row',
+ marginLeft: '15%',
+ marginTop: props.theme.spacing(40),
+}));
+
+const Button = styled.button((props) => ({
+ display: 'flex',
+ flexDirection: 'row',
+ justifyContent: 'flex-end',
+ alignItems: 'center',
+ borderRadius: props.theme.radius(1),
+ backgroundColor: 'transparent',
+ opacity: 0.8,
+ marginTop: props.theme.spacing(5),
+}));
+
+const ButtonText = styled.div((props) => ({
+ ...props.theme.body_xs,
+ fontWeight: 400,
+ fontSize: 14,
+ color: props.theme.colors.white['0'],
+ textAlign: 'center',
+}));
+
+const ButtonImage = styled.img((props) => ({
+ marginRight: props.theme.spacing(3),
+ alignSelf: 'center',
+ transform: 'all',
+}));
+
+function SendOrdinal() {
+ const { t } = useTranslation('translation', { keyPrefix: 'SEND' });
+ const navigate = useNavigate();
+ const { id } = useParams();
+ const location = useLocation();
+ const {
+ network, ordinalsAddress, btcAddress, selectedAccount, seedPhrase, btcFiatRate,
+ } = useWalletSelector();
+ const { ordinalsData } = useNftDataSelector();
+ const [ordinal, setOrdinal] = useState(undefined);
+ const [error, setError] = useState('');
+ const [recipientAddress, setRecipientAddress] = useState('');
+
+ let address: string | undefined;
+
+ if (location.state) {
+ address = location.state.recipientAddress;
+ }
+
+ const ordinalIdDetails = id!.split('::');
+
+ const isGalleryOpen: boolean = document.documentElement.clientWidth > 360;
+
+ useEffect(() => {
+ const data = ordinalsData.find(
+ (inscription) => inscription?.metadata?.id === ordinalIdDetails[0],
+ );
+ if (data) {
+ setOrdinal(data);
+ }
+ }, []);
+
+ function fetchOrdinals(): Promise {
+ return getOrdinalsByAddress(ordinalsAddress);
+ }
+
+ const { data: ordinals } = useQuery({
+ queryKey: [`ordinals-${ordinalsAddress}`],
+ queryFn: fetchOrdinals,
+ });
+
+ const {
+ isLoading,
+ data,
+ error: txError,
+ mutate,
+ } = useMutation(async (recepient) => {
+ const ordinalUtx = ordinals?.find((inscription) => inscription.id === ordinalIdDetails[0])?.utxo;
+ if (ordinalUtx) {
+ const txFees = await getBtcFeesForOrdinalSend(
+ recepient,
+ ordinalUtx,
+ btcAddress,
+ network.type,
+ );
+ const signedTx = await signOrdinalSendTransaction(
+ recepient,
+ ordinalUtx,
+ btcAddress,
+ Number(selectedAccount?.id),
+ seedPhrase,
+ network.type,
+ txFees,
+ );
+ return signedTx;
+ }
+ });
+
+ useEffect(() => {
+ if (txError) {
+ if (Number(txError) === ErrorCodes.InSufficientBalance) {
+ setError(t('ERRORS.INSUFFICIENT_BALANCE'));
+ } else if (Number(txError) === ErrorCodes.InSufficientBalanceWithTxFee) {
+ setError(t('ERRORS.INSUFFICIENT_BALANCE_FEES'));
+ } else setError(txError.toString());
+ }
+ }, [txError]);
+
+ useEffect(() => {
+ if (data) {
+ navigate(`/confirm-ordinal-tx/${id}`, {
+ state: {
+ signedTxHex: data.signedTx,
+ recipientAddress,
+ fee: data.fee,
+ fiatFee: getBtcFiatEquivalent(data.fee, btcFiatRate),
+ total: data.total,
+ fiatTotal: getBtcFiatEquivalent(data.total, btcFiatRate),
+ },
+ });
+ }
+ }, [data]);
+
+ const handleBackButtonClick = () => {
+ navigate(-1);
+ };
+
+ function validateFields(associatedAddress: string): boolean {
+ if (!associatedAddress) {
+ setError(t('ERRORS.ADDRESS_REQUIRED'));
+ return false;
+ }
+
+ if (!validateBtcAddress({ btcAddress: associatedAddress, network: network.type })) {
+ setError(t('ERRORS.ADDRESS_INVALID'));
+ return false;
+ }
+
+ if (associatedAddress === ordinalsAddress) {
+ setError(t('ERRORS.SEND_TO_SELF'));
+ return false;
+ }
+
+ return true;
+ }
+
+ const onPressNext = async (associatedAddress: string) => {
+ setRecipientAddress(associatedAddress);
+ if (validateFields(associatedAddress)) {
+ mutate(associatedAddress);
+ }
+ };
+ return (
+ <>
+ {isGalleryOpen && (
+ <>
+
+
+
+
+ >
+ )}
+
+ {!isGalleryOpen && (
+
+ )}
+
+
+
+
+
+ {ordinal?.inscriptionNumber}
+
+
+ {!isGalleryOpen && }
+
+ >
+ );
+}
+
+export default SendOrdinal;
diff --git a/src/app/utils/constants.ts b/src/app/utils/constants.ts
index adab908b6..a89da8e51 100644
--- a/src/app/utils/constants.ts
+++ b/src/app/utils/constants.ts
@@ -18,7 +18,7 @@ export const MOON_PAY_API_KEY = 'pk_live_8YeOjOzFqHUG1qi2G6NPA4N1tZAWFihK';
export const BINANCE_URL = 'https://www.binancecnt.com/en/pre-connect';
export const BINANCE_MERCHANT_CODE = 'secret_key_labs';
-export type CurrencyTypes = 'STX' | 'BTC' | 'FT' | 'NFT';
+export type CurrencyTypes = 'STX' | 'BTC' | 'FT' | 'NFT' | 'Ordinal';
export enum LoaderSize {
SMALLEST,
SMALL,
diff --git a/src/assets/img/Warning.svg b/src/assets/img/Warning.svg
new file mode 100644
index 000000000..0b6f24502
--- /dev/null
+++ b/src/assets/img/Warning.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/locales/en.json b/src/locales/en.json
index b58d526c5..cca33581c 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -72,7 +72,9 @@
"NFT_SEND_DETAIL": "This Nft is already sent and is in pending state"
},
"SEND_NFT": "Send NFT",
- "ASSOCIATED_BNS_DOMAIN": "Associated BNS Name"
+ "ASSOCIATED_BNS_DOMAIN": "Associated BNS Name",
+ "SEND_ORDINAL_TITLE": "Send Ordinal",
+ "SEND_ORDINAL_WALLET_WARNING": "You are about to transfer an Ordinal. Make sure the recipient wallet supports ordinals"
},
"CONFIRM_TRANSACTION": {
"SEND": "Send",
From b7fb14ec2a7409ad558cfe5edf7beaceeb5630bd Mon Sep 17 00:00:00 2001
From: Imamah-Zafar <88320460+Imamah-Zafar@users.noreply.github.com>
Date: Fri, 24 Feb 2023 12:50:25 +0500
Subject: [PATCH 04/16] remove amount section from confirmation screen
---
.../confirmBtcTransactionComponent/index.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/screens/confrimBtcTransaction/confirmBtcTransactionComponent/index.tsx b/src/app/screens/confrimBtcTransaction/confirmBtcTransactionComponent/index.tsx
index 1254ae99f..ad3851d7b 100644
--- a/src/app/screens/confrimBtcTransaction/confirmBtcTransactionComponent/index.tsx
+++ b/src/app/screens/confrimBtcTransaction/confirmBtcTransactionComponent/index.tsx
@@ -170,7 +170,7 @@ function ConfirmBtcTransactionComponent({
<>
-
+ {amount && }
{children}