@w3ux/react-connect-kit 1.2.1 → 1.3.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/ExtensionAccountsProvider/Extensions.js +129 -0
- package/cjs/ExtensionAccountsProvider/Extensions.js.map +1 -0
- package/cjs/ExtensionAccountsProvider/defaults.js +20 -0
- package/cjs/ExtensionAccountsProvider/defaults.js.map +1 -0
- package/cjs/ExtensionAccountsProvider/index.js +242 -0
- package/cjs/ExtensionAccountsProvider/index.js.map +1 -0
- package/cjs/ExtensionAccountsProvider/snap.js +73 -0
- package/cjs/ExtensionAccountsProvider/snap.js.map +1 -0
- package/cjs/ExtensionAccountsProvider/types.js +6 -0
- package/cjs/ExtensionAccountsProvider/types.js.map +1 -0
- package/cjs/ExtensionAccountsProvider/useImportExtension.js +53 -0
- package/cjs/ExtensionAccountsProvider/useImportExtension.js.map +1 -0
- package/cjs/ExtensionAccountsProvider/utils.js +47 -0
- package/cjs/ExtensionAccountsProvider/utils.js.map +1 -0
- package/cjs/ExtensionsProvider/defaults.js +16 -0
- package/cjs/ExtensionsProvider/defaults.js.map +1 -0
- package/cjs/ExtensionsProvider/index.js +117 -0
- package/cjs/ExtensionsProvider/index.js.map +1 -0
- package/cjs/ExtensionsProvider/types.js +6 -0
- package/cjs/ExtensionsProvider/types.js.map +1 -0
- package/cjs/ExtensionsProvider/utils.js +40 -0
- package/cjs/ExtensionsProvider/utils.js.map +1 -0
- package/cjs/LedgerAccountsProvider/defaults.js +16 -0
- package/cjs/LedgerAccountsProvider/defaults.js.map +1 -0
- package/cjs/LedgerAccountsProvider/index.js +88 -0
- package/cjs/LedgerAccountsProvider/index.js.map +1 -0
- package/cjs/LedgerAccountsProvider/types.js +6 -0
- package/cjs/LedgerAccountsProvider/types.js.map +1 -0
- package/cjs/LedgerAccountsProvider/utils.js +34 -0
- package/cjs/LedgerAccountsProvider/utils.js.map +1 -0
- package/cjs/VaultAccountsProvider/defaults.js +16 -0
- package/cjs/VaultAccountsProvider/defaults.js.map +1 -0
- package/cjs/VaultAccountsProvider/index.js +88 -0
- package/cjs/VaultAccountsProvider/index.js.map +1 -0
- package/cjs/VaultAccountsProvider/types.js +6 -0
- package/cjs/VaultAccountsProvider/types.js.map +1 -0
- package/cjs/VaultAccountsProvider/utils.js +17 -0
- package/cjs/VaultAccountsProvider/utils.js.map +1 -0
- package/cjs/index.js +24 -0
- package/cjs/index.js.map +1 -0
- package/cjs/types.js +24 -0
- package/cjs/types.js.map +1 -0
- package/mjs/ExtensionAccountsProvider/Extensions.d.ts +13 -0
- package/mjs/ExtensionAccountsProvider/Extensions.js +114 -0
- package/mjs/ExtensionAccountsProvider/Extensions.js.map +1 -0
- package/mjs/ExtensionAccountsProvider/defaults.d.ts +10 -0
- package/mjs/ExtensionAccountsProvider/defaults.js +17 -0
- package/mjs/ExtensionAccountsProvider/defaults.js.map +1 -0
- package/mjs/ExtensionAccountsProvider/index.d.ts +5 -0
- package/mjs/ExtensionAccountsProvider/index.js +227 -0
- package/mjs/ExtensionAccountsProvider/index.js.map +1 -0
- package/mjs/ExtensionAccountsProvider/snap.d.ts +2 -0
- package/mjs/ExtensionAccountsProvider/snap.js +60 -0
- package/mjs/ExtensionAccountsProvider/snap.js.map +1 -0
- package/mjs/ExtensionAccountsProvider/types.d.ts +24 -0
- package/mjs/ExtensionAccountsProvider/types.js +5 -0
- package/mjs/ExtensionAccountsProvider/types.js.map +1 -0
- package/mjs/ExtensionAccountsProvider/useImportExtension.d.ts +6 -0
- package/mjs/ExtensionAccountsProvider/useImportExtension.js +45 -0
- package/mjs/ExtensionAccountsProvider/useImportExtension.js.map +1 -0
- package/mjs/ExtensionAccountsProvider/utils.d.ts +8 -0
- package/mjs/ExtensionAccountsProvider/utils.js +34 -0
- package/mjs/ExtensionAccountsProvider/utils.js.map +1 -0
- package/mjs/ExtensionsProvider/defaults.d.ts +2 -0
- package/mjs/ExtensionsProvider/defaults.js +13 -0
- package/mjs/ExtensionsProvider/defaults.js.map +1 -0
- package/mjs/ExtensionsProvider/index.d.ts +11 -0
- package/mjs/ExtensionsProvider/index.js +106 -0
- package/mjs/ExtensionsProvider/index.js.map +1 -0
- package/mjs/ExtensionsProvider/types.d.ts +44 -0
- package/mjs/ExtensionsProvider/types.js +5 -0
- package/mjs/ExtensionsProvider/types.js.map +1 -0
- package/mjs/ExtensionsProvider/utils.d.ts +20 -0
- package/mjs/ExtensionsProvider/utils.js +26 -0
- package/mjs/ExtensionsProvider/utils.js.map +1 -0
- package/mjs/LedgerAccountsProvider/defaults.d.ts +2 -0
- package/mjs/LedgerAccountsProvider/defaults.js +13 -0
- package/mjs/LedgerAccountsProvider/defaults.js.map +1 -0
- package/mjs/LedgerAccountsProvider/index.d.ts +5 -0
- package/mjs/LedgerAccountsProvider/index.js +87 -0
- package/mjs/LedgerAccountsProvider/index.js.map +1 -0
- package/mjs/LedgerAccountsProvider/types.d.ts +21 -0
- package/mjs/LedgerAccountsProvider/types.js +5 -0
- package/mjs/LedgerAccountsProvider/types.js.map +1 -0
- package/mjs/LedgerAccountsProvider/utils.d.ts +9 -0
- package/mjs/LedgerAccountsProvider/utils.js +29 -0
- package/mjs/LedgerAccountsProvider/utils.js.map +1 -0
- package/mjs/VaultAccountsProvider/defaults.d.ts +2 -0
- package/mjs/VaultAccountsProvider/defaults.js +13 -0
- package/mjs/VaultAccountsProvider/defaults.js.map +1 -0
- package/mjs/VaultAccountsProvider/index.d.ts +5 -0
- package/mjs/VaultAccountsProvider/index.js +86 -0
- package/mjs/VaultAccountsProvider/index.js.map +1 -0
- package/mjs/VaultAccountsProvider/types.d.ts +15 -0
- package/mjs/VaultAccountsProvider/types.js +5 -0
- package/mjs/VaultAccountsProvider/types.js.map +1 -0
- package/mjs/VaultAccountsProvider/utils.d.ts +6 -0
- package/mjs/VaultAccountsProvider/utils.js +12 -0
- package/mjs/VaultAccountsProvider/utils.js.map +1 -0
- package/{index.js → mjs/index.d.ts} +0 -2
- package/mjs/index.js +8 -0
- package/mjs/index.js.map +1 -0
- package/mjs/types.d.ts +39 -0
- package/{types.js → mjs/types.js} +2 -0
- package/mjs/types.js.map +1 -0
- package/package.json +12 -5
- package/ExtensionAccountsProvider/Extensions.js +0 -206
- package/ExtensionAccountsProvider/Extensions.js.map +0 -1
- package/ExtensionAccountsProvider/defaults.js +0 -15
- package/ExtensionAccountsProvider/defaults.js.map +0 -1
- package/ExtensionAccountsProvider/index.js +0 -344
- package/ExtensionAccountsProvider/index.js.map +0 -1
- package/ExtensionAccountsProvider/snap.js +0 -129
- package/ExtensionAccountsProvider/snap.js.map +0 -1
- package/ExtensionAccountsProvider/types.js +0 -3
- package/ExtensionAccountsProvider/types.js.map +0 -1
- package/ExtensionAccountsProvider/useImportExtension.js +0 -65
- package/ExtensionAccountsProvider/useImportExtension.js.map +0 -1
- package/ExtensionAccountsProvider/utils.js +0 -37
- package/ExtensionAccountsProvider/utils.js.map +0 -1
- package/ExtensionsProvider/defaults.js +0 -11
- package/ExtensionsProvider/defaults.js.map +0 -1
- package/ExtensionsProvider/index.js +0 -165
- package/ExtensionsProvider/index.js.map +0 -1
- package/ExtensionsProvider/types.js +0 -3
- package/ExtensionsProvider/types.js.map +0 -1
- package/ExtensionsProvider/utils.js +0 -78
- package/ExtensionsProvider/utils.js.map +0 -1
- package/LedgerAccountsProvider/defaults.js +0 -11
- package/LedgerAccountsProvider/defaults.js.map +0 -1
- package/LedgerAccountsProvider/index.js +0 -116
- package/LedgerAccountsProvider/index.js.map +0 -1
- package/LedgerAccountsProvider/types.js +0 -3
- package/LedgerAccountsProvider/types.js.map +0 -1
- package/LedgerAccountsProvider/utils.js +0 -38
- package/LedgerAccountsProvider/utils.js.map +0 -1
- package/VaultAccountsProvider/defaults.js +0 -11
- package/VaultAccountsProvider/defaults.js.map +0 -1
- package/VaultAccountsProvider/index.js +0 -112
- package/VaultAccountsProvider/index.js.map +0 -1
- package/VaultAccountsProvider/types.js +0 -3
- package/VaultAccountsProvider/types.js.map +0 -1
- package/VaultAccountsProvider/utils.js +0 -10
- package/VaultAccountsProvider/utils.js.map +0 -1
- package/index.js.map +0 -1
- package/types.js.map +0 -1
- /package/{ExtensionAccountsProvider → cjs/ExtensionAccountsProvider}/Extensions.d.ts +0 -0
- /package/{ExtensionAccountsProvider → cjs/ExtensionAccountsProvider}/defaults.d.ts +0 -0
- /package/{ExtensionAccountsProvider → cjs/ExtensionAccountsProvider}/index.d.ts +0 -0
- /package/{ExtensionAccountsProvider → cjs/ExtensionAccountsProvider}/snap.d.ts +0 -0
- /package/{ExtensionAccountsProvider → cjs/ExtensionAccountsProvider}/types.d.ts +0 -0
- /package/{ExtensionAccountsProvider → cjs/ExtensionAccountsProvider}/useImportExtension.d.ts +0 -0
- /package/{ExtensionAccountsProvider → cjs/ExtensionAccountsProvider}/utils.d.ts +0 -0
- /package/{ExtensionsProvider → cjs/ExtensionsProvider}/defaults.d.ts +0 -0
- /package/{ExtensionsProvider → cjs/ExtensionsProvider}/index.d.ts +0 -0
- /package/{ExtensionsProvider → cjs/ExtensionsProvider}/types.d.ts +0 -0
- /package/{ExtensionsProvider → cjs/ExtensionsProvider}/utils.d.ts +0 -0
- /package/{LedgerAccountsProvider → cjs/LedgerAccountsProvider}/defaults.d.ts +0 -0
- /package/{LedgerAccountsProvider → cjs/LedgerAccountsProvider}/index.d.ts +0 -0
- /package/{LedgerAccountsProvider → cjs/LedgerAccountsProvider}/types.d.ts +0 -0
- /package/{LedgerAccountsProvider → cjs/LedgerAccountsProvider}/utils.d.ts +0 -0
- /package/{VaultAccountsProvider → cjs/VaultAccountsProvider}/defaults.d.ts +0 -0
- /package/{VaultAccountsProvider → cjs/VaultAccountsProvider}/index.d.ts +0 -0
- /package/{VaultAccountsProvider → cjs/VaultAccountsProvider}/types.d.ts +0 -0
- /package/{VaultAccountsProvider → cjs/VaultAccountsProvider}/utils.d.ts +0 -0
- /package/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/{types.d.ts → cjs/types.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ExtensionAccountsProvider/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport { createContext, useContext, useEffect, useRef, useState } from \"react\";\nimport { localStorageOrDefault, setStateWithRef } from \"@w3ux/utils\";\nimport { DEFAULT_SS58, defaultExtensionAccountsContext } from \"./defaults\";\nimport { ImportedAccount } from \"../types\";\nimport {\n ExtensionAccount,\n ExtensionInterface,\n} from \"../ExtensionsProvider/types\";\nimport {\n ExtensionAccountsContextInterface,\n ExtensionAccountsProviderProps,\n} from \"./types\";\nimport { useImportExtension } from \"./useImportExtension\";\nimport { initPolkadotSnap } from \"./snap\";\nimport { SnapNetworks } from \"@chainsafe/metamask-polkadot-types\";\nimport { Extensions } from \"./Extensions\";\nimport {\n connectActiveExtensionAccount,\n getActiveAccountLocal,\n getActiveExtensionAccount,\n} from \"./utils\";\nimport { useExtensions } from \"../ExtensionsProvider\";\nimport { useEffectIgnoreInitial } from \"@w3ux/hooks\";\nimport Keyring from \"@polkadot/keyring\";\nimport { AnyFunction, Sync, VoidFn } from \"@w3ux/types\";\n\nexport const ExtensionAccountsContext =\n createContext<ExtensionAccountsContextInterface>(\n defaultExtensionAccountsContext\n );\n\nexport const useExtensionAccounts = () => useContext(ExtensionAccountsContext);\n\nexport const ExtensionAccountsProvider = ({\n children,\n network,\n dappName,\n activeAccount,\n setActiveAccount,\n onExtensionEnabled,\n}: ExtensionAccountsProviderProps) => {\n const { handleImportExtension } = useImportExtension();\n\n const {\n extensionsStatus,\n setExtensionStatus,\n removeExtensionStatus,\n checkingInjectedWeb3,\n extensionHasFeature,\n } = useExtensions();\n\n // Store connected extension accounts.\n const [extensionAccounts, setExtensionAccounts] = useState<ImportedAccount[]>(\n []\n );\n const extensionAccountsRef = useRef(extensionAccounts);\n\n // Store whether extension accounts have been synced.\n const [extensionAccountsSynced, setExtensionAccountsSynced] =\n useState<Sync>(\"unsynced\");\n\n // Store extensions whose account subscriptions have been initialised.\n const [extensionsInitialised, setExtensionsInitialised] = useState<string[]>(\n []\n );\n const extensionsInitialisedRef = useRef(extensionsInitialised);\n\n // Store unsubscribe handlers for connected extensions.\n const unsubs = useRef<Record<string, VoidFn>>({});\n\n // Helper for setting active account. Ignores if not a valid function.\n const maybeSetActiveAccount = (address: string) => {\n if (typeof setActiveAccount === \"function\") {\n setActiveAccount(address ?? null);\n }\n };\n\n // Helper for calling extension enabled callback. Ignores if not a valid function.\n const maybeOnExtensionEnabled = (id: string) => {\n if (typeof onExtensionEnabled === \"function\") {\n onExtensionEnabled(id);\n }\n };\n\n const connectToAccount = (account: ImportedAccount | null) => {\n maybeSetActiveAccount(account?.address ?? null);\n };\n\n // connectActiveExtensions\n //\n // Connects to extensions that already have been connected to and stored in localStorage. Loop\n // through extensions and connect to accounts. If `activeAccount` exists locally, we wait until\n // all extensions are looped before connecting to it; there is no guarantee it still exists - must\n // explicitly find it.\n const connectActiveExtensions = async () => {\n const extensionIds = Object.keys(extensionsStatus);\n if (!extensionIds.length) {\n return;\n }\n\n // Pre-connect: Inject extensions into `injectedWeb3` if not already injected.\n await handleExtensionAdapters(extensionIds);\n\n // Iterate previously connected extensions and retreive valid `enable` functions.\n // ------------------------------------------------------------------------------\n const rawExtensions = Extensions.getFromIds(extensionIds);\n\n // Attempt to connect to extensions via `enable` and format the results.\n const enableResults = Extensions.formatEnabled(\n rawExtensions,\n await Extensions.enable(rawExtensions, dappName)\n );\n\n // Retrieve the resulting connected extensions only.\n const connectedExtensions = Extensions.connected(enableResults);\n\n // Retrieve extensions that failed to connect.\n const extensionsWithError = Extensions.withError(enableResults);\n\n // Add connected extensions to local storage.\n Array.from(connectedExtensions.keys()).forEach((id) =>\n Extensions.addToLocal(id)\n );\n\n // Initial fetch of extension accounts to populate accounts & extensions state.\n // ----------------------------------------------------------------------------\n\n // Get full list of imported accounts.\n const initialAccounts =\n await Extensions.getAllAccounts(connectedExtensions);\n\n // Connect to the active account if found in initial accounts.\n const activeAccountInInitial = initialAccounts.find(\n ({ address }) => address === getActiveAccountLocal(network)\n );\n\n // Perform all initial state updates.\n // ----------------------------------\n\n Array.from(extensionsWithError.entries()).forEach(([id, state]) => {\n handleExtensionError(id, state.error);\n });\n\n Array.from(connectedExtensions.keys()).forEach((id) => {\n setExtensionStatus(id, \"connected\");\n updateInitialisedExtensions(id);\n });\n\n updateExtensionAccounts({ add: initialAccounts, remove: [] });\n\n if (activeAccountInInitial) {\n connectActiveExtensionAccount(activeAccountInInitial, connectToAccount);\n }\n\n // Initiate account subscriptions for connected extensions.\n // --------------------------------------------------------\n\n // Handler function for each extension accounts subscription.\n const handleAccounts = (\n extensionId: string,\n accounts: ExtensionAccount[],\n signer: AnyFunction\n ) => {\n const {\n newAccounts,\n meta: { accountsToRemove },\n } = handleImportExtension(\n extensionId,\n extensionAccountsRef.current,\n signer,\n accounts,\n network\n );\n\n // Update added and removed accounts.\n updateExtensionAccounts({ add: newAccounts, remove: accountsToRemove });\n };\n\n // Try to subscribe to accounts for each connected extension.\n for (const [id, { extension }] of Array.from(\n connectedExtensions.entries()\n )) {\n // If enabled, subscribe to accounts.\n if (extensionHasFeature(id, \"subscribeAccounts\")) {\n const unsub = extension.accounts.subscribe((accounts) => {\n handleAccounts(id, accounts || [], extension.signer);\n });\n\n // Add unsub to context ref.\n addToUnsubscribe(id, unsub);\n }\n }\n };\n\n // connectExtensionAccounts\n //\n // Similar to the above but only connects to a single extension. This is invoked by the user by\n // clicking on an extension. If activeAccount is not found here, it is simply ignored.\n const connectExtensionAccounts = async (id: string): Promise<boolean> => {\n const extensionIds = Object.keys(extensionsStatus);\n const exists = extensionIds.find((key) => key === id) || undefined;\n\n if (!exists) {\n updateInitialisedExtensions(\n `unknown_extension_${extensionsInitialisedRef.current.length + 1}`\n );\n } else {\n // Pre-connect: Inject into `injectedWeb3` if the provided extension is not already injected.\n await handleExtensionAdapters([id]);\n\n try {\n // Attempt to get extension `enable` property.\n const { enable } = window.injectedWeb3[id];\n\n // Summons extension popup.\n const extension: ExtensionInterface = await enable(dappName);\n\n // Continue if `enable` succeeded, and if the current network is supported.\n if (extension !== undefined) {\n // Handler for new accounts.\n const handleAccounts = (accounts: ExtensionAccount[]) => {\n const {\n newAccounts,\n meta: { removedActiveAccount, accountsToRemove },\n } = handleImportExtension(\n id,\n extensionAccountsRef.current,\n extension.signer,\n accounts,\n network\n );\n // Set active account for network if not yet set.\n if (!activeAccount) {\n const activeExtensionAccount = getActiveExtensionAccount(\n network,\n newAccounts\n );\n if (\n activeExtensionAccount?.address !== removedActiveAccount &&\n removedActiveAccount !== null\n ) {\n connectActiveExtensionAccount(\n activeExtensionAccount,\n connectToAccount\n );\n }\n }\n\n // Update extension accounts state.\n updateExtensionAccounts({\n add: newAccounts,\n remove: accountsToRemove,\n });\n\n // Update initialised extensions.\n updateInitialisedExtensions(id);\n };\n\n // Call optional `onExtensionEnabled` callback.\n Extensions.addToLocal(id);\n\n maybeOnExtensionEnabled(id);\n setExtensionStatus(id, \"connected\");\n\n // If account subscriptions are not supported, simply get the account(s) from the extension. Otherwise, subscribe to accounts.\n if (!extensionHasFeature(id, \"subscribeAccounts\")) {\n const accounts = await extension.accounts.get();\n handleAccounts(accounts);\n } else {\n const unsub = extension.accounts.subscribe((accounts) => {\n handleAccounts(accounts || []);\n });\n addToUnsubscribe(id, unsub);\n }\n return true;\n }\n } catch (err) {\n handleExtensionError(id, String(err));\n }\n }\n return false;\n };\n\n // Handle errors when communiating with extensions.\n const handleExtensionError = (id: string, err: string) => {\n // if not general error (maybe enabled but no accounts trust app).\n if (err.startsWith(\"Error\")) {\n // remove extension from local `active_extensions`.\n Extensions.removeFromLocal(id);\n\n // extension not found (does not exist).\n if (err.substring(0, 17) === \"NotInstalledError\") {\n removeExtensionStatus(id);\n } else {\n // declare extension as no imported accounts authenticated.\n setExtensionStatus(id, \"not_authenticated\");\n }\n }\n // mark extension as initialised.\n updateInitialisedExtensions(id);\n };\n\n // Handle adaptors for extensions that are not supported by `injectedWeb3`.\n const handleExtensionAdapters = async (extensionIds: string[]) => {\n try {\n // Connect to Metamask Polkadot Snap and inject into `injectedWeb3` if avaialble.\n if (extensionIds.find((id) => id === \"metamask-polkadot-snap\")) {\n await initPolkadotSnap({\n networkName: network as SnapNetworks,\n addressPrefix: DEFAULT_SS58,\n });\n }\n } catch (e) {\n // Provided network is not supported, or something else went wrong with initialisation.\n // Silently fail.\n }\n };\n\n // Update initialised extensions.\n const updateInitialisedExtensions = (id: string) => {\n if (!extensionsInitialisedRef.current.includes(id)) {\n setStateWithRef(\n [...extensionsInitialisedRef.current].concat(id),\n setExtensionsInitialised,\n extensionsInitialisedRef\n );\n }\n };\n\n // Add an extension account to context state.\n const updateExtensionAccounts = ({\n add,\n remove,\n }: {\n add: ExtensionAccount[];\n remove: ExtensionAccount[];\n }) => {\n // Add new accounts and remove any removed accounts.\n const newAccounts = [...extensionAccountsRef.current]\n .concat(add)\n .filter((a) => remove.find((s) => s.address === a.address) === undefined);\n\n if (remove.length) {\n // Unsubscribe from removed accounts.\n unsubAccounts(remove);\n\n // Remove active account if it is being forgotten.\n if (\n activeAccount &&\n remove.find(({ address }) => address === activeAccount) !== undefined\n ) {\n maybeSetActiveAccount(null);\n }\n }\n\n setStateWithRef(newAccounts, setExtensionAccounts, extensionAccountsRef);\n };\n\n // Add an extension id to unsubscribe state.\n const addToUnsubscribe = (id: string, unsub: VoidFn) => {\n unsubs.current[id] = unsub;\n };\n\n // Handle unsubscribing of an removed extension accounts.\n const unsubAccounts = (accounts: ImportedAccount[]) => {\n // Unsubscribe and remove unsub from context ref.\n if (accounts.length) {\n for (const { address } of accounts) {\n if (extensionAccountsRef.current.find((a) => a.address === address)) {\n const unsub = unsubs.current[address];\n if (unsub) {\n unsub();\n delete unsubs.current[address];\n }\n }\n }\n }\n };\n\n // Unsubscrbe all account subscriptions.\n const unsubscribe = () => {\n Object.values(unsubs.current).forEach((unsub) => {\n unsub();\n });\n };\n\n const handleSyncExtensionAccounts = async () => {\n // Wait for injectedWeb3 check to finish before starting account import process.\n if (!checkingInjectedWeb3 && extensionAccountsSynced === \"unsynced\") {\n // Unsubscribe from all accounts and reset state\n unsubscribe();\n setStateWithRef([], setExtensionAccounts, extensionAccountsRef);\n setStateWithRef([], setExtensionsInitialised, extensionsInitialisedRef);\n // If extensions have been fetched, get accounts if extensions exist and local extensions\n // exist (previously connected).\n if (Object.keys(extensionsStatus).length) {\n // get active extensions\n const localExtensions = localStorageOrDefault(\n `active_extensions`,\n [],\n true\n );\n if (Object.keys(extensionsStatus).length && localExtensions.length) {\n setExtensionAccountsSynced(\"syncing\");\n await connectActiveExtensions();\n }\n }\n\n // Syncing is complete. Also covers case where no extensions were found.\n setExtensionAccountsSynced(\"synced\");\n }\n };\n\n // Get extension accounts based on the provided ss58 prefix.\n const getExtensionAccounts = (ss58: number) => {\n // NOTE: This is a temporary solution until we have a light weight solution to reformat\n // addresses.\n const keyring = new Keyring();\n keyring.setSS58Format(ss58);\n\n return extensionAccounts.map((account) => ({\n ...account,\n address: keyring.addFromAddress(account.address).address,\n }));\n };\n\n // Re-sync extensions accounts on `unsynced`.\n useEffect(() => {\n handleSyncExtensionAccounts();\n\n return () => unsubscribe();\n }, [extensionsStatus, checkingInjectedWeb3, extensionAccountsSynced]);\n\n // Once initialised extensions equal total extensions present in `injectedWeb3`, mark extensions\n // as fetched.\n useEffectIgnoreInitial(() => {\n if (\n !checkingInjectedWeb3 &&\n extensionsInitialised.length === Object.keys(extensionsStatus).length\n ) {\n setExtensionAccountsSynced(\"synced\");\n }\n }, [checkingInjectedWeb3, extensionsInitialised]);\n\n return (\n <ExtensionAccountsContext.Provider\n value={{\n connectExtensionAccounts,\n extensionAccountsSynced,\n getExtensionAccounts,\n }}\n >\n {children}\n </ExtensionAccountsContext.Provider>\n );\n};\n"]}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
import { hasMetaMask, isMetamaskSnapsSupported, } from "@chainsafe/metamask-polkadot-adapter/src/utils";
|
|
38
|
-
import { enablePolkadotSnap } from "@chainsafe/metamask-polkadot-adapter";
|
|
39
|
-
var transformAccounts = function (accounts) {
|
|
40
|
-
return accounts.map(function (address, index) { return ({
|
|
41
|
-
address: address,
|
|
42
|
-
name: "Polkadot Snap ".concat(index + 1),
|
|
43
|
-
source: "metamask-polkadot-snap",
|
|
44
|
-
type: "ethereum",
|
|
45
|
-
}); });
|
|
46
|
-
};
|
|
47
|
-
var injectPolkadotSnap = function (win, config) {
|
|
48
|
-
win.injectedWeb3.Snap = {
|
|
49
|
-
enable: function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
50
|
-
var snap;
|
|
51
|
-
return __generator(this, function (_a) {
|
|
52
|
-
switch (_a.label) {
|
|
53
|
-
case 0: return [4 , enablePolkadotSnap(config)];
|
|
54
|
-
case 1:
|
|
55
|
-
snap = (_a.sent()).getMetamaskSnapApi();
|
|
56
|
-
return [2 , {
|
|
57
|
-
accounts: {
|
|
58
|
-
get: function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
59
|
-
var response;
|
|
60
|
-
return __generator(this, function (_a) {
|
|
61
|
-
switch (_a.label) {
|
|
62
|
-
case 0: return [4 , snap.getAddress()];
|
|
63
|
-
case 1:
|
|
64
|
-
response = _a.sent();
|
|
65
|
-
return [2 , transformAccounts([response])];
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}); },
|
|
69
|
-
subscribe: function (
|
|
70
|
-
_cb) {
|
|
71
|
-
return function () { };
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
signer: {
|
|
75
|
-
signPayload: function (payload) { return __awaiter(void 0, void 0, void 0, function () {
|
|
76
|
-
var signature;
|
|
77
|
-
return __generator(this, function (_a) {
|
|
78
|
-
switch (_a.label) {
|
|
79
|
-
case 0: return [4 , snap.signPayloadJSON(payload)];
|
|
80
|
-
case 1:
|
|
81
|
-
signature = (_a.sent());
|
|
82
|
-
return [2 , { id: 0, signature: signature }];
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}); },
|
|
86
|
-
signRaw: function (raw) { return __awaiter(void 0, void 0, void 0, function () {
|
|
87
|
-
var signature;
|
|
88
|
-
return __generator(this, function (_a) {
|
|
89
|
-
switch (_a.label) {
|
|
90
|
-
case 0: return [4 , snap.signPayloadRaw(raw)];
|
|
91
|
-
case 1:
|
|
92
|
-
signature = (_a.sent());
|
|
93
|
-
return [2 , { id: 0, signature: signature }];
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
}); },
|
|
97
|
-
},
|
|
98
|
-
}];
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
}); },
|
|
102
|
-
version: "0.1",
|
|
103
|
-
};
|
|
104
|
-
};
|
|
105
|
-
export var initPolkadotSnap = function (config) {
|
|
106
|
-
return new Promise(function (resolve) {
|
|
107
|
-
var win = window;
|
|
108
|
-
win.injectedWeb3 = win.injectedWeb3 || {};
|
|
109
|
-
if (hasMetaMask()) {
|
|
110
|
-
isMetamaskSnapsSupported().then(function (result) {
|
|
111
|
-
if (result) {
|
|
112
|
-
injectPolkadotSnap(win, config);
|
|
113
|
-
window.injectedWeb3["metamask-polkadot-snap"] =
|
|
114
|
-
window.injectedWeb3["Snap"];
|
|
115
|
-
delete window.injectedWeb3["Snap"];
|
|
116
|
-
resolve(true);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
resolve(false);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
resolve(false);
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ExtensionAccountsProvider/snap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,OAAO,EACL,WAAW,EACX,wBAAwB,GACzB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAc1E,IAAM,iBAAiB,GAAG,UAAC,QAAkB;IAC3C,OAAA,QAAQ,CAAC,GAAG,CAAC,UAAC,OAAO,EAAE,KAAK,IAAK,OAAA,CAAC;QAChC,OAAO,SAAA;QACP,IAAI,EAAE,wBAAiB,KAAK,GAAG,CAAC,CAAE;QAClC,MAAM,EAAE,wBAAwB;QAChC,IAAI,EAAE,UAAU;KACjB,CAAC,EAL+B,CAK/B,CAAC;AALH,CAKG,CAAC;AAEN,IAAM,kBAAkB,GAAG,UAAC,GAAe,EAAE,MAAkB;IAC7D,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG;QACtB,MAAM,EAAE;;;;4BACQ,qBAAM,kBAAkB,CAAC,MAAM,CAAC,EAAA;;wBAAxC,IAAI,GAAG,CAAC,SAAgC,CAAC,CAAC,kBAAkB,EAAE;wBAEpE,sBAAO;gCACL,QAAQ,EAAE;oCACR,GAAG,EAAE;;;;wDACc,qBAAM,IAAI,CAAC,UAAU,EAAE,EAAA;;oDAAlC,QAAQ,GAAG,SAAuB;oDACxC,sBAAO,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC;;;yCACtC;oCACD,2GAA2G;oCAC3G,SAAS,EACP;oCACE,6EAA6E;oCAC7E,GAA0C;wCAE5C,gEAAgE;wCAChE,OAAA,cAAa,CAAC;oCAAd,CAAc;iCACjB;gCACD,MAAM,EAAE;oCACN,WAAW,EAAE,UACX,OAA0B;;;;wDAEP,qBAAM,IAAI,CAAC,eAAe,CAC3C,OAAO,CACR,EAAA;;oDAFK,SAAS,GAAG,CAAC,SAElB,CAAc;oDACf,sBAAO,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,WAAA,EAAE,EAAC;;;yCAC7B;oCACD,OAAO,EAAE,UAAO,GAAqB;;;;wDAChB,qBAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAA;;oDAA3C,SAAS,GAAG,CAAC,SAA8B,CAAc;oDAC/D,sBAAO,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,WAAA,EAAE,EAAC;;;yCAC7B;iCACF;6BACF,EAAC;;;aACH;QACD,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC,CAAC;AAEF,yFAAyF;AACzF,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,MAAkB;IACjD,OAAA,IAAI,OAAO,CAAC,UAAC,OAAO;QAClB,IAAM,GAAG,GAAG,MAA6B,CAAC;QAC1C,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAE1C,yCAAyC;QACzC,IAAI,WAAW,EAAE,EAAE,CAAC;YAClB,wBAAwB,EAAE,CAAC,IAAI,CAAC,UAAC,MAAM;gBACrC,IAAI,MAAM,EAAE,CAAC;oBACX,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBAChC,yEAAyE;oBACzE,2EAA2E;oBAC3E,MAAM,CAAC,YAAY,CAAC,wBAAwB,CAAC;wBAC3C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC9B,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;AAtBF,CAsBE,CAAC","file":"snap.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\nimport type {\n Injected,\n InjectedAccount,\n InjectedWindow,\n} from \"@polkadot/extension-inject/types\";\nimport {\n hasMetaMask,\n isMetamaskSnapsSupported,\n} from \"@chainsafe/metamask-polkadot-adapter/src/utils\";\nimport { enablePolkadotSnap } from \"@chainsafe/metamask-polkadot-adapter\";\nimport type {\n SignerPayloadJSON,\n SignerPayloadRaw,\n SignerResult,\n} from \"@polkadot/types/types\";\nimport type { HexString } from \"@polkadot/util/types\";\nimport { SnapConfig } from \"@chainsafe/metamask-polkadot-types\";\nimport { ExtensionAccount } from \"../ExtensionsProvider/types\";\n\ninterface Web3Window extends InjectedWindow {\n ethereum: unknown;\n}\n\nconst transformAccounts = (accounts: string[]): ExtensionAccount[] =>\n accounts.map((address, index) => ({\n address,\n name: `Polkadot Snap ${index + 1}`,\n source: \"metamask-polkadot-snap\",\n type: \"ethereum\",\n }));\n\nconst injectPolkadotSnap = (win: Web3Window, config: SnapConfig): void => {\n win.injectedWeb3.Snap = {\n enable: async (): Promise<Injected> => {\n const snap = (await enablePolkadotSnap(config)).getMetamaskSnapApi();\n\n return {\n accounts: {\n get: async (): Promise<InjectedAccount[]> => {\n const response = await snap.getAddress();\n return transformAccounts([response]);\n },\n // Currently there is only available only one account, in that case this method will never return anything.\n subscribe:\n (\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars\n _cb: (accounts: InjectedAccount[]) => void\n ): (() => void) =>\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n (): void => {},\n },\n signer: {\n signPayload: async (\n payload: SignerPayloadJSON\n ): Promise<SignerResult> => {\n const signature = (await snap.signPayloadJSON(\n payload\n )) as HexString;\n return { id: 0, signature };\n },\n signRaw: async (raw: SignerPayloadRaw): Promise<SignerResult> => {\n const signature = (await snap.signPayloadRaw(raw)) as HexString;\n return { id: 0, signature };\n },\n },\n };\n },\n version: \"0.1\",\n };\n};\n\n// Initiate Polkadot snap and inject it into `injectedWeb3`. as `metamask-polkadot-snap`.\nexport const initPolkadotSnap = (config: SnapConfig): Promise<boolean> =>\n new Promise((resolve): void => {\n const win = window as Window & Web3Window;\n win.injectedWeb3 = win.injectedWeb3 || {};\n\n // Attempt to inject into `injectedWeb3`.\n if (hasMetaMask()) {\n isMetamaskSnapsSupported().then((result) => {\n if (result) {\n injectPolkadotSnap(win, config);\n // Overwrite `injectedWeb3` key with correct id and delete stale version.\n // Issue at: https://github.com/ChainSafe/metamask-snap-polkadot/issues/204\n window.injectedWeb3[\"metamask-polkadot-snap\"] =\n window.injectedWeb3[\"Snap\"];\n delete window.injectedWeb3[\"Snap\"];\n resolve(true);\n } else {\n resolve(false);\n }\n });\n } else {\n resolve(false);\n }\n });\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ExtensionAccountsProvider/types.ts"],"names":[],"mappings":"AAAA;wCACwC","file":"types.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport { ReactNode } from \"react\";\nimport { ExtensionAccount } from \"../ExtensionsProvider/types\";\nimport { ImportedAccount, MaybeAddress } from \"../types\";\nimport { Sync } from \"@w3ux/types\";\n\nexport interface ExtensionAccountsContextInterface {\n connectExtensionAccounts: (id?: string) => Promise<boolean>;\n extensionAccountsSynced: Sync;\n getExtensionAccounts: (ss58: number) => ImportedAccount[];\n}\n\nexport interface ExtensionAccountsProviderProps {\n children: ReactNode;\n network: string;\n dappName: string;\n activeAccount?: MaybeAddress;\n setActiveAccount?: (address: MaybeAddress) => void;\n onExtensionEnabled?: (id: string) => void;\n}\n\nexport interface HandleImportExtension {\n newAccounts: ExtensionAccount[];\n meta: {\n accountsToRemove: ExtensionAccount[];\n removedActiveAccount: MaybeAddress;\n };\n}\n"]}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
-
if (ar || !(i in from)) {
|
|
4
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
-
ar[i] = from[i];
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
-
};
|
|
10
|
-
import Keyring from "@polkadot/keyring";
|
|
11
|
-
import { isValidAddress } from "@w3ux/utils";
|
|
12
|
-
import { getActiveAccountLocal, getInExternalAccounts } from "./utils";
|
|
13
|
-
import { DEFAULT_SS58, defaultHandleImportExtension } from "./defaults";
|
|
14
|
-
export var useImportExtension = function () {
|
|
15
|
-
var handleImportExtension = function (id, currentAccounts, signer, newAccounts, network) {
|
|
16
|
-
var _a;
|
|
17
|
-
if (!newAccounts.length) {
|
|
18
|
-
return defaultHandleImportExtension;
|
|
19
|
-
}
|
|
20
|
-
var keyring = new Keyring();
|
|
21
|
-
keyring.setSS58Format(DEFAULT_SS58);
|
|
22
|
-
newAccounts = newAccounts.filter(function (_a) {
|
|
23
|
-
var address = _a.address;
|
|
24
|
-
return isValidAddress(address);
|
|
25
|
-
});
|
|
26
|
-
newAccounts.map(function (account) {
|
|
27
|
-
var address = keyring.addFromAddress(account.address).address;
|
|
28
|
-
account.address = address;
|
|
29
|
-
return account;
|
|
30
|
-
});
|
|
31
|
-
var inExternal = getInExternalAccounts(newAccounts, network);
|
|
32
|
-
var removedAccounts = currentAccounts
|
|
33
|
-
.filter(function (j) { return j.source === id; })
|
|
34
|
-
.filter(function (j) { return !newAccounts.find(function (i) { return i.address === j.address; }); });
|
|
35
|
-
var removedActiveAccount = ((_a = removedAccounts.find(function (_a) {
|
|
36
|
-
var address = _a.address;
|
|
37
|
-
return address === getActiveAccountLocal(network);
|
|
38
|
-
})) === null || _a === void 0 ? void 0 : _a.address) || null;
|
|
39
|
-
newAccounts = newAccounts.filter(function (_a) {
|
|
40
|
-
var address = _a.address;
|
|
41
|
-
return !currentAccounts.find(function (j) { return j.address === address && j.source !== "external"; });
|
|
42
|
-
});
|
|
43
|
-
newAccounts = newAccounts.map(function (_a) {
|
|
44
|
-
var address = _a.address, name = _a.name;
|
|
45
|
-
return ({
|
|
46
|
-
address: address,
|
|
47
|
-
name: name,
|
|
48
|
-
source: id,
|
|
49
|
-
signer: signer,
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
return {
|
|
53
|
-
newAccounts: newAccounts,
|
|
54
|
-
meta: {
|
|
55
|
-
accountsToRemove: __spreadArray(__spreadArray([], inExternal, true), removedAccounts, true),
|
|
56
|
-
removedActiveAccount: removedActiveAccount,
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
return {
|
|
61
|
-
handleImportExtension: handleImportExtension,
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ExtensionAccountsProvider/useImportExtension.tsx"],"names":[],"mappings":"AAAA;wCACwC;;;;;;;;;;AAExC,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAGxE,MAAM,CAAC,IAAM,kBAAkB,GAAG;IAChC,2CAA2C;IAC3C,EAAE;IACF,0DAA0D;IAC1D,IAAM,qBAAqB,GAAG,UAC5B,EAAU,EACV,eAAmC,EACnC,MAAmB,EACnB,WAA+B,EAC/B,OAAe;;QAEf,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,4BAA4B,CAAC;QACtC,CAAC;QAED,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAEpC,qEAAqE;QACrE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,UAAC,EAAW;gBAAT,OAAO,aAAA;YAAO,OAAA,cAAc,CAAC,OAAO,CAAC;QAAvB,CAAuB,CAAC,CAAC;QAE3E,oDAAoD;QACpD,WAAW,CAAC,GAAG,CAAC,UAAC,OAAO;YACd,IAAA,OAAO,GAAK,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,QAA5C,CAA6C;YAC5D,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YAC1B,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,gEAAgE;QAChE,IAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE/D,gEAAgE;QAChE,IAAM,eAAe,GAAG,eAAe;aACpC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,KAAK,EAAE,EAAf,CAAe,CAAC;aAC9B,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAvB,CAAuB,CAAC,EAAjD,CAAiD,CAAC,CAAC;QAEpE,iEAAiE;QACjE,IAAM,oBAAoB,GACxB,CAAA,MAAA,eAAe,CAAC,IAAI,CAClB,UAAC,EAAW;gBAAT,OAAO,aAAA;YAAO,OAAA,OAAO,KAAK,qBAAqB,CAAC,OAAO,CAAC;QAA1C,CAA0C,CAC5D,0CAAE,OAAO,KAAI,IAAI,CAAC;QAErB,2FAA2F;QAC3F,WAAW,GAAG,WAAW,CAAC,MAAM,CAC9B,UAAC,EAAW;gBAAT,OAAO,aAAA;YACR,OAAA,CAAC,eAAe,CAAC,IAAI,CACnB,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAhD,CAAgD,CACxD;QAFD,CAEC,CACJ,CAAC;QAEF,8BAA8B;QAC9B,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,EAAiB;gBAAf,OAAO,aAAA,EAAE,IAAI,UAAA;YAAO,OAAA,CAAC;gBACpD,OAAO,SAAA;gBACP,IAAI,MAAA;gBACJ,MAAM,EAAE,EAAE;gBACV,MAAM,QAAA;aACP,CAAC;QALmD,CAKnD,CAAC,CAAC;QAEJ,OAAO;YACL,WAAW,aAAA;YACX,IAAI,EAAE;gBACJ,gBAAgB,kCAAM,UAAU,SAAK,eAAe,OAAC;gBACrD,oBAAoB,sBAAA;aACrB;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,qBAAqB,uBAAA;KACtB,CAAC;AACJ,CAAC,CAAC","file":"useImportExtension.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport Keyring from \"@polkadot/keyring\";\nimport { isValidAddress } from \"@w3ux/utils\";\nimport type { ExtensionAccount } from \"../ExtensionsProvider/types\";\nimport { HandleImportExtension } from \"./types\";\nimport { getActiveAccountLocal, getInExternalAccounts } from \"./utils\";\nimport { DEFAULT_SS58, defaultHandleImportExtension } from \"./defaults\";\nimport { AnyFunction } from \"@w3ux/types\";\n\nexport const useImportExtension = () => {\n // Handles importing of extension accounts.\n //\n // Gets accounts to be imported and commits them to state.\n const handleImportExtension = (\n id: string,\n currentAccounts: ExtensionAccount[],\n signer: AnyFunction,\n newAccounts: ExtensionAccount[],\n network: string\n ): HandleImportExtension => {\n if (!newAccounts.length) {\n return defaultHandleImportExtension;\n }\n\n const keyring = new Keyring();\n keyring.setSS58Format(DEFAULT_SS58);\n\n // Remove accounts that do not contain correctly formatted addresses.\n newAccounts = newAccounts.filter(({ address }) => isValidAddress(address));\n\n // Reformat addresses to ensure default ss58 format.\n newAccounts.map((account) => {\n const { address } = keyring.addFromAddress(account.address);\n account.address = address;\n return account;\n });\n\n // Remove `newAccounts` from local external accounts if present.\n const inExternal = getInExternalAccounts(newAccounts, network);\n\n // Find any accounts that have been removed from this extension.\n const removedAccounts = currentAccounts\n .filter((j) => j.source === id)\n .filter((j) => !newAccounts.find((i) => i.address === j.address));\n\n // Check whether active account is present in forgotten accounts.\n const removedActiveAccount =\n removedAccounts.find(\n ({ address }) => address === getActiveAccountLocal(network)\n )?.address || null;\n\n // Remove accounts that have already been added to `currentAccounts` via another extension.\n newAccounts = newAccounts.filter(\n ({ address }) =>\n !currentAccounts.find(\n (j) => j.address === address && j.source !== \"external\"\n )\n );\n\n // Format accounts properties.\n newAccounts = newAccounts.map(({ address, name }) => ({\n address,\n name,\n source: id,\n signer,\n }));\n\n return {\n newAccounts,\n meta: {\n accountsToRemove: [...inExternal, ...removedAccounts],\n removedActiveAccount,\n },\n };\n };\n\n return {\n handleImportExtension,\n };\n};\n"]}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { localStorageOrDefault } from "@w3ux/utils";
|
|
2
|
-
import Keyring from "@polkadot/keyring";
|
|
3
|
-
import { DEFAULT_SS58 } from "./defaults";
|
|
4
|
-
export var getActiveAccountLocal = function (network) {
|
|
5
|
-
var keyring = new Keyring();
|
|
6
|
-
keyring.setSS58Format(DEFAULT_SS58);
|
|
7
|
-
var account = localStorageOrDefault("".concat(network, "_active_account"), null);
|
|
8
|
-
if (account !== null) {
|
|
9
|
-
account = keyring.addFromAddress(account).address;
|
|
10
|
-
}
|
|
11
|
-
return account;
|
|
12
|
-
};
|
|
13
|
-
export var getActiveExtensionAccount = function (network, accounts) {
|
|
14
|
-
var _a;
|
|
15
|
-
return (_a = accounts.find(function (_a) {
|
|
16
|
-
var address = _a.address;
|
|
17
|
-
return address === getActiveAccountLocal(network);
|
|
18
|
-
})) !== null && _a !== void 0 ? _a : null;
|
|
19
|
-
};
|
|
20
|
-
export var connectActiveExtensionAccount = function (account, callback) {
|
|
21
|
-
if (account !== null) {
|
|
22
|
-
callback(account);
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
export var getInExternalAccounts = function (accounts, network) {
|
|
26
|
-
var localExternalAccounts = getLocalExternalAccounts(network);
|
|
27
|
-
return (localExternalAccounts.filter(function (a) { return (accounts || []).find(function (b) { return b.address === a.address; }) !== undefined; }) || []);
|
|
28
|
-
};
|
|
29
|
-
export var getLocalExternalAccounts = function (network) {
|
|
30
|
-
var localAccounts = localStorageOrDefault("external_accounts", [], true);
|
|
31
|
-
if (network) {
|
|
32
|
-
localAccounts = localAccounts.filter(function (l) { return l.network === network; });
|
|
33
|
-
}
|
|
34
|
-
return localAccounts;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ExtensionAccountsProvider/utils.ts"],"names":[],"mappings":"AAAA;wCACwC;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;+DAE+D;AAE/D,4CAA4C;AAC5C,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,OAAe;IACnD,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAEpC,IAAI,OAAO,GAAG,qBAAqB,CAAC,UAAG,OAAO,oBAAiB,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,IAAM,yBAAyB,GAAG,UACvC,OAAe,EACf,QAA4B;;IAE5B,OAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,UAAC,EAAW;YAAT,OAAO,aAAA;QAAO,OAAA,OAAO,KAAK,qBAAqB,CAAC,OAAO,CAAC;IAA1C,CAA0C,CAAC,mCAC1E,IAAI,CAAA;CAAA,CAAC;AAEP,2EAA2E;AAC3E,MAAM,CAAC,IAAM,6BAA6B,GAAG,UAC3C,OAAgC,EAChC,QAAqB;IAErB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AAEF;;+DAE+D;AAE/D,yDAAyD;AACzD,MAAM,CAAC,IAAM,qBAAqB,GAAG,UACnC,QAA4B,EAC5B,OAAe;IAEf,IAAM,qBAAqB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEhE,OAAO,CACL,qBAAqB,CAAC,MAAM,CAC1B,UAAC,CAAC,IAAK,OAAA,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAvB,CAAuB,CAAC,KAAK,SAAS,EAAnE,CAAmE,CAC3E,IAAI,EAAE,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,IAAM,wBAAwB,GAAG,UAAC,OAAgB;IACvD,IAAI,aAAa,GAAG,qBAAqB,CACvC,mBAAmB,EACnB,EAAE,EACF,IAAI,CACgB,CAAC;IACvB,IAAI,OAAO,EAAE,CAAC;QACZ,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,KAAK,OAAO,EAArB,CAAqB,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC","file":"utils.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport { localStorageOrDefault } from \"@w3ux/utils\";\nimport Keyring from \"@polkadot/keyring\";\nimport { ExtensionAccount } from \"../ExtensionsProvider/types\";\nimport { ExternalAccount } from \"../types\";\nimport { DEFAULT_SS58 } from \"./defaults\";\nimport { AnyFunction } from \"@w3ux/types\";\n\n/*------------------------------------------------------------\n Active account utils.\n ------------------------------------------------------------*/\n\n// Gets local `active_acount` for a network.\nexport const getActiveAccountLocal = (network: string) => {\n const keyring = new Keyring();\n keyring.setSS58Format(DEFAULT_SS58);\n\n let account = localStorageOrDefault(`${network}_active_account`, null);\n if (account !== null) {\n account = keyring.addFromAddress(account).address;\n }\n\n return account;\n};\n\n// Checks if the local active account is the provided accounts.\nexport const getActiveExtensionAccount = (\n network: string,\n accounts: ExtensionAccount[]\n) =>\n accounts.find(({ address }) => address === getActiveAccountLocal(network)) ??\n null;\n\n// Connects to active account, and calls an optional callback, if provided.\nexport const connectActiveExtensionAccount = (\n account: ExtensionAccount | null,\n callback: AnyFunction\n) => {\n if (account !== null) {\n callback(account);\n }\n};\n\n/*------------------------------------------------------------\n External account utils.\n ------------------------------------------------------------*/\n\n// Gets accounts that exist in local `external_accounts`.\nexport const getInExternalAccounts = (\n accounts: ExtensionAccount[],\n network: string\n) => {\n const localExternalAccounts = getLocalExternalAccounts(network);\n\n return (\n localExternalAccounts.filter(\n (a) => (accounts || []).find((b) => b.address === a.address) !== undefined\n ) || []\n );\n};\n\n// Gets local external accounts for a network.\nexport const getLocalExternalAccounts = (network?: string) => {\n let localAccounts = localStorageOrDefault<ExternalAccount[]>(\n \"external_accounts\",\n [],\n true\n ) as ExternalAccount[];\n if (network) {\n localAccounts = localAccounts.filter((l) => l.network === network);\n }\n return localAccounts;\n};\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export var defaultExtensionsContext = {
|
|
2
|
-
checkingInjectedWeb3: false,
|
|
3
|
-
extensionsStatus: {},
|
|
4
|
-
setExtensionStatus: function (id, status) { },
|
|
5
|
-
removeExtensionStatus: function (id) { },
|
|
6
|
-
extensionInstalled: function (id) { return false; },
|
|
7
|
-
extensionCanConnect: function (id) { return false; },
|
|
8
|
-
extensionHasFeature: function (id, feature) { return false; },
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ExtensionsProvider/defaults.ts"],"names":[],"mappings":"AAAA;wCACwC;AACxC,6GAA6G;AAI7G,MAAM,CAAC,IAAM,wBAAwB,GAA+B;IAClE,oBAAoB,EAAE,KAAK;IAC3B,gBAAgB,EAAE,EAAE;IACpB,kBAAkB,EAAE,UAAC,EAAE,EAAE,MAAM,IAAM,CAAC;IACtC,qBAAqB,EAAE,UAAC,EAAE,IAAM,CAAC;IACjC,kBAAkB,EAAE,UAAC,EAAE,IAAK,OAAA,KAAK,EAAL,CAAK;IACjC,mBAAmB,EAAE,UAAC,EAAE,IAAK,OAAA,KAAK,EAAL,CAAK;IAClC,mBAAmB,EAAE,UAAC,EAAE,EAAE,OAAO,IAAK,OAAA,KAAK,EAAL,CAAK;CAC5C,CAAC","file":"defaults.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function, no-unused-vars */\n\nimport type { ExtensionsContextInterface } from \"./types\";\n\nexport const defaultExtensionsContext: ExtensionsContextInterface = {\n checkingInjectedWeb3: false,\n extensionsStatus: {},\n setExtensionStatus: (id, status) => {},\n removeExtensionStatus: (id) => {},\n extensionInstalled: (id) => false,\n extensionCanConnect: (id) => false,\n extensionHasFeature: (id, feature) => false,\n};\n"]}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
-
function step(op) {
|
|
26
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
-
switch (op[0]) {
|
|
31
|
-
case 0: case 1: t = op; break;
|
|
32
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
-
default:
|
|
36
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
-
if (t[2]) _.ops.pop();
|
|
41
|
-
_.trys.pop(); continue;
|
|
42
|
-
}
|
|
43
|
-
op = body.call(thisArg, _);
|
|
44
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
49
|
-
import { setStateWithRef, withTimeout } from "@w3ux/utils";
|
|
50
|
-
import { useEffect, useRef, useState, createContext, useContext, } from "react";
|
|
51
|
-
import { defaultExtensionsContext } from "./defaults";
|
|
52
|
-
import { polkadotSnapAvailable } from "./utils";
|
|
53
|
-
import extensions from "@w3ux/extension-assets";
|
|
54
|
-
import { web3Enable } from "@polkagate/extension-dapp";
|
|
55
|
-
export var ExtensionsContext = createContext(defaultExtensionsContext);
|
|
56
|
-
export var useExtensions = function () { return useContext(ExtensionsContext); };
|
|
57
|
-
export var ExtensionsProvider = function (_a) {
|
|
58
|
-
var children = _a.children, options = _a.options;
|
|
59
|
-
var _b = useState(true), checkingInjectedWeb3 = _b[0], setCheckingInjectedWeb3 = _b[1];
|
|
60
|
-
var checkingInjectedWeb3Ref = useRef(checkingInjectedWeb3);
|
|
61
|
-
var intervalInitialisedRef = useRef(false);
|
|
62
|
-
var _c = useState({}), extensionsStatus = _c[0], setExtensionsStatus = _c[1];
|
|
63
|
-
var extensionsStatusRef = useRef(extensionsStatus);
|
|
64
|
-
var chainSafeSnapEnabled = useState((options === null || options === void 0 ? void 0 : options.chainSafeSnapEnabled) || false)[0];
|
|
65
|
-
var polkaGateSnapEnabled = useState((options === null || options === void 0 ? void 0 : options.polkagateSnapEnabled) || false)[0];
|
|
66
|
-
var injectedWeb3Interval;
|
|
67
|
-
var injectCounter = useRef(0);
|
|
68
|
-
var handleClearInterval = function (hasInjectedWeb3) {
|
|
69
|
-
clearInterval(injectedWeb3Interval);
|
|
70
|
-
handleSnapInjection(hasInjectedWeb3);
|
|
71
|
-
};
|
|
72
|
-
var handleSnapInjection = function (hasInjectedWeb3) { return __awaiter(void 0, void 0, void 0, function () {
|
|
73
|
-
var snapAvailable;
|
|
74
|
-
return __generator(this, function (_a) {
|
|
75
|
-
switch (_a.label) {
|
|
76
|
-
case 0: return [4 , polkadotSnapAvailable()];
|
|
77
|
-
case 1:
|
|
78
|
-
snapAvailable = (_a.sent()) && chainSafeSnapEnabled;
|
|
79
|
-
if (!polkaGateSnapEnabled) return [3 , 3];
|
|
80
|
-
return [4 , withTimeout(500, web3Enable("snap_only"))];
|
|
81
|
-
case 2:
|
|
82
|
-
_a.sent();
|
|
83
|
-
_a.label = 3;
|
|
84
|
-
case 3:
|
|
85
|
-
if (hasInjectedWeb3 || snapAvailable) {
|
|
86
|
-
setStateWithRef(getExtensionsStatus(snapAvailable), setExtensionsStatus, extensionsStatusRef);
|
|
87
|
-
}
|
|
88
|
-
setStateWithRef(false, setCheckingInjectedWeb3, checkingInjectedWeb3Ref);
|
|
89
|
-
return [2 ];
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
}); };
|
|
93
|
-
var setExtensionStatus = function (id, status) {
|
|
94
|
-
var _a;
|
|
95
|
-
setStateWithRef(__assign(__assign({}, extensionsStatusRef.current), (_a = {}, _a[id] = status, _a)), setExtensionsStatus, extensionsStatusRef);
|
|
96
|
-
};
|
|
97
|
-
var removeExtensionStatus = function (id) {
|
|
98
|
-
var newExtensionsStatus = __assign({}, extensionsStatusRef.current);
|
|
99
|
-
delete newExtensionsStatus[id];
|
|
100
|
-
setStateWithRef(newExtensionsStatus, setExtensionsStatus, extensionsStatusRef);
|
|
101
|
-
};
|
|
102
|
-
var getExtensionsStatus = function (snapAvailable) {
|
|
103
|
-
var injectedWeb3 = window.injectedWeb3;
|
|
104
|
-
var newExtensionsStatus = __assign({}, extensionsStatus);
|
|
105
|
-
if (snapAvailable) {
|
|
106
|
-
newExtensionsStatus["metamask-polkadot-snap"] = "installed";
|
|
107
|
-
}
|
|
108
|
-
var extensionsAsArray = Object.entries(extensions).map(function (_a) {
|
|
109
|
-
var key = _a[0], value = _a[1];
|
|
110
|
-
return (__assign({ id: key }, value));
|
|
111
|
-
});
|
|
112
|
-
extensionsAsArray.forEach(function (e) {
|
|
113
|
-
if (injectedWeb3[e.id] !== undefined) {
|
|
114
|
-
newExtensionsStatus[e.id] = "installed";
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
return newExtensionsStatus;
|
|
118
|
-
};
|
|
119
|
-
var extensionInstalled = function (id) {
|
|
120
|
-
return extensionsStatus[id] !== undefined;
|
|
121
|
-
};
|
|
122
|
-
var extensionCanConnect = function (id) {
|
|
123
|
-
return extensionInstalled(id) && extensionsStatus[id] !== "connected";
|
|
124
|
-
};
|
|
125
|
-
var extensionHasFeature = function (id, feature) {
|
|
126
|
-
var features = extensions[id].features;
|
|
127
|
-
if (features === "*" || features.includes(feature)) {
|
|
128
|
-
return true;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
var checkEveryMs = 300;
|
|
135
|
-
var totalChecks = 10;
|
|
136
|
-
useEffect(function () {
|
|
137
|
-
if (!intervalInitialisedRef.current) {
|
|
138
|
-
intervalInitialisedRef.current = true;
|
|
139
|
-
injectedWeb3Interval = setInterval(function () {
|
|
140
|
-
injectCounter.current++;
|
|
141
|
-
if (injectCounter.current === totalChecks) {
|
|
142
|
-
handleClearInterval(false);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
var injectedWeb3 = (window === null || window === void 0 ? void 0 : window.injectedWeb3) || null;
|
|
146
|
-
if (injectedWeb3 !== null) {
|
|
147
|
-
handleClearInterval(true);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}, checkEveryMs);
|
|
151
|
-
}
|
|
152
|
-
return function () { return clearInterval(injectedWeb3Interval); };
|
|
153
|
-
});
|
|
154
|
-
return (_jsx(ExtensionsContext.Provider, { value: {
|
|
155
|
-
extensionsStatus: extensionsStatusRef.current,
|
|
156
|
-
checkingInjectedWeb3: checkingInjectedWeb3,
|
|
157
|
-
setExtensionStatus: setExtensionStatus,
|
|
158
|
-
removeExtensionStatus: removeExtensionStatus,
|
|
159
|
-
extensionInstalled: extensionInstalled,
|
|
160
|
-
extensionCanConnect: extensionCanConnect,
|
|
161
|
-
extensionHasFeature: extensionHasFeature,
|
|
162
|
-
}, children: children }));
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ExtensionsProvider/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport { setStateWithRef, withTimeout } from \"@w3ux/utils\";\nimport {\n ReactNode,\n useEffect,\n useRef,\n useState,\n createContext,\n useContext,\n} from \"react\";\nimport type { ExtensionStatus, ExtensionsContextInterface } from \"./types\";\nimport { defaultExtensionsContext } from \"./defaults\";\nimport { polkadotSnapAvailable } from \"./utils\";\nimport extensions from \"@w3ux/extension-assets\";\nimport { web3Enable } from \"@polkagate/extension-dapp\";\n\nexport const ExtensionsContext = createContext<ExtensionsContextInterface>(\n defaultExtensionsContext\n);\n\nexport const useExtensions = () => useContext(ExtensionsContext);\n\nexport const ExtensionsProvider = ({\n children,\n options,\n}: {\n children: ReactNode;\n options?: {\n chainSafeSnapEnabled?: boolean;\n polkagateSnapEnabled?: boolean;\n };\n}) => {\n // Store whether initial `injectedWeb3` checking is underway.\n //\n // Injecting `injectedWeb3` is an asynchronous process, so we need to check for its existence for\n // a period of time.\n const [checkingInjectedWeb3, setCheckingInjectedWeb3] =\n useState<boolean>(true);\n const checkingInjectedWeb3Ref = useRef(checkingInjectedWeb3);\n\n // Store whether injected interval has been initialised.\n const intervalInitialisedRef = useRef<boolean>(false);\n\n // Store each extension's status in state.\n const [extensionsStatus, setExtensionsStatus] = useState<\n Record<string, ExtensionStatus>\n >({});\n const extensionsStatusRef = useRef(extensionsStatus);\n\n // Store whether Metamask Snaps are enabled.\n const [chainSafeSnapEnabled] = useState<boolean>(\n options?.chainSafeSnapEnabled || false\n );\n\n // Store whether Metamask Snaps are enabled.\n const [polkaGateSnapEnabled] = useState<boolean>(\n options?.polkagateSnapEnabled || false\n );\n\n // Listen for window.injectedWeb3 with an interval.\n let injectedWeb3Interval: ReturnType<typeof setInterval>;\n const injectCounter = useRef<number>(0);\n\n // Handle completed interval check for `injectedWeb3`.\n //\n // Clear interval and move on to checking for Metamask Polkadot Snap.\n const handleClearInterval = (hasInjectedWeb3: boolean) => {\n clearInterval(injectedWeb3Interval);\n // Check if Metamask Polkadot Snap is available.\n handleSnapInjection(hasInjectedWeb3);\n };\n\n // Handle injecting of `metamask-polkadot-snap` into injectedWeb3 if avaialble, and complete\n // `injectedWeb3` syncing process.\n const handleSnapInjection = async (hasInjectedWeb3: boolean) => {\n // Inject ChainSafe Snap if enabled.\n const snapAvailable =\n (await polkadotSnapAvailable()) && chainSafeSnapEnabled;\n\n // Inject PolkaGate Snap if enabled.\n if (polkaGateSnapEnabled) {\n await withTimeout(500, web3Enable(\"snap_only\"));\n }\n\n if (hasInjectedWeb3 || snapAvailable) {\n setStateWithRef(\n getExtensionsStatus(snapAvailable),\n setExtensionsStatus,\n extensionsStatusRef\n );\n }\n\n setStateWithRef(false, setCheckingInjectedWeb3, checkingInjectedWeb3Ref);\n };\n\n // Setter for an extension status.\n const setExtensionStatus = (id: string, status: ExtensionStatus) => {\n setStateWithRef(\n {\n ...extensionsStatusRef.current,\n [id]: status,\n },\n setExtensionsStatus,\n extensionsStatusRef\n );\n };\n\n // Removes an extension from the `extensionsStatus` state.\n const removeExtensionStatus = (id: string) => {\n const newExtensionsStatus = { ...extensionsStatusRef.current };\n delete newExtensionsStatus[id];\n\n setStateWithRef(\n newExtensionsStatus,\n setExtensionsStatus,\n extensionsStatusRef\n );\n };\n\n // Getter for the currently installed extensions.\n //\n // Loops through the supported extensios and checks if they are present in `injectedWeb3`. Adds\n // `installed` status to the extension if it is present.\n const getExtensionsStatus = (snapAvailable: boolean) => {\n const { injectedWeb3 } = window;\n\n const newExtensionsStatus = { ...extensionsStatus };\n if (snapAvailable) {\n newExtensionsStatus[\"metamask-polkadot-snap\"] = \"installed\";\n }\n\n const extensionsAsArray = Object.entries(extensions).map(\n ([key, value]) => ({\n id: key,\n ...value,\n })\n );\n\n extensionsAsArray.forEach((e) => {\n if (injectedWeb3[e.id] !== undefined) {\n newExtensionsStatus[e.id] = \"installed\";\n }\n });\n\n return newExtensionsStatus;\n };\n\n // Checks if an extension has been installed.\n const extensionInstalled = (id: string): boolean =>\n extensionsStatus[id] !== undefined;\n\n // Checks whether an extension can be connected to.\n const extensionCanConnect = (id: string): boolean =>\n extensionInstalled(id) && extensionsStatus[id] !== \"connected\";\n\n // Checks whether an extension supports a feature.\n const extensionHasFeature = (id: string, feature: string): boolean => {\n const { features } = extensions[id];\n if (features === \"*\" || features.includes(feature)) {\n return true;\n } else {\n return false;\n }\n };\n\n // Check for `injectedWeb3` and Metamask Snap on mount. To trigger interval on soft page\n // refreshes, no empty dependency array is provided to this `useEffect`. Checks for `injectedWeb3`\n // for a total of 3 seconds before giving up.\n //\n // Interval duration.\n const checkEveryMs = 300;\n // Total interval iterations.\n const totalChecks = 10;\n useEffect(() => {\n if (!intervalInitialisedRef.current) {\n intervalInitialisedRef.current = true;\n\n injectedWeb3Interval = setInterval(() => {\n injectCounter.current++;\n\n if (injectCounter.current === totalChecks) {\n handleClearInterval(false);\n } else {\n // `injectedWeb3` is present\n const injectedWeb3 = window?.injectedWeb3 || null;\n if (injectedWeb3 !== null) {\n handleClearInterval(true);\n }\n }\n }, checkEveryMs);\n }\n\n return () => clearInterval(injectedWeb3Interval);\n });\n\n return (\n <ExtensionsContext.Provider\n value={{\n extensionsStatus: extensionsStatusRef.current,\n checkingInjectedWeb3,\n setExtensionStatus,\n removeExtensionStatus,\n extensionInstalled,\n extensionCanConnect,\n extensionHasFeature,\n }}\n >\n {children}\n </ExtensionsContext.Provider>\n );\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ExtensionsProvider/types.ts"],"names":[],"mappings":"AAAA;wCACwC","file":"types.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport type { FunctionComponent, SVGProps } from \"react\";\nimport { ExternalAccountAddedBy } from \"../types\";\nimport { AnyJson, VoidFn } from \"@w3ux/types\";\n\n// Extensions context interface.\nexport interface ExtensionsContextInterface {\n checkingInjectedWeb3: boolean;\n extensionsStatus: Record<string, ExtensionStatus>;\n setExtensionStatus: (id: string, status: ExtensionStatus) => void;\n removeExtensionStatus: (id: string) => void;\n extensionInstalled: (id: string) => boolean;\n extensionCanConnect: (id: string) => boolean;\n extensionHasFeature: (id: string, feature: string) => boolean;\n}\n\n// Top level required properties the extension must expose via their `injectedWeb3` entry.\nexport interface ExtensionInjected extends ExtensionConfig {\n id: string;\n enable: (n: string) => Promise<ExtensionInterface>;\n}\n\n// Required properties `enable` must provide after resolution.\nexport interface ExtensionInterface {\n accounts: {\n subscribe: (a: (b: ExtensionAccount[]) => void) => VoidFn;\n get: () => Promise<ExtensionAccount[]>;\n };\n provider: AnyJson;\n metadata: AnyJson;\n signer: AnyJson;\n}\n\n// Required properties returned after subscribing to accounts.\nexport interface ExtensionAccount extends ExtensionMetadata {\n address: string;\n meta?: AnyJson;\n name: string;\n signer?: AnyJson;\n}\n\n// Configuration item of an extension.\nexport interface ExtensionConfig {\n id: string;\n title: string;\n icon: FunctionComponent<\n SVGProps<SVGSVGElement> & { title?: string | undefined }\n >;\n url: string;\n}\n\n// Miscellaneous metadata added to an extension.\nexport interface ExtensionMetadata {\n addedBy?: ExternalAccountAddedBy;\n source: string;\n}\n\nexport type ExtensionStatus = \"installed\" | \"not_authenticated\" | \"connected\";\n"]}
|