aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/controllers/provider-approval.js
diff options
context:
space:
mode:
authorPaul Bouchon <mail@bitpshr.net>2019-01-31 02:27:33 +0800
committerDan Finlay <542863+danfinlay@users.noreply.github.com>2019-01-31 02:27:33 +0800
commitdb776b5a02187d4545e3fb2b9dfd33d838145af7 (patch)
treec657d478d32005b80c8e6aa5e7ec45b075e8e954 /app/scripts/controllers/provider-approval.js
parentb2813d1113b75df09e9bb9f0781f65a2544adcfb (diff)
downloadtangerine-wallet-browser-db776b5a02187d4545e3fb2b9dfd33d838145af7.tar
tangerine-wallet-browser-db776b5a02187d4545e3fb2b9dfd33d838145af7.tar.gz
tangerine-wallet-browser-db776b5a02187d4545e3fb2b9dfd33d838145af7.tar.bz2
tangerine-wallet-browser-db776b5a02187d4545e3fb2b9dfd33d838145af7.tar.lz
tangerine-wallet-browser-db776b5a02187d4545e3fb2b9dfd33d838145af7.tar.xz
tangerine-wallet-browser-db776b5a02187d4545e3fb2b9dfd33d838145af7.tar.zst
tangerine-wallet-browser-db776b5a02187d4545e3fb2b9dfd33d838145af7.zip
EIP-1102 updates (#6006)
* Update privacy notice * Respond to 1102 messages using tab ID
Diffstat (limited to 'app/scripts/controllers/provider-approval.js')
-rw-r--r--app/scripts/controllers/provider-approval.js46
1 files changed, 24 insertions, 22 deletions
diff --git a/app/scripts/controllers/provider-approval.js b/app/scripts/controllers/provider-approval.js
index 53172c069..b8cf04341 100644
--- a/app/scripts/controllers/provider-approval.js
+++ b/app/scripts/controllers/provider-approval.js
@@ -27,19 +27,19 @@ class ProviderApprovalController {
})
if (platform && platform.addMessageListener) {
- platform.addMessageListener(({ action = '', force, origin, siteTitle, siteImage }) => {
+ platform.addMessageListener(({ action = '', force, origin, siteTitle, siteImage }, { tab }) => {
switch (action) {
case 'init-provider-request':
- this._handleProviderRequest(origin, siteTitle, siteImage, force)
+ this._handleProviderRequest(origin, siteTitle, siteImage, force, tab.id)
break
case 'init-is-approved':
- this._handleIsApproved(origin)
+ this._handleIsApproved(origin, tab.id)
break
case 'init-is-unlocked':
- this._handleIsUnlocked()
+ this._handleIsUnlocked(tab.id)
break
case 'init-privacy-request':
- this._handlePrivacyRequest()
+ this._handlePrivacyRequest(tab.id)
break
}
})
@@ -53,11 +53,11 @@ class ProviderApprovalController {
* @param {string} siteTitle - The title of the document requesting full provider access
* @param {string} siteImage - The icon of the window requesting full provider access
*/
- _handleProviderRequest (origin, siteTitle, siteImage, force) {
- this.store.updateState({ providerRequests: [{ origin, siteTitle, siteImage }] })
+ _handleProviderRequest (origin, siteTitle, siteImage, force, tabID) {
+ this.store.updateState({ providerRequests: [{ origin, siteTitle, siteImage, tabID }] })
const isUnlocked = this.keyringController.memStore.getState().isUnlocked
if (!force && this.approvedOrigins[origin] && this.caching && isUnlocked) {
- this.approveProviderRequest(origin)
+ this.approveProviderRequest(tabID)
return
}
this.openPopup && this.openPopup()
@@ -68,32 +68,32 @@ class ProviderApprovalController {
*
* @param {string} origin - Origin of the window
*/
- _handleIsApproved (origin) {
+ _handleIsApproved (origin, tabID) {
this.platform && this.platform.sendMessage({
action: 'answer-is-approved',
isApproved: this.approvedOrigins[origin] && this.caching,
caching: this.caching,
- }, { active: true })
+ }, { id: tabID })
}
/**
* Called by a tab to determine if MetaMask is currently locked or unlocked
*/
- _handleIsUnlocked () {
+ _handleIsUnlocked (tabID) {
const isUnlocked = this.keyringController.memStore.getState().isUnlocked
- this.platform && this.platform.sendMessage({ action: 'answer-is-unlocked', isUnlocked }, { active: true })
+ this.platform && this.platform.sendMessage({ action: 'answer-is-unlocked', isUnlocked }, { id: tabID })
}
/**
* Called to check privacy mode; if privacy mode is off, this will automatically enable the provider (legacy behavior)
*/
- _handlePrivacyRequest () {
+ _handlePrivacyRequest (tabID) {
const privacyMode = this.preferencesController.getFeatureFlags().privacyMode
if (!privacyMode) {
this.platform && this.platform.sendMessage({
action: 'approve-legacy-provider-request',
selectedAddress: this.publicConfigStore.getState().selectedAddress,
- }, { active: true })
+ }, { id: tabID })
this.publicConfigStore.emit('update', this.publicConfigStore.getState())
}
}
@@ -101,17 +101,18 @@ class ProviderApprovalController {
/**
* Called when a user approves access to a full Ethereum provider API
*
- * @param {string} origin - Origin of the target window to approve provider access
+ * @param {string} tabID - ID of the target window that approved provider access
*/
- approveProviderRequest (origin) {
+ approveProviderRequest (tabID) {
this.closePopup && this.closePopup()
const requests = this.store.getState().providerRequests
+ const origin = requests.find(request => request.tabID === tabID).origin
this.platform && this.platform.sendMessage({
action: 'approve-provider-request',
selectedAddress: this.publicConfigStore.getState().selectedAddress,
- }, { active: true })
+ }, { id: tabID })
this.publicConfigStore.emit('update', this.publicConfigStore.getState())
- const providerRequests = requests.filter(request => request.origin !== origin)
+ const providerRequests = requests.filter(request => request.tabID !== tabID)
this.store.updateState({ providerRequests })
this.approvedOrigins[origin] = true
}
@@ -119,13 +120,14 @@ class ProviderApprovalController {
/**
* Called when a tab rejects access to a full Ethereum provider API
*
- * @param {string} origin - Origin of the target window to reject provider access
+ * @param {string} tabID - ID of the target window that rejected provider access
*/
- rejectProviderRequest (origin) {
+ rejectProviderRequest (tabID) {
this.closePopup && this.closePopup()
const requests = this.store.getState().providerRequests
- this.platform && this.platform.sendMessage({ action: 'reject-provider-request' }, { active: true })
- const providerRequests = requests.filter(request => request.origin !== origin)
+ const origin = requests.find(request => request.tabID === tabID).origin
+ this.platform && this.platform.sendMessage({ action: 'reject-provider-request' }, { id: tabID })
+ const providerRequests = requests.filter(request => request.tabID !== tabID)
this.store.updateState({ providerRequests })
delete this.approvedOrigins[origin]
}