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 requestBody = payload
52 requestBody.type = "popup"
53 var queryString = new URLSearchParams(requestBody).toString()
54 console.log(promptURL, queryString)
55 chrome.windows.create(
57 url: `${promptURL}#transfer?${queryString}`,
65 chrome.runtime.onMessage.addListener(function(request, sender) {
66 if(sender.tab.windowId === window.id){
67 switch (request.method){
69 sendResponse(request);
79 advancedTransfer(sendResponse, payload) {
80 var promptURL = chrome.extension.getURL('pages/prompt.html')
81 var queryString = 'object='+JSON.stringify(payload)
82 console.log(promptURL, queryString)
83 chrome.windows.create(
85 url: `${promptURL}#advancedTransfer?${queryString}`,
93 chrome.runtime.onMessage.addListener(function(request, sender) {
94 if(sender.tab.windowId === window.id){
95 switch (request.method){
96 case 'advanced-transfer':
97 sendResponse(request);
106 send(sendResponse, payload) {
107 const action = payload.action
108 const body = payload.body
114 const guid = body.guid
115 promise = accountAction.balance(guid, id)
117 case 'currentAccount':
118 const account = JSON.parse(localStorage.currentAccount)
119 sendResponse(account)
121 case 'currentNetwork':
122 const network = JSON.parse(localStorage.bytomNet)
123 sendResponse(network)
125 case 'listAllAccount':
126 promise = accountAction.list()