diff --git a/src/common.ts b/src/common.ts index 05996f331b114a4b1b43736206d4ae669b0051bc..16cadba6691fedc8bcb28b1a49fbdfe3f98adb24 100644 --- a/src/common.ts +++ b/src/common.ts @@ -1,11 +1,9 @@ import type { ApiPromise } from '@polkadot/api' -import { web3FromAddress } from '@polkadot/extension-dapp' import type { Vec, u32 } from '@polkadot/types-codec' import type { ISubmittableResult, RegistryError } from '@polkadot/types/types' import type { Ref } from 'vue' import { loginAccount } from './global' import type { SubmittableExtrinsic } from '@polkadot/api/promise/types' -import type { AugmentedSubmittable } from '@polkadot/api-base/types' /// fetch authorities export function fetchAuthorities( @@ -36,7 +34,9 @@ export async function signAndSend( successCallback: () => void ) { const address = loginAccount.value!.address - const injector = await web3FromAddress(address) + const injector = await import('@polkadot/extension-dapp').then((web3) => + web3.web3FromAddress(address) + ) try { await tx.signAndSend( address, diff --git a/src/login.ts b/src/login.ts index f3257ceaccd08c605b6e58b4877be7309b55b5d4..33257a15fc3b5949eb3345c119c16d9f86d02724 100644 --- a/src/login.ts +++ b/src/login.ts @@ -17,7 +17,6 @@ import type { import type { InjectedAccountWithMeta } from '@polkadot/extension-inject/types' import type { ApiPromise } from '@polkadot/api' import { type u32, Option } from '@polkadot/types-codec' -import { web3Accounts } from '@polkadot/extension-dapp' import type { IdtyNameQuery } from '@/generated/squid' import { getItem, setItem, sk } from './storage' import { IdtyName } from '@/squid/wot.gql' @@ -31,7 +30,8 @@ export async function tryConnectAccount( api: ApiPromise, apollo: ApolloClient<NormalizedCacheObject> ) { - if (allAccounts.value.length == 0) allAccounts.value = await web3Accounts() + if (allAccounts.value.length == 0) + allAccounts.value = await import('@polkadot/extension-dapp').then((web3) => web3.web3Accounts()) const allAcc = allAccounts.value allAccounts.value = allAcc const defaultLogin = getItem<string>(sk.defaultAccount) diff --git a/src/main.ts b/src/main.ts index 02a7335927eff133edaa0c60aa6780dc7a34ee01..54dde6ecbf42f3d80d457f460a7aa856d6767f42 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,7 +3,6 @@ import { createApp } from 'vue' import App from './App.vue' import router from './router' import { initStateFromStorage, initStateFromApis } from './global' -import { web3Enable } from '@polkadot/extension-dapp' import { initLocalStorage } from './storage' import { initDatapod, initRpc, initSquid, initp2p } from './network' import { ApolloClients } from '@vue/apollo-composable' @@ -12,9 +11,6 @@ import { ApolloClients } from '@vue/apollo-composable' initLocalStorage() initStateFromStorage() -// ask browser extension for web3 support -web3Enable('duniter-vue') - // ===== APP ===== const app = createApp(App) @@ -32,3 +28,7 @@ Promise.all([initRpc(), initSquid(), initDatapod()]).then(([api, apolloSquid, ap // also provide datapod ipfs stack initp2p().then((p2p) => app.provide('p2p', p2p)) + +// === dynamic imports === +// ask browser extension for web3 support +import('@polkadot/extension-dapp').then((web3) => web3.web3Enable('duniter-vue'))