@mezo-org/passport 0.4.0-dev.76 → 0.4.0-dev.78
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/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/useAddMezoChainToWallet.d.ts +5 -0
- package/dist/src/hooks/useAddMezoChainToWallet.d.ts.map +1 -0
- package/dist/src/hooks/useAddMezoChainToWallet.js +55 -0
- package/dist/src/hooks/useAddMezoChainToWallet.js.map +1 -0
- package/dist/src/hooks/useAuthenticateWithWallet.d.ts.map +1 -1
- package/dist/src/hooks/useAuthenticateWithWallet.js +15 -2
- package/dist/src/hooks/useAuthenticateWithWallet.js.map +1 -1
- package/dist/src/provider.d.ts +2 -2
- package/dist/src/provider.d.ts.map +1 -1
- package/dist/src/provider.js +1 -1
- package/dist/src/provider.js.map +1 -1
- package/package.json +2 -2
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useAddMezoChainToWallet.ts +66 -0
- package/src/hooks/useAuthenticateWithWallet.ts +21 -3
- package/src/provider.ts +3 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { useBitcoinAccount, useSendBitcoin, useSendTransaction, useSubscribeToConnectedToUnsupportedBitcoinAddress, useSubscribeToConnectorEvent, useSubscribeToWalletNetworkDoesNotMatchProviderChain, } from "@mezo-org/orangekit";
|
|
2
|
+
export * from "./useAddMezoChainToWallet";
|
|
2
3
|
export { useInvalidateBorrowData, useResetBorrowData } from "./useBorrowData";
|
|
3
4
|
export * from "./useGetAccountByAddress";
|
|
4
5
|
export * from "./useGetAccountByMezoId";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,cAAc,2BAA2B,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
|
package/dist/src/hooks/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { useBitcoinAccount, useSendBitcoin, useSendTransaction, useSubscribeToConnectedToUnsupportedBitcoinAddress, useSubscribeToConnectorEvent, useSubscribeToWalletNetworkDoesNotMatchProviderChain, } from "@mezo-org/orangekit";
|
|
2
|
+
export * from "./useAddMezoChainToWallet";
|
|
2
3
|
export { useInvalidateBorrowData, useResetBorrowData } from "./useBorrowData";
|
|
3
4
|
export * from "./useGetAccountByAddress";
|
|
4
5
|
export * from "./useGetAccountByMezoId";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,oDAAoD,GACrD,MAAM,qBAAqB,CAAA;AAC5B,cAAc,2BAA2B,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAddMezoChainToWallet.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAddMezoChainToWallet.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,GAClC,aAAa,SAAS,GAAG,SAAS,EAClC,mBAAmB,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;;CA2D7D,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { mezoMainnet, mezoTestnet } from "@mezo-org/orangekit";
|
|
2
|
+
import { useCallback, useEffect, useState } from "react";
|
|
3
|
+
import { useAccount } from "wagmi";
|
|
4
|
+
export const useAddMezoChainToWallet = (mezoNetwork, onMezoChainAdded) => {
|
|
5
|
+
const [isMezoChain, setIsMezoChain] = useState(false);
|
|
6
|
+
const MEZO_CHAIN = mezoNetwork === "mainnet" ? mezoMainnet : mezoTestnet;
|
|
7
|
+
const hexadecimalMezoChainId = `0x${MEZO_CHAIN.id.toString(16)}`;
|
|
8
|
+
const { connector } = useAccount();
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const getCurrentChainId = async () => {
|
|
11
|
+
if (!window.ethereum || connector?.type === "orangekit")
|
|
12
|
+
return;
|
|
13
|
+
const currentChainId = await window.ethereum.request({
|
|
14
|
+
method: "eth_chainId",
|
|
15
|
+
});
|
|
16
|
+
setIsMezoChain(currentChainId === hexadecimalMezoChainId);
|
|
17
|
+
};
|
|
18
|
+
getCurrentChainId();
|
|
19
|
+
}, [connector, hexadecimalMezoChainId]);
|
|
20
|
+
const addMezoChain = useCallback(async () => {
|
|
21
|
+
if (!window.ethereum || connector?.type === "orangekit")
|
|
22
|
+
return;
|
|
23
|
+
const mezoChainParams = {
|
|
24
|
+
chainId: hexadecimalMezoChainId,
|
|
25
|
+
chainName: MEZO_CHAIN.name,
|
|
26
|
+
nativeCurrency: MEZO_CHAIN.nativeCurrency,
|
|
27
|
+
rpcUrls: [MEZO_CHAIN.rpcUrls.default.http[0]],
|
|
28
|
+
blockExplorerUrls: [MEZO_CHAIN.blockExplorers?.default.url],
|
|
29
|
+
};
|
|
30
|
+
try {
|
|
31
|
+
await window.ethereum.request({
|
|
32
|
+
method: "wallet_addEthereumChain",
|
|
33
|
+
params: [mezoChainParams],
|
|
34
|
+
});
|
|
35
|
+
setIsMezoChain(true);
|
|
36
|
+
if (onMezoChainAdded)
|
|
37
|
+
onMezoChainAdded(MEZO_CHAIN.id);
|
|
38
|
+
// setConnectedChainId(MEZO_CHAIN.id)
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
setIsMezoChain(false);
|
|
42
|
+
}
|
|
43
|
+
}, [
|
|
44
|
+
connector?.type,
|
|
45
|
+
hexadecimalMezoChainId,
|
|
46
|
+
MEZO_CHAIN.name,
|
|
47
|
+
MEZO_CHAIN.nativeCurrency,
|
|
48
|
+
MEZO_CHAIN.rpcUrls.default.http,
|
|
49
|
+
MEZO_CHAIN.blockExplorers?.default.url,
|
|
50
|
+
MEZO_CHAIN.id,
|
|
51
|
+
onMezoChainAdded,
|
|
52
|
+
]);
|
|
53
|
+
return { isMezoChain, addMezoChain };
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=useAddMezoChainToWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAddMezoChainToWallet.js","sourceRoot":"","sources":["../../../src/hooks/useAddMezoChainToWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,WAAkC,EAClC,gBAA4D,EAC5D,EAAE;IACF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErD,MAAM,UAAU,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;IAExE,MAAM,sBAAsB,GAAG,KAAK,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;IAEhE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAA;IAElC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,IAAI,KAAK,WAAW;gBAAE,OAAM;YAE/D,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACnD,MAAM,EAAE,aAAa;aACtB,CAAC,CAAA;YAEF,cAAc,CAAC,cAAc,KAAK,sBAAsB,CAAC,CAAA;QAC3D,CAAC,CAAA;QAED,iBAAiB,EAAE,CAAA;IACrB,CAAC,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAEvC,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,IAAI,KAAK,WAAW;YAAE,OAAM;QAE/D,MAAM,eAAe,GAAG;YACtB,OAAO,EAAE,sBAAsB;YAC/B,SAAS,EAAE,UAAU,CAAC,IAAI;YAC1B,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,iBAAiB,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC;SAC5D,CAAA;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC5B,MAAM,EAAE,yBAAyB;gBACjC,MAAM,EAAE,CAAC,eAAe,CAAC;aAC1B,CAAC,CAAA;YAEF,cAAc,CAAC,IAAI,CAAC,CAAA;YACpB,IAAI,gBAAgB;gBAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACrD,qCAAqC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,EAAE;QACD,SAAS,EAAE,IAAI;QACf,sBAAsB;QACtB,UAAU,CAAC,IAAI;QACf,UAAU,CAAC,cAAc;QACzB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;QAC/B,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;QACtC,UAAU,CAAC,EAAE;QACb,gBAAgB;KACjB,CAAC,CAAA;IAEF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AACtC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthenticateWithWallet.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuthenticateWithWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAe,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"useAuthenticateWithWallet.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuthenticateWithWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAe,MAAM,uBAAuB,CAAA;AAUpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAKrC,iBAAS,yBAAyB,CAChC,mBAAmB,UAAQ,EAC3B,eAAe,GAAE,IAAI,CACnB,eAAe,CAAC,OAAO,CAAC,EACxB,YAAY,GAAG,aAAa,CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyGP;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAA"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import { useSignMessage } from "wagmi";
|
|
1
|
+
import { useSignMessage, useSwitchChain } from "wagmi";
|
|
2
2
|
import { useMutation } from "@tanstack/react-query";
|
|
3
|
+
import { mezoMainnet, mezoTestnet } from "@mezo-org/orangekit";
|
|
3
4
|
import { useCreateAccount } from "./useCreateAccount";
|
|
4
5
|
import { useCreateSession } from "./useCreateSession";
|
|
5
6
|
import { useEnsureNoSessionAndFetchNonce } from "./useEnsureNoSessionAndFetchNonce";
|
|
6
7
|
import { createSignInWithWalletMessage, verifyDomainInSignInWithWalletMessage, } from "../utils/siww";
|
|
7
8
|
import { useGetAccountByAddress } from "./useGetAccountByAddress";
|
|
8
9
|
import useWalletAccount from "./useWalletAccount";
|
|
10
|
+
import { useAddMezoChainToWallet } from "./useAddMezoChainToWallet";
|
|
11
|
+
import { usePassportContext } from "./usePassportContext";
|
|
9
12
|
function useAuthenticateWithWallet(shouldCreateAccount = false, mutationOptions = {}) {
|
|
10
|
-
const { walletAddress, chainId, connector, networkFamily } = useWalletAccount();
|
|
13
|
+
const { walletAddress, chainId: walletChainId, connector, networkFamily, } = useWalletAccount();
|
|
11
14
|
const { ensureNoSessionAndFetchNonce } = useEnsureNoSessionAndFetchNonce();
|
|
12
15
|
const { createSessionAsync } = useCreateSession();
|
|
13
16
|
const { createAccountAsync } = useCreateAccount();
|
|
14
17
|
const { signMessageAsync } = useSignMessage();
|
|
18
|
+
const { environment } = usePassportContext();
|
|
19
|
+
const { isMezoChain, addMezoChain } = useAddMezoChainToWallet(environment);
|
|
20
|
+
const MEZO_CHAIN = environment === "mainnet" ? mezoMainnet : mezoTestnet;
|
|
21
|
+
const { switchChainAsync } = useSwitchChain();
|
|
15
22
|
const { refetch: getAccountByAddress } = useGetAccountByAddress(walletAddress, {
|
|
16
23
|
enabled: false,
|
|
17
24
|
retry: false,
|
|
@@ -21,6 +28,12 @@ function useAuthenticateWithWallet(shouldCreateAccount = false, mutationOptions
|
|
|
21
28
|
if (!walletAddress) {
|
|
22
29
|
throw new Error("Sign in error: Wallet not connected!");
|
|
23
30
|
}
|
|
31
|
+
let chainId = walletChainId;
|
|
32
|
+
if (connector?.type !== "orangekit" && !isMezoChain) {
|
|
33
|
+
await addMezoChain();
|
|
34
|
+
const newChain = await switchChainAsync({ chainId: MEZO_CHAIN.id });
|
|
35
|
+
chainId = newChain.id;
|
|
36
|
+
}
|
|
24
37
|
const nonce = await ensureNoSessionAndFetchNonce();
|
|
25
38
|
const messageResult = createSignInWithWalletMessage(walletAddress, nonce, networkFamily, chainId);
|
|
26
39
|
const signatureResult = await signMessageAsync({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthenticateWithWallet.js","sourceRoot":"","sources":["../../../src/hooks/useAuthenticateWithWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useAuthenticateWithWallet.js","sourceRoot":"","sources":["../../../src/hooks/useAuthenticateWithWallet.ts"],"names":[],"mappings":"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"}
|
package/dist/src/provider.d.ts
CHANGED
|
@@ -2,13 +2,13 @@ import { AuthApiClient, PortalApiClient } from "./api";
|
|
|
2
2
|
export interface PassportContextValue {
|
|
3
3
|
authApiClient: AuthApiClient;
|
|
4
4
|
portalApiClient: PortalApiClient;
|
|
5
|
-
environment
|
|
5
|
+
environment: Environment;
|
|
6
6
|
}
|
|
7
7
|
export declare const PassportContext: import("react").Context<PassportContextValue | undefined>;
|
|
8
8
|
type Environment = "mainnet" | "testnet";
|
|
9
9
|
type PassportProviderProps = {
|
|
10
10
|
children: React.ReactNode;
|
|
11
|
-
environment
|
|
11
|
+
environment: Environment;
|
|
12
12
|
authApiUrl?: string;
|
|
13
13
|
portalApiUrl?: string;
|
|
14
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAEtD,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,aAAa,CAAA;IAC5B,eAAe,EAAE,eAAe,CAAA;IAChC,WAAW,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAEtD,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,aAAa,CAAA;IAC5B,eAAe,EAAE,eAAe,CAAA;IAChC,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,eAAO,MAAM,eAAe,2DAE3B,CAAA;AAED,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;AAExC,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAEzB,WAAW,EAAE,WAAW,CAAA;IAExB,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,EAAE,qBAAqB,6GAmBvB"}
|
package/dist/src/provider.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createContext, createElement } from "react";
|
|
|
2
2
|
import { AuthApiClient, PortalApiClient } from "./api";
|
|
3
3
|
export const PassportContext = createContext(undefined);
|
|
4
4
|
export function PassportProvider({ environment, authApiUrl, portalApiUrl, children, }) {
|
|
5
|
-
if (environment
|
|
5
|
+
if (!environment || !["mainnet", "testnet"].includes(environment)) {
|
|
6
6
|
throw new Error("Wrong environment passed to PassportProvider.");
|
|
7
7
|
}
|
|
8
8
|
return createElement(PassportContext.Provider, {
|
package/dist/src/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAQtD,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAC1C,SAAS,CACV,CAAA;AAcD,MAAM,UAAU,gBAAgB,CAAC,EAC/B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,GACc;IACtB,IAAI,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAQtD,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAC1C,SAAS,CACV,CAAA;AAcD,MAAM,UAAU,gBAAgB,CAAC,EAC/B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,GACc;IACtB,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,OAAO,aAAa,CAClB,eAAe,CAAC,QAAQ,EACxB;QACE,KAAK,EAAE;YACL,aAAa,EAAE,IAAI,aAAa,CAAC,WAAW,IAAI,SAAS,EAAE,UAAU,CAAC;YACtE,eAAe,EAAE,IAAI,eAAe,CAClC,WAAW,IAAI,SAAS,EACxB,YAAY,CACb;YACD,WAAW;SACZ;KACF,EACD,QAAQ,CACT,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mezo-org/passport",
|
|
3
|
-
"version": "0.4.0-dev.
|
|
3
|
+
"version": "0.4.0-dev.78",
|
|
4
4
|
"main": "dist/src/index.js",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"scripts": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"typescript": "^5.4.3"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@mezo-org/mezo-clay": "0.1.0-dev.
|
|
40
|
+
"@mezo-org/mezo-clay": "0.1.0-dev.28",
|
|
41
41
|
"@mezo-org/mezod-contracts": "^1.0.0",
|
|
42
42
|
"@mezo-org/musd-contracts": "^1.0.1",
|
|
43
43
|
"@mezo-org/orangekit": "1.0.0-beta.40-dev.19",
|
package/src/hooks/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ export {
|
|
|
6
6
|
useSubscribeToConnectorEvent,
|
|
7
7
|
useSubscribeToWalletNetworkDoesNotMatchProviderChain,
|
|
8
8
|
} from "@mezo-org/orangekit"
|
|
9
|
+
export * from "./useAddMezoChainToWallet"
|
|
9
10
|
export { useInvalidateBorrowData, useResetBorrowData } from "./useBorrowData"
|
|
10
11
|
export * from "./useGetAccountByAddress"
|
|
11
12
|
export * from "./useGetAccountByMezoId"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { mezoMainnet, mezoTestnet } from "@mezo-org/orangekit"
|
|
2
|
+
import { useCallback, useEffect, useState } from "react"
|
|
3
|
+
import { useAccount } from "wagmi"
|
|
4
|
+
|
|
5
|
+
export const useAddMezoChainToWallet = (
|
|
6
|
+
mezoNetwork: "mainnet" | "testnet",
|
|
7
|
+
onMezoChainAdded?: (chainId: number) => void | Promise<void>,
|
|
8
|
+
) => {
|
|
9
|
+
const [isMezoChain, setIsMezoChain] = useState(false)
|
|
10
|
+
|
|
11
|
+
const MEZO_CHAIN = mezoNetwork === "mainnet" ? mezoMainnet : mezoTestnet
|
|
12
|
+
|
|
13
|
+
const hexadecimalMezoChainId = `0x${MEZO_CHAIN.id.toString(16)}`
|
|
14
|
+
|
|
15
|
+
const { connector } = useAccount()
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const getCurrentChainId = async () => {
|
|
19
|
+
if (!window.ethereum || connector?.type === "orangekit") return
|
|
20
|
+
|
|
21
|
+
const currentChainId = await window.ethereum.request({
|
|
22
|
+
method: "eth_chainId",
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
setIsMezoChain(currentChainId === hexadecimalMezoChainId)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getCurrentChainId()
|
|
29
|
+
}, [connector, hexadecimalMezoChainId])
|
|
30
|
+
|
|
31
|
+
const addMezoChain = useCallback(async () => {
|
|
32
|
+
if (!window.ethereum || connector?.type === "orangekit") return
|
|
33
|
+
|
|
34
|
+
const mezoChainParams = {
|
|
35
|
+
chainId: hexadecimalMezoChainId,
|
|
36
|
+
chainName: MEZO_CHAIN.name,
|
|
37
|
+
nativeCurrency: MEZO_CHAIN.nativeCurrency,
|
|
38
|
+
rpcUrls: [MEZO_CHAIN.rpcUrls.default.http[0]],
|
|
39
|
+
blockExplorerUrls: [MEZO_CHAIN.blockExplorers?.default.url],
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
await window.ethereum.request({
|
|
44
|
+
method: "wallet_addEthereumChain",
|
|
45
|
+
params: [mezoChainParams],
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
setIsMezoChain(true)
|
|
49
|
+
if (onMezoChainAdded) onMezoChainAdded(MEZO_CHAIN.id)
|
|
50
|
+
// setConnectedChainId(MEZO_CHAIN.id)
|
|
51
|
+
} catch (err) {
|
|
52
|
+
setIsMezoChain(false)
|
|
53
|
+
}
|
|
54
|
+
}, [
|
|
55
|
+
connector?.type,
|
|
56
|
+
hexadecimalMezoChainId,
|
|
57
|
+
MEZO_CHAIN.name,
|
|
58
|
+
MEZO_CHAIN.nativeCurrency,
|
|
59
|
+
MEZO_CHAIN.rpcUrls.default.http,
|
|
60
|
+
MEZO_CHAIN.blockExplorers?.default.url,
|
|
61
|
+
MEZO_CHAIN.id,
|
|
62
|
+
onMezoChainAdded,
|
|
63
|
+
])
|
|
64
|
+
|
|
65
|
+
return { isMezoChain, addMezoChain }
|
|
66
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { useSignMessage } from "wagmi"
|
|
1
|
+
import { useSignMessage, useSwitchChain } from "wagmi"
|
|
2
2
|
import { MutationOptions, useMutation } from "@tanstack/react-query"
|
|
3
|
+
import { mezoMainnet, mezoTestnet } from "@mezo-org/orangekit"
|
|
3
4
|
import { useCreateAccount } from "./useCreateAccount"
|
|
4
5
|
import { useCreateSession } from "./useCreateSession"
|
|
5
6
|
import { useEnsureNoSessionAndFetchNonce } from "./useEnsureNoSessionAndFetchNonce"
|
|
@@ -10,6 +11,8 @@ import {
|
|
|
10
11
|
import { useGetAccountByAddress } from "./useGetAccountByAddress"
|
|
11
12
|
import type { Session } from "../api"
|
|
12
13
|
import useWalletAccount from "./useWalletAccount"
|
|
14
|
+
import { useAddMezoChainToWallet } from "./useAddMezoChainToWallet"
|
|
15
|
+
import { usePassportContext } from "./usePassportContext"
|
|
13
16
|
|
|
14
17
|
function useAuthenticateWithWallet(
|
|
15
18
|
shouldCreateAccount = false,
|
|
@@ -18,12 +21,20 @@ function useAuthenticateWithWallet(
|
|
|
18
21
|
"mutationFn" | "mutationKey"
|
|
19
22
|
> = {},
|
|
20
23
|
) {
|
|
21
|
-
const {
|
|
22
|
-
|
|
24
|
+
const {
|
|
25
|
+
walletAddress,
|
|
26
|
+
chainId: walletChainId,
|
|
27
|
+
connector,
|
|
28
|
+
networkFamily,
|
|
29
|
+
} = useWalletAccount()
|
|
23
30
|
const { ensureNoSessionAndFetchNonce } = useEnsureNoSessionAndFetchNonce()
|
|
24
31
|
const { createSessionAsync } = useCreateSession()
|
|
25
32
|
const { createAccountAsync } = useCreateAccount()
|
|
26
33
|
const { signMessageAsync } = useSignMessage()
|
|
34
|
+
const { environment } = usePassportContext()
|
|
35
|
+
const { isMezoChain, addMezoChain } = useAddMezoChainToWallet(environment)
|
|
36
|
+
const MEZO_CHAIN = environment === "mainnet" ? mezoMainnet : mezoTestnet
|
|
37
|
+
const { switchChainAsync } = useSwitchChain()
|
|
27
38
|
|
|
28
39
|
const { refetch: getAccountByAddress } = useGetAccountByAddress(
|
|
29
40
|
walletAddress,
|
|
@@ -39,6 +50,13 @@ function useAuthenticateWithWallet(
|
|
|
39
50
|
throw new Error("Sign in error: Wallet not connected!")
|
|
40
51
|
}
|
|
41
52
|
|
|
53
|
+
let chainId = walletChainId
|
|
54
|
+
if (connector?.type !== "orangekit" && !isMezoChain) {
|
|
55
|
+
await addMezoChain()
|
|
56
|
+
const newChain = await switchChainAsync({ chainId: MEZO_CHAIN.id })
|
|
57
|
+
chainId = newChain.id
|
|
58
|
+
}
|
|
59
|
+
|
|
42
60
|
const nonce = await ensureNoSessionAndFetchNonce()
|
|
43
61
|
|
|
44
62
|
const messageResult = createSignInWithWalletMessage(
|
package/src/provider.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { AuthApiClient, PortalApiClient } from "./api"
|
|
|
4
4
|
export interface PassportContextValue {
|
|
5
5
|
authApiClient: AuthApiClient
|
|
6
6
|
portalApiClient: PortalApiClient
|
|
7
|
-
environment
|
|
7
|
+
environment: Environment
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export const PassportContext = createContext<PassportContextValue | undefined>(
|
|
@@ -16,7 +16,7 @@ type Environment = "mainnet" | "testnet"
|
|
|
16
16
|
type PassportProviderProps = {
|
|
17
17
|
children: React.ReactNode
|
|
18
18
|
// eslint-disable-next-line react/require-default-props
|
|
19
|
-
environment
|
|
19
|
+
environment: Environment
|
|
20
20
|
// eslint-disable-next-line react/require-default-props
|
|
21
21
|
authApiUrl?: string
|
|
22
22
|
// eslint-disable-next-line react/require-default-props
|
|
@@ -29,7 +29,7 @@ export function PassportProvider({
|
|
|
29
29
|
portalApiUrl,
|
|
30
30
|
children,
|
|
31
31
|
}: PassportProviderProps) {
|
|
32
|
-
if (environment
|
|
32
|
+
if (!environment || !["mainnet", "testnet"].includes(environment)) {
|
|
33
33
|
throw new Error("Wrong environment passed to PassportProvider.")
|
|
34
34
|
}
|
|
35
35
|
|