From 1c2bddb4966a48bb69ac1af8d1d06ceb10db2377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20Mas=C5=82owski?= Date: Thu, 6 Jun 2024 12:58:08 +0200 Subject: [PATCH] chore: allow for skiping HW device selection in the HW onboarding flows --- .github/workflows/e2e-tests-linux.yml | 1 + .github/workflows/e2e-tests-win.yml | 1 + apps/browser-extension-wallet/.env.defaults | 5 ++++- .../multi-wallet/hardware-wallet/steps/Connect.tsx | 14 ++++++++++++-- packages/cardano/src/wallet/lib/hardware-wallet.ts | 2 +- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/e2e-tests-linux.yml b/.github/workflows/e2e-tests-linux.yml index eb6a9b8fd1..47903fecc2 100644 --- a/.github/workflows/e2e-tests-linux.yml +++ b/.github/workflows/e2e-tests-linux.yml @@ -36,6 +36,7 @@ env: DISPLAY: ':99.0' NODE_OPTIONS: --max-old-space-size=16384 BRANCH: ${{ github.ref_name }} + E2E_FORCE_TREZOR_PICKED: true jobs: tests: diff --git a/.github/workflows/e2e-tests-win.yml b/.github/workflows/e2e-tests-win.yml index af2bd1ec3a..3c4df35c81 100644 --- a/.github/workflows/e2e-tests-win.yml +++ b/.github/workflows/e2e-tests-win.yml @@ -34,6 +34,7 @@ env: NETWORK: ${{ github.event.inputs.network || 'preprod' }} RUN: ${{ github.run_number }} BRANCH: ${{ github.ref_name }} + E2E_FORCE_TREZOR_PICKED: true jobs: build-extension-linux: diff --git a/apps/browser-extension-wallet/.env.defaults b/apps/browser-extension-wallet/.env.defaults index 6f8b9030e4..67921661aa 100644 --- a/apps/browser-extension-wallet/.env.defaults +++ b/apps/browser-extension-wallet/.env.defaults @@ -88,5 +88,8 @@ LACE_EXTENSION_KEY=gafhhkghbfjjkeiendhlofajokpaflmk # Extension uninstall redirect LACE_EXTENSION_UNINSTALL_REDIRECT_URL=https://forms.gle/XNcPfWafY8XgxkYw7 -# Midnight +# Midnight MIDNIGHT_EVENT_BANNER_REMINDER_TIME=129600000 + +# e2e +E2E_FORCE_TREZOR_PICKED=false diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/steps/Connect.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/steps/Connect.tsx index 5b21e0bf81..8deac8c499 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/steps/Connect.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/steps/Connect.tsx @@ -5,6 +5,7 @@ import { TranslationKey } from '@lace/translation'; import { TFunction } from 'i18next'; import React, { useCallback, useEffect, useState, VFC } from 'react'; import { useTranslation } from 'react-i18next'; +import { useLocation } from 'react-router-dom'; import { useAnalyticsContext } from '@providers'; import { useHardwareWallet } from '../context'; import { isTimeoutError } from '../useWrapWithTimeout'; @@ -62,6 +63,14 @@ enum DiscoveryState { Running = 'Running' } +const useE2eForceTrezorPicked = (): USBDevice | null => { + const { search } = useLocation(); + if (process.env.E2E_FORCE_TREZOR_PICKED !== 'true') return null; + + const forceTrezorPicked = new URLSearchParams(search).has('force-trezor-picked'); + return forceTrezorPicked ? (Wallet.trezorDescriptors[0] as USBDevice) : null; +}; + export const Connect: VFC = () => { const { t } = useTranslation(); const { postHogActions } = useWalletOnboarding(); @@ -69,6 +78,7 @@ export const Connect: VFC = () => { const [discoveryState, setDiscoveryState] = useState(DiscoveryState.Requested); const [connectionError, setConnectionError] = useState(null); const analytics = useAnalyticsContext(); + const forcedTrezorUsbDevice = useE2eForceTrezorPicked(); const translations = makeTranslations({ connectionError, t }); @@ -85,7 +95,7 @@ export const Connect: VFC = () => { setDiscoveryState(DiscoveryState.Running); try { void analytics.sendEventToPostHog(postHogActions.hardware.CONNECT_HW_VIEW); - const usbDevice = await requestHardwareWalletConnection(); + const usbDevice = forcedTrezorUsbDevice || (await requestHardwareWalletConnection()); void analytics.sendEventToPostHog(postHogActions.hardware.HW_POPUP_CONNECT_CLICK); await connect(usbDevice); setDiscoveryState(DiscoveryState.Idle); @@ -96,7 +106,7 @@ export const Connect: VFC = () => { setConnectionError(parseConnectionError(error)); } })(); - }, [connect, discoveryState, analytics, next, postHogActions.hardware]); + }, [connect, discoveryState, analytics, next, postHogActions.hardware, forcedTrezorUsbDevice]); return ( productId === trezorModelTProductId); +export const trezorDescriptors = TREZOR_USB_DESCRIPTORS.filter(({ productId }) => productId === trezorModelTProductId); export const supportedHwUsbDescriptors = [...ledgerDescriptors, ...trezorDescriptors]; export const connectDeviceRevamped = async (usbDevice: USBDevice): Promise => {