diff options
author | brunobar79 <brunobar79@gmail.com> | 2018-08-11 14:35:20 +0800 |
---|---|---|
committer | brunobar79 <brunobar79@gmail.com> | 2018-08-11 14:35:20 +0800 |
commit | 78a1cd3314455d6e4e08839a3eea3ec2868f4f59 (patch) | |
tree | 49c31a6b0d41de1d09120d683689b9445a5bceb6 /app/scripts/lib/setupLedgerIframe.js | |
parent | 5ef80495cfd47a8f5e4caf4b16842155420de62e (diff) | |
download | tangerine-wallet-browser-78a1cd3314455d6e4e08839a3eea3ec2868f4f59.tar tangerine-wallet-browser-78a1cd3314455d6e4e08839a3eea3ec2868f4f59.tar.gz tangerine-wallet-browser-78a1cd3314455d6e4e08839a3eea3ec2868f4f59.tar.bz2 tangerine-wallet-browser-78a1cd3314455d6e4e08839a3eea3ec2868f4f59.tar.lz tangerine-wallet-browser-78a1cd3314455d6e4e08839a3eea3ec2868f4f59.tar.xz tangerine-wallet-browser-78a1cd3314455d6e4e08839a3eea3ec2868f4f59.tar.zst tangerine-wallet-browser-78a1cd3314455d6e4e08839a3eea3ec2868f4f59.zip |
iframe communication working
Diffstat (limited to 'app/scripts/lib/setupLedgerIframe.js')
-rw-r--r-- | app/scripts/lib/setupLedgerIframe.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/app/scripts/lib/setupLedgerIframe.js b/app/scripts/lib/setupLedgerIframe.js new file mode 100644 index 000000000..2831d072e --- /dev/null +++ b/app/scripts/lib/setupLedgerIframe.js @@ -0,0 +1,40 @@ +const extension = require('extensionizer') +module.exports = setupLedgerIframe +/** + * Injects an iframe into the current document to + * enable the interaction with ledger devices + */ +function setupLedgerIframe () { + const ORIGIN = 'http://localhost:9000' + const ledgerIframe = document.createElement('iframe') + ledgerIframe.src = ORIGIN + console.log('Injecting ledger iframe') + document.head.appendChild(ledgerIframe) + + console.log('[LEDGER]: LEDGER BG LISTENER READY') + extension.runtime.onMessage.addListener(({action, params}) => { + console.log('[LEDGER]: GOT MSG FROM THE KEYRING', action, params) + if (action.search('ledger-') !== -1) { + //Forward messages from the keyring to the iframe + sendMessage({action, params}) + } + }) + + function sendMessage(msg) { + ledgerIframe.contentWindow.postMessage({...msg, target: 'LEDGER-IFRAME'}, '*') + } + + /* + Passing messages from iframe to background script + */ + console.log('[LEDGER]: LEDGER FROM-IFRAME LISTENER READY') + window.addEventListener('message', event => { + if(event.origin !== ORIGIN) return false + if (event.data && event.data.action && event.data.action.search('ledger-') !== -1) { + // Forward messages from the iframe to the keyring + console.log('[LEDGER] : forwarding msg', event.data) + extension.runtime.sendMessage(event.data) + } + }) + + }
\ No newline at end of file |