From 7bfb89bf9c1db5a92cda13509c2576bc4ebafd0b Mon Sep 17 00:00:00 2001 From: mytonwalletorg Date: Mon, 13 Jan 2025 16:27:51 +0100 Subject: [PATCH] v3.2.7 --- .babelrc | 19 --- .eslintignore | 1 + babel.config.js | 19 +++ changelogs/3.2.7.txt | 1 + jest.config.js | 3 + package-lock.json | 10 +- package.json | 4 +- .../_common/images/QR-code-1.5x.webp | Bin 12516 -> 0 bytes .../_common/images/QR-code-1x.webp | Bin 8522 -> 0 bytes .../_common/images/QR-code-2x.webp | Bin 15544 -> 0 bytes public/static-sites/_common/images/logo.svg | 1 + public/static-sites/_common/index.css | 20 ++- public/static-sites/connect/desktop.html | 32 +++- public/static-sites/connect/index.html | 12 +- public/static-sites/get/index.js | 2 +- public/static-sites/get/mobile.html | 25 ++- public/static-sites/go/desktop.html | 32 +++- public/static-sites/go/index.html | 18 +-- public/version.txt | 2 +- src/api/chains/ton/constants.ts | 6 + src/api/chains/ton/index.ts | 1 - src/api/chains/ton/nfts.ts | 9 +- src/api/chains/ton/tokens.ts | 45 ++++-- src/api/chains/ton/transactions.ts | 151 +++++++++++------- src/api/chains/ton/types.ts | 26 +-- src/api/chains/ton/util/TonClient.ts | 3 + src/api/chains/ton/util/tonCore.test.ts | 95 +++++++++++ src/api/chains/ton/util/tonCore.ts | 61 +++---- src/api/chains/tron/transfer.ts | 110 ++++++------- src/api/common/tokens.ts | 2 +- src/api/methods/tokens.ts | 2 +- src/components/App.tsx | 3 +- src/components/auth/AuthConfirmBiometrics.tsx | 3 +- src/components/auth/AuthCreatingWallet.tsx | 3 +- src/components/common/Countdown.tsx | 6 +- src/components/common/TokenSelector.tsx | 17 +- src/components/dapps/DappFeedItem.tsx | 3 +- .../Card/CustomCardBackground.module.scss | 30 ++-- .../main/sections/Card/TokenCard.tsx | 4 +- .../main/sections/Content/Activities.tsx | 4 +- .../main/sections/Content/Token.tsx | 3 +- .../mediaViewer/MediaViewer.module.scss | 2 + src/components/transfer/Transfer.module.scss | 5 + src/components/transfer/TransferInitial.tsx | 7 +- src/components/transfer/TransferModal.tsx | 2 +- src/components/ui/InfiniteScroll.tsx | 5 +- src/components/ui/Transition.tsx | 3 +- src/config.ts | 2 +- src/giveaways/components/App.module.scss | 2 + src/giveaways/components/App.tsx | 7 +- src/giveaways/components/CommonPage.tsx | 9 +- src/giveaways/components/Footer.tsx | 7 +- .../components/GiveawayInfo.module.scss | 32 +++- src/giveaways/components/GiveawayInfo.tsx | 86 ++++++---- src/giveaways/components/TokenInfo.tsx | 2 +- src/giveaways/index.html | 2 +- src/giveaways/pages/CaptchaPage.tsx | 7 +- src/giveaways/pages/CompleteTaskPage.tsx | 5 +- src/giveaways/pages/ConnectPage.module.scss | 5 + src/giveaways/pages/ConnectPage.tsx | 15 +- src/giveaways/pages/GiveawayInfoPage.tsx | 5 +- src/giveaways/utils/giveaway.ts | 6 +- src/global/actions/api/swap.ts | 1 + src/global/actions/api/transfer.ts | 5 +- src/global/reducers/transfer.ts | 2 +- src/global/types.ts | 2 + src/styles/mtwCustomCard.scss | 18 ++- src/styles/variables.scss | 2 - src/util/accentColor.ts | 2 +- src/util/capacitor/index.ts | 21 +-- src/util/capacitor/switchStatusBar.ts | 24 +++ src/util/dateFormat.ts | 7 +- src/util/fee/formatFee.ts | 9 +- src/util/fee/transferFee.ts | 20 +-- src/util/fee/types.ts | 2 +- src/util/notificationSound.ts | 3 +- src/util/switchTheme.ts | 2 +- src/util/windowSize.ts | 3 +- 78 files changed, 725 insertions(+), 402 deletions(-) delete mode 100644 .babelrc create mode 100644 babel.config.js create mode 100644 changelogs/3.2.7.txt delete mode 100644 public/static-sites/_common/images/QR-code-1.5x.webp delete mode 100644 public/static-sites/_common/images/QR-code-1x.webp delete mode 100644 public/static-sites/_common/images/QR-code-2x.webp create mode 100644 public/static-sites/_common/images/logo.svg create mode 100644 src/api/chains/ton/util/tonCore.test.ts create mode 100644 src/giveaways/pages/ConnectPage.module.scss create mode 100644 src/util/capacitor/switchStatusBar.ts diff --git a/.babelrc b/.babelrc deleted file mode 100644 index c53b1eb0..00000000 --- a/.babelrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "presets": [ - [ - "@babel/typescript" - ], - [ - "@babel/preset-env" - ], - [ - "@babel/preset-react" - ] - ], - "plugins": [ - "@babel/plugin-proposal-class-properties", - "@babel/plugin-proposal-nullish-coalescing-operator", - "@babel/plugin-syntax-nullish-coalescing-operator", - "@babel/plugin-proposal-logical-assignment-operators" - ] -} diff --git a/.eslintignore b/.eslintignore index 0b38965c..311031c5 100644 --- a/.eslintignore +++ b/.eslintignore @@ -9,6 +9,7 @@ src/lib/noble-ed25519/index.js src/lib/dexie/ src/lib/axios-retry/ src/lib/is-retry-allowed/ +babel.config.js jest.config.js playwright.config.ts postcss.config.js diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 00000000..0db7c16b --- /dev/null +++ b/babel.config.js @@ -0,0 +1,19 @@ +module.exports = { + presets: [ + [ + '@babel/typescript' + ], + [ + '@babel/preset-env' + ], + [ + '@babel/preset-react' + ] + ], + plugins: [ + '@babel/plugin-proposal-class-properties', + '@babel/plugin-proposal-nullish-coalescing-operator', + '@babel/plugin-syntax-nullish-coalescing-operator', + '@babel/plugin-proposal-logical-assignment-operators' + ] +}; diff --git a/changelogs/3.2.7.txt b/changelogs/3.2.7.txt new file mode 100644 index 00000000..619f4cd5 --- /dev/null +++ b/changelogs/3.2.7.txt @@ -0,0 +1 @@ +Bug fixes and performance improvements diff --git a/jest.config.js b/jest.config.js index a26a92d7..eac97690 100644 --- a/jest.config.js +++ b/jest.config.js @@ -14,4 +14,7 @@ module.exports = { '\\.(jsx?|tsx?)$': 'babel-jest', '\\.txt$': 'jest-raw-loader', }, + transformIgnorePatterns: [ + '/node_modules/(?!(axios)/)', + ], }; diff --git a/package-lock.json b/package-lock.json index 9a2d15f0..d97cf14a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mytonwallet", - "version": "3.2.6", + "version": "3.2.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mytonwallet", - "version": "3.2.6", + "version": "3.2.7", "license": "GPL-3.0-or-later", "dependencies": { "@awesome-cordova-plugins/core": "6.9.0", @@ -51,7 +51,7 @@ "qr-code-styling": "github:mytonwallet-org/qr-code-styling#8d56b409da29122a92da2767d049b45b1bc24db2", "qrcode-generator": "1.4.4", "stream-browserify": "3.0.0", - "tonapi-sdk-js": "2.0.3", + "tonapi-sdk-js": "2.0.7", "tonweb-mnemonic": "1.0.1", "tronweb": "6.0.0", "tweetnacl": "1.0.3", @@ -24154,7 +24154,9 @@ } }, "node_modules/tonapi-sdk-js": { - "version": "2.0.3", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/tonapi-sdk-js/-/tonapi-sdk-js-2.0.7.tgz", + "integrity": "sha512-9NAaOTGwIxe2lch12swTIm1BrYeLrofDP/6LMVSXbUYdQKSaDBex/ekYnZ0h9CZAn4kdGnKZkcqTUb/jjcL81w==", "license": "MIT" }, "node_modules/tonweb-mnemonic": { diff --git a/package.json b/package.json index 956b5665..2439fa53 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mytonwallet", - "version": "3.2.6", + "version": "3.2.7", "description": "The most feature-rich web wallet and browser extension for TON – with support of multi-accounts, tokens (jettons), NFT, TON DNS, TON Sites, TON Proxy, and TON Magic.", "main": "index.js", "scripts": { @@ -225,7 +225,7 @@ "qr-code-styling": "github:mytonwallet-org/qr-code-styling#8d56b409da29122a92da2767d049b45b1bc24db2", "qrcode-generator": "1.4.4", "stream-browserify": "3.0.0", - "tonapi-sdk-js": "2.0.3", + "tonapi-sdk-js": "2.0.7", "tonweb-mnemonic": "1.0.1", "tronweb": "6.0.0", "tweetnacl": "1.0.3", diff --git a/public/static-sites/_common/images/QR-code-1.5x.webp b/public/static-sites/_common/images/QR-code-1.5x.webp deleted file mode 100644 index aeb05474abc29db65a942e05268a6dc44b6cd1dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12516 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 E03Nx$!~g&Q diff --git a/public/static-sites/_common/images/QR-code-2x.webp b/public/static-sites/_common/images/QR-code-2x.webp deleted file mode 100644 index d1bff43f6cd573f3cebabcccb957acb2c20c8583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15544 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 \ No newline at end of file diff --git a/public/static-sites/_common/index.css b/public/static-sites/_common/index.css index 49039834..e0b1429d 100644 --- a/public/static-sites/_common/index.css +++ b/public/static-sites/_common/index.css @@ -256,9 +256,23 @@ a:hover { border-radius: 1.25rem; } -.qr-code.without-margin { - margin: 0 !important; - margin-top: -16px !important; +.qr-code-canvas { + position: relative; + + width: 12rem; + height: 12rem; + + background: white; + border-radius: 1.25rem; +} + +.qr-code-canvas canvas { + position: absolute; + top: 0.5rem; + left: 0.5rem; + + width: calc(100% - 1rem); + height: calc(100% - 1rem); } .special-section { diff --git a/public/static-sites/connect/desktop.html b/public/static-sites/connect/desktop.html index e864aca4..a0b98178 100644 --- a/public/static-sites/connect/desktop.html +++ b/public/static-sites/connect/desktop.html @@ -5,6 +5,7 @@ MyTonWallet Connect +
@@ -15,11 +16,7 @@

Connect MyTonWallet

Scan QR to open the app
on your mobile device:

- +
On Desktop @@ -54,14 +51,33 @@

Connect MyTonWallet

const { pathname, search, + hash, } = location; - const redirectTo = search; + const QR_SIZE = 600; - document.getElementById('btn-sign-in').href = `mytonwallet-tc://${redirectTo}`; + const redirectTo = hash.slice(1) || search; + const fullRedirectUrl = `mytonwallet-tc://${redirectTo}`; + + document.getElementById('btn-sign-in').href = fullRedirectUrl; + + const qrCode = new QRCodeStyling({ + width: QR_SIZE, + height: QR_SIZE, + image: './images/logo.svg', + margin: 0, + type: 'canvas', + dotsOptions: { type: 'rounded' }, + cornersSquareOptions: { type: 'extra-rounded' }, + imageOptions: { imageSize: 0.4, margin: 8, crossOrigin: 'anonymous' }, + qrOptions: { errorCorrectionLevel: 'M' }, + data: fullRedirectUrl, + }); + + qrCode.append(document.querySelector(".qr-code-canvas")); if (!search?.includes('no-redirect')) { - location.href = `mytonwallet-tc://${redirectTo}`; + location.href = fullRedirectUrl; history.replaceState({}, '', `${pathname}${search}${search ? '&' : '?'}no-redirect`); } diff --git a/public/static-sites/connect/index.html b/public/static-sites/connect/index.html index 669454d5..1c0b00cd 100644 --- a/public/static-sites/connect/index.html +++ b/public/static-sites/connect/index.html @@ -36,14 +36,9 @@

Connect MyTonWallet

+ @@ -18,17 +19,31 @@

MyTonWallet App


on your mobile device: - +
+ diff --git a/public/static-sites/go/desktop.html b/public/static-sites/go/desktop.html index a255ae46..764c4492 100644 --- a/public/static-sites/go/desktop.html +++ b/public/static-sites/go/desktop.html @@ -5,6 +5,7 @@ Open MyTonWallet +
@@ -15,11 +16,7 @@

Open MyTonWallet

Scan QR to open the app
on your mobile device:

- +
On Desktop @@ -49,14 +46,33 @@

Open MyTonWallet

const { pathname, search, + hash, } = location; - const redirectTo = `${pathname.slice(1)}${search}`; + const QR_SIZE = 600; - document.getElementById('btn-sign-in').href = `mtw://${redirectTo}`; + const redirectTo = hash.slice(1) || `${pathname.slice(1)}${search}`; + const fullRedirectUrl = `mtw://${redirectTo}`; + + document.getElementById('btn-sign-in').href = fullRedirectUrl; + + const qrCode = new QRCodeStyling({ + width: QR_SIZE, + height: QR_SIZE, + image: './images/logo.svg', + margin: 0, + type: 'canvas', + dotsOptions: { type: 'rounded' }, + cornersSquareOptions: { type: 'extra-rounded' }, + imageOptions: { imageSize: 0.4, margin: 8, crossOrigin: 'anonymous' }, + qrOptions: { errorCorrectionLevel: 'M' }, + data: fullRedirectUrl, + }); + + qrCode.append(document.querySelector(".qr-code-canvas")); if (!search?.includes('no-redirect')) { - location.href = `mtw://${redirectTo}`; + location.href = fullRedirectUrl; history.replaceState({}, '', `${pathname}${search}${search ? '&' : '?'}no-redirect`); } diff --git a/public/static-sites/go/index.html b/public/static-sites/go/index.html index 65d5590e..e8ff4c0e 100644 --- a/public/static-sites/go/index.html +++ b/public/static-sites/go/index.html @@ -6,22 +6,22 @@ Open MyTonWallet