function storageEventHandler(evt){
if(evt.key === 'bytomNet'){
bytom.setupNet( evt.newValue )
+ chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
+ chrome.tabs.sendMessage(tabs[0].id, {action: "updateNetAndAccounts"}, function(response) {});
+ });
+ }else if(evt.key === 'currentAccount'){
+ chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
+ chrome.tabs.sendMessage(tabs[0].id, {action: "updateAccount"}, function(response) {});
+ });
}
}
}
document.dispatchEvent(new CustomEvent('chromeBytomLoaded'))
})
+
+ chrome.runtime.onMessage.addListener(async (obj) => {
+ switch (obj.action) {
+ case 'updateAccount':
+ const defaultAccount = await this.getDefaultAccount();
+ if(defaultAccount){
+ stream.send(
+ NetworkMessage.payload(MsgTypes.UPDATE_BYTOM, {type:'default_account', value: defaultAccount}),
+ EventNames.INJECT
+ )
+ }
+ break
+ case 'updateNetAndAccounts':
+ const net = await this.getDefaultNetwork();
+ const accountList = await this.getAccountList();
+ stream.send(
+ NetworkMessage.payload(MsgTypes.UPDATE_BYTOM, {type:'net', value: net}),
+ EventNames.INJECT
+ )
+ stream.send(
+ NetworkMessage.payload(MsgTypes.UPDATE_BYTOM, {type:'accounts', value: accountList}),
+ EventNames.INJECT
+ )
+ break
+ }
+ return true;
+ })
}
+
contentListener(msg) {
console.log('content.stream.listen:', msg, stream.key)
) {
window.bytom = new Bytomdapp(stream, msg.payload)
}
+
+ if (
+ msg &&
+ msg.hasOwnProperty('type') &&
+ msg.type === MsgTypes.UPDATE_BYTOM
+ ) {
+ window.bytom[msg.payload.type] = msg.payload.value
+ }
})
// Syncing the streams between the extension and the web application
export const ERROR = 'error'
export const PUSH_BYTOM = 'pushBytom'
+export const UPDATE_BYTOM = 'updateBytom'
export const AUTHENTICATE = 'authenticate'
export const TRANSFER = 'transfer'
export const ADVTRANSFER = 'advTransfer'