background.ts 1.18 KiB
Newer Older
Andrei Eres's avatar
Andrei Eres committed
import handlers from '@polkadot/extension-base/background/handlers'
import { PORT_CONTENT, PORT_EXTENSION } from '@polkadot/extension-base/defaults'
import { AccountsStore } from '@polkadot/extension-base/stores'
import keyring from '@polkadot/ui-keyring'
import { assert } from '@polkadot/util'
import { cryptoWaitReady } from '@polkadot/util-crypto'
Andrei Eres's avatar
Andrei Eres committed
import chrome from '@polkadot/extension-inject/chrome'
Andrei Eres's avatar
Andrei Eres committed

// setup the notification (same a FF default background, white text)
void chrome.browserAction.setBadgeBackgroundColor({ color: '#d90000' })

Andrei Eres's avatar
Andrei Eres committed
chrome.runtime.onConnect.addListener((port) => {
Andrei Eres's avatar
Andrei Eres committed
  // shouldn't happen, however... only listen to what we know about
  assert(
    [PORT_CONTENT, PORT_EXTENSION].includes(port.name),
    `Unknown connection from ${port.name}`
  )

  port.onMessage.addListener((data) => handlers(data, port))
  port.onDisconnect.addListener(() =>
    console.log(`Disconnected from ${port.name}`)
  )
})

cryptoWaitReady()
Andrei Eres's avatar
Andrei Eres committed
  .then(() => {
Andrei Eres's avatar
Andrei Eres committed
    console.log('crypto initialized')
    keyring.loadAll({ store: new AccountsStore(), type: 'sr25519' })
    console.log('initialization completed')
  })
Andrei Eres's avatar
Andrei Eres committed
  .catch((error) => {
Andrei Eres's avatar
Andrei Eres committed
    console.error('initialization failed', error)
  })