From b675a12dbfd2c9ff6d8968f7207f91dcfa888033 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Mon, 21 Nov 2022 08:51:11 -0600 Subject: [PATCH] Use async/await for extension functions (#15722) --- app/scripts/platforms/extension.js | 139 +++++++---------------------- app/scripts/ui.js | 31 +++---- 2 files changed, 44 insertions(+), 126 deletions(-) diff --git a/app/scripts/platforms/extension.js b/app/scripts/platforms/extension.js index 7381fab9d..32cd35671 100644 --- a/app/scripts/platforms/extension.js +++ b/app/scripts/platforms/extension.js @@ -1,7 +1,7 @@ import browser from 'webextension-polyfill'; import { getBlockExplorerLink } from '@metamask/etherscan-link'; -import { getEnvironmentType, checkForError } from '../lib/util'; +import { getEnvironmentType } from '../lib/util'; import { ENVIRONMENT_TYPE_BACKGROUND } from '../../../shared/constants/app'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; @@ -13,70 +13,32 @@ export default class ExtensionPlatform { browser.runtime.reload(); } - openTab(options) { - return new Promise((resolve, reject) => { - browser.tabs.create(options).then((newTab) => { - const error = checkForError(); - if (error) { - return reject(error); - } - return resolve(newTab); - }); - }); + async openTab(options) { + const newTab = await browser.tabs.create(options); + return newTab; } - openWindow(options) { - return new Promise((resolve, reject) => { - browser.windows.create(options).then((newWindow) => { - const error = checkForError(); - if (error) { - return reject(error); - } - return resolve(newWindow); - }); - }); + async openWindow(options) { + const newWindow = await browser.windows.create(options); + return newWindow; } - focusWindow(windowId) { - return new Promise((resolve, reject) => { - browser.windows.update(windowId, { focused: true }).then(() => { - const error = checkForError(); - if (error) { - return reject(error); - } - return resolve(); - }); - }); + async focusWindow(windowId) { + await browser.windows.update(windowId, { focused: true }); } - updateWindowPosition(windowId, left, top) { - return new Promise((resolve, reject) => { - browser.windows.update(windowId, { left, top }).then(() => { - const error = checkForError(); - if (error) { - return reject(error); - } - return resolve(); - }); - }); + async updateWindowPosition(windowId, left, top) { + await browser.windows.update(windowId, { left, top }); } - getLastFocusedWindow() { - return new Promise((resolve, reject) => { - browser.windows.getLastFocused().then((windowObject) => { - const error = checkForError(); - if (error) { - return reject(error); - } - return resolve(windowObject); - }); - }); + async getLastFocusedWindow() { + const windowObject = await browser.windows.getLastFocused(); + return windowObject; } - closeCurrentWindow() { - return browser.windows.getCurrent().then((windowDetails) => { - return browser.windows.remove(windowDetails.id); - }); + async closeCurrentWindow() { + const windowDetails = await browser.windows.getCurrent(); + browser.windows.remove(windowDetails.id); } getVersion() { @@ -169,67 +131,28 @@ export default class ExtensionPlatform { browser.windows.onRemoved.addListener(listener); } - getAllWindows() { - return new Promise((resolve, reject) => { - browser.windows.getAll().then((windows) => { - const error = checkForError(); - if (error) { - return reject(error); - } - return resolve(windows); - }); - }); + async getAllWindows() { + const windows = await browser.windows.getAll(); + return windows; } - getActiveTabs() { - return new Promise((resolve, reject) => { - browser.tabs.query({ active: true }).then((tabs) => { - const error = checkForError(); - if (error) { - return reject(error); - } - return resolve(tabs); - }); - }); + async getActiveTabs() { + const tabs = await browser.tabs.query({ active: true }); + return tabs; } - currentTab() { - return new Promise((resolve, reject) => { - browser.tabs.getCurrent().then((tab) => { - const err = checkForError(); - if (err) { - reject(err); - } else { - resolve(tab); - } - }); - }); + async currentTab() { + const tab = await browser.tabs.getCurrent(); + return tab; } - switchToTab(tabId) { - return new Promise((resolve, reject) => { - browser.tabs.update(tabId, { highlighted: true }).then((tab) => { - const err = checkForError(); - if (err) { - reject(err); - } else { - resolve(tab); - } - }); - }); + async switchToTab(tabId) { + const tab = await browser.tabs.update(tabId, { highlighted: true }); + return tab; } - closeTab(tabId) { - return new Promise((resolve, reject) => { - browser.tabs.remove(tabId).then(() => { - const err = checkForError(); - if (err) { - reject(err); - } else { - resolve(); - } - }); - }); + async closeTab(tabId) { + await browser.tabs.remove(tabId); } _showConfirmedTransaction(txMeta, rpcPrefs) { diff --git a/app/scripts/ui.js b/app/scripts/ui.js index 2852519a9..c0f0bb7d1 100644 --- a/app/scripts/ui.js +++ b/app/scripts/ui.js @@ -282,27 +282,22 @@ async function start() { } async function queryCurrentActiveTab(windowType) { - return new Promise((resolve) => { - // At the time of writing we only have the `activeTab` permission which means - // that this query will only succeed in the popup context (i.e. after a "browserAction") - if (windowType !== ENVIRONMENT_TYPE_POPUP) { - resolve({}); - return; - } + // At the time of writing we only have the `activeTab` permission which means + // that this query will only succeed in the popup context (i.e. after a "browserAction") + if (windowType !== ENVIRONMENT_TYPE_POPUP) { + return {}; + } - browser.tabs.query({ active: true, currentWindow: true }).then((tabs) => { - const [activeTab] = tabs; - const { id, title, url } = activeTab; - const { origin, protocol } = url ? new URL(url) : {}; + const tabs = await browser.tabs.query({ active: true, currentWindow: true }); + const [activeTab] = tabs; + const { id, title, url } = activeTab; + const { origin, protocol } = url ? new URL(url) : {}; - if (!origin || origin === 'null') { - resolve({}); - return; - } + if (!origin || origin === 'null') { + return {}; + } - resolve({ id, title, origin, protocol, url }); - }); - }); + return { id, title, origin, protocol, url }; } function initializeUi(activeTab, connectionStream, cb) {