aboutsummaryrefslogblamecommitdiffstats
path: root/app/scripts/background.js
blob: c439558c80c86743ddf204edecc1e4b96602b129 (plain) (tree)
1
2
3
4
5
6
7
8

                                                            
                                                             
 


                                     
 




                                                                

                                                   


                                                                       

 












                                                                             
 























                                                                      

                   














                                                                     
    


































































                                                    
const ZeroClientProvider = require('web3-provider-skeleton')
// const PortStream = require('./lib/port-stream.js')
const identitiesUrl = 'https://alpha.metamask.io/identities/'

// var unsignedTxs = {}

var zeroClient = ZeroClientProvider()

// setup badge click handler
chrome.browserAction.onClicked.addListener(function(activeTab) {
  chrome.tabs.create({ url: identitiesUrl })
})

// setup messaging
chrome.runtime.onConnect.addListener(connectRemote)
// chrome.runtime.onConnectExternal.addListener(connectRemote)
function connectRemote(remotePort){
  remotePort.onMessage.addListener(onRpcRequest.bind(null, remotePort))
}

function onRpcRequest(remotePort, payload){
  zeroClient.sendAsync(payload, function onPayloadHandled(err, response){
    if (err) throw err
    // console.log('MetaMaskPlugin - RPC complete:', payload, '->', response)
    // if (typeof response !== 'object') {
    // if (!response) {
    //   console.warn('-------------------------------')
    //   console.warn(payload, '->', response)
    //   console.warn('-------------------------------')
    // }
    remotePort.postMessage(response)
  })
}

// // load from storage
// chrome.storage.sync.get(function(data){
//   for (var key in data) {
//     var serialized = data[key]
//     var tx = deserializeTx(serialized)
//     var hash = simpleHash(serialized)
//     unsignedTxs[hash] = tx
//   }
//   updateBadge()
// })

// // listen to storage changes
// chrome.storage.onChanged.addListener(function(changes, namespace) {
//   for (key in changes) {
//     var storageChange = changes[key]
//     if (storageChange.oldValue && !storageChange.newValue) {
//       // was removed
//       removeTransaction(storageChange.oldValue)
//     } else if (!storageChange.oldValue && storageChange.newValue) {
//       // was added
//       addTransaction(deserializeTx(storageChange.newValue))
//     }
//   }
// })

// setup badge text
// updateBadge()

// function updateBadge(){
//   var label = ''
//   var count = Object.keys(unsignedTxs).length
//   if (count) {
//     label = String(count)
//   }
//   chrome.browserAction.setBadgeText({text: label})
//   chrome.browserAction.setBadgeBackgroundColor({color: '#506F8B'})
// }

// function handleMessage(msg){
//   console.log('got message!', msg.type)
//   switch(msg.type){
    
//     case 'addUnsignedTx':
//       addTransaction(msg.payload)
//       return

//     case 'removeUnsignedTx':
//       removeTransaction(msg.payload)
//       return

//   }
// }

// function addTransaction(tx){
//   var serialized = serializeTx(tx)
//   var hash = simpleHash(serialized)
//   unsignedTxs[hash] = tx
//   var data = {}
//   data[hash] = serialized
//   chrome.storage.sync.set(data)
//   // trigger ui changes
//   updateBadge()
// }

// function removeTransaction(serialized){
//   var hash = simpleHash(serialized)
//   delete unsignedTxs[hash]
//   var data = {}
//   data[hash] = undefined
//   chrome.storage.sync.set(data)
//   // trigger ui changes
//   updateBadge()
// }

// function exportUnsignedTxs(remote){
//   console.log('exporting txs!', unsignedTxs)
//   var data = {
//     type: 'importUnsignedTxs',
//     payload: getValues(unsignedTxs),
//   }
//   remote.postMessage(data)
// }

// function simpleHash(input) {
//   var hash = 0, i, chr, len
//   if (input.length == 0) return hash
//   for (i = 0, len = input.length; i < len; i++) {
//     chr   = input.charCodeAt(i)
//     hash  = ((hash << 5) - hash) + chr
//     hash |= 0 // Convert to 32bit integer
//   }
//   return hash
// }

// function serializeTx(tx){
//   return JSON.stringify(tx)
// }

// function deserializeTx(tx){
//   return JSON.parse(tx)
// }

// function getValues(obj){
//   var output = []
//   for (var key in obj) {
//     output.push(obj[key])
//   }
//   return output
// }