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()
12 window.bytomAPI = bytom
16 const network = localStorage.bytomNet||'mainnet'
17 bytom.setupNet(network)
19 window.addEventListener('storage', storageEventHandler, false);
20 function storageEventHandler(evt){
21 if(evt.key === 'bytomNet'){
22 bytom.setupNet( evt.newValue )
27 setupInternalMessaging() {
28 LocalStream.watch((request, sendResponse) => {
30 const message = InternalMessage.fromJson(request)
31 this.dispatchMessage(sendResponse, message)
35 dispatchMessage(sendResponse, message) {
36 switch (message.type) {
37 case MsgTypes.TRANSFER:
38 this.transfer(sendResponse, message.payload)
40 case MsgTypes.ADVTRANSFER:
41 this.advancedTransfer(sendResponse, message.payload)
44 this.send(sendResponse, message.payload)
49 transfer(sendResponse, payload) {
50 var promptURL = chrome.extension.getURL('pages/prompt.html')
51 var queryString = new URLSearchParams(payload).toString()
52 console.log(promptURL, queryString)
53 chrome.windows.create(
55 url: `${promptURL}#transfer?${queryString}`,
68 advancedTransfer(sendResponse, payload) {
69 var promptURL = chrome.extension.getURL('pages/prompt.html')
70 var queryString = 'object='+JSON.stringify(payload)
71 console.log(promptURL, queryString)
72 chrome.windows.create(
74 url: `${promptURL}#advancedTransfer?${queryString}`,
82 chrome.runtime.onMessage.addListener(function(request, sender) {
83 if(sender.tab.windowId === window.id){
84 switch (request.method){
85 case 'advanced-transfer':
86 sendResponse(request);
95 send(sendResponse, payload) {
96 const action = payload.action
97 const body = payload.body
103 const guid = body.guid
104 promise = accountAction.balance(guid, id)
106 case 'currentAccount':
107 let account = JSON.parse(localStorage.currentAccount)
108 sendResponse(account)
110 case 'listAllAccount':
111 promise = accountAction.list()