OSDN Git Service

add convertargument and create pubkey
[bytom/Byone.git] / src / background.js
1 import { LocalStream } from 'extension-streams'
2 import InternalMessage from '@/messages/internal'
3 import * as MsgTypes from './messages/types'
4
5 import accountAction from "@/models/account";
6 import bytom from "@/models/bytom";
7
8 export default class Background {
9   constructor() {
10     this.setupInternalMessaging()
11     this.setupBytom()
12     window.bytomAPI = bytom
13   }
14
15   setupBytom(){
16     const network = localStorage.bytomNet||'mainnet'
17     bytom.setupNet(network)
18
19     window.addEventListener('storage', storageEventHandler, false);
20     function storageEventHandler(evt){
21       if(evt.key === 'bytomNet'){
22         bytom.setupNet( evt.newValue )
23       }
24     }
25   }
26
27   setupInternalMessaging() {
28     LocalStream.watch((request, sendResponse) => {
29       console.log(request)
30       const message = InternalMessage.fromJson(request)
31       this.dispatchMessage(sendResponse, message)
32     })
33   }
34
35   dispatchMessage(sendResponse, message) {
36     switch (message.type) {
37       case MsgTypes.TRANSFER:
38         this.transfer(sendResponse, message.payload)
39         break
40       case MsgTypes.ADVTRANSFER:
41         this.advancedTransfer(sendResponse, message.payload)
42         break
43       case MsgTypes.SEND:
44         this.send(sendResponse, message.payload)
45         break
46     }
47   }
48
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(
54       {
55         url: `${promptURL}#transfer?${queryString}`,
56         type: 'popup',
57         width: 350,
58         height: 623,
59         top: 0,
60         left: 0
61       },
62       () => {
63         sendResponse(true)
64       }
65     )
66   }
67
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(
73       {
74         url: `${promptURL}#advancedTransfer?${queryString}`,
75         type: 'popup',
76         width: 350,
77         height: 623,
78         top: 0,
79         left: 0
80       },
81       (window) => {
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);
87                 break
88             }
89           }
90         });
91       }
92     )
93   }
94
95   send(sendResponse, payload) {
96     const action = payload.action
97     const body = payload.body
98     if(action){
99       let promise
100       switch (action){
101         case 'balance':
102           const id = body.id
103           const guid = body.guid
104           promise = accountAction.balance(guid, id)
105           break
106         case 'currentAccount':
107           let account = JSON.parse(localStorage.currentAccount)
108           sendResponse(account)
109           break
110         case 'listAllAccount':
111           promise = accountAction.list()
112           break
113       }
114       if(promise){
115         promise.then(resp =>
116         {
117           sendResponse(resp)
118         })
119       }
120     }
121   }
122 }
123
124 new Background()