@w3ux/react-connect-kit 3.2.20 → 3.2.22

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.
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createSafeContext } from '@w3ux/hooks';
3
- import { accounts$, connectExtension as doConnectExtension, getReconnectSync, reconnectExtensions, reconnectSync$, resetAccounts, unsubAll, } from '@w3ux/observables-connect/accounts';
4
- import { initialisedExtensions$ } from '@w3ux/observables-connect/extensions';
3
+ import { extensionAccounts$, getReconnectSync, initialisedExtensions$, reconnectSync$, resetAccounts, } from '@w3ux/observables-connect';
4
+ import { unsubAll } from '@w3ux/observables-connect/accounts';
5
+ import { connectExtension as doConnectExtension, reconnectExtensions, } from '@w3ux/observables-connect/extensions';
5
6
  import { formatAccountSs58 } from '@w3ux/utils';
6
7
  import { useEffect, useState } from 'react';
7
8
  import { combineLatest } from 'rxjs';
@@ -39,7 +40,7 @@ export const ExtensionAccountsProvider = ({ children, ss58, dappName, }) => {
39
40
  useEffect(() => {
40
41
  const sub = combineLatest([
41
42
  initialisedExtensions$,
42
- accounts$,
43
+ extensionAccounts$,
43
44
  reconnectSync$,
44
45
  ]).subscribe(([initialised, accounts, sync]) => {
45
46
  setExtensionsInitialised(initialised);
@@ -1 +1 @@
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 { createSafeContext } from '@w3ux/hooks'\nimport {\n accounts$,\n connectExtension as doConnectExtension,\n getReconnectSync,\n reconnectExtensions,\n reconnectSync$,\n resetAccounts,\n unsubAll,\n} from '@w3ux/observables-connect/accounts'\nimport { initialisedExtensions$ } from '@w3ux/observables-connect/extensions'\nimport type { ImportedAccount, Sync } from '@w3ux/types'\nimport { formatAccountSs58 } from '@w3ux/utils'\nimport { useEffect, useState } from 'react'\nimport { combineLatest } from 'rxjs'\nimport { useExtensions } from '../ExtensionsProvider'\nimport type {\n ExtensionAccountsContextInterface,\n ExtensionAccountsProviderProps,\n} from './types'\n\nexport const [ExtensionAccountsContext, useExtensionAccounts] =\n createSafeContext<ExtensionAccountsContextInterface>()\n\nexport const ExtensionAccountsProvider = ({\n children,\n ss58,\n dappName,\n}: ExtensionAccountsProviderProps) => {\n const { gettingExtensions } = useExtensions()\n\n // Store connected extension accounts\n const [extensionAccounts, setExtensionAccounts] = useState<ImportedAccount[]>(\n []\n )\n // Stores initialised extensions\n const [extensionsInitialised, setExtensionsInitialised] = useState<string[]>(\n []\n )\n // Store whether previously enabled extensions have been re-connected\n const [extensionsSynced, setExtensionsSynced] = useState<Sync>('unsynced')\n\n // Handle initial connection to previously enabled extensions\n const handleInitialConnect = async () => {\n if (!gettingExtensions && getReconnectSync() === 'unsynced') {\n // Defensive: unsubscribe from all accounts and reset state\n unsubAll()\n resetAccounts()\n await reconnectExtensions(dappName, ss58)\n }\n }\n\n // Connects to a single extension and processes its accounts\n const connectExtension = async (id: string): Promise<boolean> =>\n await doConnectExtension(dappName, ss58, id)\n\n // Get extension accounts, formatted by a provided ss58 prefix\n const getExtensionAccounts = (ss58Prefix: number): ImportedAccount[] =>\n extensionAccounts\n .map((account) => {\n const formattedAddress = formatAccountSs58(account.address, ss58Prefix)\n if (!formattedAddress) {\n return null\n }\n return {\n ...account,\n address: formattedAddress,\n }\n })\n .filter((account) => account !== null)\n\n // Initialise extension accounts sync\n useEffect(() => {\n handleInitialConnect()\n return () => unsubAll()\n }, [gettingExtensions])\n\n // Subscribes to observables and updates state\n useEffect(() => {\n const sub = combineLatest([\n initialisedExtensions$,\n accounts$,\n reconnectSync$,\n ]).subscribe(([initialised, accounts, sync]) => {\n setExtensionsInitialised(initialised)\n setExtensionAccounts(accounts)\n setExtensionsSynced(sync)\n })\n return () => {\n sub.unsubscribe()\n }\n }, [])\n\n return (\n <ExtensionAccountsContext.Provider\n value={{\n extensionsInitialised,\n connectExtension,\n extensionsSynced,\n getExtensionAccounts,\n }}\n >\n {children}\n </ExtensionAccountsContext.Provider>\n )\n}\n"]}
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 { createSafeContext } from '@w3ux/hooks'\nimport {\n extensionAccounts$,\n getReconnectSync,\n initialisedExtensions$,\n reconnectSync$,\n resetAccounts,\n} from '@w3ux/observables-connect'\nimport { unsubAll } from '@w3ux/observables-connect/accounts'\nimport {\n connectExtension as doConnectExtension,\n reconnectExtensions,\n} from '@w3ux/observables-connect/extensions'\nimport type { ImportedAccount, Sync } from '@w3ux/types'\nimport { formatAccountSs58 } from '@w3ux/utils'\nimport { useEffect, useState } from 'react'\nimport { combineLatest } from 'rxjs'\nimport { useExtensions } from '../ExtensionsProvider'\nimport type {\n ExtensionAccountsContextInterface,\n ExtensionAccountsProviderProps,\n} from './types'\n\nexport const [ExtensionAccountsContext, useExtensionAccounts] =\n createSafeContext<ExtensionAccountsContextInterface>()\n\nexport const ExtensionAccountsProvider = ({\n children,\n ss58,\n dappName,\n}: ExtensionAccountsProviderProps) => {\n const { gettingExtensions } = useExtensions()\n\n // Store connected extension accounts\n const [extensionAccounts, setExtensionAccounts] = useState<ImportedAccount[]>(\n []\n )\n // Stores initialised extensions\n const [extensionsInitialised, setExtensionsInitialised] = useState<string[]>(\n []\n )\n // Store whether previously enabled extensions have been re-connected\n const [extensionsSynced, setExtensionsSynced] = useState<Sync>('unsynced')\n\n // Handle initial connection to previously enabled extensions\n const handleInitialConnect = async () => {\n if (!gettingExtensions && getReconnectSync() === 'unsynced') {\n // Defensive: unsubscribe from all accounts and reset state\n unsubAll()\n resetAccounts()\n await reconnectExtensions(dappName, ss58)\n }\n }\n\n // Connects to a single extension and processes its accounts\n const connectExtension = async (id: string): Promise<boolean> =>\n await doConnectExtension(dappName, ss58, id)\n\n // Get extension accounts, formatted by a provided ss58 prefix\n const getExtensionAccounts = (ss58Prefix: number): ImportedAccount[] =>\n extensionAccounts\n .map((account) => {\n const formattedAddress = formatAccountSs58(account.address, ss58Prefix)\n if (!formattedAddress) {\n return null\n }\n return {\n ...account,\n address: formattedAddress,\n }\n })\n .filter((account) => account !== null)\n\n // Initialise extension accounts sync\n useEffect(() => {\n handleInitialConnect()\n return () => unsubAll()\n }, [gettingExtensions])\n\n // Subscribes to observables and updates state\n useEffect(() => {\n const sub = combineLatest([\n initialisedExtensions$,\n extensionAccounts$,\n reconnectSync$,\n ]).subscribe(([initialised, accounts, sync]) => {\n setExtensionsInitialised(initialised)\n setExtensionAccounts(accounts)\n setExtensionsSynced(sync)\n })\n return () => {\n sub.unsubscribe()\n }\n }, [])\n\n return (\n <ExtensionAccountsContext.Provider\n value={{\n extensionsInitialised,\n connectExtension,\n extensionsSynced,\n getExtensionAccounts,\n }}\n >\n {children}\n </ExtensionAccountsContext.Provider>\n )\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import extensions from '@w3ux/extension-assets';
3
3
  import { createSafeContext } from '@w3ux/hooks';
4
- import { canConnect, getExtensions, getStatus, removeStatus, setStatus, } from '@w3ux/observables-connect/extensions';
5
- import { extensionsStatus$, gettingExtensions$, } from '@w3ux/observables-connect/extensions/observables';
4
+ import { canConnect, extensionsStatus$, getStatus, gettingExtensions$, removeStatus, setStatus, } from '@w3ux/observables-connect';
5
+ import { getExtensions } from '@w3ux/observables-connect/extensions';
6
6
  import { useEffect, useState } from 'react';
7
7
  import { combineLatest } from 'rxjs';
8
8
  export const [ExtensionsContext, useExtensions] = createSafeContext();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ExtensionsProvider/index.tsx"],"names":[],"mappings":";AAGA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EACL,UAAU,EACV,aAAa,EACb,SAAS,EACT,YAAY,EACZ,SAAS,GACV,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kDAAkD,CAAA;AAEzD,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAGpC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAC7C,iBAAiB,EAA8B,CAAA;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE;IAE1E,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,CAAA;IAGzE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAA;IAG9E,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAE,MAAuB,EAAE,EAAE;QACjE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IACvB,CAAC,CAAA;IAGD,MAAM,qBAAqB,GAAG,CAAC,EAAU,EAAE,EAAE;QAC3C,YAAY,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC,CAAA;IAGD,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAW,EAAE,CACjD,SAAS,CAAC,EAAE,CAAC,KAAK,SAAS,CAAA;IAG7B,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAGnE,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAE,OAAe,EAAW,EAAE;QACnE,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAA;QAC/C,OAAO,QAAQ,KAAK,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC,CAAA;IAGD,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,EAAE,CAAA;QACf,MAAM,GAAG,GAAG,aAAa,CAAC;YACxB,kBAAkB;YAClB,iBAAiB;SAClB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE;YACjC,oBAAoB,CAAC,OAAO,CAAC,CAAA;YAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,WAAW,EAAE,CAAA;QACnB,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IACzB,KAAK,EAAE;YACL,gBAAgB;YAChB,iBAAiB;YACjB,kBAAkB;YAClB,qBAAqB;YACrB,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;SACpB,YAEA,QAAQ,GACkB,CAC9B,CAAA;AACH,CAAC,CAAA","file":"index.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport extensions from '@w3ux/extension-assets'\nimport { createSafeContext } from '@w3ux/hooks'\nimport {\n canConnect,\n getExtensions,\n getStatus,\n removeStatus,\n setStatus,\n} from '@w3ux/observables-connect/extensions'\nimport {\n extensionsStatus$,\n gettingExtensions$,\n} from '@w3ux/observables-connect/extensions/observables'\nimport type { ExtensionsStatus, ExtensionStatus } from '@w3ux/types'\nimport { type ReactNode, useEffect, useState } from 'react'\nimport { combineLatest } from 'rxjs'\nimport type { ExtensionsContextInterface } from './types'\n\nexport const [ExtensionsContext, useExtensions] =\n createSafeContext<ExtensionsContextInterface>()\n\nexport const ExtensionsProvider = ({ children }: { children: ReactNode }) => {\n // Store whether extensions are being fetched\n const [gettingExtensions, setGettingExtensions] = useState<boolean>(true)\n\n // Store discovered extensions along with their status\n const [extensionsStatus, setExtensionsStatus] = useState<ExtensionsStatus>({})\n\n // Setter for an extension status\n const setExtensionStatus = (id: string, status: ExtensionStatus) => {\n setStatus(id, status)\n }\n\n // Removes an extension status\n const removeExtensionStatus = (id: string) => {\n removeStatus(id)\n }\n\n // Checks if an extension has been installed\n const extensionInstalled = (id: string): boolean =>\n getStatus(id) !== undefined\n\n // Checks whether an extension can be connected to\n const extensionCanConnect = (id: string): boolean => canConnect(id)\n\n // Checks whether an extension supports a feature\n const extensionHasFeature = (id: string, feature: string): boolean => {\n const features = extensions[id]?.features || []\n return features === '*' || features.includes(feature)\n }\n\n // Subscribes to observables and updates state\n useEffect(() => {\n getExtensions()\n const sub = combineLatest([\n gettingExtensions$,\n extensionsStatus$,\n ]).subscribe(([getting, status]) => {\n setGettingExtensions(getting)\n setExtensionsStatus(status)\n })\n return () => {\n sub.unsubscribe()\n }\n }, [])\n\n return (\n <ExtensionsContext.Provider\n value={{\n extensionsStatus,\n gettingExtensions,\n setExtensionStatus,\n removeExtensionStatus,\n extensionInstalled,\n extensionCanConnect,\n extensionHasFeature,\n }}\n >\n {children}\n </ExtensionsContext.Provider>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/ExtensionsProvider/index.tsx"],"names":[],"mappings":";AAGA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,SAAS,GACV,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AAEpE,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAGpC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAC7C,iBAAiB,EAA8B,CAAA;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE;IAE1E,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,CAAA;IAGzE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAA;IAG9E,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAE,MAAuB,EAAE,EAAE;QACjE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IACvB,CAAC,CAAA;IAGD,MAAM,qBAAqB,GAAG,CAAC,EAAU,EAAE,EAAE;QAC3C,YAAY,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC,CAAA;IAGD,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAW,EAAE,CACjD,SAAS,CAAC,EAAE,CAAC,KAAK,SAAS,CAAA;IAG7B,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAGnE,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAE,OAAe,EAAW,EAAE;QACnE,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAA;QAC/C,OAAO,QAAQ,KAAK,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC,CAAA;IAGD,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,EAAE,CAAA;QACf,MAAM,GAAG,GAAG,aAAa,CAAC;YACxB,kBAAkB;YAClB,iBAAiB;SAClB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE;YACjC,oBAAoB,CAAC,OAAO,CAAC,CAAA;YAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,WAAW,EAAE,CAAA;QACnB,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IACzB,KAAK,EAAE;YACL,gBAAgB;YAChB,iBAAiB;YACjB,kBAAkB;YAClB,qBAAqB;YACrB,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;SACpB,YAEA,QAAQ,GACkB,CAC9B,CAAA;AACH,CAAC,CAAA","file":"index.js","sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport extensions from '@w3ux/extension-assets'\nimport { createSafeContext } from '@w3ux/hooks'\nimport {\n canConnect,\n extensionsStatus$,\n getStatus,\n gettingExtensions$,\n removeStatus,\n setStatus,\n} from '@w3ux/observables-connect'\nimport { getExtensions } from '@w3ux/observables-connect/extensions'\nimport type { ExtensionsStatus, ExtensionStatus } from '@w3ux/types'\nimport { type ReactNode, useEffect, useState } from 'react'\nimport { combineLatest } from 'rxjs'\nimport type { ExtensionsContextInterface } from './types'\n\nexport const [ExtensionsContext, useExtensions] =\n createSafeContext<ExtensionsContextInterface>()\n\nexport const ExtensionsProvider = ({ children }: { children: ReactNode }) => {\n // Store whether extensions are being fetched\n const [gettingExtensions, setGettingExtensions] = useState<boolean>(true)\n\n // Store discovered extensions along with their status\n const [extensionsStatus, setExtensionsStatus] = useState<ExtensionsStatus>({})\n\n // Setter for an extension status\n const setExtensionStatus = (id: string, status: ExtensionStatus) => {\n setStatus(id, status)\n }\n\n // Removes an extension status\n const removeExtensionStatus = (id: string) => {\n removeStatus(id)\n }\n\n // Checks if an extension has been installed\n const extensionInstalled = (id: string): boolean =>\n getStatus(id) !== undefined\n\n // Checks whether an extension can be connected to\n const extensionCanConnect = (id: string): boolean => canConnect(id)\n\n // Checks whether an extension supports a feature\n const extensionHasFeature = (id: string, feature: string): boolean => {\n const features = extensions[id]?.features || []\n return features === '*' || features.includes(feature)\n }\n\n // Subscribes to observables and updates state\n useEffect(() => {\n getExtensions()\n const sub = combineLatest([\n gettingExtensions$,\n extensionsStatus$,\n ]).subscribe(([getting, status]) => {\n setGettingExtensions(getting)\n setExtensionsStatus(status)\n })\n return () => {\n sub.unsubscribe()\n }\n }, [])\n\n return (\n <ExtensionsContext.Provider\n value={{\n extensionsStatus,\n gettingExtensions,\n setExtensionStatus,\n removeExtensionStatus,\n extensionInstalled,\n extensionCanConnect,\n extensionHasFeature,\n }}\n >\n {children}\n </ExtensionsContext.Provider>\n )\n}\n"]}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@w3ux/react-connect-kit",
3
- "version": "3.2.20",
3
+ "version": "3.2.22",
4
4
  "license": "GPL-3.0-only",
5
5
  "dependencies": {
6
6
  "@w3ux/extension-assets": "^2.2.0",
7
7
  "@w3ux/hooks": "^2.1.0",
8
- "@w3ux/observables-connect": "0.9.27",
8
+ "@w3ux/observables-connect": "0.9.30",
9
9
  "@w3ux/utils": "^2.0.8"
10
10
  },
11
11
  "type": "module",