From 59927fd09eec6c4882ca4d8e1de6098803f834ae Mon Sep 17 00:00:00 2001 From: "Valentin D. Pinkman" Date: Tue, 2 Jul 2024 11:18:45 +0200 Subject: [PATCH 01/12] chore(hotfix) :rocket: entering hotfix mode --- .changeset/pre.json | 117 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000000..34cee375bf7 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,117 @@ +{ + "mode": "pre", + "tag": "hotfix", + "initialVersions": { + "@ledgerhq/live-cli": "24.3.1", + "ledger-live-desktop": "2.82.1", + "live-mobile": "3.45.1", + "@ledgerhq/web-tools": "0.6.1", + "@ledgerhq/docs-libs": "0.1.0", + "@ledgerhq/coin-framework": "0.14.0", + "@ledgerhq/coin-algorand": "0.5.0", + "@ledgerhq/coin-bitcoin": "0.6.0", + "@ledgerhq/coin-cardano": "0.1.0", + "@ledgerhq/coin-evm": "2.1.0", + "@ledgerhq/coin-near": "0.5.0", + "@ledgerhq/coin-polkadot": "0.8.0", + "@ledgerhq/coin-solana": "0.7.0", + "@ledgerhq/coin-tezos": "0.4.0", + "@ledgerhq/coin-xrp": "0.2.0", + "@ledgerhq/coin-tester": "0.2.0", + "@ledgerhq/device-core": "0.2.0", + "@ledgerhq/device-react": "0.2.0", + "@ledgerhq/domain-service": "1.2.0", + "@ledgerhq/live-env": "2.1.0", + "@ledgerhq/ethereum-provider": "0.3.0", + "@ledgerhq/evm-tools": "1.1.0", + "@ledgerhq/wallet-api-exchange-module": "0.7.0", + "@ledgerhq/hw-trustchain": "0.1.1", + "@ledgerhq/live-common": "34.4.0", + "@ledgerhq/ledger-libs": "0.1.3", + "@ledgerhq/context-module": "0.0.2", + "@ledgerhq/cryptoassets": "13.1.0", + "@ledgerhq/devices": "8.4.0", + "@ledgerhq/errors": "6.17.0", + "@ledgerhq/hw-app-algorand": "6.29.0", + "@ledgerhq/hw-app-btc": "10.3.0", + "@ledgerhq/hw-app-cosmos": "6.30.0", + "@ledgerhq/hw-app-eth": "6.37.0", + "@ledgerhq/hw-app-exchange": "0.5.0", + "@ledgerhq/hw-app-helium": "6.31.0", + "@ledgerhq/hw-app-near": "6.29.0", + "@ledgerhq/hw-app-polkadot": "6.30.0", + "@ledgerhq/hw-app-solana": "7.2.0", + "@ledgerhq/hw-app-str": "6.29.0", + "@ledgerhq/hw-app-tezos": "6.29.0", + "@ledgerhq/hw-app-trx": "6.29.0", + "@ledgerhq/hw-app-vet": "0.2.0", + "@ledgerhq/hw-app-xrp": "6.29.0", + "@ledgerhq/hw-transport": "6.31.0", + "@ledgerhq/hw-transport-http": "6.30.0", + "@ledgerhq/hw-transport-mocker": "6.29.0", + "@ledgerhq/hw-transport-node-hid": "6.29.0", + "@ledgerhq/hw-transport-node-hid-noevents": "6.30.0", + "@ledgerhq/hw-transport-node-hid-singleton": "6.31.0", + "@ledgerhq/hw-transport-node-speculos": "6.29.0", + "@ledgerhq/hw-transport-node-speculos-http": "6.29.0", + "@ledgerhq/hw-transport-vault": "1.3.0", + "@ledgerhq/hw-transport-web-ble": "6.29.0", + "@ledgerhq/hw-transport-webhid": "6.29.0", + "@ledgerhq/hw-transport-webusb": "6.29.0", + "@ledgerhq/keyring-eth": "0.1.0", + "@ledgerhq/logs": "6.12.0", + "@ledgerhq/react-native-hid": "6.32.0", + "@ledgerhq/react-native-hw-transport-ble": "6.33.0", + "@ledgerhq/swift-bridge-hw-app-eth": "1.2.0", + "@ledgerhq/swift-bridge-hw-app-solana": "1.2.0", + "@ledgerhq/swift-bridge-hw-transport-ble": "1.2.0", + "@ledgerhq/types-cryptoassets": "7.13.0", + "@ledgerhq/types-devices": "6.25.0", + "@ledgerhq/types-live": "6.48.0", + "@ledgerhq/live-config": "3.0.0", + "@ledgerhq/live-countervalues": "0.2.0", + "@ledgerhq/live-countervalues-react": "0.2.0", + "@ledgerhq/live-hooks": "0.1.0", + "@ledgerhq/live-network": "1.3.0", + "@ledgerhq/live-nft": "0.4.0", + "@ledgerhq/live-nft-react": "0.4.0", + "@ledgerhq/live-wallet": "0.2.0", + "@ledgerhq/live-promise": "0.1.0", + "@ledgerhq/speculos-transport": "0.1.1", + "@ledgerhq/test-utils": "0.2.1", + "@ledgerhq/trustchain": "0.1.1", + "@ledgerhq/ui": "0.2.1", + "@ledgerhq/next.js-example": "0.1.0", + "@ledgerhq/webpack.js-example": "0.1.0", + "@ledgerhq/crypto-icons-ui": "1.2.0", + "@ledgerhq/icons-ui": "0.7.0", + "@ledgerhq/native-ui": "0.23.0", + "@ledgerhq/react-ui": "0.15.0", + "@ledgerhq/ui-shared": "0.2.1", + "@ledgerhq/dummy-live-app": "0.2.0", + "@ledgerhq/dummy-ptx-app": "0.0.1", + "@ledgerhq/dummy-wallet-app": "0.3.1", + "@ledgerhq/actions-root": "0.1.0", + "@actions/build-checks": "1.2.0", + "@actions/change-product-name": "1.0.1", + "@actions/desktop-report-build": "1.0.1", + "@actions/generate-bot-super-report": "1.0.2", + "@actions/generate-release-message": "1.1.0", + "@actions/get-package-infos": "1.1.0", + "@actions/get-workflow-artifacts-id": "1.1.0", + "@actions/live-common-affected": "1.0.0", + "@actions/prepare-comment-screenshots": "1.0.1", + "@actions/submit-bot-report": "1.1.0", + "@actions/turbo-affected": "1.1.0", + "@actions/turborepo-gh-cache": "1.0.1", + "@actions/turborepo-s3-cache": "1.0.1", + "@actions/upload-images": "2.1.0", + "@ledgerhq/create-release-hash": "1.0.0", + "@ledgerhq/esbuild-utils": "1.0.1", + "@ledgerhq/live-github-bot": "1.1.0", + "@ledgerhq/native-modules-tools": "1.0.3", + "@ledgerhq/pnpm-utils": "1.0.1", + "@ledgerhq/react-devtools": "0.0.0" + }, + "changesets": [] +} From aa302450112c7215263a266fb1bb07256d9efdeb Mon Sep 17 00:00:00 2001 From: "Valentin D. Pinkman" Date: Tue, 2 Jul 2024 11:54:36 +0200 Subject: [PATCH 02/12] fix(llm): add version check for nano x bluetooth update --- .changeset/witty-clouds-change.md | 5 +++++ .../components/UpdateBanner/index.tsx | 21 +++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 .changeset/witty-clouds-change.md diff --git a/.changeset/witty-clouds-change.md b/.changeset/witty-clouds-change.md new file mode 100644 index 00000000000..c7a50c9fd68 --- /dev/null +++ b/.changeset/witty-clouds-change.md @@ -0,0 +1,5 @@ +--- +"live-mobile": patch +--- + +Add version check for nano X bluetooth firmware update diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/index.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/index.tsx index 82c3ce42ce3..04243aabc65 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/index.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/index.tsx @@ -1,9 +1,10 @@ -import React, { memo } from "react"; +import React, { memo, useMemo } from "react"; import { Pressable } from "react-native"; import { useTranslation } from "react-i18next"; import { Text, Flex, Icons } from "@ledgerhq/native-ui"; import { DownloadMedium, UsbMedium } from "@ledgerhq/native-ui/assets/icons"; import { DeviceModelId, getDeviceModel } from "@ledgerhq/devices"; +import semver from "semver"; import Button from "~/components/Button"; import QueuedDrawer from "~/components/QueuedDrawer"; @@ -29,8 +30,24 @@ const UpdateBanner = ({ ? getDeviceModel(lastConnectedDevice.modelId).productName : undefined; + const connectionType = lastConnectedDevice?.wired ? "usb" : "bluetooth"; const deviceName = lastConnectedDevice?.deviceName; - return bannerVisible ? ( + + const shouldDisplay = useMemo(() => { + if (!bannerVisible || !version) { + return false; + } + + if (connectionType === "bluetooth") { + if (lastConnectedDevice?.modelId === DeviceModelId.nanoX) { + return semver.gt(version, "2.4.0"); + } + } + + return true; + }, [bannerVisible, connectionType, lastConnectedDevice, version]); + + return shouldDisplay ? ( <> Date: Tue, 2 Jul 2024 10:01:42 +0000 Subject: [PATCH 03/12] chore(hotfix): :fire: hotfix prerelease [LLD(2.82.1), LLM(3.45.2-hotfix.0)] --- .changeset/pre.json | 4 +++- apps/ledger-live-mobile/CHANGELOG.md | 6 ++++++ apps/ledger-live-mobile/package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 34cee375bf7..24f05c8dd30 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -113,5 +113,7 @@ "@ledgerhq/pnpm-utils": "1.0.1", "@ledgerhq/react-devtools": "0.0.0" }, - "changesets": [] + "changesets": [ + "witty-clouds-change" + ] } diff --git a/apps/ledger-live-mobile/CHANGELOG.md b/apps/ledger-live-mobile/CHANGELOG.md index 83a027bef63..047181aca09 100644 --- a/apps/ledger-live-mobile/CHANGELOG.md +++ b/apps/ledger-live-mobile/CHANGELOG.md @@ -1,5 +1,11 @@ # live-mobile +## 3.45.2-hotfix.0 + +### Patch Changes + +- [#7241](https://github.com/LedgerHQ/ledger-live/pull/7241) [`aa30245`](https://github.com/LedgerHQ/ledger-live/commit/aa302450112c7215263a266fb1bb07256d9efdeb) Thanks [@valpinkman](https://github.com/valpinkman)! - Add version check for nano X bluetooth firmware update + ## 3.45.1 ### Patch Changes diff --git a/apps/ledger-live-mobile/package.json b/apps/ledger-live-mobile/package.json index 0693ca9e437..59a5887a2ee 100644 --- a/apps/ledger-live-mobile/package.json +++ b/apps/ledger-live-mobile/package.json @@ -1,6 +1,6 @@ { "name": "live-mobile", - "version": "3.45.1", + "version": "3.45.2-hotfix.0", "private": true, "scripts": { "postinstall": "zx ./scripts/post.mjs", From 22a4ebf8130b0c8f06c132769a6b0ef5602bfd7d Mon Sep 17 00:00:00 2001 From: "Valentin D. Pinkman" Date: Tue, 2 Jul 2024 12:25:21 +0200 Subject: [PATCH 04/12] feat(llm): move check to viewprops and add tests --- .changeset/dull-foxes-suffer.md | 5 ++ .../components/UpdateBanner/index.tsx | 20 +------- .../useUpdateBannerViewModel.test.tsx | 49 +++++++++++++++++++ .../UpdateBanner/useUpdateBannerViewModel.tsx | 20 +++++++- 4 files changed, 74 insertions(+), 20 deletions(-) create mode 100644 .changeset/dull-foxes-suffer.md diff --git a/.changeset/dull-foxes-suffer.md b/.changeset/dull-foxes-suffer.md new file mode 100644 index 00000000000..2ed3f30180b --- /dev/null +++ b/.changeset/dull-foxes-suffer.md @@ -0,0 +1,5 @@ +--- +"live-mobile": patch +--- + +move update firmware checks to the ViewProps component and add tests diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/index.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/index.tsx index 04243aabc65..2e604116e54 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/index.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/index.tsx @@ -1,10 +1,9 @@ -import React, { memo, useMemo } from "react"; +import React, { memo } from "react"; import { Pressable } from "react-native"; import { useTranslation } from "react-i18next"; import { Text, Flex, Icons } from "@ledgerhq/native-ui"; import { DownloadMedium, UsbMedium } from "@ledgerhq/native-ui/assets/icons"; import { DeviceModelId, getDeviceModel } from "@ledgerhq/devices"; -import semver from "semver"; import Button from "~/components/Button"; import QueuedDrawer from "~/components/QueuedDrawer"; @@ -30,24 +29,9 @@ const UpdateBanner = ({ ? getDeviceModel(lastConnectedDevice.modelId).productName : undefined; - const connectionType = lastConnectedDevice?.wired ? "usb" : "bluetooth"; const deviceName = lastConnectedDevice?.deviceName; - const shouldDisplay = useMemo(() => { - if (!bannerVisible || !version) { - return false; - } - - if (connectionType === "bluetooth") { - if (lastConnectedDevice?.modelId === DeviceModelId.nanoX) { - return semver.gt(version, "2.4.0"); - } - } - - return true; - }, [bannerVisible, connectionType, lastConnectedDevice, version]); - - return shouldDisplay ? ( + return bannerVisible ? ( <> { expect(result.current.bannerVisible).toBe(false); }); + it("should return bannerVisible: false if connection is bluetooth, model is nano X and version is lower than 2.4.0", () => { + const lastConnectedDevice = { wired: false, modelId: DeviceModelId.nanoX }; + lastConnectedDeviceSelector.mockReturnValue(lastConnectedDevice); + hasConnectedDeviceSelector.mockReturnValue(true); + hasCompletedOnboardingSelector.mockReturnValue(true); + useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", version: "2.3.0" } }); + + const { result } = renderHook(() => + useUpdateBannerViewModel({ + onBackFromUpdate: jest.fn(), + }), + ); + + expect(result.current.bannerVisible).toBe(false); + }); + + it("should return bannerVisible: true if connection is bluetooth, model is nano X and version is higher than 2.4.0", () => { + const lastConnectedDevice = { wired: false, modelId: DeviceModelId.nanoX }; + lastConnectedDeviceSelector.mockReturnValue(lastConnectedDevice); + hasConnectedDeviceSelector.mockReturnValue(true); + hasCompletedOnboardingSelector.mockReturnValue(true); + useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", version: "2.4.1" } }); + + const { result } = renderHook(() => + useUpdateBannerViewModel({ + onBackFromUpdate: jest.fn(), + }), + ); + + expect(result.current.bannerVisible).toBe(true); + }); + + it("should return bannerVisible: true if connection is usb, model is nano X", () => { + const lastConnectedDevice = { wired: true, modelId: DeviceModelId.nanoX }; + lastConnectedDeviceSelector.mockReturnValue(lastConnectedDevice); + hasConnectedDeviceSelector.mockReturnValue(true); + hasCompletedOnboardingSelector.mockReturnValue(true); + useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", version: "2.3.1" } }); + + const { result } = renderHook(() => + useUpdateBannerViewModel({ + onBackFromUpdate: jest.fn(), + }), + ); + + expect(result.current.bannerVisible).toBe(true); + }); + it("should return the correct values of isUpdateSupportedButDeviceNotWired", () => { hasConnectedDeviceSelector.mockReturnValue(true); hasCompletedOnboardingSelector.mockReturnValue(true); diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx index 1e349c0ca93..6245e26ed87 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx @@ -1,7 +1,9 @@ -import { useState, useCallback } from "react"; +import { useState, useCallback, useMemo } from "react"; import { useNavigation, useRoute } from "@react-navigation/native"; import { useSelector } from "react-redux"; import { useLatestFirmware } from "@ledgerhq/live-common/device/hooks/useLatestFirmware"; +import { DeviceModelId } from "@ledgerhq/devices"; +import semver from "semver"; import { lastSeenDeviceSelector, hasCompletedOnboardingSelector, @@ -30,8 +32,22 @@ export function useUpdateBannerViewModel({ const hasCompletedOnboarding: boolean = useSelector(hasCompletedOnboardingSelector); const latestFirmware = useLatestFirmware(lastSeenDeviceModelInfo?.deviceInfo); - const bannerVisible = Boolean(latestFirmware) && hasCompletedOnboarding && hasConnectedDevice; + const bannerReady = Boolean(latestFirmware) && hasCompletedOnboarding && hasConnectedDevice; const version = latestFirmware?.final?.name ?? ""; + const connectionType = lastConnectedDevice?.wired ? "usb" : "bluetooth"; + const bannerVisible = useMemo(() => { + if (!bannerReady || !version) { + return false; + } + + if (connectionType === "bluetooth") { + if (lastConnectedDevice?.modelId === DeviceModelId.nanoX) { + return semver.gt(version, "2.4.0"); + } + } + + return true; + }, [bannerReady, connectionType, lastConnectedDevice, version]); const { updateSupported: isOldUxSupported, From a7af7fe5b54d21bb1d254f9ad209abb916244434 Mon Sep 17 00:00:00 2001 From: "live-github-bot[bot]" <105061298+live-github-bot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 10:36:07 +0000 Subject: [PATCH 05/12] chore(hotfix): :fire: hotfix prerelease [LLD(2.82.1), LLM(3.45.2-hotfix.1)] --- .changeset/pre.json | 1 + apps/ledger-live-mobile/CHANGELOG.md | 6 ++++++ apps/ledger-live-mobile/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 24f05c8dd30..0a99960f8d2 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -114,6 +114,7 @@ "@ledgerhq/react-devtools": "0.0.0" }, "changesets": [ + "dull-foxes-suffer", "witty-clouds-change" ] } diff --git a/apps/ledger-live-mobile/CHANGELOG.md b/apps/ledger-live-mobile/CHANGELOG.md index 047181aca09..6f8a78f52bb 100644 --- a/apps/ledger-live-mobile/CHANGELOG.md +++ b/apps/ledger-live-mobile/CHANGELOG.md @@ -1,5 +1,11 @@ # live-mobile +## 3.45.2-hotfix.1 + +### Patch Changes + +- [#7241](https://github.com/LedgerHQ/ledger-live/pull/7241) [`22a4ebf`](https://github.com/LedgerHQ/ledger-live/commit/22a4ebf8130b0c8f06c132769a6b0ef5602bfd7d) Thanks [@valpinkman](https://github.com/valpinkman)! - move update firmware checks to the ViewProps component and add tests + ## 3.45.2-hotfix.0 ### Patch Changes diff --git a/apps/ledger-live-mobile/package.json b/apps/ledger-live-mobile/package.json index 59a5887a2ee..573eec15e86 100644 --- a/apps/ledger-live-mobile/package.json +++ b/apps/ledger-live-mobile/package.json @@ -1,6 +1,6 @@ { "name": "live-mobile", - "version": "3.45.2-hotfix.0", + "version": "3.45.2-hotfix.1", "private": true, "scripts": { "postinstall": "zx ./scripts/post.mjs", From 2dafbf7a2ee0cefd00e19b203b97f5918c2607ff Mon Sep 17 00:00:00 2001 From: hzheng-ledger Date: Tue, 2 Jul 2024 12:13:59 +0200 Subject: [PATCH 06/12] fix: polkadot send for runtime upgrade --- .changeset/lucky-lobsters-rescue.md | 6 ++++++ libs/ledger-live-common/src/families/polkadot/config.ts | 6 +++--- libs/ledgerjs/packages/hw-app-polkadot/src/Polkadot.ts | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .changeset/lucky-lobsters-rescue.md diff --git a/.changeset/lucky-lobsters-rescue.md b/.changeset/lucky-lobsters-rescue.md new file mode 100644 index 00000000000..002964d6d06 --- /dev/null +++ b/.changeset/lucky-lobsters-rescue.md @@ -0,0 +1,6 @@ +--- +"@ledgerhq/hw-app-polkadot": patch +"@ledgerhq/live-common": patch +--- + +fix: polkadot send tx in LLM diff --git a/libs/ledger-live-common/src/families/polkadot/config.ts b/libs/ledger-live-common/src/families/polkadot/config.ts index 9edffeccc21..68b16b84300 100644 --- a/libs/ledger-live-common/src/families/polkadot/config.ts +++ b/libs/ledger-live-common/src/families/polkadot/config.ts @@ -16,12 +16,12 @@ export const polkadotConfig: Record = { electionStatusThreshold: getEnv("POLKADOT_ELECTION_STATUS_THRESHOLD"), }, metadataShortener: { - url: "https://api.zondax.ch/polkadot/transaction/metadata", + url: "https://polkadot-metadata-shortener.api.live.ledger.com/transaction/metadata", }, metadataHash: { - url: "https://api.zondax.ch/polkadot/node/metadata/hash", + url: "https://polkadot-metadata-shortener.api.live.ledger.com/node/metadata/hash", }, - runtimeUpgraded: false, + runtimeUpgraded: true, }, }, }; diff --git a/libs/ledgerjs/packages/hw-app-polkadot/src/Polkadot.ts b/libs/ledgerjs/packages/hw-app-polkadot/src/Polkadot.ts index b193111bd7e..1aeb1221b5d 100644 --- a/libs/ledgerjs/packages/hw-app-polkadot/src/Polkadot.ts +++ b/libs/ledgerjs/packages/hw-app-polkadot/src/Polkadot.ts @@ -135,6 +135,8 @@ export default class Polkadot { Buffer.from(message), Buffer.from(metadata.slice(2), "hex"), ); + // we need to cast the signature to Buffer explicitly. In react native, the signature from signWithMetadata is not necessarily a Buffer + signatureRequest.signature = Buffer.from(signatureRequest.signature); return { signature: signatureRequest.signature.toString("hex"), return_code: SW_OK, From a9954fac8d0827d659f1e0f134d437bd45802cbf Mon Sep 17 00:00:00 2001 From: "Valentin D. Pinkman" Date: Tue, 2 Jul 2024 14:48:54 +0200 Subject: [PATCH 07/12] feat(llm): fix and add new tests for the new fw update banner --- .changeset/pink-forks-remain.md | 5 + .../UpdateBanner/UpdateBanner.test.tsx | 146 ++++++++++++++++-- .../useUpdateBannerViewModel.test.tsx | 2 +- .../UpdateBanner/useUpdateBannerViewModel.tsx | 7 +- 4 files changed, 145 insertions(+), 15 deletions(-) create mode 100644 .changeset/pink-forks-remain.md diff --git a/.changeset/pink-forks-remain.md b/.changeset/pink-forks-remain.md new file mode 100644 index 00000000000..fae0a764447 --- /dev/null +++ b/.changeset/pink-forks-remain.md @@ -0,0 +1,5 @@ +--- +"live-mobile": patch +--- + +Add new tests for the UpdateBanner diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx index 3e593d06b3f..dddb066f65a 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx @@ -55,30 +55,33 @@ const EUROPA_DATA = { const oldUpdateFlowNotSupportedDataSet: Array<{ deviceModelId: DeviceModelId; version: string; + fwVersion: string; productName: string; }> = [ - { ...NANO_S_DATA, version: "1.6.0" }, - { ...NANO_X_DATA, version: "1.2.9" }, - { ...NANO_SP_DATA, version: "0.9.9" }, + { ...NANO_S_DATA, version: "1.6.0", fwVersion: "1.7.0" }, + { ...NANO_X_DATA, version: "1.2.9", fwVersion: "1.3.0" }, + { ...NANO_SP_DATA, version: "0.9.9", fwVersion: "1.0.0" }, ]; const oldUpdateFlowSupportedDataSet: Array<{ deviceModelId: DeviceModelId; version: string; + fwVersion: string; productName: string; }> = [ - { ...NANO_S_DATA, version: "1.6.1" }, - { ...NANO_SP_DATA, version: "1.0.0" }, + { ...NANO_S_DATA, version: "1.6.1", fwVersion: "1.7.2" }, + { ...NANO_SP_DATA, version: "1.0.0", fwVersion: "1.1.0" }, ]; const newUpdateFlowSupportedDataSet: Array<{ deviceModelId: DeviceModelId; version: string; + fwVersion: string; productName: string; }> = [ - { ...STAX_DATA, version: "1.0.0" }, - { ...EUROPA_DATA, version: "1.0.0" }, - { ...NANO_X_DATA, version: "1.3.0" }, + { ...STAX_DATA, version: "1.0.0", fwVersion: "1.1.0" }, + { ...EUROPA_DATA, version: "1.0.0", fwVersion: "1.1.0" }, + { ...NANO_X_DATA, version: "2.4.0", fwVersion: "2.4.1" }, ]; describe("", () => { @@ -115,6 +118,7 @@ describe("", () => { useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", + version: "3.0.0", }, }); @@ -139,6 +143,7 @@ describe("", () => { useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", + version: "3.0.0", }, }); @@ -164,6 +169,7 @@ describe("", () => { useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", + version: "3.0.0", }, }); @@ -206,6 +212,7 @@ describe("", () => { useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", + version: "3.0.0", }, }); @@ -242,12 +249,13 @@ describe("", () => { expect(navigateToNewUpdateFlow).not.toHaveBeenCalled(); }); - oldUpdateFlowNotSupportedDataSet.forEach(({ deviceModelId, version, productName }) => { + oldUpdateFlowNotSupportedDataSet.forEach(({ deviceModelId, version, productName, fwVersion }) => { it(`should open the unsupported drawer if there is an update and it's Android but the update is not supported for this device version (${version} ${deviceModelId})`, async () => { PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", + version: fwVersion, }, }); @@ -284,12 +292,13 @@ describe("", () => { }); }); - oldUpdateFlowSupportedDataSet.forEach(({ deviceModelId, version, productName }) => { + oldUpdateFlowSupportedDataSet.forEach(({ deviceModelId, version, productName, fwVersion }) => { it(`should redirect to the OLD firmware update flow if the device is supported (${version} ${deviceModelId})`, async () => { PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", + version: fwVersion, }, }); @@ -316,12 +325,13 @@ describe("", () => { }); }); - newUpdateFlowSupportedDataSet.forEach(({ deviceModelId, version, productName }) => { + newUpdateFlowSupportedDataSet.forEach(({ deviceModelId, version, productName, fwVersion }) => { it(`should redirect to the NEW firmware update flow if the device is supported (${version} ${deviceModelId})`, async () => { PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", + version: fwVersion, }, }); @@ -347,4 +357,118 @@ describe("", () => { expect(navigateToNewUpdateFlow).toHaveBeenCalled(); }); }); + + it("should not display the firmware update banner if the device is nano X, on Android, on bluetooth, and the firmware version is not supported (<2.4.0)", async () => { + PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); + useLatestFirmware.mockReturnValue({ + final: { + name: "mockVersion", + version: "2.4.0", + }, + }); + + render( {}} />, { + overrideInitialState: makeOverrideInitialState({ + deviceModelId: DeviceModelId.nanoX, + version: "2.3.0", + hasCompletedOnboarding: true, + wired: false, // Device is not wired + hasConnectedDevice: true, + }), + }); + + // Check that the banner is not displayed + expect(await screen.queryByTestId("fw-update-banner")).toBeNull(); + }); + + it("should display the firmware update banner if the device is nano X, on Android and on usb", async () => { + PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); + useLatestFirmware.mockReturnValue({ + final: { + name: "mockVersion", + version: "2.4.0", + }, + }); + + const { user } = render( {}} />, { + overrideInitialState: makeOverrideInitialState({ + deviceModelId: DeviceModelId.nanoX, + version: "2.3.0", + hasCompletedOnboarding: true, + wired: true, // Device is wired + hasConnectedDevice: true, + }), + }); + + // Check that the banner is displayed + expect(await screen.findByTestId("fw-update-banner")).toBeOnTheScreen(); + + // Check that the banner is displayed with the correct wording + expect(await screen.findByText("OS update available")).toBeOnTheScreen(); + expect( + await screen.findByText(`Tap to update your Ledger Nano X to OS version mockVersion.`), + ).toBeOnTheScreen(); + + // Press the banner and check that the entrypoint to the new update flow is called + await user.press(screen.getByTestId("fw-update-banner")); + expect(navigateToOldUpdateFlow).not.toHaveBeenCalled(); + expect(navigateToNewUpdateFlow).toHaveBeenCalled(); + }); + + it("should display the firmware update banner if the device is nano X, on iOS, on bluetooth and with a supported firmware version (>=2.4.0)", async () => { + PlatformSpy.mockReturnValue({ OS: "ios" } as typeof ReactNative.Platform); + useLatestFirmware.mockReturnValue({ + final: { + name: "mockVersion", + version: "2.4.1", + }, + }); + + const { user } = render( {}} />, { + overrideInitialState: makeOverrideInitialState({ + deviceModelId: DeviceModelId.nanoX, + version: "2.4.0", + hasCompletedOnboarding: true, + wired: false, // Device is wired + hasConnectedDevice: true, + }), + }); + + // Check that the banner is displayed + expect(await screen.findByTestId("fw-update-banner")).toBeOnTheScreen(); + + // Check that the banner is displayed with the correct wording + expect(await screen.findByText("OS update available")).toBeOnTheScreen(); + expect( + await screen.findByText(`Tap to update your Ledger Nano X to OS version mockVersion.`), + ).toBeOnTheScreen(); + + // Press the banner and check that the entrypoint to the new update flow is called + await user.press(screen.getByTestId("fw-update-banner")); + expect(navigateToOldUpdateFlow).not.toHaveBeenCalled(); + expect(navigateToNewUpdateFlow).toHaveBeenCalled(); + }); + + it("should not display the firmware update banner if the device is nano X, on iOS, on bluetooth, and the firmware version is not supported (<2.4.0)", async () => { + PlatformSpy.mockReturnValue({ OS: "ios" } as typeof ReactNative.Platform); + useLatestFirmware.mockReturnValue({ + final: { + name: "mockVersion", + version: "2.4.0", + }, + }); + + render( {}} />, { + overrideInitialState: makeOverrideInitialState({ + deviceModelId: DeviceModelId.nanoX, + version: "2.3.0", + hasCompletedOnboarding: true, + wired: false, // Device is not wired + hasConnectedDevice: true, + }), + }); + + // Check that the banner is not displayed + expect(await screen.queryByTestId("fw-update-banner")).toBeNull(); + }); }); diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.test.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.test.tsx index c03f88cc497..2f68a22174a 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.test.tsx @@ -77,7 +77,7 @@ describe("useUpdateBannerViewModel", () => { lastConnectedDeviceSelector.mockReturnValue(lastConnectedDevice); hasConnectedDeviceSelector.mockReturnValue(true); hasCompletedOnboardingSelector.mockReturnValue(true); - useLatestFirmware.mockReturnValue({ final: { name: "mockVersion" } }); + useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", version: "1.0.0" } }); const { result } = renderHook(() => useUpdateBannerViewModel({ diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx index 6245e26ed87..4e379ec71f9 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx @@ -34,20 +34,21 @@ export function useUpdateBannerViewModel({ const bannerReady = Boolean(latestFirmware) && hasCompletedOnboarding && hasConnectedDevice; const version = latestFirmware?.final?.name ?? ""; + const finalVersion = latestFirmware?.final?.version ?? ""; const connectionType = lastConnectedDevice?.wired ? "usb" : "bluetooth"; const bannerVisible = useMemo(() => { - if (!bannerReady || !version) { + if (!bannerReady || !finalVersion) { return false; } if (connectionType === "bluetooth") { if (lastConnectedDevice?.modelId === DeviceModelId.nanoX) { - return semver.gt(version, "2.4.0"); + return semver.gt(finalVersion, "2.4.0"); } } return true; - }, [bannerReady, connectionType, lastConnectedDevice, version]); + }, [bannerReady, connectionType, lastConnectedDevice, finalVersion]); const { updateSupported: isOldUxSupported, From 5381b81603f4e9fe5ad1fe50703aa8b0d4b4049a Mon Sep 17 00:00:00 2001 From: "live-github-bot[bot]" <105061298+live-github-bot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 12:56:32 +0000 Subject: [PATCH 08/12] chore(hotfix): :fire: hotfix prerelease [LLD(2.82.2-hotfix.0), LLM(3.45.2-hotfix.2)] --- .changeset/pre.json | 2 ++ apps/cli/CHANGELOG.md | 7 +++++++ apps/cli/package.json | 2 +- apps/ledger-live-desktop/CHANGELOG.md | 7 +++++++ apps/ledger-live-desktop/package.json | 2 +- apps/ledger-live-mobile/CHANGELOG.md | 9 +++++++++ apps/ledger-live-mobile/package.json | 2 +- apps/web-tools/CHANGELOG.md | 7 +++++++ apps/web-tools/package.json | 2 +- libs/ledger-live-common/CHANGELOG.md | 9 +++++++++ libs/ledger-live-common/package.json | 2 +- libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md | 6 ++++++ libs/ledgerjs/packages/hw-app-polkadot/package.json | 2 +- libs/test-utils/CHANGELOG.md | 7 +++++++ libs/test-utils/package.json | 2 +- tests/dummy-wallet-app/CHANGELOG.md | 7 +++++++ tests/dummy-wallet-app/package.json | 2 +- 17 files changed, 69 insertions(+), 8 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 0a99960f8d2..03cff946450 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -115,6 +115,8 @@ }, "changesets": [ "dull-foxes-suffer", + "lucky-lobsters-rescue", + "pink-forks-remain", "witty-clouds-change" ] } diff --git a/apps/cli/CHANGELOG.md b/apps/cli/CHANGELOG.md index d64353e128f..83d7cfa6a3b 100644 --- a/apps/cli/CHANGELOG.md +++ b/apps/cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @ledgerhq/live-cli +## 24.3.2-hotfix.0 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1-hotfix.0 + ## 24.3.1 ### Patch Changes diff --git a/apps/cli/package.json b/apps/cli/package.json index 392ed5df95c..2866df2c7c2 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/live-cli", - "version": "24.3.1", + "version": "24.3.2-hotfix.0", "description": "ledger-live CLI version", "repository": { "type": "git", diff --git a/apps/ledger-live-desktop/CHANGELOG.md b/apps/ledger-live-desktop/CHANGELOG.md index 6c0ac870355..c6cd2c9055e 100644 --- a/apps/ledger-live-desktop/CHANGELOG.md +++ b/apps/ledger-live-desktop/CHANGELOG.md @@ -1,5 +1,12 @@ # ledger-live-desktop +## 2.82.2-hotfix.0 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1-hotfix.0 + ## 2.82.1 ### Patch Changes diff --git a/apps/ledger-live-desktop/package.json b/apps/ledger-live-desktop/package.json index 45dc1bda612..16aad1c8466 100644 --- a/apps/ledger-live-desktop/package.json +++ b/apps/ledger-live-desktop/package.json @@ -13,7 +13,7 @@ "license": "MIT", "private": true, "main": "./.webpack/main.bundle.js", - "version": "2.82.1", + "version": "2.82.2-hotfix.0", "scripts": { "start:prod": "electron ./.webpack/main.bundle.js", "start": "cross-env NODE_ENV=development node ./tools/main.js", diff --git a/apps/ledger-live-mobile/CHANGELOG.md b/apps/ledger-live-mobile/CHANGELOG.md index 6f8a78f52bb..374dfef6f6f 100644 --- a/apps/ledger-live-mobile/CHANGELOG.md +++ b/apps/ledger-live-mobile/CHANGELOG.md @@ -1,5 +1,14 @@ # live-mobile +## 3.45.2-hotfix.2 + +### Patch Changes + +- [#7241](https://github.com/LedgerHQ/ledger-live/pull/7241) [`a9954fa`](https://github.com/LedgerHQ/ledger-live/commit/a9954fac8d0827d659f1e0f134d437bd45802cbf) Thanks [@valpinkman](https://github.com/valpinkman)! - Add new tests for the UpdateBanner + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1-hotfix.0 + ## 3.45.2-hotfix.1 ### Patch Changes diff --git a/apps/ledger-live-mobile/package.json b/apps/ledger-live-mobile/package.json index 573eec15e86..9d235defeb6 100644 --- a/apps/ledger-live-mobile/package.json +++ b/apps/ledger-live-mobile/package.json @@ -1,6 +1,6 @@ { "name": "live-mobile", - "version": "3.45.2-hotfix.1", + "version": "3.45.2-hotfix.2", "private": true, "scripts": { "postinstall": "zx ./scripts/post.mjs", diff --git a/apps/web-tools/CHANGELOG.md b/apps/web-tools/CHANGELOG.md index 67102f783c9..08a90ecb908 100644 --- a/apps/web-tools/CHANGELOG.md +++ b/apps/web-tools/CHANGELOG.md @@ -1,5 +1,12 @@ # web-tools +## 0.6.2-hotfix.0 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1-hotfix.0 + ## 0.6.1 ### Patch Changes diff --git a/apps/web-tools/package.json b/apps/web-tools/package.json index edcf89cd465..e84fbd3a88e 100644 --- a/apps/web-tools/package.json +++ b/apps/web-tools/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/web-tools", - "version": "0.6.1", + "version": "0.6.2-hotfix.0", "private": true, "browser": { "fs": false, diff --git a/libs/ledger-live-common/CHANGELOG.md b/libs/ledger-live-common/CHANGELOG.md index 1b6aa402c53..ba7a54d644e 100644 --- a/libs/ledger-live-common/CHANGELOG.md +++ b/libs/ledger-live-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @ledgerhq/live-common +## 34.4.1-hotfix.0 + +### Patch Changes + +- [#7245](https://github.com/LedgerHQ/ledger-live/pull/7245) [`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff) Thanks [@hzheng-ledger](https://github.com/hzheng-ledger)! - fix: polkadot send tx in LLM + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/hw-app-polkadot@6.30.1-hotfix.0 + ## 34.4.0 ### Minor Changes diff --git a/libs/ledger-live-common/package.json b/libs/ledger-live-common/package.json index 390dc6f9b82..98cb423820d 100644 --- a/libs/ledger-live-common/package.json +++ b/libs/ledger-live-common/package.json @@ -1,7 +1,7 @@ { "name": "@ledgerhq/live-common", "description": "Common ground for the Ledger Live apps", - "version": "34.4.0", + "version": "34.4.1-hotfix.0", "repository": { "type": "git", "url": "https://github.com/LedgerHQ/ledger-live.git" diff --git a/libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md b/libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md index bd441372029..c4403dd6263 100644 --- a/libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md +++ b/libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md @@ -1,5 +1,11 @@ # @ledgerhq/hw-app-polkadot +## 6.30.1-hotfix.0 + +### Patch Changes + +- [#7245](https://github.com/LedgerHQ/ledger-live/pull/7245) [`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff) Thanks [@hzheng-ledger](https://github.com/hzheng-ledger)! - fix: polkadot send tx in LLM + ## 6.30.0 ### Minor Changes diff --git a/libs/ledgerjs/packages/hw-app-polkadot/package.json b/libs/ledgerjs/packages/hw-app-polkadot/package.json index df5b97ad8a7..acb33b5aa99 100644 --- a/libs/ledgerjs/packages/hw-app-polkadot/package.json +++ b/libs/ledgerjs/packages/hw-app-polkadot/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/hw-app-polkadot", - "version": "6.30.0", + "version": "6.30.1-hotfix.0", "description": "Ledger Hardware Wallet Polkadot Application API", "keywords": [ "Ledger", diff --git a/libs/test-utils/CHANGELOG.md b/libs/test-utils/CHANGELOG.md index 4e05448cbfa..485c22093c4 100644 --- a/libs/test-utils/CHANGELOG.md +++ b/libs/test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # @ledgerhq/test-utils +## 0.2.2-hotfix.0 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1-hotfix.0 + ## 0.2.1 ### Patch Changes diff --git a/libs/test-utils/package.json b/libs/test-utils/package.json index b8da4f3ee41..8dc3f169125 100644 --- a/libs/test-utils/package.json +++ b/libs/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/test-utils", - "version": "0.2.1", + "version": "0.2.2-hotfix.0", "private": true, "description": "Dummy apps and utils for tests", "keywords": [ diff --git a/tests/dummy-wallet-app/CHANGELOG.md b/tests/dummy-wallet-app/CHANGELOG.md index 830e7214fd8..ec8752c07f3 100644 --- a/tests/dummy-wallet-app/CHANGELOG.md +++ b/tests/dummy-wallet-app/CHANGELOG.md @@ -1,5 +1,12 @@ # dummy-wallet-app +## 0.3.2-hotfix.0 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1-hotfix.0 + ## 0.3.1 ### Patch Changes diff --git a/tests/dummy-wallet-app/package.json b/tests/dummy-wallet-app/package.json index f2a0c663a0e..2611bf8a937 100644 --- a/tests/dummy-wallet-app/package.json +++ b/tests/dummy-wallet-app/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/dummy-wallet-app", - "version": "0.3.1", + "version": "0.3.2-hotfix.0", "private": true, "dependencies": { "@ledgerhq/hw-app-eth": "workspace:*", From fc95e032a0045093e343017051fc2f64fa3bcdef Mon Sep 17 00:00:00 2001 From: "Valentin D. Pinkman" Date: Tue, 2 Jul 2024 18:01:48 +0200 Subject: [PATCH 09/12] bugfix(llm): [LIVE-13220] move logic around to keep old behaviour on fw update banner with the new rules for nano x --- .changeset/blue-pumpkins-pretend.md | 5 + .../UpdateBanner/UpdateBanner.test.tsx | 200 ++++++++---------- .../useUpdateBannerViewModel.test.tsx | 104 ++++----- .../UpdateBanner/useUpdateBannerViewModel.tsx | 50 ++--- 4 files changed, 171 insertions(+), 188 deletions(-) create mode 100644 .changeset/blue-pumpkins-pretend.md diff --git a/.changeset/blue-pumpkins-pretend.md b/.changeset/blue-pumpkins-pretend.md new file mode 100644 index 00000000000..a8880f71724 --- /dev/null +++ b/.changeset/blue-pumpkins-pretend.md @@ -0,0 +1,5 @@ +--- +"live-mobile": patch +--- + +Bluetooth update banner to always display but shows the correct message in a drawer if the update is not supported diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx index dddb066f65a..d325bf91e22 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx @@ -207,6 +207,92 @@ describe("", () => { expect(navigateToNewUpdateFlow).not.toHaveBeenCalled(); }); + it("should open the unsupported drawer if there is a bluetooth update on Android on Nano X with version < 2.4.0", async () => { + PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); + useLatestFirmware.mockReturnValue({ + final: { + name: "mockVersion", + version: "2.4.0", + }, + }); + + const mockDeviceModelId = DeviceModelId.nanoX; + const mockDeviceVersion = "2.3.0"; + const { user } = render( {}} />, { + overrideInitialState: makeOverrideInitialState({ + deviceModelId: mockDeviceModelId, + version: mockDeviceVersion, + hasCompletedOnboarding: true, + wired: false, + hasConnectedDevice: true, + }), + }); + + // Check that the banner is displayed with the correct wording + expect(await screen.findByText("OS update available")).toBeOnTheScreen(); + expect( + await screen.findByText("Tap to update your Ledger Nano X to OS version mockVersion."), + ).toBeOnTheScreen(); + + // Press the banner + await user.press(screen.getByTestId("fw-update-banner")); + + // Check that the unsupported drawer is displayed + expect(await screen.findByText("USB cable needed")).toBeOnTheScreen(); + expect( + await screen.findByText( + "To start the firmware update, plug your Ledger Nano X to your mobile phone using a USB cable.", + ), + ).toBeOnTheScreen(); + + // Check that the entrypoints to the update flows are not called + expect(navigateToOldUpdateFlow).not.toHaveBeenCalled(); + expect(navigateToNewUpdateFlow).not.toHaveBeenCalled(); + }); + + it("should open the unsupported drawer if there is a bluetooth update on iOS on Nano X with version < 2.4.0", async () => { + PlatformSpy.mockReturnValue({ OS: "ios" } as typeof ReactNative.Platform); + useLatestFirmware.mockReturnValue({ + final: { + name: "mockVersion", + version: "2.4.0", + }, + }); + + const mockDeviceModelId = DeviceModelId.nanoX; + const mockDeviceVersion = "2.3.0"; + const { user } = render( {}} />, { + overrideInitialState: makeOverrideInitialState({ + deviceModelId: mockDeviceModelId, + version: mockDeviceVersion, + hasCompletedOnboarding: true, + wired: false, + hasConnectedDevice: true, + }), + }); + + // Check that the banner is displayed with the correct wording + expect(await screen.findByText("OS update available")).toBeOnTheScreen(); + expect( + await screen.findByText("Tap to update your Ledger Nano X to OS version mockVersion."), + ).toBeOnTheScreen(); + + // Press the banner + await user.press(screen.getByTestId("fw-update-banner")); + + // Check that the unsupported drawer is displayed + expect(await screen.findByText("Firmware Update")).toBeOnTheScreen(); + expect( + await screen.findByText( + "Update your Ledger Nano firmware by connecting it to the Ledger Live application on desktop", + ), + ).toBeOnTheScreen(); + + // Check that the entrypoints to the update flows are not called + expect(navigateToOldUpdateFlow).not.toHaveBeenCalled(); + expect(navigateToNewUpdateFlow).not.toHaveBeenCalled(); + }); + it("should open the unsupported drawer if there is an update and it's Android but the device has to be wired", async () => { PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); useLatestFirmware.mockReturnValue({ @@ -357,118 +443,4 @@ describe("", () => { expect(navigateToNewUpdateFlow).toHaveBeenCalled(); }); }); - - it("should not display the firmware update banner if the device is nano X, on Android, on bluetooth, and the firmware version is not supported (<2.4.0)", async () => { - PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); - useLatestFirmware.mockReturnValue({ - final: { - name: "mockVersion", - version: "2.4.0", - }, - }); - - render( {}} />, { - overrideInitialState: makeOverrideInitialState({ - deviceModelId: DeviceModelId.nanoX, - version: "2.3.0", - hasCompletedOnboarding: true, - wired: false, // Device is not wired - hasConnectedDevice: true, - }), - }); - - // Check that the banner is not displayed - expect(await screen.queryByTestId("fw-update-banner")).toBeNull(); - }); - - it("should display the firmware update banner if the device is nano X, on Android and on usb", async () => { - PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); - useLatestFirmware.mockReturnValue({ - final: { - name: "mockVersion", - version: "2.4.0", - }, - }); - - const { user } = render( {}} />, { - overrideInitialState: makeOverrideInitialState({ - deviceModelId: DeviceModelId.nanoX, - version: "2.3.0", - hasCompletedOnboarding: true, - wired: true, // Device is wired - hasConnectedDevice: true, - }), - }); - - // Check that the banner is displayed - expect(await screen.findByTestId("fw-update-banner")).toBeOnTheScreen(); - - // Check that the banner is displayed with the correct wording - expect(await screen.findByText("OS update available")).toBeOnTheScreen(); - expect( - await screen.findByText(`Tap to update your Ledger Nano X to OS version mockVersion.`), - ).toBeOnTheScreen(); - - // Press the banner and check that the entrypoint to the new update flow is called - await user.press(screen.getByTestId("fw-update-banner")); - expect(navigateToOldUpdateFlow).not.toHaveBeenCalled(); - expect(navigateToNewUpdateFlow).toHaveBeenCalled(); - }); - - it("should display the firmware update banner if the device is nano X, on iOS, on bluetooth and with a supported firmware version (>=2.4.0)", async () => { - PlatformSpy.mockReturnValue({ OS: "ios" } as typeof ReactNative.Platform); - useLatestFirmware.mockReturnValue({ - final: { - name: "mockVersion", - version: "2.4.1", - }, - }); - - const { user } = render( {}} />, { - overrideInitialState: makeOverrideInitialState({ - deviceModelId: DeviceModelId.nanoX, - version: "2.4.0", - hasCompletedOnboarding: true, - wired: false, // Device is wired - hasConnectedDevice: true, - }), - }); - - // Check that the banner is displayed - expect(await screen.findByTestId("fw-update-banner")).toBeOnTheScreen(); - - // Check that the banner is displayed with the correct wording - expect(await screen.findByText("OS update available")).toBeOnTheScreen(); - expect( - await screen.findByText(`Tap to update your Ledger Nano X to OS version mockVersion.`), - ).toBeOnTheScreen(); - - // Press the banner and check that the entrypoint to the new update flow is called - await user.press(screen.getByTestId("fw-update-banner")); - expect(navigateToOldUpdateFlow).not.toHaveBeenCalled(); - expect(navigateToNewUpdateFlow).toHaveBeenCalled(); - }); - - it("should not display the firmware update banner if the device is nano X, on iOS, on bluetooth, and the firmware version is not supported (<2.4.0)", async () => { - PlatformSpy.mockReturnValue({ OS: "ios" } as typeof ReactNative.Platform); - useLatestFirmware.mockReturnValue({ - final: { - name: "mockVersion", - version: "2.4.0", - }, - }); - - render( {}} />, { - overrideInitialState: makeOverrideInitialState({ - deviceModelId: DeviceModelId.nanoX, - version: "2.3.0", - hasCompletedOnboarding: true, - wired: false, // Device is not wired - hasConnectedDevice: true, - }), - }); - - // Check that the banner is not displayed - expect(await screen.queryByTestId("fw-update-banner")).toBeNull(); - }); }); diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.test.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.test.tsx index 2f68a22174a..077c37096e3 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.test.tsx @@ -1,6 +1,5 @@ import { act, renderHook } from "@testing-library/react-native"; import { useUpdateBannerViewModel } from "./useUpdateBannerViewModel"; -import { DeviceModelId } from "@ledgerhq/devices"; /** Brace yourselves for the mocks ... */ @@ -24,7 +23,7 @@ jest.mock("~/reducers/settings", () => ({ lastConnectedDeviceSelector: jest.fn(), hasCompletedOnboardingSelector: jest.fn(), })); -const { lastConnectedDeviceSelector, hasCompletedOnboardingSelector } = +const { lastConnectedDeviceSelector, hasCompletedOnboardingSelector, lastSeenDeviceSelector } = jest.requireMock("~/reducers/settings"); jest.mock("~/reducers/appstate", () => ({ @@ -132,54 +131,6 @@ describe("useUpdateBannerViewModel", () => { expect(result.current.bannerVisible).toBe(false); }); - it("should return bannerVisible: false if connection is bluetooth, model is nano X and version is lower than 2.4.0", () => { - const lastConnectedDevice = { wired: false, modelId: DeviceModelId.nanoX }; - lastConnectedDeviceSelector.mockReturnValue(lastConnectedDevice); - hasConnectedDeviceSelector.mockReturnValue(true); - hasCompletedOnboardingSelector.mockReturnValue(true); - useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", version: "2.3.0" } }); - - const { result } = renderHook(() => - useUpdateBannerViewModel({ - onBackFromUpdate: jest.fn(), - }), - ); - - expect(result.current.bannerVisible).toBe(false); - }); - - it("should return bannerVisible: true if connection is bluetooth, model is nano X and version is higher than 2.4.0", () => { - const lastConnectedDevice = { wired: false, modelId: DeviceModelId.nanoX }; - lastConnectedDeviceSelector.mockReturnValue(lastConnectedDevice); - hasConnectedDeviceSelector.mockReturnValue(true); - hasCompletedOnboardingSelector.mockReturnValue(true); - useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", version: "2.4.1" } }); - - const { result } = renderHook(() => - useUpdateBannerViewModel({ - onBackFromUpdate: jest.fn(), - }), - ); - - expect(result.current.bannerVisible).toBe(true); - }); - - it("should return bannerVisible: true if connection is usb, model is nano X", () => { - const lastConnectedDevice = { wired: true, modelId: DeviceModelId.nanoX }; - lastConnectedDeviceSelector.mockReturnValue(lastConnectedDevice); - hasConnectedDeviceSelector.mockReturnValue(true); - hasCompletedOnboardingSelector.mockReturnValue(true); - useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", version: "2.3.1" } }); - - const { result } = renderHook(() => - useUpdateBannerViewModel({ - onBackFromUpdate: jest.fn(), - }), - ); - - expect(result.current.bannerVisible).toBe(true); - }); - it("should return the correct values of isUpdateSupportedButDeviceNotWired", () => { hasConnectedDeviceSelector.mockReturnValue(true); hasCompletedOnboardingSelector.mockReturnValue(true); @@ -260,10 +211,63 @@ describe("useUpdateBannerViewModel", () => { expect(navigateToOldUpdateFlow).toHaveBeenCalled(); }); + it("should not call startFirmwareUpdateFlow when onClickUpdate is called for a bluetooth Nano X update with version < 2.4.0", () => { + hasConnectedDeviceSelector.mockReturnValue(true); + hasCompletedOnboardingSelector.mockReturnValue(true); + useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", version: "2.4.0" } }); + lastConnectedDeviceSelector.mockReturnValue({ modelId: "nanoX", wired: false }); + lastSeenDeviceSelector.mockReturnValue({ modelId: "nanoX", deviceInfo: { version: "2.3.9" } }); + + isOldFirmwareUpdateUxSupported.mockReturnValue({ + updateSupported: false, + updateSupportedButDeviceNotWired: false, + }); + isNewFirmwareUpdateUxSupported.mockReturnValue(true); + + const { result } = renderHook(() => + useUpdateBannerViewModel({ + onBackFromUpdate: jest.fn(), + }), + ); + + act(() => result.current.onClickUpdate()); + + expect(result.current.unsupportedUpdateDrawerOpened).toBe(true); + }); + it("should call startFirmwareUpdateFlow when onClickUpdate is called if new update flow is supported", () => { hasConnectedDeviceSelector.mockReturnValue(true); hasCompletedOnboardingSelector.mockReturnValue(true); useLatestFirmware.mockReturnValue({ final: { name: "mockVersion" } }); + lastSeenDeviceSelector.mockReturnValue({ modelId: "mockId", deviceInfo: { version: "3.0.0" } }); + + isOldFirmwareUpdateUxSupported.mockReturnValue({ + updateSupported: false, + updateSupportedButDeviceNotWired: false, + }); + isNewFirmwareUpdateUxSupported.mockReturnValue(true); + + const { result } = renderHook(() => + useUpdateBannerViewModel({ + onBackFromUpdate: jest.fn(), + }), + ); + + act(() => result.current.onClickUpdate()); + + expect(result.current.unsupportedUpdateDrawerOpened).toBe(false); + expect(navigateToNewUpdateFlow).toHaveBeenCalled(); + }); + + it("should call startFirmwareUpdateFlow when onClickUpdate is called for a bluetooth Nano X update with version >= 2.4.0", () => { + hasConnectedDeviceSelector.mockReturnValue(true); + hasCompletedOnboardingSelector.mockReturnValue(true); + useLatestFirmware.mockReturnValue({ final: { name: "mockVersion" } }); + lastConnectedDeviceSelector.mockReturnValue({ + modelId: "nanoX", + wired: false, + }); + lastSeenDeviceSelector.mockReturnValue({ modelId: "nanoX", deviceInfo: { version: "2.4.0" } }); isOldFirmwareUpdateUxSupported.mockReturnValue({ updateSupported: false, diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx index 4e379ec71f9..60716af075a 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/useUpdateBannerViewModel.tsx @@ -1,4 +1,5 @@ -import { useState, useCallback, useMemo } from "react"; +import { useState, useCallback } from "react"; +import { Platform } from "react-native"; import { useNavigation, useRoute } from "@react-navigation/native"; import { useSelector } from "react-redux"; import { useLatestFirmware } from "@ledgerhq/live-common/device/hooks/useLatestFirmware"; @@ -32,23 +33,9 @@ export function useUpdateBannerViewModel({ const hasCompletedOnboarding: boolean = useSelector(hasCompletedOnboardingSelector); const latestFirmware = useLatestFirmware(lastSeenDeviceModelInfo?.deviceInfo); - const bannerReady = Boolean(latestFirmware) && hasCompletedOnboarding && hasConnectedDevice; + const bannerVisible = Boolean(latestFirmware) && hasCompletedOnboarding && hasConnectedDevice; const version = latestFirmware?.final?.name ?? ""; - const finalVersion = latestFirmware?.final?.version ?? ""; const connectionType = lastConnectedDevice?.wired ? "usb" : "bluetooth"; - const bannerVisible = useMemo(() => { - if (!bannerReady || !finalVersion) { - return false; - } - - if (connectionType === "bluetooth") { - if (lastConnectedDevice?.modelId === DeviceModelId.nanoX) { - return semver.gt(finalVersion, "2.4.0"); - } - } - - return true; - }, [bannerReady, connectionType, lastConnectedDevice, finalVersion]); const { updateSupported: isOldUxSupported, @@ -70,13 +57,22 @@ export function useUpdateBannerViewModel({ const onClickUpdate = useCallback(() => { if (isNewUxSupported) { - navigateToNewUpdateFlow({ - navigation, - lastConnectedDevice, - lastSeenDeviceModelInfo, - latestFirmware, - onBackFromUpdate, - }); + if ( + connectionType === "bluetooth" && + lastConnectedDevice?.modelId === DeviceModelId.nanoX && + lastSeenDeviceModelInfo?.deviceInfo.version && + semver.lt(lastSeenDeviceModelInfo?.deviceInfo.version, "2.4.0") + ) { + setUnsupportedUpdateDrawerOpened(true); + } else { + navigateToNewUpdateFlow({ + navigation, + lastConnectedDevice, + lastSeenDeviceModelInfo, + latestFirmware, + onBackFromUpdate, + }); + } } else if (isOldUxSupported) { navigateToOldUpdateFlow({ route, navigation }); } else { @@ -91,6 +87,7 @@ export function useUpdateBannerViewModel({ navigation, onBackFromUpdate, route, + connectionType, ]); return { @@ -100,6 +97,11 @@ export function useUpdateBannerViewModel({ onClickUpdate, unsupportedUpdateDrawerOpened, closeUnsupportedUpdateDrawer, - isUpdateSupportedButDeviceNotWired: isOldUxSupportedButDeviceNotWired, + isUpdateSupportedButDeviceNotWired: + isOldUxSupportedButDeviceNotWired || + (connectionType === "bluetooth" && + Platform.OS === "android" && + !!lastSeenDeviceModelInfo && + semver.lt(lastSeenDeviceModelInfo?.deviceInfo.version, "2.4.0")), }; } From 571242b1d23c9b028e02d9d9909ff3d24819688a Mon Sep 17 00:00:00 2001 From: "live-github-bot[bot]" <105061298+live-github-bot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 16:09:26 +0000 Subject: [PATCH 10/12] chore(hotfix): :fire: hotfix prerelease [LLD(2.82.2-hotfix.0), LLM(3.45.2-hotfix.3)] --- .changeset/pre.json | 1 + apps/ledger-live-mobile/CHANGELOG.md | 6 ++++++ apps/ledger-live-mobile/package.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 03cff946450..3b250de1b29 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -114,6 +114,7 @@ "@ledgerhq/react-devtools": "0.0.0" }, "changesets": [ + "blue-pumpkins-pretend", "dull-foxes-suffer", "lucky-lobsters-rescue", "pink-forks-remain", diff --git a/apps/ledger-live-mobile/CHANGELOG.md b/apps/ledger-live-mobile/CHANGELOG.md index 374dfef6f6f..bd69c61741e 100644 --- a/apps/ledger-live-mobile/CHANGELOG.md +++ b/apps/ledger-live-mobile/CHANGELOG.md @@ -1,5 +1,11 @@ # live-mobile +## 3.45.2-hotfix.3 + +### Patch Changes + +- [#7241](https://github.com/LedgerHQ/ledger-live/pull/7241) [`fc95e03`](https://github.com/LedgerHQ/ledger-live/commit/fc95e032a0045093e343017051fc2f64fa3bcdef) Thanks [@valpinkman](https://github.com/valpinkman)! - Bluetooth update banner to always display but shows the correct message in a drawer if the update is not supported + ## 3.45.2-hotfix.2 ### Patch Changes diff --git a/apps/ledger-live-mobile/package.json b/apps/ledger-live-mobile/package.json index 9d235defeb6..8b3b5e7a526 100644 --- a/apps/ledger-live-mobile/package.json +++ b/apps/ledger-live-mobile/package.json @@ -1,6 +1,6 @@ { "name": "live-mobile", - "version": "3.45.2-hotfix.2", + "version": "3.45.2-hotfix.3", "private": true, "scripts": { "postinstall": "zx ./scripts/post.mjs", From 7796753ef25d52b677b625c72916a0b9a9a0046e Mon Sep 17 00:00:00 2001 From: "Valentin D. Pinkman" Date: Wed, 3 Jul 2024 11:17:15 +0200 Subject: [PATCH 11/12] chore(llm): refacto tests --- .../UpdateBanner/UpdateBanner.test.tsx | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx index d325bf91e22..2e3205b59e4 100644 --- a/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/FirmwareUpdate/components/UpdateBanner/UpdateBanner.test.tsx @@ -52,6 +52,16 @@ const EUROPA_DATA = { productName: getDeviceModel(DeviceModelId.europa).productName, }; +const OUTDATED_NANOX_BLE_UPDATE = { + deviceModelId: DeviceModelId.nanoX, + productName: getDeviceModel(DeviceModelId.nanoX).productName, + version: "2.3.0", + fwVersion: "2.4.0", + hasCompletedOnboarding: true, + wired: false, + hasConnectedDevice: true, +}; + const oldUpdateFlowNotSupportedDataSet: Array<{ deviceModelId: DeviceModelId; version: string; @@ -208,23 +218,18 @@ describe("", () => { }); it("should open the unsupported drawer if there is a bluetooth update on Android on Nano X with version < 2.4.0", async () => { + const { fwVersion, ...nanoX } = OUTDATED_NANOX_BLE_UPDATE; PlatformSpy.mockReturnValue({ OS: "android" } as typeof ReactNative.Platform); useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", - version: "2.4.0", + version: fwVersion, }, }); - const mockDeviceModelId = DeviceModelId.nanoX; - const mockDeviceVersion = "2.3.0"; const { user } = render( {}} />, { overrideInitialState: makeOverrideInitialState({ - deviceModelId: mockDeviceModelId, - version: mockDeviceVersion, - hasCompletedOnboarding: true, - wired: false, - hasConnectedDevice: true, + ...nanoX, }), }); @@ -251,23 +256,18 @@ describe("", () => { }); it("should open the unsupported drawer if there is a bluetooth update on iOS on Nano X with version < 2.4.0", async () => { + const { fwVersion, ...nanoX } = OUTDATED_NANOX_BLE_UPDATE; PlatformSpy.mockReturnValue({ OS: "ios" } as typeof ReactNative.Platform); useLatestFirmware.mockReturnValue({ final: { name: "mockVersion", - version: "2.4.0", + version: fwVersion, }, }); - const mockDeviceModelId = DeviceModelId.nanoX; - const mockDeviceVersion = "2.3.0"; const { user } = render( {}} />, { overrideInitialState: makeOverrideInitialState({ - deviceModelId: mockDeviceModelId, - version: mockDeviceVersion, - hasCompletedOnboarding: true, - wired: false, - hasConnectedDevice: true, + ...nanoX, }), }); From 5a30a552a60e710349af7a5b5dd49b39aa9b37c3 Mon Sep 17 00:00:00 2001 From: "live-github-bot[bot]" <105061298+live-github-bot[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 09:27:00 +0000 Subject: [PATCH 12/12] chore(hotfix): :fire: hotfix release [skip ci] --- .changeset/blue-pumpkins-pretend.md | 5 - .changeset/dull-foxes-suffer.md | 5 - .changeset/lucky-lobsters-rescue.md | 6 - .changeset/pink-forks-remain.md | 5 - .changeset/pre.json | 123 ------------------ .changeset/witty-clouds-change.md | 5 - apps/cli/CHANGELOG.md | 7 + apps/cli/package.json | 2 +- apps/ledger-live-desktop/CHANGELOG.md | 7 + apps/ledger-live-desktop/package.json | 2 +- apps/ledger-live-mobile/CHANGELOG.md | 15 +++ apps/ledger-live-mobile/package.json | 2 +- apps/web-tools/CHANGELOG.md | 7 + apps/web-tools/package.json | 2 +- libs/ledger-live-common/CHANGELOG.md | 9 ++ libs/ledger-live-common/package.json | 2 +- .../packages/hw-app-polkadot/CHANGELOG.md | 6 + .../packages/hw-app-polkadot/package.json | 2 +- libs/test-utils/CHANGELOG.md | 7 + libs/test-utils/package.json | 2 +- tests/dummy-wallet-app/CHANGELOG.md | 7 + tests/dummy-wallet-app/package.json | 2 +- 22 files changed, 73 insertions(+), 157 deletions(-) delete mode 100644 .changeset/blue-pumpkins-pretend.md delete mode 100644 .changeset/dull-foxes-suffer.md delete mode 100644 .changeset/lucky-lobsters-rescue.md delete mode 100644 .changeset/pink-forks-remain.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/witty-clouds-change.md diff --git a/.changeset/blue-pumpkins-pretend.md b/.changeset/blue-pumpkins-pretend.md deleted file mode 100644 index a8880f71724..00000000000 --- a/.changeset/blue-pumpkins-pretend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"live-mobile": patch ---- - -Bluetooth update banner to always display but shows the correct message in a drawer if the update is not supported diff --git a/.changeset/dull-foxes-suffer.md b/.changeset/dull-foxes-suffer.md deleted file mode 100644 index 2ed3f30180b..00000000000 --- a/.changeset/dull-foxes-suffer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"live-mobile": patch ---- - -move update firmware checks to the ViewProps component and add tests diff --git a/.changeset/lucky-lobsters-rescue.md b/.changeset/lucky-lobsters-rescue.md deleted file mode 100644 index 002964d6d06..00000000000 --- a/.changeset/lucky-lobsters-rescue.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@ledgerhq/hw-app-polkadot": patch -"@ledgerhq/live-common": patch ---- - -fix: polkadot send tx in LLM diff --git a/.changeset/pink-forks-remain.md b/.changeset/pink-forks-remain.md deleted file mode 100644 index fae0a764447..00000000000 --- a/.changeset/pink-forks-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"live-mobile": patch ---- - -Add new tests for the UpdateBanner diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 3b250de1b29..00000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "mode": "pre", - "tag": "hotfix", - "initialVersions": { - "@ledgerhq/live-cli": "24.3.1", - "ledger-live-desktop": "2.82.1", - "live-mobile": "3.45.1", - "@ledgerhq/web-tools": "0.6.1", - "@ledgerhq/docs-libs": "0.1.0", - "@ledgerhq/coin-framework": "0.14.0", - "@ledgerhq/coin-algorand": "0.5.0", - "@ledgerhq/coin-bitcoin": "0.6.0", - "@ledgerhq/coin-cardano": "0.1.0", - "@ledgerhq/coin-evm": "2.1.0", - "@ledgerhq/coin-near": "0.5.0", - "@ledgerhq/coin-polkadot": "0.8.0", - "@ledgerhq/coin-solana": "0.7.0", - "@ledgerhq/coin-tezos": "0.4.0", - "@ledgerhq/coin-xrp": "0.2.0", - "@ledgerhq/coin-tester": "0.2.0", - "@ledgerhq/device-core": "0.2.0", - "@ledgerhq/device-react": "0.2.0", - "@ledgerhq/domain-service": "1.2.0", - "@ledgerhq/live-env": "2.1.0", - "@ledgerhq/ethereum-provider": "0.3.0", - "@ledgerhq/evm-tools": "1.1.0", - "@ledgerhq/wallet-api-exchange-module": "0.7.0", - "@ledgerhq/hw-trustchain": "0.1.1", - "@ledgerhq/live-common": "34.4.0", - "@ledgerhq/ledger-libs": "0.1.3", - "@ledgerhq/context-module": "0.0.2", - "@ledgerhq/cryptoassets": "13.1.0", - "@ledgerhq/devices": "8.4.0", - "@ledgerhq/errors": "6.17.0", - "@ledgerhq/hw-app-algorand": "6.29.0", - "@ledgerhq/hw-app-btc": "10.3.0", - "@ledgerhq/hw-app-cosmos": "6.30.0", - "@ledgerhq/hw-app-eth": "6.37.0", - "@ledgerhq/hw-app-exchange": "0.5.0", - "@ledgerhq/hw-app-helium": "6.31.0", - "@ledgerhq/hw-app-near": "6.29.0", - "@ledgerhq/hw-app-polkadot": "6.30.0", - "@ledgerhq/hw-app-solana": "7.2.0", - "@ledgerhq/hw-app-str": "6.29.0", - "@ledgerhq/hw-app-tezos": "6.29.0", - "@ledgerhq/hw-app-trx": "6.29.0", - "@ledgerhq/hw-app-vet": "0.2.0", - "@ledgerhq/hw-app-xrp": "6.29.0", - "@ledgerhq/hw-transport": "6.31.0", - "@ledgerhq/hw-transport-http": "6.30.0", - "@ledgerhq/hw-transport-mocker": "6.29.0", - "@ledgerhq/hw-transport-node-hid": "6.29.0", - "@ledgerhq/hw-transport-node-hid-noevents": "6.30.0", - "@ledgerhq/hw-transport-node-hid-singleton": "6.31.0", - "@ledgerhq/hw-transport-node-speculos": "6.29.0", - "@ledgerhq/hw-transport-node-speculos-http": "6.29.0", - "@ledgerhq/hw-transport-vault": "1.3.0", - "@ledgerhq/hw-transport-web-ble": "6.29.0", - "@ledgerhq/hw-transport-webhid": "6.29.0", - "@ledgerhq/hw-transport-webusb": "6.29.0", - "@ledgerhq/keyring-eth": "0.1.0", - "@ledgerhq/logs": "6.12.0", - "@ledgerhq/react-native-hid": "6.32.0", - "@ledgerhq/react-native-hw-transport-ble": "6.33.0", - "@ledgerhq/swift-bridge-hw-app-eth": "1.2.0", - "@ledgerhq/swift-bridge-hw-app-solana": "1.2.0", - "@ledgerhq/swift-bridge-hw-transport-ble": "1.2.0", - "@ledgerhq/types-cryptoassets": "7.13.0", - "@ledgerhq/types-devices": "6.25.0", - "@ledgerhq/types-live": "6.48.0", - "@ledgerhq/live-config": "3.0.0", - "@ledgerhq/live-countervalues": "0.2.0", - "@ledgerhq/live-countervalues-react": "0.2.0", - "@ledgerhq/live-hooks": "0.1.0", - "@ledgerhq/live-network": "1.3.0", - "@ledgerhq/live-nft": "0.4.0", - "@ledgerhq/live-nft-react": "0.4.0", - "@ledgerhq/live-wallet": "0.2.0", - "@ledgerhq/live-promise": "0.1.0", - "@ledgerhq/speculos-transport": "0.1.1", - "@ledgerhq/test-utils": "0.2.1", - "@ledgerhq/trustchain": "0.1.1", - "@ledgerhq/ui": "0.2.1", - "@ledgerhq/next.js-example": "0.1.0", - "@ledgerhq/webpack.js-example": "0.1.0", - "@ledgerhq/crypto-icons-ui": "1.2.0", - "@ledgerhq/icons-ui": "0.7.0", - "@ledgerhq/native-ui": "0.23.0", - "@ledgerhq/react-ui": "0.15.0", - "@ledgerhq/ui-shared": "0.2.1", - "@ledgerhq/dummy-live-app": "0.2.0", - "@ledgerhq/dummy-ptx-app": "0.0.1", - "@ledgerhq/dummy-wallet-app": "0.3.1", - "@ledgerhq/actions-root": "0.1.0", - "@actions/build-checks": "1.2.0", - "@actions/change-product-name": "1.0.1", - "@actions/desktop-report-build": "1.0.1", - "@actions/generate-bot-super-report": "1.0.2", - "@actions/generate-release-message": "1.1.0", - "@actions/get-package-infos": "1.1.0", - "@actions/get-workflow-artifacts-id": "1.1.0", - "@actions/live-common-affected": "1.0.0", - "@actions/prepare-comment-screenshots": "1.0.1", - "@actions/submit-bot-report": "1.1.0", - "@actions/turbo-affected": "1.1.0", - "@actions/turborepo-gh-cache": "1.0.1", - "@actions/turborepo-s3-cache": "1.0.1", - "@actions/upload-images": "2.1.0", - "@ledgerhq/create-release-hash": "1.0.0", - "@ledgerhq/esbuild-utils": "1.0.1", - "@ledgerhq/live-github-bot": "1.1.0", - "@ledgerhq/native-modules-tools": "1.0.3", - "@ledgerhq/pnpm-utils": "1.0.1", - "@ledgerhq/react-devtools": "0.0.0" - }, - "changesets": [ - "blue-pumpkins-pretend", - "dull-foxes-suffer", - "lucky-lobsters-rescue", - "pink-forks-remain", - "witty-clouds-change" - ] -} diff --git a/.changeset/witty-clouds-change.md b/.changeset/witty-clouds-change.md deleted file mode 100644 index c7a50c9fd68..00000000000 --- a/.changeset/witty-clouds-change.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"live-mobile": patch ---- - -Add version check for nano X bluetooth firmware update diff --git a/apps/cli/CHANGELOG.md b/apps/cli/CHANGELOG.md index 83d7cfa6a3b..ff731c49bd1 100644 --- a/apps/cli/CHANGELOG.md +++ b/apps/cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @ledgerhq/live-cli +## 24.3.2 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1 + ## 24.3.2-hotfix.0 ### Patch Changes diff --git a/apps/cli/package.json b/apps/cli/package.json index 2866df2c7c2..abd9f75fdf1 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/live-cli", - "version": "24.3.2-hotfix.0", + "version": "24.3.2", "description": "ledger-live CLI version", "repository": { "type": "git", diff --git a/apps/ledger-live-desktop/CHANGELOG.md b/apps/ledger-live-desktop/CHANGELOG.md index c6cd2c9055e..03fe7769669 100644 --- a/apps/ledger-live-desktop/CHANGELOG.md +++ b/apps/ledger-live-desktop/CHANGELOG.md @@ -1,5 +1,12 @@ # ledger-live-desktop +## 2.82.2 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1 + ## 2.82.2-hotfix.0 ### Patch Changes diff --git a/apps/ledger-live-desktop/package.json b/apps/ledger-live-desktop/package.json index 16aad1c8466..0ccfd579f68 100644 --- a/apps/ledger-live-desktop/package.json +++ b/apps/ledger-live-desktop/package.json @@ -13,7 +13,7 @@ "license": "MIT", "private": true, "main": "./.webpack/main.bundle.js", - "version": "2.82.2-hotfix.0", + "version": "2.82.2", "scripts": { "start:prod": "electron ./.webpack/main.bundle.js", "start": "cross-env NODE_ENV=development node ./tools/main.js", diff --git a/apps/ledger-live-mobile/CHANGELOG.md b/apps/ledger-live-mobile/CHANGELOG.md index bd69c61741e..8d1f9798abe 100644 --- a/apps/ledger-live-mobile/CHANGELOG.md +++ b/apps/ledger-live-mobile/CHANGELOG.md @@ -1,5 +1,20 @@ # live-mobile +## 3.45.2 + +### Patch Changes + +- [#7241](https://github.com/LedgerHQ/ledger-live/pull/7241) [`fc95e03`](https://github.com/LedgerHQ/ledger-live/commit/fc95e032a0045093e343017051fc2f64fa3bcdef) Thanks [@valpinkman](https://github.com/valpinkman)! - Bluetooth update banner to always display but shows the correct message in a drawer if the update is not supported + +- [#7241](https://github.com/LedgerHQ/ledger-live/pull/7241) [`22a4ebf`](https://github.com/LedgerHQ/ledger-live/commit/22a4ebf8130b0c8f06c132769a6b0ef5602bfd7d) Thanks [@valpinkman](https://github.com/valpinkman)! - move update firmware checks to the ViewProps component and add tests + +- [#7241](https://github.com/LedgerHQ/ledger-live/pull/7241) [`a9954fa`](https://github.com/LedgerHQ/ledger-live/commit/a9954fac8d0827d659f1e0f134d437bd45802cbf) Thanks [@valpinkman](https://github.com/valpinkman)! - Add new tests for the UpdateBanner + +- [#7241](https://github.com/LedgerHQ/ledger-live/pull/7241) [`aa30245`](https://github.com/LedgerHQ/ledger-live/commit/aa302450112c7215263a266fb1bb07256d9efdeb) Thanks [@valpinkman](https://github.com/valpinkman)! - Add version check for nano X bluetooth firmware update + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1 + ## 3.45.2-hotfix.3 ### Patch Changes diff --git a/apps/ledger-live-mobile/package.json b/apps/ledger-live-mobile/package.json index 8b3b5e7a526..a2372292d5e 100644 --- a/apps/ledger-live-mobile/package.json +++ b/apps/ledger-live-mobile/package.json @@ -1,6 +1,6 @@ { "name": "live-mobile", - "version": "3.45.2-hotfix.3", + "version": "3.45.2", "private": true, "scripts": { "postinstall": "zx ./scripts/post.mjs", diff --git a/apps/web-tools/CHANGELOG.md b/apps/web-tools/CHANGELOG.md index 08a90ecb908..9b7e4e2c94d 100644 --- a/apps/web-tools/CHANGELOG.md +++ b/apps/web-tools/CHANGELOG.md @@ -1,5 +1,12 @@ # web-tools +## 0.6.2 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1 + ## 0.6.2-hotfix.0 ### Patch Changes diff --git a/apps/web-tools/package.json b/apps/web-tools/package.json index e84fbd3a88e..91461bcccd5 100644 --- a/apps/web-tools/package.json +++ b/apps/web-tools/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/web-tools", - "version": "0.6.2-hotfix.0", + "version": "0.6.2", "private": true, "browser": { "fs": false, diff --git a/libs/ledger-live-common/CHANGELOG.md b/libs/ledger-live-common/CHANGELOG.md index ba7a54d644e..e6d4db805a4 100644 --- a/libs/ledger-live-common/CHANGELOG.md +++ b/libs/ledger-live-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @ledgerhq/live-common +## 34.4.1 + +### Patch Changes + +- [#7245](https://github.com/LedgerHQ/ledger-live/pull/7245) [`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff) Thanks [@hzheng-ledger](https://github.com/hzheng-ledger)! - fix: polkadot send tx in LLM + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/hw-app-polkadot@6.30.1 + ## 34.4.1-hotfix.0 ### Patch Changes diff --git a/libs/ledger-live-common/package.json b/libs/ledger-live-common/package.json index 98cb423820d..c7dba67d4e1 100644 --- a/libs/ledger-live-common/package.json +++ b/libs/ledger-live-common/package.json @@ -1,7 +1,7 @@ { "name": "@ledgerhq/live-common", "description": "Common ground for the Ledger Live apps", - "version": "34.4.1-hotfix.0", + "version": "34.4.1", "repository": { "type": "git", "url": "https://github.com/LedgerHQ/ledger-live.git" diff --git a/libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md b/libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md index c4403dd6263..455c22af868 100644 --- a/libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md +++ b/libs/ledgerjs/packages/hw-app-polkadot/CHANGELOG.md @@ -1,5 +1,11 @@ # @ledgerhq/hw-app-polkadot +## 6.30.1 + +### Patch Changes + +- [#7245](https://github.com/LedgerHQ/ledger-live/pull/7245) [`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff) Thanks [@hzheng-ledger](https://github.com/hzheng-ledger)! - fix: polkadot send tx in LLM + ## 6.30.1-hotfix.0 ### Patch Changes diff --git a/libs/ledgerjs/packages/hw-app-polkadot/package.json b/libs/ledgerjs/packages/hw-app-polkadot/package.json index acb33b5aa99..e531d183ce3 100644 --- a/libs/ledgerjs/packages/hw-app-polkadot/package.json +++ b/libs/ledgerjs/packages/hw-app-polkadot/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/hw-app-polkadot", - "version": "6.30.1-hotfix.0", + "version": "6.30.1", "description": "Ledger Hardware Wallet Polkadot Application API", "keywords": [ "Ledger", diff --git a/libs/test-utils/CHANGELOG.md b/libs/test-utils/CHANGELOG.md index 485c22093c4..f50904f61ac 100644 --- a/libs/test-utils/CHANGELOG.md +++ b/libs/test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # @ledgerhq/test-utils +## 0.2.2 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1 + ## 0.2.2-hotfix.0 ### Patch Changes diff --git a/libs/test-utils/package.json b/libs/test-utils/package.json index 8dc3f169125..cf12a791045 100644 --- a/libs/test-utils/package.json +++ b/libs/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/test-utils", - "version": "0.2.2-hotfix.0", + "version": "0.2.2", "private": true, "description": "Dummy apps and utils for tests", "keywords": [ diff --git a/tests/dummy-wallet-app/CHANGELOG.md b/tests/dummy-wallet-app/CHANGELOG.md index ec8752c07f3..383df75f597 100644 --- a/tests/dummy-wallet-app/CHANGELOG.md +++ b/tests/dummy-wallet-app/CHANGELOG.md @@ -1,5 +1,12 @@ # dummy-wallet-app +## 0.3.2 + +### Patch Changes + +- Updated dependencies [[`2dafbf7`](https://github.com/LedgerHQ/ledger-live/commit/2dafbf7a2ee0cefd00e19b203b97f5918c2607ff)]: + - @ledgerhq/live-common@34.4.1 + ## 0.3.2-hotfix.0 ### Patch Changes diff --git a/tests/dummy-wallet-app/package.json b/tests/dummy-wallet-app/package.json index 2611bf8a937..0b8ec0d9fa9 100644 --- a/tests/dummy-wallet-app/package.json +++ b/tests/dummy-wallet-app/package.json @@ -1,6 +1,6 @@ { "name": "@ledgerhq/dummy-wallet-app", - "version": "0.3.2-hotfix.0", + "version": "0.3.2", "private": true, "dependencies": { "@ledgerhq/hw-app-eth": "workspace:*",