From cff7b2e498a7de8bca0ca7bd99903506b0ade45f Mon Sep 17 00:00:00 2001 From: Matt King Date: Thu, 4 Oct 2018 09:09:56 -0700 Subject: [PATCH] fix: cannot create context menu item with duplicate id --- package.json | 1 + src/browser/types.ts | 2 -- src/extension/scripts/background.tsx | 34 ++++------------------------ yarn.lock | 5 ++++ 4 files changed, 10 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 94572980..7d762db2 100644 --- a/package.json +++ b/package.json @@ -125,6 +125,7 @@ "ts-key-enum": "^2.0.0", "uuid": "^3.3.2", "vscode-languageserver-types": "3.12.0", + "webext-domain-permission-toggle": "^0.0.2", "whatwg-url": "^6.2.1" } } diff --git a/src/browser/types.ts b/src/browser/types.ts index e7c0c083..1ba678a3 100644 --- a/src/browser/types.ts +++ b/src/browser/types.ts @@ -55,7 +55,6 @@ export interface StorageItems { * Overrides settings from Sourcegraph. */ clientSettings: string - hasEnableDomainContextMenu: boolean } interface ClientConfigurationDetails { @@ -94,7 +93,6 @@ export const defaultStorageItems: StorageItems = { }, }, clientSettings: '', - hasEnableDomainContextMenu: false, } export type StorageChange = { [key in keyof StorageItems]: chrome.storage.StorageChange } diff --git a/src/extension/scripts/background.tsx b/src/extension/scripts/background.tsx index 1f9b3a42..2e0d6fdd 100644 --- a/src/extension/scripts/background.tsx +++ b/src/extension/scripts/background.tsx @@ -5,9 +5,9 @@ import '../../config/polyfill' import { without } from 'lodash' import { ajax } from 'rxjs/ajax' import { InitData } from 'sourcegraph/module/extension/extensionHost' +import DPT from 'webext-domain-permission-toggle' import ExtensionHostWorker from 'worker-loader?inline!./extensionHost.worker' import * as browserAction from '../../browser/browserAction' -import * as contextMenus from '../../browser/contextMenu' import * as omnibox from '../../browser/omnibox' import * as permissions from '../../browser/permissions' import * as runtime from '../../browser/runtime' @@ -162,11 +162,6 @@ permissions.onRemoved(permissions => { }) storage.addSyncMigration((items, set, remove) => { - if (!items.hasEnableDomainContextMenu) { - createEnableDomainContextMenu(() => { - storage.setSync({ hasEnableDomainContextMenu: true }) - }) - } if (items.phabricatorURL) { remove('phabricatorURL') @@ -273,30 +268,6 @@ runtime.onMessage((message, _, cb) => { return }) -const ENABLE_SOURCEGRAPH_CONTEXT_MENU = 'ENABLE_SOURCEGRAPH_CONTEXT_MENU' -function createEnableDomainContextMenu(callback?: () => void): void { - contextMenus.create( - { - id: ENABLE_SOURCEGRAPH_CONTEXT_MENU, - title: 'Enable Sourcegraph on this domain', - contexts: ['browser_action'], - onclick: (_: chrome.contextMenus.OnClickData, tab: chrome.tabs.Tab): void => { - if (!tab.url) { - console.error('Could not get tab url to request permissions.') - return - } - try { - const url = new URL(tab.url) - permissions.request([url.origin]).catch(err => console.error('Permissions request denied', err)) - } catch { - console.error('Could not get tab url to request permissions') - } - }, - }, - callback - ) -} - function requestPermissionsForEnterpriseUrls(urls: string[], cb: (res?: any) => void): void { storage.getSync(items => { const enterpriseUrls = items.enterpriseUrls || [] @@ -468,3 +439,6 @@ chrome.runtime.onConnect.addListener(port => { ) }) }) + +// Add "Enable Sourcegraph on this domain" context menu item +DPT.addContextMenu() diff --git a/yarn.lock b/yarn.lock index 14c072c2..732df350 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13648,6 +13648,11 @@ web-ext@^2.5.0: yargs "6.6.0" zip-dir "1.0.2" +webext-domain-permission-toggle@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/webext-domain-permission-toggle/-/webext-domain-permission-toggle-0.0.2.tgz#28003248699b869e5422b2ef60a7c2b03e1c3c15" + integrity sha512-obPAEocq/5uw0jaKc1N2bwux/HXDaYz9/8ltvxTRqr0iR6JaTh6/h56FL9uoAZYXcXxjFyE+PRrJicoQrJ8T6g== + webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"