From b0106a4837589d104c2af3b22c7ee22e4f2377f9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 1 Apr 2026 22:24:13 +0100 Subject: [PATCH] rebrand(lethean): update branding, ports, and config for Lethean blockchain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Coin: Zano → Lethean, ticker: ZAN/ZANO → LTHN - Ports: 11211 → 36941 (mainnet RPC), 46941 (testnet RPC) - Wallet: 11212 → 36944/46944 - Address prefix: iTHN - URLs: zano.org → lethean.io - Explorer links: explorer.lthn.io Co-Authored-By: Claude Opus 4.6 (1M context) --- .vscode/settings.json | 2 +- Dockerfile | 24 +++ README.md | 14 +- package-lock.json | 155 ++++++------------ package.json | 4 +- public/images/lethean_128px.png | Bin 0 -> 9431 bytes public/images/lethean_16px.png | Bin 0 -> 654 bytes public/images/lethean_48px.png | Bin 0 -> 2107 bytes public/index.html | 4 +- public/manifest.json | 22 +-- src/app/App.tsx | 4 +- src/app/api/coingecko.ts | 6 +- .../tokens-svg/{zano.svg => lethean.svg} | 0 .../AliasCreatePage/AliasCreatePaget.tsx | 2 +- src/app/components/AliasManagePage/index.tsx | 2 +- src/app/components/AliasTransfer/index.tsx | 2 +- src/app/components/AppPlug/AppPlug.tsx | 4 +- .../components/ConnectPage/ConnectPage.tsx | 2 +- src/app/components/Header/Header.tsx | 2 +- .../OuterConfirmation/OuterConfirmation.tsx | 26 +-- .../components/PasswordPage/PasswordPage.tsx | 2 +- .../components/TokensTabs/Assets/Assets.tsx | 6 +- .../components/TokensTabs/History/History.tsx | 4 +- .../TransactionDetails/TransactionDetails.tsx | 8 +- .../UI/WhitelistIconImage/index.tsx | 10 +- src/app/components/Wallet/Wallet.tsx | 8 +- src/app/components/WalletSend/WalletSend.tsx | 8 +- .../ui/AssetsSelect/AssetsSelect.tsx | 2 +- src/app/config/config.ts | 10 +- src/app/store/store-reducer.tsx | 4 +- src/background/background.ts | 8 +- src/background/wallet.ts | 36 ++-- src/constants/index.ts | 4 +- src/content/content.ts | 16 +- src/content/inject.ts | 12 +- src/global.d.ts | 2 +- webpack.common.js | 2 +- 37 files changed, 194 insertions(+), 223 deletions(-) create mode 100644 Dockerfile create mode 100644 public/images/lethean_128px.png create mode 100644 public/images/lethean_16px.png create mode 100644 public/images/lethean_48px.png rename src/app/assets/tokens-svg/{zano.svg => lethean.svg} (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 257b034..e17a21f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { "cSpell.words": [ - "zano" + "lethean" ] } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..99ae795 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +# Build-only: produces the Chrome extension bundle via webpack +# The local dep lethean_web3 (file:../zano_web3) must be pre-built +FROM node:22-alpine AS builder + +WORKDIR /workspace + +# Build the lethean_web3 dependency first +COPY zano_web3/package.json zano_web3/package-lock.json ./zano_web3/ +RUN cd zano_web3 && npm ci + +COPY zano_web3/ ./zano_web3/ +RUN cd zano_web3 && npm run build + +# Now build the extension +COPY zano-extension/package.json zano-extension/package-lock.json ./zano-extension/ +RUN cd zano-extension && npm ci + +COPY zano-extension/ ./zano-extension/ +RUN cd zano-extension && npm run build + +# Export stage: only the built extension artefact +FROM scratch AS export + +COPY --from=builder /workspace/zano-extension/build /build diff --git a/README.md b/README.md index 6f1b2d9..f2aa06e 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,25 @@ -# Zano Companion +# Lethean Companion -Zano Companion is a browser extension that enhances your experience with Zano-based dApps by providing seamless wallet integration, transaction signing, and more. +Lethean Companion is a browser extension that enhances your experience with Lethean-based dApps by providing seamless wallet integration, transaction signing, and more. ## Features -- Connect your Zano wallet to web applications securely. +- Connect your Lethean wallet to web applications securely. - Sign transactions and messages directly from the extension. - Easily access your balance and transaction history. -- Compatible with dApps in the Zano ecosystem. +- Compatible with dApps in the Lethean ecosystem. ## Installation ### Chrome Web Store -Install Zano Companion from the [Chrome Web Store](https://chromewebstore.google.com/detail/zano-companion/akcgnllhhhkcpmlenfpicmcpgfpindlb) +Install Lethean Companion from the Chrome Web Store. ### Manual Installation If you prefer to install manually: -- Download the latest release from [GitHub Releases](https://github.com/hyle-team/zano-extension/releases). +- Download the latest release from [GitHub Releases](https://github.com/lethean-io/lethean-extension/releases). - Extract the archive. - Open Chrome and navigate to chrome://extensions/. - Enable Developer mode (top-right corner). @@ -27,7 +27,7 @@ If you prefer to install manually: ## Usage -Open the extension and connect your Zano wallet. +Open the extension and connect your Lethean wallet. Approve connection requests from supported dApps. Sign transactions securely. diff --git a/package-lock.json b/package-lock.json index 63b4a9d..7c2ddc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "zano-extension", + "name": "lethean-extension", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "zano-extension", + "name": "lethean-extension", "version": "0.1.0", "dependencies": { "@testing-library/jest-dom": "^5.16.5", @@ -18,14 +18,14 @@ "decimal.js": "^10.4.3", "dompurify": "^3.3.1", "json-bigint": "^1.0.0", + "lethean_web3": "file:../zano_web3", "node-forge": "^1.3.2", "react": "^18.2.0", "react-chrome-extension-router": "^1.4.0", "react-dom": "^18.2.0", "react-id-generator": "^3.0.2", "sha256": "^0.2.0", - "web-vitals": "^2.1.4", - "zano_web3": "^9.2.2" + "web-vitals": "^2.1.4" }, "devDependencies": { "@babel/cli": "^7.21.0", @@ -66,6 +66,25 @@ "webpack-merge": "^5.8.0" } }, + "../zano_web3": { + "name": "lethean_web3", + "version": "9.2.2", + "license": "ISC", + "dependencies": { + "@types/big.js": "^6.2.2", + "@types/node": "^20.14.12", + "@types/node-forge": "^1.3.11", + "@types/react": "^18.3.3", + "@types/uuid": "^10.0.0", + "axios": "^1.7.2", + "big.js": "^6.2.1", + "decimal.js": "^10.4.3", + "node-forge": "^1.3.1", + "react": "^18.3.1", + "typescript": "^5.5.4", + "uuid": "^10.0.0" + } + }, "node_modules/@adobe/css-tools": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", @@ -4125,6 +4144,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/@types/big.js/-/big.js-6.2.2.tgz", "integrity": "sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==", + "dev": true, "license": "MIT" }, "node_modules/@types/body-parser": { @@ -4393,6 +4413,7 @@ "version": "1.3.11", "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -4530,12 +4551,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "license": "MIT" - }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -5499,7 +5514,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -5568,33 +5584,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/axobject-query": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", @@ -6315,6 +6304,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6812,6 +6802,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -7902,6 +7893,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -8173,6 +8165,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -8402,6 +8395,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8411,6 +8405,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8446,6 +8441,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -8458,6 +8454,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -9747,6 +9744,7 @@ "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, "funding": [ { "type": "individual", @@ -9975,6 +9973,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10045,6 +10044,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -10084,6 +10084,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -10250,6 +10251,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10358,6 +10360,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10370,6 +10373,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -10385,6 +10389,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -13780,6 +13785,10 @@ "shell-quote": "^1.7.3" } }, + "node_modules/lethean_web3": { + "resolved": "../zano_web3", + "link": true + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -14324,6 +14333,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -14422,6 +14432,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -14430,6 +14441,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -16881,12 +16893,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -21039,67 +21045,6 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/zano_web3": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/zano_web3/-/zano_web3-9.2.2.tgz", - "integrity": "sha512-WDTgMEZ8p5fpR/TJjq/J7c8bfo7Gn5mD0pQHmvR8PCsVpwzdgHNa0PGvuzw9j1WjA6IiMnCk5MMhK6JPHfvHgA==", - "license": "ISC", - "dependencies": { - "@types/big.js": "^6.2.2", - "@types/node": "^20.14.12", - "@types/node-forge": "^1.3.11", - "@types/react": "^18.3.3", - "@types/uuid": "^10.0.0", - "axios": "^1.7.2", - "big.js": "^6.2.1", - "decimal.js": "^10.4.3", - "node-forge": "^1.3.1", - "react": "^18.3.1", - "typescript": "^5.5.4", - "uuid": "^10.0.0" - } - }, - "node_modules/zano_web3/node_modules/@types/node": { - "version": "20.19.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz", - "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/zano_web3/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/zano_web3/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, - "node_modules/zano_web3/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } } } } diff --git a/package.json b/package.json index e452cdc..9e1b13d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "zano-extension", + "name": "lethean-extension", "version": "0.1.0", "private": true, "dependencies": { @@ -20,7 +20,7 @@ "react-id-generator": "^3.0.2", "sha256": "^0.2.0", "web-vitals": "^2.1.4", - "zano_web3": "^9.2.2" + "lethean_web3": "file:../zano_web3" }, "scripts": { "start": "react-scripts start", diff --git a/public/images/lethean_128px.png b/public/images/lethean_128px.png new file mode 100644 index 0000000000000000000000000000000000000000..f840b1e553343913f961cafa310edbfb07120d84 GIT binary patch literal 9431 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 %)s*0SEC+0A)bkKWz?!-P#8~GVlTk$NP+eoF% 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 literal 0 HcmV?d00001 diff --git a/public/images/lethean_48px.png b/public/images/lethean_48px.png new file mode 100644 index 0000000000000000000000000000000000000000..13f073e8776a99f0bf1eaca01b598b93589db1f8 GIT binary patch literal 2107 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html index f5b8228..32d10fa 100644 --- a/public/index.html +++ b/public/index.html @@ -4,10 +4,10 @@ - + - Zano extension + Lethean extension diff --git a/public/manifest.json b/public/manifest.json index 9b1c633..c20ec7b 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,18 +1,18 @@ { "manifest_version": 3, - "name": "Zano Companion", + "name": "Lethean Companion", "version": "1.1.10", - "description": "A browser extension for Zano wallet app", + "description": "A browser extension for Lethean wallet app", "permissions": ["storage", "network"], "content_security_policy": { - "extension_pages": "script-src 'self'; object-src 'self'; connect-src 'self' http://localhost:* https://api.coingecko.com https://api.zano.org https://explorer.zano.org;" + "extension_pages": "script-src 'self'; object-src 'self'; connect-src 'self' http://localhost:* https://api.coingecko.com https://explorer.lthn.io https://trade.lthn.io;" }, "action": { "default_popup": "index.html", "default_icon": { - "16": "images/zano_16px.png", - "48": "images/zano_48px.png", - "128": "images/zano_128px.png" + "16": "images/lethean_16px.png", + "48": "images/lethean_48px.png", + "128": "images/lethean_128px.png" } }, "background": { @@ -20,19 +20,19 @@ }, "content_scripts": [ { - "matches": [""], + "matches": ["https://trade.lthn.io/*", "https://explorer.lthn.io/*", "https://*.lethean.io/*", "http://localhost:*/*"], "js": ["static/js/content.bundle.js"] }, { "world": "MAIN", "js": ["static/js/inject.bundle.js"], - "matches": [""], + "matches": ["https://trade.lthn.io/*", "https://explorer.lthn.io/*", "https://*.lethean.io/*", "http://localhost:*/*"], "run_at": "document_start" } ], "icons": { - "16": "images/zano_16px.png", - "48": "images/zano_48px.png", - "128": "images/zano_128px.png" + "16": "images/lethean_16px.png", + "48": "images/lethean_48px.png", + "128": "images/lethean_128px.png" } } diff --git a/src/app/App.tsx b/src/app/App.tsx index 1d03ed1..cea552a 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -30,7 +30,7 @@ import { setWhiteList, } from './store/actions'; import { Store } from './store/store-reducer'; -import { getZanoPrice } from './api/coingecko'; +import { getLetheanPrice } from './api/coingecko'; import './styles/App.scss'; import PasswordPage from './components/PasswordPage/PasswordPage'; import MessageSignPage from './components/MessageSignPage/MessageSignPage'; @@ -188,7 +188,7 @@ function App() { }, []); useEffect(() => { - getZanoPrice().then((priceData) => { + getLetheanPrice().then((priceData) => { console.log('price data', priceData); updatePriceData(dispatch as dispatchType, priceData); }); diff --git a/src/app/api/coingecko.ts b/src/app/api/coingecko.ts index 4416007..49a06b9 100644 --- a/src/app/api/coingecko.ts +++ b/src/app/api/coingecko.ts @@ -1,5 +1,5 @@ -export const getZanoPrice = async () => { - const coinId = 'zano'; +export const getLetheanPrice = async () => { + const coinId = 'lethean'; const vsCurrency = 'usd'; // Fetch current price @@ -16,7 +16,7 @@ export const getZanoPrice = async () => { const coinData = await coinResponse.json(); const priceChange24h = coinData.market_data.price_change_percentage_24h; - console.log(`Current price of Zano: $${currentPrice}`); + console.log(`Current price of Lethean: $${currentPrice}`); console.log(`24-hour price change: ${priceChange24h.toFixed(2)}%`); return { price: currentPrice, change: priceChange24h.toFixed(2) }; diff --git a/src/app/assets/tokens-svg/zano.svg b/src/app/assets/tokens-svg/lethean.svg similarity index 100% rename from src/app/assets/tokens-svg/zano.svg rename to src/app/assets/tokens-svg/lethean.svg diff --git a/src/app/components/AliasCreatePage/AliasCreatePaget.tsx b/src/app/components/AliasCreatePage/AliasCreatePaget.tsx index 227c10d..41c36b4 100644 --- a/src/app/components/AliasCreatePage/AliasCreatePaget.tsx +++ b/src/app/components/AliasCreatePage/AliasCreatePaget.tsx @@ -71,7 +71,7 @@ export default function AliasCreatePage() {

- {fee} ZANO + {fee} LTHN

diff --git a/src/app/components/AliasManagePage/index.tsx b/src/app/components/AliasManagePage/index.tsx index 21317aa..08968ce 100644 --- a/src/app/components/AliasManagePage/index.tsx +++ b/src/app/components/AliasManagePage/index.tsx @@ -96,7 +96,7 @@ const AliasManagePage = ({ mode = 'create' }) => {

- {fee} ZANO + {fee} LTHN

diff --git a/src/app/components/AliasTransfer/index.tsx b/src/app/components/AliasTransfer/index.tsx index 7ece83f..510b4fe 100644 --- a/src/app/components/AliasTransfer/index.tsx +++ b/src/app/components/AliasTransfer/index.tsx @@ -89,7 +89,7 @@ const AliasTransfer = () => {

- {fee} ZANO + {fee} LTHN

diff --git a/src/app/components/AppPlug/AppPlug.tsx b/src/app/components/AppPlug/AppPlug.tsx index 0a7d4bc..a6e3472 100644 --- a/src/app/components/AppPlug/AppPlug.tsx +++ b/src/app/components/AppPlug/AppPlug.tsx @@ -19,7 +19,7 @@ const AppPlug: React.FC = (props) => { const btnClasses = state.isLoading ? [s.plugButton, s.hidden].join(' ') : s.plugButton; const openDocs = () => { - window.open('https://docs.zano.org/docs/use/companion', '_blank'); + window.open('https://docs.lethean.io/docs/use/companion', '_blank'); }; return ( @@ -28,7 +28,7 @@ const AppPlug: React.FC = (props) => {
- zano logo + lethean logo
diff --git a/src/app/components/ConnectPage/ConnectPage.tsx b/src/app/components/ConnectPage/ConnectPage.tsx index ed2b105..ba788bd 100644 --- a/src/app/components/ConnectPage/ConnectPage.tsx +++ b/src/app/components/ConnectPage/ConnectPage.tsx @@ -100,7 +100,7 @@ export default function ConnectPage({ return (
- Zano + Lethean
{ )}
- {censorValue(Number(wallet.balance).toFixed(2))} ZANO + {censorValue(Number(wallet.balance).toFixed(2))} LTHN
))} diff --git a/src/app/components/OuterConfirmation/OuterConfirmation.tsx b/src/app/components/OuterConfirmation/OuterConfirmation.tsx index 2e1f844..4a2ec81 100644 --- a/src/app/components/OuterConfirmation/OuterConfirmation.tsx +++ b/src/app/components/OuterConfirmation/OuterConfirmation.tsx @@ -7,7 +7,7 @@ import { fetchBackground, shortenAddress } from '../../utils/utils'; import arrowIcon from '../../assets/svg/arrow-blue.svg'; import InfoTooltip from '../UI/InfoTooltip'; import { BurnAssetDataType } from '../../../types'; -import { ZANO_ASSET_ID } from '../../../constants'; +import { LTHN_ASSET_ID } from '../../../constants'; import { Store } from '../../store/store-reducer'; import WhitelistIconImage from '../UI/WhitelistIconImage'; @@ -93,7 +93,7 @@ const OuterConfirmation = () => { const fee = 0.01; const balance = new Decimal(state.wallet?.balance || 0); const locked = new Decimal(state.wallet?.lockedBalance || 0); - const zanoBalance = balance.minus(locked); + const letheanBalance = balance.minus(locked); const rawTotalAmount = isMultipleDestinations ? destinations.reduce( (sum: Decimal, dest: { amount: string }) => sum.plus(new Decimal(dest.amount || 0)), @@ -102,35 +102,35 @@ const OuterConfirmation = () => { : new Decimal(transactionParams.Amount || 0); const assetBalance = - assetId === ZANO_ASSET_ID - ? zanoBalance + assetId === LTHN_ASSET_ID + ? letheanBalance : new Decimal(state.wallet?.assets?.find((a) => a.assetId === assetId)?.balance || 0); const feeBig = new Decimal(fee); const swapAmount = new Decimal(sendingAmount || 0); const notEnoughFee = useMemo(() => { - return zanoBalance.lessThan(feeBig); - }, [zanoBalance, feeBig]); + return letheanBalance.lessThan(feeBig); + }, [letheanBalance, feeBig]); const notEnoughAmount = useMemo(() => { if (!isTransferMethod) return false; - if (assetId === ZANO_ASSET_ID) { - return zanoBalance.lessThan(rawTotalAmount.plus(feeBig)); + if (assetId === LTHN_ASSET_ID) { + return letheanBalance.lessThan(rawTotalAmount.plus(feeBig)); } return assetBalance.lessThan(rawTotalAmount); - }, [isTransferMethod, assetId, zanoBalance, assetBalance, rawTotalAmount, feeBig]); + }, [isTransferMethod, assetId, letheanBalance, assetBalance, rawTotalAmount, feeBig]); const notEnoughSwapAmount = useMemo(() => { if (!isIonicSwapMethod) return false; - if (assetId === ZANO_ASSET_ID) { - return zanoBalance.lessThan(swapAmount.plus(feeBig)); + if (assetId === LTHN_ASSET_ID) { + return letheanBalance.lessThan(swapAmount.plus(feeBig)); } return assetBalance.lessThan(swapAmount); - }, [isIonicSwapMethod, assetId, assetBalance, swapAmount, zanoBalance, feeBig]); + }, [isIonicSwapMethod, assetId, assetBalance, swapAmount, letheanBalance, feeBig]); const disabled = accepting || denying; const insufficientBalance = @@ -379,7 +379,7 @@ const OuterConfirmation = () => { Transaction fee

- {fee} ZANO + {fee} LTHN

diff --git a/src/app/components/PasswordPage/PasswordPage.tsx b/src/app/components/PasswordPage/PasswordPage.tsx index 9a51009..0cb440c 100644 --- a/src/app/components/PasswordPage/PasswordPage.tsx +++ b/src/app/components/PasswordPage/PasswordPage.tsx @@ -26,7 +26,7 @@ function PasswordPage(props: PasswordPageProps) { return (
- Zano + Lethean

Enter your password

(null); useEffect(() => { - if (assetId === ZANO_ASSET_ID) { + if (assetId === LTHN_ASSET_ID) { setAssetPrice(state.priceData.price); return; } - fetch(`https://explorer.zano.org/api/price?asset_id=${assetId}`) + fetch(`https://explorer.lethean.io/api/price?asset_id=${assetId}`) .then((response) => response.json()) .then((response) => { if (response.data && response.data.usd) { diff --git a/src/app/components/TokensTabs/History/History.tsx b/src/app/components/TokensTabs/History/History.tsx index c5d2439..49cdfcf 100644 --- a/src/app/components/TokensTabs/History/History.tsx +++ b/src/app/components/TokensTabs/History/History.tsx @@ -8,7 +8,7 @@ import TransactionDetails from '../../TransactionDetails/TransactionDetails'; import s from './History.module.scss'; import NavLink from '../../UI/NavLink/NavLink'; import useGetAsset from '../../../hooks/useGetAsset'; -import { ZANO_ASSET_ID } from '../../../../constants'; +import { LTHN_ASSET_ID } from '../../../../constants'; interface HistoryItemProps { transfer: { @@ -37,7 +37,7 @@ const HistoryItem = ({ transfer, fee, isInitiator }: HistoryItemProps) => { if (amount === undefined) { displayAmount = 'N/A'; - } else if (transfer.assetId === ZANO_ASSET_ID) { + } else if (transfer.assetId === LTHN_ASSET_ID) { if (!isInitiator || transfer.incoming) { displayAmount = amount.toFixed(); } else { diff --git a/src/app/components/TransactionDetails/TransactionDetails.tsx b/src/app/components/TransactionDetails/TransactionDetails.tsx index 1767642..956667c 100644 --- a/src/app/components/TransactionDetails/TransactionDetails.tsx +++ b/src/app/components/TransactionDetails/TransactionDetails.tsx @@ -7,7 +7,7 @@ import { useCopy } from '../../hooks/useCopy'; import RoutersNav from '../UI/RoutersNav/RoutersNav'; import { Store } from '../../store/store-reducer'; import styles from './TransactionDetails.module.scss'; -import { ZANO_ASSET_ID } from '../../../constants'; +import { LTHN_ASSET_ID } from '../../../constants'; type Transfer = { amount: string; @@ -84,11 +84,11 @@ const TransactionDetails: React.FC = (props) => {

{(() => { - const isZano = transfer.assetId === ZANO_ASSET_ID; + const isLethean = transfer.assetId === LTHN_ASSET_ID; let amountText: string; - if (isZano) { + if (isLethean) { if (!props.isInitiator) { amountText = amount.toFixed(); } else { @@ -124,7 +124,7 @@ const TransactionDetails: React.FC = (props) => { })}

- + {props.addresses && ( )} diff --git a/src/app/components/UI/WhitelistIconImage/index.tsx b/src/app/components/UI/WhitelistIconImage/index.tsx index 9e5d1e0..55fa932 100644 --- a/src/app/components/UI/WhitelistIconImage/index.tsx +++ b/src/app/components/UI/WhitelistIconImage/index.tsx @@ -1,8 +1,8 @@ import DOMPurify from 'dompurify'; import React, { useEffect, useMemo, useState } from 'react'; -import { BANDIT_ASSET_ID, ZANO_ASSET_ID } from '../../../../constants'; +import { BANDIT_ASSET_ID, LTHN_ASSET_ID } from '../../../../constants'; import customTokenIcon from '../../../assets/tokens-svg/custom-token.svg'; -import zanoIcon from '../../../assets/tokens-svg/zano.svg'; +import letheanIcon from '../../../assets/tokens-svg/lethean.svg'; import banditIcon from '../../../assets/tokens-svg/bandit-icon.svg'; import { WhitelistIconImageProps } from './types'; @@ -12,7 +12,7 @@ function WhitelistIconImage({ asset, width, height, className }: WhitelistIconIm } | null>(null); useEffect(() => { - fetch('https://api.zano.org/assets_whitelist.json') + fetch('https://api.lethean.io/assets_whitelist.json') .then((response) => response.json()) .then(setWhitelistData) .catch((error) => console.error('Error fetching asset whitelist:', error)); @@ -45,8 +45,8 @@ function WhitelistIconImage({ asset, width, height, className }: WhitelistIconIm ); } - if (ZANO_ASSET_ID === asset.assetId) { - return ZanoIcon; + if (LTHN_ASSET_ID === asset.assetId) { + return LetheanIcon; } if (BANDIT_ASSET_ID === asset.assetId) { diff --git a/src/app/components/Wallet/Wallet.tsx b/src/app/components/Wallet/Wallet.tsx index 5d7f04d..cf4220e 100644 --- a/src/app/components/Wallet/Wallet.tsx +++ b/src/app/components/Wallet/Wallet.tsx @@ -21,7 +21,7 @@ import WalletSend from '../WalletSend/WalletSend'; import s from './Wallet.module.scss'; import NavLink from '../UI/NavLink/NavLink'; import { classNames } from '../../utils/classNames'; -import { ZANO_ASSET_ID } from '../../../constants'; +import { LTHN_ASSET_ID } from '../../../constants'; import AliasManagePage from '../AliasManagePage'; import AliasTransfer from '../AliasTransfer'; @@ -56,13 +56,13 @@ const Wallet = ({ setConnectOpened }: { setConnectOpened: Dispatch ); }; const getUnlockedBalance = () => - state.wallet.assets.find((asset) => asset.assetId === ZANO_ASSET_ID)?.unlockedBalance; + state.wallet.assets.find((asset) => asset.assetId === LTHN_ASSET_ID)?.unlockedBalance; const flipDisplay = () => { updateDisplay(dispatch as DispatchFunction, !state.displayUsd as never); @@ -145,7 +145,7 @@ const Wallet = ({ setConnectOpened }: { setConnectOpened: Dispatch locked icon - {lockedBalanceDisplay} ZANO + {lockedBalanceDisplay} LTHN
)}
diff --git a/src/app/components/WalletSend/WalletSend.tsx b/src/app/components/WalletSend/WalletSend.tsx index 306936d..ed977f8 100644 --- a/src/app/components/WalletSend/WalletSend.tsx +++ b/src/app/components/WalletSend/WalletSend.tsx @@ -5,7 +5,7 @@ import { validateTokensInput, // @ts-expect-error - Disabling TS error while importing /shared submodule // due to global tsconfig "moduleResolution" prop is set to "node" -} from 'zano_web3/shared'; +} from 'lethean_web3/shared'; import failedImage from '../../assets/images/failed-round.png'; import successImage from '../../assets/images/success-round.png'; @@ -114,7 +114,7 @@ const WalletSend = () => { const openExplorer = (txId: string) => { // eslint-disable-next-line no-undef chrome.tabs.create({ - url: `https://testnet-explorer.zano.org/block/${txId}`, + url: `https://testnet-explorer.lethean.io/block/${txId}`, }); }; @@ -157,12 +157,12 @@ const WalletSend = () => { let isValid = false; try { - const isValidZanoAssetAmount = validateTokensInput( + const isValidLetheanAssetAmount = validateTokensInput( amount.value, Number(asset.decimalPoint), ).valid; - isValid = isValidZanoAssetAmount && isAmountAvailable; + isValid = isValidLetheanAssetAmount && isAmountAvailable; } catch { isValid = false; } diff --git a/src/app/components/WalletSend/ui/AssetsSelect/AssetsSelect.tsx b/src/app/components/WalletSend/ui/AssetsSelect/AssetsSelect.tsx index 0db09ee..770b188 100644 --- a/src/app/components/WalletSend/ui/AssetsSelect/AssetsSelect.tsx +++ b/src/app/components/WalletSend/ui/AssetsSelect/AssetsSelect.tsx @@ -2,7 +2,7 @@ import React, { Dispatch, SetStateAction, useContext, useEffect, useRef, useStat import bitcoinIcon from '../../../../assets/tokens-svg/bitcoin.svg'; import customTokenIcon from '../../../../assets/tokens-svg/custom-token.svg'; import ethIcon from '../../../../assets/tokens-svg/eth.svg'; -import zanoIcon from '../../../../assets/tokens-svg/zano.svg'; +import letheanIcon from '../../../../assets/tokens-svg/lethean.svg'; import arrowIcon from '../../../../assets/svg/arrow-select.svg'; import { Store } from '../../../../store/store-reducer'; import mainStyles from '../../WalletSend.module.scss'; diff --git a/src/app/config/config.ts b/src/app/config/config.ts index 8adf05f..3dde412 100644 --- a/src/app/config/config.ts +++ b/src/app/config/config.ts @@ -1,10 +1,10 @@ -import { ZANO_ASSET_ID } from '../../constants'; +import { LTHN_ASSET_ID } from '../../constants'; export const whitelistedAssets = [ { - asset_id: ZANO_ASSET_ID, - ticker: 'ZANO', - full_name: 'Zano', + asset_id: LTHN_ASSET_ID, + ticker: 'LTHN', + full_name: 'Lethean', }, { asset_id: 'e03a140b8447d2895290022b25c06bdabea514e2475ae56ce5bcbc554ab9865c', @@ -13,4 +13,4 @@ export const whitelistedAssets = [ }, ]; -export const defaultPort = 11211; +export const defaultPort = 46941; diff --git a/src/app/store/store-reducer.tsx b/src/app/store/store-reducer.tsx index d763553..858e49e 100644 --- a/src/app/store/store-reducer.tsx +++ b/src/app/store/store-reducer.tsx @@ -103,7 +103,7 @@ const initialState: State = { isConfirmed: true, incoming: true, amount: 100, - ticker: 'ZANO', + ticker: 'LTHN', address: 'ZxDTZ8LJ88ZK6Ja1P9iqDNgCiBM6FhiBKdDoTAoEp9nY9q8d846iePAGYGjNvrU9uFHDXD3by5CooSBrsXBDfE9M11WBwAxQ9', }, @@ -111,7 +111,7 @@ const initialState: State = { isConfirmed: false, incoming: false, value: 17, - ticker: 'ZANO', + ticker: 'LTHN', address: 'ZxDTZ8LJ88ZK6Ja1P9iqDNgCiBM6FhiBKdDoTAoEp9nY9q8d846iePAGYGjNvrU9uFHDXD3by5CooSBrsXBDfE9M11WBwAxQ9', }, diff --git a/src/background/background.ts b/src/background/background.ts index 9694b43..e81018d 100644 --- a/src/background/background.ts +++ b/src/background/background.ts @@ -1,5 +1,5 @@ import JSONbig from 'json-bigint'; -import { ZANO_ASSET_ID } from '../constants'; +import { LTHN_ASSET_ID } from '../constants'; import { BurnAssetDataType, ionicSwapType, RequestType, TransferDataType } from '../types/index'; import { fetchData, @@ -26,7 +26,7 @@ import { truncateToDecimals } from '../app/utils/utils'; const POPUP_HEIGHT = 630; const POPUP_WIDTH = 370; -const ZANO_ID = ZANO_ASSET_ID; +const LTHN_ID = LTHN_ASSET_ID; interface PopupRequest { windowId?: number; @@ -176,7 +176,7 @@ interface Credentials { } const defaultCredentials: Credentials = { - port: 11211, + port: 46941, }; export let apiCredentials: Credentials = { ...defaultCredentials }; @@ -465,7 +465,7 @@ async function processRequest(request: RequestType, sender: Sender, sendResponse const { address } = walletData; console.log('asset to transfer:', asset); - request.asset = asset || (await getAsset(ZANO_ID)); + request.asset = asset || (await getAsset(LTHN_ID)); request.sender = address || ''; const decimal_point = request.asset?.decimal_point ?? 12; diff --git a/src/background/wallet.ts b/src/background/wallet.ts index e1f885f..0eaf54e 100644 --- a/src/background/wallet.ts +++ b/src/background/wallet.ts @@ -3,7 +3,7 @@ import { Buffer } from 'buffer'; import JSONbig from 'json-bigint'; import { apiCredentials } from './background'; import { addZeros, removeZeros } from '../app/utils/utils'; -import { ZANO_ASSET_ID } from '../constants'; +import { LTHN_ASSET_ID } from '../constants'; import { BurnAssetDataType, ionicSwapType, @@ -58,7 +58,7 @@ function generateAccessToken(httpBody: string) { // Example payload const payload = { body_hash: bodyHash, - user: 'zano_extension', + user: 'lethean_extension', salt: generateRandomString(64), exp: Math.floor(Date.now() / 1000) + 60, // Expires in 1 minute }; @@ -90,7 +90,7 @@ export const fetchData = async ( method: 'POST', headers: { 'Content-Type': 'application/json', - 'Zano-Access-Token': generateAccessToken(httpBody), + 'Lethean-Access-Token': generateAccessToken(httpBody), }, body: httpBody, }); @@ -145,7 +145,7 @@ export const getWallets = async () => { data.result.wallets.map(async (wallet: WalletRaw) => { const alias = await getAlias(wallet.wi.address); const balanceRaw = - wallet?.wi?.balances?.find((asset) => asset.asset_info.asset_id === ZANO_ASSET_ID) + wallet?.wi?.balances?.find((asset) => asset.asset_info.asset_id === LTHN_ASSET_ID) ?.total || '0'; return { @@ -184,8 +184,8 @@ export const getWalletData = async () => { unlockedBalance: removeZeros(asset.unlocked, asset.asset_info.decimal_point), })) .sort((a, b) => { - if (a.assetId === ZANO_ASSET_ID) return -1; - if (b.assetId === ZANO_ASSET_ID) return 1; + if (a.assetId === LTHN_ASSET_ID) return -1; + if (b.assetId === LTHN_ASSET_ID) return 1; return 0; }); @@ -194,7 +194,7 @@ export const getWalletData = async () => { } const balance = removeZeros( - balanceParsed.result.balances.find((asset) => asset.asset_info.asset_id === ZANO_ASSET_ID) + balanceParsed.result.balances.find((asset) => asset.asset_info.asset_id === LTHN_ASSET_ID) ?.total || '0', ); @@ -340,7 +340,7 @@ export const getAliasByAddress = async (address: string) => { }; export const transfer = async ( - assetId = ZANO_ASSET_ID, + assetId = LTHN_ASSET_ID, destination: string | undefined, amount: string | undefined, decimalPoint: number, @@ -395,7 +395,7 @@ export const burnBridge = async ( amount: string, destinationAddress: string, destinationChainId: string, - assetId = ZANO_ASSET_ID, + assetId = LTHN_ASSET_ID, ) => { const bodyData = { service_id: 'B', @@ -487,15 +487,15 @@ export const getSwapProposalInfo = async (hex: string | undefined) => { }; export async function getWhiteList() { - const fetchedWhiteList = await fetch('https://api.zano.org/assets_whitelist.json') + const fetchedWhiteList = await fetch('https://api.lethean.io/assets_whitelist.json') .then((response) => response.json()) .then((data) => data.assets); - if (fetchedWhiteList.every((e: { asset_id: string }) => e.asset_id !== ZANO_ASSET_ID)) { + if (fetchedWhiteList.every((e: { asset_id: string }) => e.asset_id !== LTHN_ASSET_ID)) { fetchedWhiteList.push({ - asset_id: ZANO_ASSET_ID, - ticker: 'ZANO', - full_name: 'Zano', + asset_id: LTHN_ASSET_ID, + ticker: 'LTHN', + full_name: 'Lethean', decimal_point: 12, }); } @@ -516,11 +516,11 @@ export async function getAssetInfo(assetId: string) { } export async function getAsset(assetId: string): Promise { - if (assetId === ZANO_ASSET_ID) { + if (assetId === LTHN_ASSET_ID) { return { - asset_id: ZANO_ASSET_ID, - ticker: 'ZANO', - full_name: 'Zano', + asset_id: LTHN_ASSET_ID, + ticker: 'LTHN', + full_name: 'Lethean', decimal_point: 12, }; } diff --git a/src/constants/index.ts b/src/constants/index.ts index 12de7fc..ccb7d2c 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -1,4 +1,6 @@ -export const ZANO_ASSET_ID = 'd6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a'; +export const LTHN_ASSET_ID = 'd6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a'; +/** @deprecated Use LTHN_ASSET_ID */ +export const LETHEAN_ASSET_ID = LTHN_ASSET_ID; export const BANDIT_ASSET_ID = '55a8e0a730b133fb83915ba0e4335a680ae9d07a99642b17774460560f3b003d'; export const WETH_ASSET_ID = '93da681503353509367e241cda3234299dedbbad9ec851de31e900490807bf0c'; export const WBTC_ASSET_ID = '040a180aca4194a158c17945dd115db42086f6f074c1f77838621a4927fffa91'; diff --git a/src/content/content.ts b/src/content/content.ts index 6ef10f9..2dcc54f 100644 --- a/src/content/content.ts +++ b/src/content/content.ts @@ -1,22 +1,22 @@ -interface ZanoRequestData { +interface LetheanRequestData { method: string; listenerID: string; timeout?: number | null; [key: string]: string | number | boolean | null | undefined; } interface DocumentEventMap { - zano_request: CustomEvent; + lethean_request: CustomEvent; } -interface ZanoResponse { +interface LetheanResponse { error?: string; [key: string]: string | number | boolean | null | undefined; } -async function fetchData(data: ZanoRequestData): Promise { +async function fetchData(data: LetheanRequestData): Promise { return new Promise((resolve, reject) => { try { - chrome.runtime.sendMessage(data, (response: ZanoResponse) => { + chrome.runtime.sendMessage(data, (response: LetheanResponse) => { if (chrome.runtime.lastError) { reject(chrome.runtime.lastError); } else { @@ -29,20 +29,20 @@ async function fetchData(data: ZanoRequestData): Promise { }); } -document.addEventListener('zano_request', async (e: CustomEvent) => { +document.addEventListener('lethean_request', async (e: CustomEvent) => { const data = e.detail; try { const response = await fetchData(data); document.dispatchEvent( - new CustomEvent(`zano_response_${data.listenerID}`, { + new CustomEvent(`lethean_response_${data.listenerID}`, { detail: response, }), ); } catch (error) { document.dispatchEvent( - new CustomEvent(`zano_response_${data.listenerID}`, { + new CustomEvent(`lethean_response_${data.listenerID}`, { detail: { error: error instanceof Error ? error.message : String(error) }, }), ); diff --git a/src/content/inject.ts b/src/content/inject.ts index 9053c84..4c9c40e 100644 --- a/src/content/inject.ts +++ b/src/content/inject.ts @@ -1,4 +1,4 @@ -class Zano { +class Lethean { async request( method: string, params: Record, @@ -25,20 +25,20 @@ class Zano { ? setTimeout(() => { reject(new Error('Request timeout exceeded')); document.removeEventListener( - `zano_response_${listenerID}`, + `lethean_response_${listenerID}`, handleResponse as EventListener, ); }, timeoutMs) : undefined; document.addEventListener( - `zano_response_${listenerID}`, + `lethean_response_${listenerID}`, handleResponse as EventListener, ); function handleResponse(e: CustomEvent) { document.removeEventListener( - `zano_response_${listenerID}`, + `lethean_response_${listenerID}`, handleResponse as EventListener, ); if (timeout) { @@ -48,7 +48,7 @@ class Zano { } document.dispatchEvent( - new CustomEvent('zano_request', { + new CustomEvent('lethean_request', { detail: { method, listenerID, @@ -61,4 +61,4 @@ class Zano { } } -window.zano = new Zano(); +window.lethean = new Lethean(); diff --git a/src/global.d.ts b/src/global.d.ts index d591d42..10d3bdc 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,5 +1,5 @@ interface Window { - zano: Zano; + lethean: Lethean; } declare module '*.scss' { const content: { [className: string]: string }; diff --git a/webpack.common.js b/webpack.common.js index 0d1d5d7..898de7b 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -4,7 +4,7 @@ module.exports = { module: { rules: [ { - include: /node_modules[\\/]zano_web3[\\/]/, + include: /node_modules[\\/]lethean_web3[\\/]/, resolve: { fullySpecified: false, },