1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00
metamask-extension/app/scripts/lib/createOnboardingMiddleware.js
Mark Stacey 69d418a5a3
Login per site onboarding (#7602)
* Remove unused onboarding stream

* Pass `sender` through to `setupProviderEngine`

The Port `sender` has been passed down a few more layers. This allows
us to get more information from the sender deeper in the stack, but
also simplifies things a bit as well. For example, now the "fake"
URL object with the `metamask` hostname is no longer needed.

* Create onboarding middleware

This middleware intercepts `wallet_registerOnboarding` RPC messages. It
will register the sender as an oboarding initiator if possible, and
otherwise ignores the message.
2019-12-20 12:02:31 -03:30

30 lines
947 B
JavaScript

import log from 'loglevel'
import extension from 'extensionizer'
/**
* Returns a middleware that intercepts `wallet_registerOnboarding` messages
* @param {{ location: string, tabId: number, registerOnboarding: Function }} opts - The middleware options
* @returns {(req: any, res: any, next: Function, end: Function) => void}
*/
function createOnboardingMiddleware ({ location, tabId, registerOnboarding }) {
return async function originMiddleware (req, res, next, end) {
try {
if (req.method !== 'wallet_registerOnboarding') {
next()
return
}
if (tabId && tabId !== extension.tabs.TAB_ID_NONE) {
await registerOnboarding(location, tabId)
} else {
log.debug(`'wallet_registerOnboarding' message from ${location} ignored due to missing tabId`)
}
res.result = true
end()
} catch (error) {
end(error)
}
}
}
export default createOnboardingMiddleware