From d0417da3d0429621b7b08d49bc6ec1c3dcb7898b Mon Sep 17 00:00:00 2001 From: Matthew Walsh Date: Mon, 6 Mar 2023 19:35:00 +0000 Subject: [PATCH] Move desktop code to flask build type (#17960) --- app/scripts/background.js | 12 ++-- app/scripts/controllers/metametrics.js | 2 +- app/scripts/metamask-controller.js | 65 +++++++------------ app/scripts/ui.js | 16 ++--- lavamoat/browserify/flask/policy.json | 54 +++++++++++++++ shared/constants/app.ts | 3 - shared/lib/error-utils.js | 10 +-- .../app/app-header/app-header.component.js | 8 +-- .../app/app-header/app-header.container.js | 6 +- .../ui/metafox-logo/metafox-logo.component.js | 6 +- ui/ducks/metamask/metamask.js | 2 +- ui/helpers/constants/routes.ts | 8 +-- ui/index.js | 6 +- .../desktop-error/render-desktop-error.js | 2 +- .../desktop-pairing.component.js | 8 +-- .../desktop-pairing.container.js | 4 +- .../desktop-pairing/desktop-pairing.test.js | 12 ++-- ui/pages/routes/routes.component.js | 20 +++--- .../advanced-tab/advanced-tab.component.js | 6 +- .../advanced-tab/advanced-tab.container.js | 4 +- .../experimental-tab.component.js | 6 +- ui/selectors/selectors.js | 2 +- ui/store/actionConstants.ts | 2 +- ui/store/actions.ts | 46 +++++++------ 24 files changed, 163 insertions(+), 147 deletions(-) diff --git a/app/scripts/background.js b/app/scripts/background.js index 816bf4f55..236e245a4 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -56,7 +56,7 @@ import { deferredPromise, getPlatform } from './lib/util'; /* eslint-enable import/first */ /* eslint-disable import/order */ -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) import { CONNECTION_TYPE_EXTERNAL, CONNECTION_TYPE_INTERNAL, @@ -107,7 +107,7 @@ const PHISHING_WARNING_PAGE_TIMEOUT = ONE_SECOND_IN_MILLISECONDS; const ACK_KEEP_ALIVE_MESSAGE = 'ACK_KEEP_ALIVE_MESSAGE'; const WORKER_KEEP_ALIVE_MESSAGE = 'WORKER_KEEP_ALIVE_MESSAGE'; -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) const OVERRIDE_ORIGIN = { EXTENSION: 'EXTENSION', DESKTOP: 'DESKTOP_APP', @@ -263,7 +263,7 @@ async function initialize() { const initState = await loadStateFromPersistence(); const initLangCode = await getFirstPreferredLangCode(); - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) await DesktopManager.init(platform.getVersion()); ///: END:ONLY_INCLUDE_IN @@ -503,7 +503,7 @@ export function setupController(initState, initLangCode, overrides) { * @param {Port} remotePort - The port provided by a new context. */ connectRemote = async (remotePort) => { - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) if ( DesktopManager.isDesktopEnabled() && OVERRIDE_ORIGIN.DESKTOP !== overrides?.getOrigin?.() @@ -625,7 +625,7 @@ export function setupController(initState, initLangCode, overrides) { // communication with page or other extension connectExternal = (remotePort) => { - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) if ( DesktopManager.isDesktopEnabled() && OVERRIDE_ORIGIN.DESKTOP !== overrides?.getOrigin?.() @@ -814,7 +814,7 @@ export function setupController(initState, initLangCode, overrides) { updateBadge(); } - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) if (OVERRIDE_ORIGIN.DESKTOP !== overrides?.getOrigin?.()) { controller.store.subscribe((state) => { DesktopManager.setState(state); diff --git a/app/scripts/controllers/metametrics.js b/app/scripts/controllers/metametrics.js index 36ca252c1..e6a25b897 100644 --- a/app/scripts/controllers/metametrics.js +++ b/app/scripts/controllers/metametrics.js @@ -716,7 +716,7 @@ export default class MetaMetricsController { [TRAITS.THREE_BOX_ENABLED]: false, // deprecated, hard-coded as false [TRAITS.THEME]: metamaskState.theme || 'default', [TRAITS.TOKEN_DETECTION_ENABLED]: metamaskState.useTokenDetection, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) [TRAITS.DESKTOP_ENABLED]: metamaskState.desktopEnabled || false, ///: END:ONLY_INCLUDE_IN }; diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index ef949dc0a..9164d5ac9 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -113,6 +113,8 @@ import { isManifestV3 } from '../../shared/modules/mv3.utils'; import { hexToDecimal } from '../../shared/modules/conversion.utils'; ///: BEGIN:ONLY_INCLUDE_IN(flask) import { isMain, isFlask } from '../../shared/constants/environment'; +// eslint-disable-next-line import/order +import { DesktopController } from '@metamask/desktop/dist/controllers/desktop'; ///: END:ONLY_INCLUDE_IN import { onMessageReceived, @@ -175,16 +177,6 @@ import { import createRPCMethodTrackingMiddleware from './lib/createRPCMethodTrackingMiddleware'; import { securityProviderCheck } from './lib/security-provider-helpers'; -/* eslint-disable import/first */ -/* eslint-disable import/order */ - -///: BEGIN:ONLY_INCLUDE_IN(desktop) -import { DesktopController } from '@metamask/desktop/dist/controllers/desktop'; -///: END:ONLY_INCLUDE_IN - -/* eslint-enable import/first */ -/* eslint-enable import/order */ - export const METAMASK_CONTROLLER_EVENTS = { // Fired after state changes that impact the extension badge (unapproved msg count) // The process of updating the badge happens in app/scripts/background.js. @@ -868,6 +860,10 @@ export default class MetamaskController extends EventEmitter { state: initState.CronjobController, messenger: cronjobControllerMessenger, }); + + this.desktopController = new DesktopController({ + initState: initState.DesktopController, + }); ///: END:ONLY_INCLUDE_IN this.detectTokensController = new DetectTokensController({ @@ -1121,12 +1117,6 @@ export default class MetamaskController extends EventEmitter { initState.SmartTransactionsController, ); - ///: BEGIN:ONLY_INCLUDE_IN(desktop) - this.desktopController = new DesktopController({ - initState: initState.DesktopController, - }); - ///: END:ONLY_INCLUDE_IN - // ensure accountTracker updates balances after network change this.networkController.on(NETWORK_EVENTS.NETWORK_DID_CHANGE, () => { this.accountTracker._updateAccounts(); @@ -1233,8 +1223,6 @@ export default class MetamaskController extends EventEmitter { SnapController: this.snapController, CronjobController: this.cronjobController, NotificationController: this.notificationController, - ///: END:ONLY_INCLUDE_IN - ///: BEGIN:ONLY_INCLUDE_IN(desktop) DesktopController: this.desktopController.store, ///: END:ONLY_INCLUDE_IN ...resetOnRestartStore, @@ -1268,8 +1256,6 @@ export default class MetamaskController extends EventEmitter { SnapController: this.snapController, CronjobController: this.cronjobController, NotificationController: this.notificationController, - ///: END:ONLY_INCLUDE_IN - ///: BEGIN:ONLY_INCLUDE_IN(desktop) DesktopController: this.desktopController.store, ///: END:ONLY_INCLUDE_IN ...resetOnRestartStore, @@ -2038,6 +2024,22 @@ export default class MetamaskController extends EventEmitter { ), dismissNotifications: this.dismissNotifications.bind(this), markNotificationsAsRead: this.markNotificationsAsRead.bind(this), + // Desktop + getDesktopEnabled: this.desktopController.getDesktopEnabled.bind( + this.desktopController, + ), + setDesktopEnabled: this.desktopController.setDesktopEnabled.bind( + this.desktopController, + ), + generateDesktopOtp: this.desktopController.generateOtp.bind( + this.desktopController, + ), + testDesktopConnection: this.desktopController.testDesktopConnection.bind( + this.desktopController, + ), + disableDesktop: this.desktopController.disableDesktop.bind( + this.desktopController, + ), ///: END:ONLY_INCLUDE_IN // swaps @@ -2178,24 +2180,6 @@ export default class MetamaskController extends EventEmitter { assetsContractController.getBalancesInSingleCall.bind( assetsContractController, ), - - ///: BEGIN:ONLY_INCLUDE_IN(desktop) - getDesktopEnabled: this.desktopController.getDesktopEnabled.bind( - this.desktopController, - ), - setDesktopEnabled: this.desktopController.setDesktopEnabled.bind( - this.desktopController, - ), - generateOtp: this.desktopController.generateOtp.bind( - this.desktopController, - ), - testDesktopConnection: this.desktopController.testDesktopConnection.bind( - this.desktopController, - ), - disableDesktop: this.desktopController.disableDesktop.bind( - this.desktopController, - ), - ///: END:ONLY_INCLUDE_IN }; } @@ -4035,11 +4019,6 @@ export default class MetamaskController extends EventEmitter { this.alertController.setWeb3ShimUsageRecorded.bind( this.alertController, ), - - ///: BEGIN:ONLY_INCLUDE_IN(desktop) - testDesktopConnection: this.desktopController.testDesktopConnection, - generateOtp: this.desktopController.generateOtp, - ///: END:ONLY_INCLUDE_IN }), ); diff --git a/app/scripts/ui.js b/app/scripts/ui.js index 148ce0397..2ac1f8227 100644 --- a/app/scripts/ui.js +++ b/app/scripts/ui.js @@ -22,7 +22,7 @@ import { checkForLastErrorAndLog } from '../../shared/modules/browser-runtime.ut import { SUPPORT_LINK } from '../../shared/lib/ui-utils'; import { getErrorHtml, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) registerDesktopErrorActions, ///: END:ONLY_INCLUDE_IN } from '../../shared/lib/error-utils'; @@ -264,7 +264,7 @@ async function start() { ( err, store, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) backgroundConnection, ///: END:ONLY_INCLUDE_IN ) => { @@ -274,7 +274,7 @@ async function start() { 'troubleStarting', err, store, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) backgroundConnection, ///: END:ONLY_INCLUDE_IN ); @@ -302,7 +302,7 @@ async function start() { displayCriticalError( 'troubleStarting', err, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) undefined, backgroundConnection, ///: END:ONLY_INCLUDE_IN @@ -345,7 +345,7 @@ function initializeUi(activeTab, connectionStream, cb) { cb( err, null, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) backgroundConnection, ///: END:ONLY_INCLUDE_IN ); @@ -367,7 +367,7 @@ async function displayCriticalError( errorKey, err, metamaskState, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) backgroundConnection, ///: END:ONLY_INCLUDE_IN ) { @@ -375,14 +375,14 @@ async function displayCriticalError( errorKey, SUPPORT_LINK, metamaskState, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) err, ///: END:ONLY_INCLUDE_IN ); container.innerHTML = html; - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) registerDesktopErrorActions(backgroundConnection, browser); ///: END:ONLY_INCLUDE_IN diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 9b6ec427f..17e096890 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -814,6 +814,60 @@ "fetch": true } }, + "@metamask/desktop": { + "globals": { + "TextDecoder": true, + "TextEncoder": true, + "WebSocket": true, + "clearInterval": true, + "clearTimeout": true, + "crypto.getRandomValues": true, + "crypto.subtle.decrypt": true, + "crypto.subtle.digest": true, + "crypto.subtle.encrypt": true, + "crypto.subtle.exportKey": true, + "crypto.subtle.generateKey": true, + "crypto.subtle.importKey": true, + "isDesktopApp": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "@metamask/desktop>eciesjs": true, + "@metamask/desktop>otpauth": true, + "@metamask/obs-store": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "end-of-stream": true, + "extension-port-stream": true, + "loglevel": true, + "obj-multiplex": true, + "uuid": true, + "webextension-polyfill": true + } + }, + "@metamask/desktop>eciesjs": { + "packages": { + "@metamask/desktop>eciesjs>futoin-hkdf": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "ethereumjs-util>ethereum-cryptography>secp256k1": true + } + }, + "@metamask/desktop>eciesjs>futoin-hkdf": { + "packages": { + "browserify>buffer": true, + "browserify>crypto-browserify": true + } + }, + "@metamask/desktop>otpauth": { + "globals": { + "__GLOBALTHIS__": true, + "define": true + } + }, "@metamask/eth-json-rpc-infura": { "globals": { "setTimeout": true diff --git a/shared/constants/app.ts b/shared/constants/app.ts index 62b3f5607..54a39496a 100644 --- a/shared/constants/app.ts +++ b/shared/constants/app.ts @@ -61,9 +61,6 @@ export const MESSAGE_TYPE = { SNAP_DIALOG_CONFIRMATION: `${RestrictedMethods.snap_dialog}:confirmation`, SNAP_DIALOG_PROMPT: `${RestrictedMethods.snap_dialog}:prompt`, ///: END:ONLY_INCLUDE_IN - ///: BEGIN:ONLY_INCLUDE_IN(desktop) - ENABLE_DESKTOP: `metamask_enableDesktop`, - ///: END:ONLY_INCLUDE_IN ///: BEGIN:ONLY_INCLUDE_IN(mmi) MMI_AUTHENTICATE: 'metamaskinstitutional_authenticate', MMI_REAUTHENTICATE: 'metamaskinstitutional_reauthenticate', diff --git a/shared/lib/error-utils.js b/shared/lib/error-utils.js index 3eb55be3c..d5f5feb3f 100644 --- a/shared/lib/error-utils.js +++ b/shared/lib/error-utils.js @@ -1,4 +1,4 @@ -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) import browser from 'webextension-polyfill'; ///: END:ONLY_INCLUDE_IN import { memoize } from 'lodash'; @@ -7,7 +7,7 @@ import { fetchLocale, loadRelativeTimeFormatLocaleData, } from '../../ui/helpers/utils/i18n-helper'; -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) import { renderDesktopError } from '../../ui/pages/desktop-error/render-desktop-error'; import { EXTENSION_ERROR_PAGE_TYPES } from '../constants/desktop'; import { openCustomProtocol } from './deep-linking'; @@ -44,7 +44,7 @@ export async function getErrorHtml( errorKey, supportLink, metamaskState, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) err, ///: END:ONLY_INCLUDE_IN ) { @@ -65,7 +65,7 @@ export async function getErrorHtml( const { currentLocaleMessages, enLocaleMessages } = response; const t = getLocaleContext(currentLocaleMessages, enLocaleMessages); - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) const isDesktopEnabled = metamaskState?.desktopEnabled === true; if (isDesktopEnabled) { @@ -120,7 +120,7 @@ export async function getErrorHtml( `; } -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) function disableDesktop(backgroundConnection) { backgroundConnection.disableDesktopError(); } diff --git a/ui/components/app/app-header/app-header.component.js b/ui/components/app/app-header/app-header.component.js index 0bb414e1b..e7178a56f 100644 --- a/ui/components/app/app-header/app-header.component.js +++ b/ui/components/app/app-header/app-header.component.js @@ -26,14 +26,12 @@ export default class AppHeader extends PureComponent { isAccountMenuOpen: PropTypes.bool, ///: BEGIN:ONLY_INCLUDE_IN(flask) unreadNotificationsCount: PropTypes.number, + desktopEnabled: PropTypes.bool, ///: END:ONLY_INCLUDE_IN ///: BEGIN:ONLY_INCLUDE_IN(beta) showBetaHeader: PropTypes.bool, ///: END:ONLY_INCLUDE_IN onClick: PropTypes.func, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) - desktopEnabled: PropTypes.bool, - ///: END:ONLY_INCLUDE_IN }; static contextTypes = { @@ -125,7 +123,7 @@ export default class AppHeader extends PureComponent { ///: BEGIN:ONLY_INCLUDE_IN(beta) showBetaHeader, ///: END:ONLY_INCLUDE_IN(beta) - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) desktopEnabled, ///: END:ONLY_INCLUDE_IN } = this.props; @@ -150,7 +148,7 @@ export default class AppHeader extends PureComponent { }} /> { - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) desktopEnabled && process.env.METAMASK_DEBUG && (
{ selectedAddress, isUnlocked, isAccountMenuOpen, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) desktopEnabled, ///: END:ONLY_INCLUDE_IN } = metamask; @@ -40,13 +40,11 @@ const mapStateToProps = (state) => { isAccountMenuOpen, ///: BEGIN:ONLY_INCLUDE_IN(flask) unreadNotificationsCount, + desktopEnabled, ///: END:ONLY_INCLUDE_IN ///: BEGIN:ONLY_INCLUDE_IN(beta) showBetaHeader, ///: END:ONLY_INCLUDE_IN - ///: BEGIN:ONLY_INCLUDE_IN(desktop) - desktopEnabled, - ///: END:ONLY_INCLUDE_IN }; }; diff --git a/ui/components/ui/metafox-logo/metafox-logo.component.js b/ui/components/ui/metafox-logo/metafox-logo.component.js index 081b8284a..402708e93 100644 --- a/ui/components/ui/metafox-logo/metafox-logo.component.js +++ b/ui/components/ui/metafox-logo/metafox-logo.component.js @@ -8,7 +8,7 @@ export default class MetaFoxLogo extends PureComponent { onClick: PropTypes.func, unsetIconHeight: PropTypes.bool, isOnboarding: PropTypes.bool, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) src: PropTypes.string, ///: END:ONLY_INCLUDE_IN }; @@ -22,7 +22,7 @@ export default class MetaFoxLogo extends PureComponent { onClick, unsetIconHeight, isOnboarding, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) src, ///: END:ONLY_INCLUDE_IN } = this.props; @@ -39,7 +39,7 @@ export default class MetaFoxLogo extends PureComponent { let imageSrc = './images/logo/metamask-fox.svg'; - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) if (src) { renderHorizontalLogo = () => ( { export default function launchMetamaskUi(opts, cb) { const { backgroundConnection } = opts; - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) let desktopEnabled = false; backgroundConnection.getDesktopEnabled(function (err, result) { @@ -72,7 +72,7 @@ export default function launchMetamaskUi(opts, cb) { err, { ...metamaskState, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) desktopEnabled, ///: END:ONLY_INCLUDE_IN }, @@ -85,7 +85,7 @@ export default function launchMetamaskUi(opts, cb) { cb( null, store, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) backgroundConnection, ///: END:ONLY_INCLUDE_IN ); diff --git a/ui/pages/desktop-error/render-desktop-error.js b/ui/pages/desktop-error/render-desktop-error.js index 9c3eb2e19..fcb8cd9b8 100644 --- a/ui/pages/desktop-error/render-desktop-error.js +++ b/ui/pages/desktop-error/render-desktop-error.js @@ -197,7 +197,7 @@ export function renderDesktopError({ ); break; - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) // This route only exists on the Desktop App case EXTENSION_ERROR_PAGE_TYPES.ROUTE_NOT_FOUND: content = ( diff --git a/ui/pages/desktop-pairing/desktop-pairing.component.js b/ui/pages/desktop-pairing/desktop-pairing.component.js index 6a5347552..124180d0b 100644 --- a/ui/pages/desktop-pairing/desktop-pairing.component.js +++ b/ui/pages/desktop-pairing/desktop-pairing.component.js @@ -18,7 +18,7 @@ import { useCopyToClipboard } from '../../hooks/useCopyToClipboard'; import Tooltip from '../../components/ui/tooltip'; export default function DesktopPairingPage({ - generateOtp, + generateDesktopOtp, mostRecentOverviewPage, showLoadingIndication, hideLoadingIndication, @@ -54,7 +54,7 @@ export default function DesktopPairingPage({ useEffect(() => { const generate = async () => { setLastOtpTime(new Date().getTime()); - const OTP = await generateOtp(); + const OTP = await generateDesktopOtp(); setOtp(OTP); }; @@ -71,7 +71,7 @@ export default function DesktopPairingPage({ clearInterval(generateIntervalRef.current); clearInterval(refreshIntervalRef.current); }; - }, [OTP_DURATION, REFRESH_INTERVAL, generateOtp]); + }, [OTP_DURATION, REFRESH_INTERVAL, generateDesktopOtp]); const renderIcon = () => { return ( @@ -186,5 +186,5 @@ DesktopPairingPage.propTypes = { mostRecentOverviewPage: PropTypes.string, showLoadingIndication: PropTypes.func, hideLoadingIndication: PropTypes.func, - generateOtp: PropTypes.func, + generateDesktopOtp: PropTypes.func, }; diff --git a/ui/pages/desktop-pairing/desktop-pairing.container.js b/ui/pages/desktop-pairing/desktop-pairing.container.js index 734a074b0..71beda3a7 100644 --- a/ui/pages/desktop-pairing/desktop-pairing.container.js +++ b/ui/pages/desktop-pairing/desktop-pairing.container.js @@ -1,6 +1,6 @@ import { connect } from 'react-redux'; import { - generateOtp, + generateDesktopOtp, hideLoadingIndication, showLoadingIndication, } from '../../store/actions'; @@ -9,7 +9,7 @@ import DesktopPairingPage from './desktop-pairing.component'; const mapDispatchToProps = (dispatch) => { return { - generateOtp: () => generateOtp(), + generateDesktopOtp: () => generateDesktopOtp(), showLoadingIndication: () => dispatch(showLoadingIndication()), hideLoadingIndication: () => dispatch(hideLoadingIndication()), }; diff --git a/ui/pages/desktop-pairing/desktop-pairing.test.js b/ui/pages/desktop-pairing/desktop-pairing.test.js index 7cdf9f919..371b13e64 100644 --- a/ui/pages/desktop-pairing/desktop-pairing.test.js +++ b/ui/pages/desktop-pairing/desktop-pairing.test.js @@ -15,7 +15,7 @@ jest.mock('../../store/actions', () => { return { hideLoadingIndication: () => mockHideLoadingIndication, showLoadingIndication: () => mockShowLoadingIndication, - generateOtp: jest.fn(), + generateDesktopOtp: jest.fn(), }; }); @@ -44,7 +44,7 @@ describe('Desktop Pairing page', () => { it('should render otp component', async () => { const otp = '123456'; - mockedActions.generateOtp.mockResolvedValue(otp); + mockedActions.generateDesktopOtp.mockResolvedValue(otp); const store = configureStore(mockState); let container = null; @@ -65,7 +65,7 @@ describe('Desktop Pairing page', () => { const otp = '123456'; const newOtp = '654321'; const neverGeneratedOTP = '111222'; - mockedActions.generateOtp + mockedActions.generateDesktopOtp .mockResolvedValueOnce(otp) .mockResolvedValueOnce(newOtp) .mockResolvedValueOnce(neverGeneratedOTP); @@ -81,7 +81,7 @@ describe('Desktop Pairing page', () => { await flushPromises(); expect(screen.getByTestId('desktop-pairing-otp-content')).toBeDefined(); expect(screen.getByText(otp)).toBeDefined(); - expect(mockedActions.generateOtp).toHaveBeenCalledTimes(1); + expect(mockedActions.generateDesktopOtp).toHaveBeenCalledTimes(1); }); // Advance timers 30s to trigger next OTP @@ -91,7 +91,7 @@ describe('Desktop Pairing page', () => { await flushPromises(); expect(screen.getByTestId('desktop-pairing-otp-content')).toBeDefined(); expect(screen.getByText(newOtp)).toBeDefined(); - expect(mockedActions.generateOtp).toHaveBeenCalledTimes(2); + expect(mockedActions.generateDesktopOtp).toHaveBeenCalledTimes(2); }); // Advance timers 10s to test that OTP is still the same @@ -101,7 +101,7 @@ describe('Desktop Pairing page', () => { await flushPromises(); expect(screen.getByTestId('desktop-pairing-otp-content')).toBeDefined(); expect(screen.getByText(newOtp)).toBeDefined(); - expect(mockedActions.generateOtp).toHaveBeenCalledTimes(2); + expect(mockedActions.generateDesktopOtp).toHaveBeenCalledTimes(2); }); jest.clearAllTimers(); diff --git a/ui/pages/routes/routes.component.js b/ui/pages/routes/routes.component.js index a9d8f0edb..0006965da 100644 --- a/ui/pages/routes/routes.component.js +++ b/ui/pages/routes/routes.component.js @@ -4,9 +4,9 @@ import React, { Component } from 'react'; import { matchPath, Route, Switch } from 'react-router-dom'; import IdleTimer from 'react-idle-timer'; -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) import browserAPI from 'webextension-polyfill'; -///: END:ONLY_INCLUDE_IN(desktop) +///: END:ONLY_INCLUDE_IN import SendTransactionScreen from '../send'; import Swaps from '../swaps'; import ConfirmTransaction from '../confirm-transaction'; @@ -38,12 +38,10 @@ import OnboardingAppHeader from '../onboarding-flow/onboarding-app-header/onboar import TokenDetailsPage from '../token-details'; ///: BEGIN:ONLY_INCLUDE_IN(flask) import Notifications from '../notifications'; -///: END:ONLY_INCLUDE_IN -///: BEGIN:ONLY_INCLUDE_IN(desktop) import { registerOnDesktopDisconnect } from '../../hooks/desktopHooks'; import DesktopErrorPage from '../desktop-error'; import DesktopPairingPage from '../desktop-pairing'; -///: END:ONLY_INCLUDE_IN(desktop) +///: END:ONLY_INCLUDE_IN import { IMPORT_TOKEN_ROUTE, @@ -70,14 +68,12 @@ import { TOKEN_DETAILS, ///: BEGIN:ONLY_INCLUDE_IN(flask) NOTIFICATIONS_ROUTE, - ///: END:ONLY_INCLUDE_IN - ///: BEGIN:ONLY_INCLUDE_IN(desktop) DESKTOP_PAIRING_ROUTE, DESKTOP_ERROR_ROUTE, ///: END:ONLY_INCLUDE_IN } from '../../helpers/constants/routes'; -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) import { EXTENSION_ERROR_PAGE_TYPES } from '../../../shared/constants/desktop'; ///: END:ONLY_INCLUDE_IN @@ -144,7 +140,7 @@ export default class Routes extends Component { document.documentElement.setAttribute('data-theme', osTheme); } - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) componentDidMount() { const { history } = this.props; browserAPI.runtime.onMessage.addListener( @@ -206,7 +202,7 @@ export default class Routes extends Component { { - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) { - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) { useNonceField, ledgerTransportType, dismissSeedBackUpReminder, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) desktopEnabled, ///: END:ONLY_INCLUDE_IN } = metamask; @@ -54,7 +54,7 @@ export const mapStateToProps = (state) => { dismissSeedBackUpReminder, userHasALedgerAccount, disabledRpcMethodPreferences, - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) desktopEnabled, ///: END:ONLY_INCLUDE_IN }; diff --git a/ui/pages/settings/experimental-tab/experimental-tab.component.js b/ui/pages/settings/experimental-tab/experimental-tab.component.js index 015a71229..dc09e811a 100644 --- a/ui/pages/settings/experimental-tab/experimental-tab.component.js +++ b/ui/pages/settings/experimental-tab/experimental-tab.component.js @@ -13,7 +13,7 @@ import { TextColor, TypographyVariant, } from '../../../helpers/constants/design-system'; -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) import DesktopEnableButton from '../../../components/app/desktop-enable-button'; ///: END:ONLY_INCLUDE_IN @@ -226,7 +226,7 @@ export default class ExperimentalTab extends PureComponent { ); } - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) renderDesktopEnableButton() { const { t } = this.context; @@ -255,7 +255,7 @@ export default class ExperimentalTab extends PureComponent { {this.renderTransactionSecurityCheckToggle()} {process.env.NFTS_V1 && this.renderOpenSeaEnabledToggle()} { - ///: BEGIN:ONLY_INCLUDE_IN(desktop) + ///: BEGIN:ONLY_INCLUDE_IN(flask) this.renderDesktopEnableButton() ///: END:ONLY_INCLUDE_IN } diff --git a/ui/selectors/selectors.js b/ui/selectors/selectors.js index a4f9bd780..a92ba275f 100644 --- a/ui/selectors/selectors.js +++ b/ui/selectors/selectors.js @@ -1357,7 +1357,7 @@ export function getUseCurrencyRateCheck(state) { return Boolean(state.metamask.useCurrencyRateCheck); } -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) /** * To get the `desktopEnabled` value which determines whether we use the desktop app * diff --git a/ui/store/actionConstants.ts b/ui/store/actionConstants.ts index 8eca6c137..9303c16f4 100644 --- a/ui/store/actionConstants.ts +++ b/ui/store/actionConstants.ts @@ -103,6 +103,6 @@ export const SET_NEW_TOKENS_IMPORTED = 'SET_NEW_TOKENS_IMPORTED'; // Token allowance export const SET_CUSTOM_TOKEN_AMOUNT = 'SET_CUSTOM_TOKEN_AMOUNT'; -///: BEGIN:ONLY_INCLUDE_IN(desktop) +///: BEGIN:ONLY_INCLUDE_IN(flask) export const FORCE_DISABLE_DESKTOP = 'FORCE_DISABLE_DESKTOP'; ///: END:ONLY_INCLUDE_IN diff --git a/ui/store/actions.ts b/ui/store/actions.ts index ce42e920a..6632a658e 100644 --- a/ui/store/actions.ts +++ b/ui/store/actions.ts @@ -1350,6 +1350,28 @@ export function markNotificationsAsRead( await forceUpdateMetamaskState(dispatch); }; } + +export function setDesktopEnabled(desktopEnabled: boolean) { + return async () => { + try { + await submitRequestToBackground('setDesktopEnabled', [desktopEnabled]); + } catch (error) { + log.error(error); + } + }; +} + +export async function generateDesktopOtp() { + return await submitRequestToBackground('generateDesktopOtp'); +} + +export async function testDesktopConnection() { + return await submitRequestToBackground('testDesktopConnection'); +} + +export async function disableDesktop() { + return await submitRequestToBackground('disableDesktop'); +} ///: END:ONLY_INCLUDE_IN export function cancelMsg( @@ -4574,27 +4596,3 @@ export function requestAddNetworkApproval( } }; } - -///: BEGIN:ONLY_INCLUDE_IN(desktop) -export function setDesktopEnabled(desktopEnabled: boolean) { - return async () => { - try { - await submitRequestToBackground('setDesktopEnabled', [desktopEnabled]); - } catch (error) { - log.error(error); - } - }; -} - -export async function generateOtp() { - return await submitRequestToBackground('generateOtp'); -} - -export async function testDesktopConnection() { - return await submitRequestToBackground('testDesktopConnection'); -} - -export async function disableDesktop() { - return await submitRequestToBackground('disableDesktop'); -} -///: END:ONLY_INCLUDE_IN