page.ts 1.07 KiB
Newer Older
Andrei Eres's avatar
Andrei Eres committed
import { Message } from '@polkadot/extension-base/types'
Andrei Eres's avatar
Andrei Eres committed
import { injectExtension } from '@polkadot/extension-inject'
import { enable, redirectIfPhishing } from './messaging/pageActions'
import { handleResponse } from './messaging/handleResponse'
import {
  MESSAGE_ORIGIN_CONTENT,
  PKG_NAME,
  PKG_VERSION,
} from './utils/constants'
Andrei Eres's avatar
Andrei Eres committed
import { isMessageAllowed } from './utils/isMessageAllowed'
Andrei Eres's avatar
Andrei Eres committed
window.addEventListener('message', (message: Message) => {
  if (!isMessageAllowed(message, MESSAGE_ORIGIN_CONTENT)) return
Andrei Eres's avatar
Andrei Eres committed
  if (!message.data.id) return console.error('Missing id for response.')
Andrei Eres's avatar
Andrei Eres committed
  handleResponse(message.data as any) // eslint-disable-line @typescript-eslint/no-explicit-any
Andrei Eres's avatar
Andrei Eres committed
})

redirectIfPhishing()
  .then((gotRedirected) => {
Andrei Eres's avatar
Andrei Eres committed
    if (!gotRedirected) inject()
Andrei Eres's avatar
Andrei Eres committed
  })
Andrei Eres's avatar
Andrei Eres committed
  .catch((e: Error) => {
Andrei Eres's avatar
Andrei Eres committed
    console.warn(
Andrei Eres's avatar
Andrei Eres committed
      `Unable to determine if the site is in the phishing list: ${e.message}`
Andrei Eres's avatar
Andrei Eres committed
    )
    inject()
  })

function inject() {
Andrei Eres's avatar
Andrei Eres committed
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  injectExtension(enable as any, { name: PKG_NAME, version: PKG_VERSION })