@reef-knot/web3-react 1.13.1 → 2.0.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/README.md +4 -109
- package/dist/_virtual/_tslib.js +1 -13
- package/dist/helpers/index.d.ts +1 -3
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +2 -4
- package/dist/helpers/providerDetectors.d.ts +0 -28
- package/dist/helpers/providerDetectors.d.ts.map +1 -1
- package/dist/helpers/providerDetectors.js +6 -114
- package/dist/helpers/{ua.d.ts → userAgents.d.ts} +1 -6
- package/dist/helpers/userAgents.d.ts.map +1 -0
- package/dist/helpers/userAgents.js +11 -0
- package/dist/hooks/index.d.ts +0 -3
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useConnectorError.js +1 -1
- package/dist/hooks/useConnectorInfo.d.ts +0 -6
- package/dist/hooks/useConnectorInfo.d.ts.map +1 -1
- package/dist/hooks/useConnectorInfo.js +8 -56
- package/dist/hooks/useDisconnect.d.ts +1 -1
- package/dist/hooks/useDisconnect.d.ts.map +1 -1
- package/dist/hooks/useDisconnect.js +5 -17
- package/dist/hooks/useSupportedChains.d.ts.map +1 -1
- package/dist/hooks/useSupportedChains.js +3 -27
- package/dist/hooks/useWeb3.d.ts +14 -2
- package/dist/hooks/useWeb3.d.ts.map +1 -1
- package/dist/hooks/useWeb3.js +25 -13
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -9
- package/package.json +6 -24
- package/dist/constants/connectors.d.ts +0 -22
- package/dist/constants/connectors.d.ts.map +0 -1
- package/dist/constants/connectors.js +0 -25
- package/dist/constants/index.d.ts +0 -4
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/storage.d.ts +0 -2
- package/dist/constants/storage.d.ts.map +0 -1
- package/dist/constants/storage.js +0 -3
- package/dist/constants/web3.d.ts +0 -2
- package/dist/constants/web3.d.ts.map +0 -1
- package/dist/constants/web3.js +0 -3
- package/dist/context/connectors.d.ts +0 -22
- package/dist/context/connectors.d.ts.map +0 -1
- package/dist/context/connectors.js +0 -41
- package/dist/context/index.d.ts +0 -5
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/web3.d.ts +0 -16
- package/dist/context/web3.d.ts.map +0 -1
- package/dist/context/web3.js +0 -127
- package/dist/helpers/isUrl.d.ts +0 -2
- package/dist/helpers/isUrl.d.ts.map +0 -1
- package/dist/helpers/isUrl.js +0 -6
- package/dist/helpers/openWindow.d.ts +0 -2
- package/dist/helpers/openWindow.d.ts.map +0 -1
- package/dist/helpers/openWindow.js +0 -6
- package/dist/helpers/ua.d.ts.map +0 -1
- package/dist/helpers/ua.js +0 -20
- package/dist/hooks/types.d.ts +0 -4
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/useAutoConnect.d.ts +0 -7
- package/dist/hooks/useAutoConnect.d.ts.map +0 -1
- package/dist/hooks/useAutoConnect.js +0 -132
- package/dist/hooks/useConnectorStorage.d.ts +0 -4
- package/dist/hooks/useConnectorStorage.d.ts.map +0 -1
- package/dist/hooks/useConnectorStorage.js +0 -7
- package/dist/hooks/useConnectors.d.ts +0 -3
- package/dist/hooks/useConnectors.d.ts.map +0 -1
- package/dist/hooks/useConnectors.js +0 -8
package/README.md
CHANGED
|
@@ -1,110 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
### @reef-knot/web3-react
|
|
2
|
+
This is a legacy package, which previously included various helpers and wrappers for the `web3-react` library.
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Provider
|
|
6
|
-
|
|
7
|
-
To use hooks from `@lido-sdk/web3-react` you need to wrap your app with `ProviderWeb3`. ProviderWeb3 also contains `ProviderSDK` from `@lido-sdk/react`. No need to wrap again.
|
|
8
|
-
|
|
9
|
-
```tsx
|
|
10
|
-
import { CHAINS } from '@lido-sdk/constants';
|
|
11
|
-
import { ProviderWeb3 } from '@lido-sdk/web3-react';
|
|
12
|
-
|
|
13
|
-
const rpc = {
|
|
14
|
-
[CHAINS.Mainnet]: '/rpc/mainnet',
|
|
15
|
-
[CHAINS.Rinkeby]: '/rpc/rinkeby',
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
const supportedChainIds = [CHAINS.Mainnet, CHAINS.Rinkeby];
|
|
19
|
-
|
|
20
|
-
const Provider = () => {
|
|
21
|
-
return (
|
|
22
|
-
<ProviderWeb3
|
|
23
|
-
defaultChainId={CHAINS.Mainnet}
|
|
24
|
-
supportedChainIds={supportedChainIds}
|
|
25
|
-
rpc={rpc}
|
|
26
|
-
>
|
|
27
|
-
{children}
|
|
28
|
-
</ProviderWeb3>
|
|
29
|
-
);
|
|
30
|
-
};
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Auto connect
|
|
34
|
-
|
|
35
|
-
The `ProviderWeb3` contains logic to automatically activate one of the connectors when the application is initialized. It checks the conditions and tries to connect in the following order:
|
|
36
|
-
|
|
37
|
-
1. To Ledger Live Dapp Browser with `LedgerHQFrameConnector`.
|
|
38
|
-
2. To Gnosis Safe with `SafeAppConnector`.
|
|
39
|
-
3. To Dapp browser provider with `InjectedConnector`.
|
|
40
|
-
4. To a connector saved in Local Storage.
|
|
41
|
-
|
|
42
|
-
## Connector hooks
|
|
43
|
-
|
|
44
|
-
Hooks for manually connecting to the user's wallet:
|
|
45
|
-
|
|
46
|
-
- useConnectorCoinbase
|
|
47
|
-
- useConnectorImToken
|
|
48
|
-
- useConnectorMetamask
|
|
49
|
-
- useConnectorTrust
|
|
50
|
-
- useConnectorWalletConnect
|
|
51
|
-
|
|
52
|
-
They return an object with a `connect` handler if connecting is possible. In MetaMask, Trust and ImToken hooks the `connect` method contains the Deep Linking logic.
|
|
53
|
-
|
|
54
|
-
```tsx
|
|
55
|
-
import {
|
|
56
|
-
useConnectorMetamask,
|
|
57
|
-
useConnectorCoinbase,
|
|
58
|
-
} from '@lido-sdk/web3-react';
|
|
59
|
-
|
|
60
|
-
const Component = () => {
|
|
61
|
-
const metamask = useConnectorMetamask();
|
|
62
|
-
const coinbase = useConnectorCoinbase();
|
|
63
|
-
|
|
64
|
-
return (
|
|
65
|
-
<div>
|
|
66
|
-
<button onClick={metamask.connect}>Connect to Metamask</button>;
|
|
67
|
-
<button onClick={coinbase.connect}>Connect to Coinbase</button>;
|
|
68
|
-
</div>
|
|
69
|
-
);
|
|
70
|
-
};
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## useDisconnect
|
|
74
|
-
|
|
75
|
-
Return an object with a `disconnect` handler if disconnection is possible.
|
|
76
|
-
|
|
77
|
-
```tsx
|
|
78
|
-
import { useDisconnect } from '@lido-sdk/web3-react';
|
|
79
|
-
|
|
80
|
-
const Component = () => {
|
|
81
|
-
const { disconnect } = useDisconnect();
|
|
82
|
-
|
|
83
|
-
return (
|
|
84
|
-
<button onClick={disconnect} disabled={!disconnect}>
|
|
85
|
-
Disconnect
|
|
86
|
-
</button>
|
|
87
|
-
);
|
|
88
|
-
};
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## useSupportedChains
|
|
92
|
-
|
|
93
|
-
```tsx
|
|
94
|
-
import { useSupportedChains } from '@lido-sdk/web3-react';
|
|
95
|
-
|
|
96
|
-
const Component = () => {
|
|
97
|
-
const { isUnsupported, supportedChains } = useSupportedChains();
|
|
98
|
-
|
|
99
|
-
if (isUnsupported) {
|
|
100
|
-
return (
|
|
101
|
-
<div>
|
|
102
|
-
Chain is not supported. Supported chains:{' '}
|
|
103
|
-
{supportedChains.map(({ name }) => name)}
|
|
104
|
-
</div>
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// ...
|
|
109
|
-
};
|
|
110
|
-
```
|
|
4
|
+
The `web3-react` library is not used in Reef Knot anymore, so `@reef-knot/web3-react` was reworked to use wagmi
|
|
5
|
+
and now contains a few hooks and helpers for backwards compatibility.
|
package/dist/_virtual/_tslib.js
CHANGED
|
@@ -13,18 +13,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
13
13
|
PERFORMANCE OF THIS SOFTWARE.
|
|
14
14
|
***************************************************************************** */
|
|
15
15
|
|
|
16
|
-
function __rest(s, e) {
|
|
17
|
-
var t = {};
|
|
18
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
19
|
-
t[p] = s[p];
|
|
20
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
21
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
22
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
23
|
-
t[p[i]] = s[p[i]];
|
|
24
|
-
}
|
|
25
|
-
return t;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
16
|
function __awaiter(thisArg, _arguments, P, generator) {
|
|
29
17
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
18
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -40,4 +28,4 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
40
28
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
41
29
|
};
|
|
42
30
|
|
|
43
|
-
export { __awaiter
|
|
31
|
+
export { __awaiter };
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export * from './providerDetectors';
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './openWindow';
|
|
4
|
-
export { default as isUrl } from './isUrl';
|
|
2
|
+
export * from './userAgents';
|
|
5
3
|
export * from './interceptLedgerError';
|
|
6
4
|
export * from './unsupportedChainError';
|
|
7
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
|
package/dist/helpers/index.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
export { hasInjected,
|
|
2
|
-
export { browser,
|
|
3
|
-
export { openWindow } from './openWindow.js';
|
|
4
|
-
export { default as isUrl } from './isUrl.js';
|
|
1
|
+
export { hasInjected, isDappBrowserProvider, isMetamaskProvider } from './providerDetectors.js';
|
|
2
|
+
export { browser, device, isMobile, isMobileOrTablet, isTablet, os } from './userAgents.js';
|
|
5
3
|
export { LedgerErrorsDict, interceptLedgerError } from './interceptLedgerError.js';
|
|
6
4
|
export { getUnsupportedChainError } from './unsupportedChainError.js';
|
|
@@ -1,32 +1,4 @@
|
|
|
1
|
-
declare global {
|
|
2
|
-
interface Window {
|
|
3
|
-
xfi?: Record<string, unknown>;
|
|
4
|
-
ethereum?: {
|
|
5
|
-
isMetaMask?: boolean;
|
|
6
|
-
isTrust?: boolean;
|
|
7
|
-
isImToken?: boolean;
|
|
8
|
-
isCoinbaseWallet?: boolean;
|
|
9
|
-
isTally?: boolean;
|
|
10
|
-
isExodus?: boolean;
|
|
11
|
-
isXDEFI?: boolean;
|
|
12
|
-
isZerion?: boolean;
|
|
13
|
-
providers?: {
|
|
14
|
-
isCoinbaseWallet?: boolean;
|
|
15
|
-
}[];
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
1
|
export declare const hasInjected: () => boolean;
|
|
20
2
|
export declare const isMetamaskProvider: () => boolean;
|
|
21
|
-
export declare const isCoin98Provider: () => boolean;
|
|
22
|
-
export declare const isImTokenProvider: () => boolean;
|
|
23
|
-
export declare const isTrustProvider: () => boolean;
|
|
24
3
|
export declare const isDappBrowserProvider: () => boolean;
|
|
25
|
-
export declare const isCoinbaseProvider: () => boolean;
|
|
26
|
-
export declare const isTallyProvider: () => boolean;
|
|
27
|
-
export declare const isBraveWalletProvider: () => boolean;
|
|
28
|
-
export declare const isExodusProvider: () => boolean;
|
|
29
|
-
export declare const isXdefiInstalled: () => boolean;
|
|
30
|
-
export declare const isXdefiProvider: () => boolean;
|
|
31
|
-
export declare const isZerionProvider: () => boolean;
|
|
32
4
|
//# sourceMappingURL=providerDetectors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerDetectors.d.ts","sourceRoot":"","sources":["../../src/helpers/providerDetectors.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"providerDetectors.d.ts","sourceRoot":"","sources":["../../src/helpers/providerDetectors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,eAAsC,CAAC;AAE/D,eAAO,MAAM,kBAAkB,eACY,CAAC;AAE5C,eAAO,MAAM,qBAAqB,QAAO,OAExC,CAAC"}
|
|
@@ -1,123 +1,15 @@
|
|
|
1
|
-
import { isMobileOrTablet } from './
|
|
1
|
+
import { isMobileOrTablet } from './userAgents.js';
|
|
2
2
|
|
|
3
3
|
var hasInjected = () => {
|
|
4
|
-
try {
|
|
5
|
-
return !!window.ethereum;
|
|
6
|
-
} catch (error) {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var isMetamaskProvider = () => {
|
|
11
|
-
var _a;
|
|
12
|
-
try {
|
|
13
|
-
return !!((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isMetaMask);
|
|
14
|
-
} catch (error) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
var isCoin98Provider = () => {
|
|
19
|
-
var _a;
|
|
20
|
-
try {
|
|
21
|
-
// @ts-expect-error wagmi redeclares window.ethereum type
|
|
22
|
-
return !!((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isCoin98);
|
|
23
|
-
} catch (error) {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
var isImTokenProvider = () => {
|
|
28
4
|
var _a;
|
|
29
|
-
|
|
30
|
-
return !!((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isImToken);
|
|
31
|
-
} catch (error) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
5
|
+
return !!((_a = globalThis.window) === null || _a === void 0 ? void 0 : _a.ethereum);
|
|
34
6
|
};
|
|
35
|
-
var
|
|
36
|
-
var _a;
|
|
37
|
-
|
|
38
|
-
return !!((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isTrust);
|
|
39
|
-
} catch (error) {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
7
|
+
var isMetamaskProvider = () => {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
return !!((_b = (_a = globalThis.window) === null || _a === void 0 ? void 0 : _a.ethereum) === null || _b === void 0 ? void 0 : _b.isMetaMask);
|
|
42
10
|
};
|
|
43
11
|
var isDappBrowserProvider = () => {
|
|
44
12
|
return isMobileOrTablet && hasInjected();
|
|
45
13
|
};
|
|
46
|
-
var isCoinbaseProvider = () => {
|
|
47
|
-
try {
|
|
48
|
-
if (window.ethereum) {
|
|
49
|
-
var {
|
|
50
|
-
isCoinbaseWallet,
|
|
51
|
-
providers
|
|
52
|
-
} = window.ethereum;
|
|
53
|
-
if (isCoinbaseWallet !== undefined) return isCoinbaseWallet;
|
|
54
|
-
// Handle the case when Coinbase knows that other wallets extensions
|
|
55
|
-
// are installed too, so it changes its behaviour and adds `providers`.
|
|
56
|
-
if (providers === null || providers === void 0 ? void 0 : providers.length) {
|
|
57
|
-
return providers.some(provider => provider.isCoinbaseWallet);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return false;
|
|
61
|
-
} catch (error) {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
var isTallyProvider = () => {
|
|
66
|
-
var _a;
|
|
67
|
-
try {
|
|
68
|
-
return !!((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isTally);
|
|
69
|
-
} catch (error) {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
var isBraveWalletProvider = () => {
|
|
74
|
-
var _a;
|
|
75
|
-
try {
|
|
76
|
-
return !!((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isBraveWallet);
|
|
77
|
-
} catch (error) {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
var isExodusProvider = () => {
|
|
82
|
-
var _a;
|
|
83
|
-
try {
|
|
84
|
-
return !!((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isExodus);
|
|
85
|
-
} catch (error) {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
var isXdefiInstalled = () => {
|
|
90
|
-
try {
|
|
91
|
-
return !!window.xfi;
|
|
92
|
-
} catch (error) {
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
var isXdefiProvider = () => {
|
|
97
|
-
try {
|
|
98
|
-
var {
|
|
99
|
-
ethereum
|
|
100
|
-
} = window;
|
|
101
|
-
if (ethereum) {
|
|
102
|
-
// At the moment of writing, `isXDEFI` and `__XDEFI` options are not documented.
|
|
103
|
-
// If XDEFI is installed and the "Prioritise XDEFI" setting is true,
|
|
104
|
-
// then `isXDEFI` option becomes unexpectedly set to `false`.
|
|
105
|
-
// So, we can just check if this option is in `ethereum` provider object.
|
|
106
|
-
// `__XDEFI` option is used as a fallback.
|
|
107
|
-
return isXdefiInstalled() && (Object.hasOwn(ethereum, 'isXDEFI') || Object.hasOwn(ethereum, '__XDEFI'));
|
|
108
|
-
}
|
|
109
|
-
return false;
|
|
110
|
-
} catch (error) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
var isZerionProvider = () => {
|
|
115
|
-
var _a;
|
|
116
|
-
try {
|
|
117
|
-
return !!((_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.isZerion);
|
|
118
|
-
} catch (error) {
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
14
|
|
|
123
|
-
export { hasInjected,
|
|
15
|
+
export { hasInjected, isDappBrowserProvider, isMetamaskProvider };
|
|
@@ -2,12 +2,7 @@
|
|
|
2
2
|
export declare const device: import("ua-parser-js").IDevice;
|
|
3
3
|
export declare const browser: import("ua-parser-js").IBrowser;
|
|
4
4
|
export declare const os: import("ua-parser-js").IOS;
|
|
5
|
-
export declare const isIOS: boolean;
|
|
6
|
-
export declare const isAndroid: boolean;
|
|
7
5
|
export declare const isMobile: boolean;
|
|
8
6
|
export declare const isTablet: boolean;
|
|
9
7
|
export declare const isMobileOrTablet: boolean;
|
|
10
|
-
|
|
11
|
-
export declare const isEdge: boolean;
|
|
12
|
-
export declare const checkIfBraveBrowser: () => Promise<boolean>;
|
|
13
|
-
//# sourceMappingURL=ua.d.ts.map
|
|
8
|
+
//# sourceMappingURL=userAgents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userAgents.d.ts","sourceRoot":"","sources":["../../src/helpers/userAgents.ts"],"names":[],"mappings":";AAIA,eAAO,MAAM,MAAM,gCAAqB,CAAC;AACzC,eAAO,MAAM,OAAO,iCAAsB,CAAC;AAC3C,eAAO,MAAM,EAAE,4BAAiB,CAAC;AAEjC,eAAO,MAAM,QAAQ,SAA2B,CAAC;AACjD,eAAO,MAAM,QAAQ,SAA2B,CAAC;AACjD,eAAO,MAAM,gBAAgB,SAAuB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UAParser } from 'ua-parser-js';
|
|
2
|
+
|
|
3
|
+
var parser = new UAParser();
|
|
4
|
+
var device = parser.getDevice();
|
|
5
|
+
var browser = parser.getBrowser();
|
|
6
|
+
var os = parser.getOS();
|
|
7
|
+
var isMobile = device.type === 'mobile';
|
|
8
|
+
var isTablet = device.type === 'tablet';
|
|
9
|
+
var isMobileOrTablet = isMobile || isTablet;
|
|
10
|
+
|
|
11
|
+
export { browser, device, isMobile, isMobileOrTablet, isTablet, os };
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useWeb3 } from './useWeb3.js';
|
|
2
2
|
import { useReefKnotContext } from '@reef-knot/core-react';
|
|
3
|
-
import '../helpers/
|
|
3
|
+
import '../helpers/userAgents.js';
|
|
4
4
|
import { interceptLedgerError } from '../helpers/interceptLedgerError.js';
|
|
5
5
|
import { getUnsupportedChainError } from '../helpers/unsupportedChainError.js';
|
|
6
6
|
import { useConnectorInfo } from './useConnectorInfo.js';
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
type ConnectorInfo = {
|
|
2
2
|
providerName?: string;
|
|
3
|
-
isConnectedViaWagmi: boolean;
|
|
4
3
|
isGnosis: boolean;
|
|
5
4
|
isLedger: boolean;
|
|
6
5
|
isLedgerLive: boolean;
|
|
7
|
-
isWalletLink: boolean;
|
|
8
|
-
isCoinbase: boolean;
|
|
9
6
|
isMetamask: boolean;
|
|
10
|
-
isImToken: boolean;
|
|
11
|
-
isTrust: boolean;
|
|
12
|
-
isXdefi: boolean;
|
|
13
7
|
isDappBrowser: boolean;
|
|
14
8
|
isInjected: boolean;
|
|
15
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConnectorInfo.d.ts","sourceRoot":"","sources":["../../src/hooks/useConnectorInfo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useConnectorInfo.d.ts","sourceRoot":"","sources":["../../src/hooks/useConnectorInfo.ts"],"names":[],"mappings":"AAQA,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,aAmCnC,CAAC"}
|
|
@@ -1,46 +1,22 @@
|
|
|
1
1
|
import { useAccount } from 'wagmi';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import { useWeb3 } from './useWeb3.js';
|
|
7
|
-
import { PROVIDER_NAMES } from '../constants/connectors.js';
|
|
8
|
-
import { isCoinbaseProvider, isDappBrowserProvider, isMetamaskProvider, isImTokenProvider, isTrustProvider, isXdefiProvider, isZerionProvider } from '../helpers/providerDetectors.js';
|
|
9
|
-
import '../helpers/ua.js';
|
|
2
|
+
import { SafeConnector } from 'wagmi/connectors/safe';
|
|
3
|
+
import { LedgerHIDConnector, LedgerLiveConnector } from '@reef-knot/ledger-connector';
|
|
4
|
+
import { isDappBrowserProvider, isMetamaskProvider } from '../helpers/providerDetectors.js';
|
|
5
|
+
import '../helpers/userAgents.js';
|
|
10
6
|
|
|
11
7
|
var useConnectorInfo = () => {
|
|
12
|
-
var {
|
|
13
|
-
active,
|
|
14
|
-
connector
|
|
15
|
-
} = useWeb3();
|
|
16
|
-
// === WAGMI connectors BEGIN
|
|
17
8
|
var {
|
|
18
9
|
isConnected,
|
|
19
10
|
connector: wagmiConnector
|
|
20
11
|
} = useAccount();
|
|
21
12
|
var isConnectedViaWagmi = isConnected && !!wagmiConnector;
|
|
22
13
|
var isLedger = wagmiConnector instanceof LedgerHIDConnector;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var isLedgerLive = active && connector instanceof LedgerHQFrameConnector;
|
|
27
|
-
// WalletLink is used by Coinbase, but it can be used by other wallets too.
|
|
28
|
-
var isWalletLink = active && connector instanceof WalletLinkConnector;
|
|
29
|
-
// This detection doesn't work for the connection via QR code scanning.
|
|
30
|
-
var isCoinbase = active && isCoinbaseProvider();
|
|
31
|
-
var isInjected =
|
|
32
|
-
// check for web3-react
|
|
33
|
-
active && connector instanceof InjectedConnector ||
|
|
34
|
-
// check for wagmi
|
|
35
|
-
isConnectedViaWagmi && wagmiConnector.id === 'injected';
|
|
14
|
+
var isLedgerLive = wagmiConnector instanceof LedgerLiveConnector;
|
|
15
|
+
var isGnosis = wagmiConnector instanceof SafeConnector;
|
|
16
|
+
var isInjected = isConnectedViaWagmi && wagmiConnector.id === 'injected';
|
|
36
17
|
var isDappBrowser = isInjected && isDappBrowserProvider();
|
|
37
18
|
var isMetamask = isInjected && isMetamaskProvider();
|
|
38
|
-
var isImToken = isInjected && isImTokenProvider();
|
|
39
|
-
var isTrust = isInjected && isTrustProvider();
|
|
40
|
-
var isXdefi = isInjected && isXdefiProvider();
|
|
41
|
-
var isZerion = isInjected && isZerionProvider();
|
|
42
19
|
var providerName = (() => {
|
|
43
|
-
if (isConnectedViaWagmi && wagmiConnector.name) return wagmiConnector.name;
|
|
44
20
|
// Do not try to detect providerName if the app is opened in a mobile wallet dapp browser,
|
|
45
21
|
// because such wallets often mimic other wallets which makes proper detection to be hard.
|
|
46
22
|
// Also, if the app is opened in a mobile wallet dapp browser,
|
|
@@ -48,38 +24,14 @@ var useConnectorInfo = () => {
|
|
|
48
24
|
// and we don't allow to disconnect in such case.
|
|
49
25
|
// So it is easy for a user to understand which wallet app is being used for connection.
|
|
50
26
|
if (isDappBrowser) return undefined;
|
|
51
|
-
|
|
52
|
-
if (isLedger) return PROVIDER_NAMES.LEDGER;
|
|
53
|
-
if (isLedgerLive) return PROVIDER_NAMES.LEDGER_HQ_LIVE;
|
|
54
|
-
if (isImToken) return PROVIDER_NAMES.IM_TOKEN;
|
|
55
|
-
if (isTrust) return PROVIDER_NAMES.TRUST;
|
|
56
|
-
// Wallets which has conflicts with each other.
|
|
57
|
-
// The order of wallets checks here is important.
|
|
58
|
-
// Most "aggressive" wallet, which overrides other wallets, goes first.
|
|
59
|
-
if (isXdefi) return PROVIDER_NAMES.XDEFI;
|
|
60
|
-
if (isCoinbase) return PROVIDER_NAMES.COINBASE;
|
|
61
|
-
if (isZerion) return PROVIDER_NAMES.ZERION;
|
|
62
|
-
// Metamask should be last in this list because almost all EIP-1193 wallets
|
|
63
|
-
// are trying to mimic Metamask by setting isMetamask = true
|
|
64
|
-
if (isMetamask) return PROVIDER_NAMES.METAMASK;
|
|
65
|
-
// General providers which doesn't specify what exact wallet is being used.
|
|
66
|
-
// Works as a fallback.
|
|
67
|
-
if (isWalletLink) return PROVIDER_NAMES.WALLET_LINK;
|
|
68
|
-
if (isInjected) return PROVIDER_NAMES.INJECTED;
|
|
69
|
-
return undefined;
|
|
27
|
+
return wagmiConnector === null || wagmiConnector === void 0 ? void 0 : wagmiConnector.name;
|
|
70
28
|
})();
|
|
71
29
|
return {
|
|
72
30
|
providerName,
|
|
73
|
-
isConnectedViaWagmi,
|
|
74
31
|
isGnosis,
|
|
75
32
|
isLedger,
|
|
76
33
|
isLedgerLive,
|
|
77
|
-
isWalletLink,
|
|
78
|
-
isCoinbase,
|
|
79
34
|
isMetamask,
|
|
80
|
-
isImToken,
|
|
81
|
-
isTrust,
|
|
82
|
-
isXdefi,
|
|
83
35
|
isDappBrowser,
|
|
84
36
|
isInjected
|
|
85
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDisconnect.d.ts","sourceRoot":"","sources":["../../src/hooks/useDisconnect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDisconnect.d.ts","sourceRoot":"","sources":["../../src/hooks/useDisconnect.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB;;CAQ9B,CAAC;AAEF,eAAO,MAAM,aAAa;wBACL,IAAI;CAWxB,CAAC"}
|
|
@@ -1,35 +1,23 @@
|
|
|
1
1
|
import { __awaiter } from '../_virtual/_tslib.js';
|
|
2
2
|
import { useCallback } from 'react';
|
|
3
|
-
import { useDisconnect as useDisconnect$1 } from 'wagmi';
|
|
4
|
-
import { useWeb3 } from './useWeb3.js';
|
|
3
|
+
import { useDisconnect as useDisconnect$1, useAccount } from 'wagmi';
|
|
5
4
|
import { useConnectorInfo } from './useConnectorInfo.js';
|
|
6
5
|
|
|
7
6
|
var useForceDisconnect = () => {
|
|
8
|
-
var {
|
|
9
|
-
deactivate,
|
|
10
|
-
connector
|
|
11
|
-
} = useWeb3();
|
|
12
|
-
var extendedConnector = connector;
|
|
13
7
|
var {
|
|
14
8
|
disconnectAsync: wagmiDisconnect
|
|
15
9
|
} = useDisconnect$1();
|
|
16
10
|
var disconnect = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
-
var _a;
|
|
18
|
-
// disconnect wallets connected through web3-react connectors
|
|
19
|
-
deactivate();
|
|
20
|
-
extendedConnector === null || extendedConnector === void 0 ? void 0 : extendedConnector.deactivate();
|
|
21
|
-
yield (_a = extendedConnector === null || extendedConnector === void 0 ? void 0 : extendedConnector.close) === null || _a === void 0 ? void 0 : _a.call(extendedConnector);
|
|
22
|
-
// disconnect wallets connected through wagmi connectors
|
|
23
11
|
yield wagmiDisconnect();
|
|
24
|
-
}), [
|
|
12
|
+
}), [wagmiDisconnect]);
|
|
25
13
|
return {
|
|
26
14
|
disconnect
|
|
27
15
|
};
|
|
28
16
|
};
|
|
29
17
|
var useDisconnect = () => {
|
|
30
18
|
var {
|
|
31
|
-
|
|
32
|
-
} =
|
|
19
|
+
isConnected
|
|
20
|
+
} = useAccount();
|
|
33
21
|
var {
|
|
34
22
|
disconnect
|
|
35
23
|
} = useForceDisconnect();
|
|
@@ -38,7 +26,7 @@ var useDisconnect = () => {
|
|
|
38
26
|
isLedgerLive,
|
|
39
27
|
isDappBrowser
|
|
40
28
|
} = useConnectorInfo();
|
|
41
|
-
var available =
|
|
29
|
+
var available = isConnected && !isGnosis && !isDappBrowser && !isLedgerLive;
|
|
42
30
|
return {
|
|
43
31
|
disconnect: available ? disconnect : undefined
|
|
44
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSupportedChains.d.ts","sourceRoot":"","sources":["../../src/hooks/useSupportedChains.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"useSupportedChains.d.ts","sourceRoot":"","sources":["../../src/hooks/useSupportedChains.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAG/D,eAAO,MAAM,kBAAkB;mBACd,OAAO;qBACL,OAAO,EAAE;CAc3B,CAAC"}
|
|
@@ -1,40 +1,16 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { getNetwork } from '@ethersproject/providers';
|
|
3
3
|
import { useNetwork } from 'wagmi';
|
|
4
|
-
import { useWeb3React, UnsupportedChainIdError } from '@web3-react/core';
|
|
5
4
|
|
|
6
|
-
var STABLE_ARRAY = [];
|
|
7
5
|
var useSupportedChains = () => {
|
|
8
|
-
var supportedIds = STABLE_ARRAY;
|
|
9
|
-
var isUnsupported;
|
|
10
|
-
// legacy web3-react data
|
|
11
|
-
var {
|
|
12
|
-
error,
|
|
13
|
-
connector
|
|
14
|
-
} = useWeb3React();
|
|
15
|
-
// wagmi data
|
|
16
6
|
var {
|
|
17
7
|
chain,
|
|
18
8
|
chains
|
|
19
9
|
} = useNetwork();
|
|
20
|
-
var
|
|
21
|
-
// add chain ids from legacy web3-react connector
|
|
22
|
-
if (connector === null || connector === void 0 ? void 0 : connector.supportedChainIds) {
|
|
23
|
-
supportedIds = connector.supportedChainIds;
|
|
24
|
-
}
|
|
25
|
-
// add wagmi chain ids too
|
|
26
|
-
if (wagmiSupportedChainIds.length > 0) {
|
|
27
|
-
supportedIds = [...supportedIds, ...wagmiSupportedChainIds];
|
|
28
|
-
supportedIds = [...new Set(supportedIds)]; // deduplicate ids
|
|
29
|
-
}
|
|
30
|
-
|
|
10
|
+
var isUnsupported = !!(chain === null || chain === void 0 ? void 0 : chain.unsupported);
|
|
31
11
|
var supportedChains = useMemo(() => {
|
|
32
|
-
return
|
|
33
|
-
}, [
|
|
34
|
-
// legacy web3-react check
|
|
35
|
-
isUnsupported = error instanceof UnsupportedChainIdError;
|
|
36
|
-
// wagmi check
|
|
37
|
-
isUnsupported = isUnsupported || !!(chain === null || chain === void 0 ? void 0 : chain.unsupported);
|
|
12
|
+
return chains.map(c => getNetwork(c.id));
|
|
13
|
+
}, [chains]);
|
|
38
14
|
return {
|
|
39
15
|
isUnsupported,
|
|
40
16
|
supportedChains
|
package/dist/hooks/useWeb3.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export interface Web3ReactManagerFunctions {
|
|
2
|
+
activate: (connector: undefined, // AbstractConnector changed to undefined here
|
|
3
|
+
onError?: (error: Error) => void, throwErrors?: boolean) => Promise<void>;
|
|
4
|
+
setError: (error: Error) => void;
|
|
5
|
+
deactivate: () => void;
|
|
6
|
+
}
|
|
7
|
+
export interface Web3ReactContextInterface<T = any> extends Web3ReactManagerFunctions {
|
|
8
|
+
connector?: undefined;
|
|
9
|
+
library?: T;
|
|
10
|
+
chainId?: number;
|
|
11
|
+
account?: null | string;
|
|
12
|
+
active: boolean;
|
|
13
|
+
error?: Error;
|
|
14
|
+
}
|
|
3
15
|
export declare function useWeb3<T = any>(_key?: string): Web3ReactContextInterface<T>;
|
|
4
16
|
//# sourceMappingURL=useWeb3.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWeb3.d.ts","sourceRoot":"","sources":["../../src/hooks/useWeb3.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useWeb3.d.ts","sourceRoot":"","sources":["../../src/hooks/useWeb3.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,CACR,SAAS,EAAE,SAAS,EAAE,8CAA8C;IACpE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAChC,WAAW,CAAC,EAAE,OAAO,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB,CAAC,CAAC,GAAG,GAAG,CAChD,SAAQ,yBAAyB;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAID,wBAAgB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAkD5E"}
|