1 import { LocalStream } from 'extension-streams'
2 import InternalMessage from '@/messages/internal'
3 import * as MsgTypes from './messages/types'
5 import accountAction from "@/models/account";
6 import bytom from "@/models/bytom";
8 export default class Background {
10 this.setupInternalMessaging()
15 const network = localStorage.bytomNet||'mainnet'
16 bytom.setupNet(network)
18 window.addEventListener('storage', storageEventHandler, false);
19 function storageEventHandler(evt){
20 if(evt.key === 'bytomNet'){
21 bytom.setupNet( evt.newValue )
26 setupInternalMessaging() {
27 LocalStream.watch((request, sendResponse) => {
29 const message = InternalMessage.fromJson(request)
30 this.dispatchMessage(sendResponse, message)
34 dispatchMessage(sendResponse, message) {
35 switch (message.type) {
36 case MsgTypes.TRANSFER:
37 this.transfer(sendResponse, message.payload)
39 case MsgTypes.ADVTRANSFER:
40 this.advancedTransfer(sendResponse, message.payload)
43 this.send(sendResponse, message.payload)
48 transfer(sendResponse, payload) {
49 var promptURL = chrome.extension.getURL('pages/prompt.html')
50 var queryString = new URLSearchParams(payload).toString()
51 console.log(promptURL, queryString)
52 chrome.windows.create(
54 url: `${promptURL}#transfer?${queryString}`,
67 advancedTransfer(sendResponse, payload) {
68 var promptURL = chrome.extension.getURL('pages/prompt.html')
69 var queryString = 'object='+JSON.stringify(payload)
70 console.log(promptURL, queryString)
71 chrome.windows.create(
73 url: `${promptURL}#advancedTransfer?${queryString}`,
81 chrome.runtime.onMessage.addListener(function(request, sender) {
82 if(sender.tab.windowId === window.id){
83 switch (request.method){
84 case 'advanced-transfer':
85 sendResponse(request);
94 send(sendResponse, payload) {
95 const action = payload.action
96 const body = payload.body
100 case 'listAllAccount':
101 promise = accountAction.list()
103 case 'currentAccount':
104 let account = JSON.parse(localStorage.currentAccount)
105 sendResponse(account)
109 const guid = body.guid
110 promise = accountAction.balance(guid, id)