@xyo-network/react-wallet 2.44.2 → 2.44.3
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/dist/cjs/components/WalletAccountSelect/Select.js +3 -3
- package/dist/cjs/components/WalletAccountSelect/Select.js.map +1 -1
- package/dist/cjs/contexts/Wallet/Provider.js +11 -18
- package/dist/cjs/contexts/Wallet/Provider.js.map +1 -1
- package/dist/docs.json +940 -1026
- package/dist/esm/components/WalletAccountSelect/Select.js +3 -3
- package/dist/esm/components/WalletAccountSelect/Select.js.map +1 -1
- package/dist/esm/contexts/Wallet/Provider.js +11 -18
- package/dist/esm/contexts/Wallet/Provider.js.map +1 -1
- package/dist/types/contexts/Wallet/Provider.d.ts.map +1 -1
- package/dist/types/contexts/Wallet/State.d.ts +0 -3
- package/dist/types/contexts/Wallet/State.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/components/WalletAccountSelect/Select.tsx +3 -3
- package/src/components/WalletAccountSelect/WalletAccountSelect.stories.tsx +2 -2
- package/src/contexts/Wallet/Provider.tsx +10 -19
- package/src/contexts/Wallet/State.ts +0 -3
|
@@ -10,13 +10,13 @@ const arrayRange = (length, start = 0) => {
|
|
|
10
10
|
return Array.from(Array(length).keys()).map((x) => x + start);
|
|
11
11
|
};
|
|
12
12
|
export const WalletAccountSelect = ({ iconOnly, iconSize = 24, icons, maxAccounts = 1, size, ...props }) => {
|
|
13
|
-
const {
|
|
13
|
+
const { activeAccountIndex = 0, setActiveAccountIndex, wallet } = useWallet();
|
|
14
14
|
return (_jsx(SelectEx, { renderValue: (selected) => {
|
|
15
|
-
const account =
|
|
15
|
+
const account = wallet?.deriveAccount(selected.toString());
|
|
16
16
|
return (_jsxs(FlexRow, { justifyContent: "flex-start", gap: 1, children: [icons ? (_jsx(FlexRow, { children: _jsx(Identicon, { size: iconSize, value: account?.addressValue.hex }) })) : null, _jsx(EthAccountBox, { alignItems: "stretch", iconOnly: iconOnly, address: EthAddress.fromString(account?.addressValue.hex) })] }));
|
|
17
17
|
}, value: activeAccountIndex, onChange: (event) => setActiveAccountIndex?.(parseInt(`${event.target.value}`)), size: size, variant: "outlined", ...props, children: wallet
|
|
18
18
|
? arrayRange(maxAccounts).map((index) => {
|
|
19
|
-
const account =
|
|
19
|
+
const account = wallet?.deriveAccount(index.toString());
|
|
20
20
|
return (_jsx(MenuItem, { value: index, children: _jsx(EthAccountBox, { iconSize: iconSize, icon: icons, address: EthAddress.fromString(account?.addressValue.hex) }) }, index));
|
|
21
21
|
})
|
|
22
22
|
: null }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../src/components/WalletAccountSelect/Select.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAe,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAS1C,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC7I,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../src/components/WalletAccountSelect/Select.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAe,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAS1C,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC7I,MAAM,EAAE,kBAAkB,GAAG,CAAC,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAA;IAE7E,OAAO,CACL,KAAC,QAAQ,IACP,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;YACxB,MAAM,OAAO,GAAG,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC1D,OAAO,CACL,MAAC,OAAO,IAAC,cAAc,EAAC,YAAY,EAAC,GAAG,EAAE,CAAC,aACxC,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,OAAO,cACN,KAAC,SAAS,IAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,GAAI,GACvD,CACX,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,aAAa,IAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,GAAI,IAC7G,CACX,CAAA;QACH,CAAC,EACD,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAC/E,IAAI,EAAE,IAAI,EACV,OAAO,EAAC,UAAU,KACd,KAAK,YAER,MAAM;YACL,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpC,MAAM,OAAO,GAAG,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACvD,OAAO,CACL,KAAC,QAAQ,IAAa,KAAK,EAAE,KAAK,YAChC,KAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,GAAI,IADhG,KAAK,CAET,CACZ,CAAA;YACH,CAAC,CAAC;YACJ,CAAC,CAAC,IAAI,GACC,CACZ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -3,41 +3,34 @@ import { useEffect, useState } from 'react';
|
|
|
3
3
|
import { AccountContext } from '../Account';
|
|
4
4
|
import { WalletContext } from './Context';
|
|
5
5
|
import { useWallet } from './use';
|
|
6
|
-
const WalletBase = 'm
|
|
7
|
-
const WalletRootPath =
|
|
6
|
+
const WalletBase = 'm';
|
|
7
|
+
const WalletRootPath = "44'/60'/0'/0";
|
|
8
8
|
const AccountWalletProvider = (props) => {
|
|
9
9
|
const { wallet, activeAccountIndex = 0 } = useWallet();
|
|
10
|
-
return _jsx(AccountContext.Provider, { value: { account: wallet?.deriveAccount(
|
|
10
|
+
return _jsx(AccountContext.Provider, { value: { account: wallet?.deriveAccount(activeAccountIndex.toString()), provided: true }, ...props });
|
|
11
11
|
};
|
|
12
12
|
export const WalletProvider = ({ children, defaultActiveAccountIndex = 0, defaultWallet, ...props }) => {
|
|
13
13
|
const [wallet, setWallet] = useState(defaultWallet);
|
|
14
14
|
const [activeAccountIndex, setActiveAccountIndex] = useState(defaultActiveAccountIndex);
|
|
15
|
-
const [activeRootAccountPath, setActiveRootAccountPath] = useState();
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
setActiveRootAccountPath(`${WalletRootPath}${activeAccountIndex.toString()}`);
|
|
18
|
-
}, [activeAccountIndex]);
|
|
19
15
|
useEffect(() => {
|
|
20
16
|
if (defaultActiveAccountIndex !== undefined) {
|
|
21
17
|
setActiveAccountIndex(defaultActiveAccountIndex);
|
|
22
18
|
}
|
|
23
19
|
}, [defaultActiveAccountIndex]);
|
|
24
20
|
useEffect(() => {
|
|
21
|
+
// ensure the wallet has the proper base
|
|
25
22
|
if (defaultWallet) {
|
|
26
|
-
|
|
23
|
+
try {
|
|
24
|
+
const walletWithBasePath = defaultWallet?.derivePath(WalletBase).derivePath(WalletRootPath);
|
|
25
|
+
setWallet(walletWithBasePath);
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
console.error('Error setting proper wallet base path', e);
|
|
29
|
+
}
|
|
27
30
|
}
|
|
28
31
|
}, [defaultWallet]);
|
|
29
|
-
const deriveRootAccount = (path) => {
|
|
30
|
-
if (wallet) {
|
|
31
|
-
return wallet.deriveAccount(`${WalletRootPath}${path}`);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
throw new Error('Wallet was not created');
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
32
|
return (_jsx(WalletContext.Provider, { value: {
|
|
38
33
|
activeAccountIndex,
|
|
39
|
-
activeRootAccountPath,
|
|
40
|
-
deriveRootAccount,
|
|
41
34
|
provided: true,
|
|
42
35
|
setActiveAccountIndex,
|
|
43
36
|
setWallet,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/Wallet/Provider.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/Wallet/Provider.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,UAAU,GAAG,GAAG,CAAA;AACtB,MAAM,cAAc,GAAG,cAAc,CAAA;AAOrC,MAAM,qBAAqB,GAA2B,CAAC,KAAK,EAAE,EAAE;IAC9D,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;IAEtD,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAM,KAAK,GAAI,CAAA;AACzI,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAgD,CAAC,EAAE,QAAQ,EAAE,yBAAyB,GAAG,CAAC,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAClJ,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAuB,aAAa,CAAC,CAAA;IACzE,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,yBAAyB,CAAC,CAAA;IAEvF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,yBAAyB,KAAK,SAAS,EAAE;YAC3C,qBAAqB,CAAC,yBAAyB,CAAC,CAAA;SACjD;IACH,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAA;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,wCAAwC;QACxC,IAAI,aAAa,EAAE;YACjB,IAAI;gBACF,MAAM,kBAAkB,GAAG,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;gBAC3F,SAAS,CAAC,kBAAkB,CAAC,CAAA;aAC9B;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAA;aAC1D;SACF;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;IAEnB,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IACrB,KAAK,EAAE;YACL,kBAAkB;YAClB,QAAQ,EAAE,IAAI;YACd,qBAAqB;YACrB,SAAS;YACT,MAAM;SACP,KACG,KAAK,YAET,KAAC,qBAAqB,cAAE,QAAQ,GAAyB,GAClC,CAC1B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/Wallet/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAU/C,MAAM,WAAW,mBAAmB;IAClC,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,aAAa,CAAC,EAAE,QAAQ,CAAA;CACzB;AAQD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/Wallet/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAU/C,MAAM,WAAW,mBAAmB;IAClC,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,aAAa,CAAC,EAAE,QAAQ,CAAA;CACzB;AAQD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAoCtE,CAAA"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { HDWallet } from '@xyo-network/account';
|
|
2
|
-
import { AccountInstance } from '@xyo-network/account-model';
|
|
3
2
|
import { ContextExState } from '@xyo-network/react-shared';
|
|
4
3
|
import { Dispatch, SetStateAction } from 'react';
|
|
5
4
|
export interface WalletContextState extends ContextExState {
|
|
6
5
|
activeAccountIndex?: number;
|
|
7
|
-
activeRootAccountPath?: string;
|
|
8
|
-
deriveRootAccount?: (path: string) => AccountInstance;
|
|
9
6
|
setActiveAccountIndex?: Dispatch<number>;
|
|
10
7
|
setWallet?: Dispatch<SetStateAction<HDWallet | undefined>>;
|
|
11
8
|
wallet?: HDWallet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../../src/contexts/Wallet/State.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../../src/contexts/Wallet/State.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEhD,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxC,SAAS,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,EAAE,QAAQ,CAAA;CAClB"}
|
package/package.json
CHANGED
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"@xylabs/react-shared": "^2.16.8",
|
|
21
21
|
"@xyo-network/account": "^2.51.4",
|
|
22
22
|
"@xyo-network/account-model": "^2.51.4",
|
|
23
|
-
"@xyo-network/react-network": "^2.44.
|
|
24
|
-
"@xyo-network/react-shared": "^2.44.
|
|
23
|
+
"@xyo-network/react-network": "^2.44.3",
|
|
24
|
+
"@xyo-network/react-shared": "^2.44.3"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@mui/icons-material": "^5",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@storybook/react": "^6.5.16",
|
|
39
39
|
"@xylabs/ts-scripts-yarn3": "^2.16.0",
|
|
40
40
|
"@xylabs/tsconfig-react": "^2.16.0",
|
|
41
|
-
"@xyo-network/react-storybook": "^2.44.
|
|
41
|
+
"@xyo-network/react-storybook": "^2.44.3",
|
|
42
42
|
"require-from-string": "^2.0.2",
|
|
43
43
|
"typescript": "^4.9.5"
|
|
44
44
|
},
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
},
|
|
85
85
|
"sideEffects": false,
|
|
86
86
|
"types": "dist/types/index.d.ts",
|
|
87
|
-
"version": "2.44.
|
|
87
|
+
"version": "2.44.3"
|
|
88
88
|
}
|
|
@@ -19,12 +19,12 @@ const arrayRange = (length: number, start = 0) => {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export const WalletAccountSelect: React.FC<WalletAccountSelectProps> = ({ iconOnly, iconSize = 24, icons, maxAccounts = 1, size, ...props }) => {
|
|
22
|
-
const {
|
|
22
|
+
const { activeAccountIndex = 0, setActiveAccountIndex, wallet } = useWallet()
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
25
|
<SelectEx
|
|
26
26
|
renderValue={(selected) => {
|
|
27
|
-
const account =
|
|
27
|
+
const account = wallet?.deriveAccount(selected.toString())
|
|
28
28
|
return (
|
|
29
29
|
<FlexRow justifyContent="flex-start" gap={1}>
|
|
30
30
|
{icons ? (
|
|
@@ -44,7 +44,7 @@ export const WalletAccountSelect: React.FC<WalletAccountSelectProps> = ({ iconOn
|
|
|
44
44
|
>
|
|
45
45
|
{wallet
|
|
46
46
|
? arrayRange(maxAccounts).map((index) => {
|
|
47
|
-
const account =
|
|
47
|
+
const account = wallet?.deriveAccount(index.toString())
|
|
48
48
|
return (
|
|
49
49
|
<MenuItem key={index} value={index}>
|
|
50
50
|
<EthAccountBox iconSize={iconSize} icon={icons} address={EthAddress.fromString(account?.addressValue.hex)} />
|
|
@@ -17,13 +17,13 @@ const StorybookEntry = {
|
|
|
17
17
|
} as ComponentMeta<typeof WalletAccountSelect>
|
|
18
18
|
|
|
19
19
|
const Template: ComponentStory<typeof WalletAccountSelect> = (args) => {
|
|
20
|
-
return <WalletAccountSelect {...args}
|
|
20
|
+
return <WalletAccountSelect {...args} />
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const WithWalletTemplate: ComponentStory<typeof WalletAccountSelect> = (args) => {
|
|
24
24
|
return (
|
|
25
25
|
<WalletProvider defaultWallet={HDWallet.fromMnemonic(DefaultSeedPhrase)}>
|
|
26
|
-
<WalletAccountSelect {...args}
|
|
26
|
+
<WalletAccountSelect {...args} />
|
|
27
27
|
</WalletProvider>
|
|
28
28
|
)
|
|
29
29
|
}
|
|
@@ -6,8 +6,8 @@ import { AccountContext } from '../Account'
|
|
|
6
6
|
import { WalletContext } from './Context'
|
|
7
7
|
import { useWallet } from './use'
|
|
8
8
|
|
|
9
|
-
const WalletBase = 'm
|
|
10
|
-
const WalletRootPath =
|
|
9
|
+
const WalletBase = 'm'
|
|
10
|
+
const WalletRootPath = "44'/60'/0'/0"
|
|
11
11
|
|
|
12
12
|
export interface WalletProviderProps {
|
|
13
13
|
defaultActiveAccountIndex?: number
|
|
@@ -17,17 +17,12 @@ export interface WalletProviderProps {
|
|
|
17
17
|
const AccountWalletProvider: React.FC<WithChildren> = (props) => {
|
|
18
18
|
const { wallet, activeAccountIndex = 0 } = useWallet()
|
|
19
19
|
|
|
20
|
-
return <AccountContext.Provider value={{ account: wallet?.deriveAccount(
|
|
20
|
+
return <AccountContext.Provider value={{ account: wallet?.deriveAccount(activeAccountIndex.toString()), provided: true }} {...props} />
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export const WalletProvider: React.FC<WithChildren<WalletProviderProps>> = ({ children, defaultActiveAccountIndex = 0, defaultWallet, ...props }) => {
|
|
24
24
|
const [wallet, setWallet] = useState<HDWallet | undefined>(defaultWallet)
|
|
25
25
|
const [activeAccountIndex, setActiveAccountIndex] = useState(defaultActiveAccountIndex)
|
|
26
|
-
const [activeRootAccountPath, setActiveRootAccountPath] = useState<string>()
|
|
27
|
-
|
|
28
|
-
useEffect(() => {
|
|
29
|
-
setActiveRootAccountPath(`${WalletRootPath}${activeAccountIndex.toString()}`)
|
|
30
|
-
}, [activeAccountIndex])
|
|
31
26
|
|
|
32
27
|
useEffect(() => {
|
|
33
28
|
if (defaultActiveAccountIndex !== undefined) {
|
|
@@ -36,25 +31,21 @@ export const WalletProvider: React.FC<WithChildren<WalletProviderProps>> = ({ ch
|
|
|
36
31
|
}, [defaultActiveAccountIndex])
|
|
37
32
|
|
|
38
33
|
useEffect(() => {
|
|
34
|
+
// ensure the wallet has the proper base
|
|
39
35
|
if (defaultWallet) {
|
|
40
|
-
|
|
36
|
+
try {
|
|
37
|
+
const walletWithBasePath = defaultWallet?.derivePath(WalletBase).derivePath(WalletRootPath)
|
|
38
|
+
setWallet(walletWithBasePath)
|
|
39
|
+
} catch (e) {
|
|
40
|
+
console.error('Error setting proper wallet base path', e)
|
|
41
|
+
}
|
|
41
42
|
}
|
|
42
43
|
}, [defaultWallet])
|
|
43
44
|
|
|
44
|
-
const deriveRootAccount = (path: string) => {
|
|
45
|
-
if (wallet) {
|
|
46
|
-
return wallet.deriveAccount(`${WalletRootPath}${path}`)
|
|
47
|
-
} else {
|
|
48
|
-
throw new Error('Wallet was not created')
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
45
|
return (
|
|
53
46
|
<WalletContext.Provider
|
|
54
47
|
value={{
|
|
55
48
|
activeAccountIndex,
|
|
56
|
-
activeRootAccountPath,
|
|
57
|
-
deriveRootAccount,
|
|
58
49
|
provided: true,
|
|
59
50
|
setActiveAccountIndex,
|
|
60
51
|
setWallet,
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { HDWallet } from '@xyo-network/account'
|
|
2
|
-
import { AccountInstance } from '@xyo-network/account-model'
|
|
3
2
|
import { ContextExState } from '@xyo-network/react-shared'
|
|
4
3
|
import { Dispatch, SetStateAction } from 'react'
|
|
5
4
|
|
|
6
5
|
export interface WalletContextState extends ContextExState {
|
|
7
6
|
activeAccountIndex?: number
|
|
8
|
-
activeRootAccountPath?: string
|
|
9
|
-
deriveRootAccount?: (path: string) => AccountInstance
|
|
10
7
|
setActiveAccountIndex?: Dispatch<number>
|
|
11
8
|
setWallet?: Dispatch<SetStateAction<HDWallet | undefined>>
|
|
12
9
|
wallet?: HDWallet
|