@dynamic-labs/sdk-react-core 4.36.0 → 4.36.1
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/CHANGELOG.md +6 -0
- package/package.cjs +2 -2
- package/package.js +2 -2
- package/package.json +12 -12
- package/src/lib/client/extension/deprecated/mfa/verifyTotpMfaDevice/verifyTotpMfaDevice.d.ts +1 -1
- package/src/lib/client/extension/projectSettings/getProjectSettings/getProjectSettings.d.ts +2 -1
- package/src/lib/client/extension/projectSettings/useProjectSettings/useProjectSettings.d.ts +2 -1
- package/src/lib/client/extension/projectSettings/useRefetchProjectSettings/useRefetchProjectSettings.d.ts +2 -1
- package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.cjs +3 -1
- package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.js +3 -1
- package/src/lib/context/SocialRedirectContext/utils/getDynamicRedirectData/getDynamicRedirectData.d.ts +1 -0
- package/src/lib/context/SocialRedirectContext/utils/getDynamicRedirectDataFromUrl/getDynamicRedirectDataFromUrl.cjs +2 -1
- package/src/lib/context/SocialRedirectContext/utils/getDynamicRedirectDataFromUrl/getDynamicRedirectDataFromUrl.d.ts +1 -0
- package/src/lib/context/SocialRedirectContext/utils/getDynamicRedirectDataFromUrl/getDynamicRedirectDataFromUrl.js +2 -1
- package/src/lib/data/api/oauth/oauth.cjs +2 -1
- package/src/lib/data/api/oauth/oauth.d.ts +1 -1
- package/src/lib/data/api/oauth/oauth.js +2 -1
- package/src/lib/locale/en/translation.cjs +2 -0
- package/src/lib/locale/en/translation.d.ts +2 -0
- package/src/lib/locale/en/translation.js +2 -0
- package/src/lib/utils/constants/authViewLayoutChecks.cjs +1 -0
- package/src/lib/utils/constants/authViewLayoutChecks.js +1 -0
- package/src/lib/utils/constants/index.d.ts +1 -1
- package/src/lib/utils/constants/localStorage.cjs +3 -0
- package/src/lib/utils/constants/localStorage.d.ts +4 -0
- package/src/lib/utils/constants/localStorage.js +3 -1
- package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.cjs +47 -0
- package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.d.ts +26 -0
- package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.js +41 -0
- package/src/lib/utils/functions/getTransactionLink/getTransactionLink.cjs +5 -3
- package/src/lib/utils/functions/getTransactionLink/getTransactionLink.js +5 -3
- package/src/lib/utils/functions/socialStorage/socialStorage.d.ts +2 -0
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +5 -2
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +4 -1
- package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +5 -2
- package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.cjs +7 -0
- package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.js +7 -0
- package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.cjs +37 -5
- package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.d.ts +6 -1
- package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.js +37 -5
- package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.cjs +68 -101
- package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.d.ts +7 -1
- package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.js +69 -102
- package/src/lib/views/viewToComponentMap.d.ts +3 -1
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetViews/mapViewToComponent.d.ts +3 -1
package/CHANGELOG.md
CHANGED
package/package.cjs
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
|
-
var version = "4.36.
|
|
6
|
+
var version = "4.36.1";
|
|
7
7
|
var dependencies = {
|
|
8
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
8
|
+
"@dynamic-labs/sdk-api-core": "0.0.798",
|
|
9
9
|
"@dynamic-labs-sdk/client": "0.1.0-alpha.17",
|
|
10
10
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
11
11
|
"@thumbmarkjs/thumbmarkjs": "0.16.0",
|
package/package.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
|
-
var version = "4.36.
|
|
2
|
+
var version = "4.36.1";
|
|
3
3
|
var dependencies = {
|
|
4
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
4
|
+
"@dynamic-labs/sdk-api-core": "0.0.798",
|
|
5
5
|
"@dynamic-labs-sdk/client": "0.1.0-alpha.17",
|
|
6
6
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
7
7
|
"@thumbmarkjs/thumbmarkjs": "0.16.0",
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/sdk-react-core",
|
|
3
|
-
"version": "4.36.
|
|
3
|
+
"version": "4.36.1",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
5
|
+
"@dynamic-labs/sdk-api-core": "0.0.798",
|
|
6
6
|
"@dynamic-labs-sdk/client": "0.1.0-alpha.17",
|
|
7
7
|
"@hcaptcha/react-hcaptcha": "1.4.4",
|
|
8
8
|
"@thumbmarkjs/thumbmarkjs": "0.16.0",
|
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
"yup": "0.32.11",
|
|
16
16
|
"react-international-phone": "4.5.0",
|
|
17
17
|
"bs58": "5.0.0",
|
|
18
|
-
"@dynamic-labs/assert-package-version": "4.36.
|
|
19
|
-
"@dynamic-labs/iconic": "4.36.
|
|
20
|
-
"@dynamic-labs/logger": "4.36.
|
|
21
|
-
"@dynamic-labs/multi-wallet": "4.36.
|
|
22
|
-
"@dynamic-labs/rpc-providers": "4.36.
|
|
23
|
-
"@dynamic-labs/store": "4.36.
|
|
24
|
-
"@dynamic-labs/types": "4.36.
|
|
25
|
-
"@dynamic-labs/utils": "4.36.
|
|
26
|
-
"@dynamic-labs/wallet-book": "4.36.
|
|
27
|
-
"@dynamic-labs/wallet-connector-core": "4.36.
|
|
18
|
+
"@dynamic-labs/assert-package-version": "4.36.1",
|
|
19
|
+
"@dynamic-labs/iconic": "4.36.1",
|
|
20
|
+
"@dynamic-labs/logger": "4.36.1",
|
|
21
|
+
"@dynamic-labs/multi-wallet": "4.36.1",
|
|
22
|
+
"@dynamic-labs/rpc-providers": "4.36.1",
|
|
23
|
+
"@dynamic-labs/store": "4.36.1",
|
|
24
|
+
"@dynamic-labs/types": "4.36.1",
|
|
25
|
+
"@dynamic-labs/utils": "4.36.1",
|
|
26
|
+
"@dynamic-labs/wallet-book": "4.36.1",
|
|
27
|
+
"@dynamic-labs/wallet-connector-core": "4.36.1",
|
|
28
28
|
"eventemitter3": "5.0.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { ProjectSettings } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
export declare const getProjectSettings: () => ProjectSettings | undefined;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { ProjectSettings } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
export declare const useProjectSettings: () => ProjectSettings | undefined;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { ProjectSettings } from '@dynamic-labs/sdk-api-core';
|
|
2
|
+
export declare const useRefetchProjectSettings: () => (() => Promise<ProjectSettings | undefined>);
|
|
@@ -140,7 +140,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
|
|
|
140
140
|
/**
|
|
141
141
|
* Find the redirect data from the first available source
|
|
142
142
|
*/
|
|
143
|
-
const { dynamicOauthCode, dynamicOauthState } = (_a = getDynamicRedirectData.getDynamicRedirectData(redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null, window.location.href)) !== null && _a !== void 0 ? _a : {};
|
|
143
|
+
const { dynamicOauthCode, dynamicOauthState, dynamicOauthSsoProviderId } = (_a = getDynamicRedirectData.getDynamicRedirectData(redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null, window.location.href)) !== null && _a !== void 0 ? _a : {};
|
|
144
144
|
if (!dynamicOauthState || !dynamicOauthCode) {
|
|
145
145
|
return;
|
|
146
146
|
}
|
|
@@ -149,6 +149,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
|
|
|
149
149
|
return;
|
|
150
150
|
// we got back the dynamicOauthCode from the oauth provider, set it here so we can use it to sign in
|
|
151
151
|
socialStorageItem.code = dynamicOauthCode;
|
|
152
|
+
socialStorageItem.dynamicOauthSsoProviderId = dynamicOauthSsoProviderId;
|
|
152
153
|
setSocialStorageItem(socialStorageItem);
|
|
153
154
|
// Clear the state from local storage
|
|
154
155
|
socialStorage.deleteSocialStorage(socialStorageItem.provider);
|
|
@@ -180,6 +181,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
|
|
|
180
181
|
authMode: socialStorageItem.mode,
|
|
181
182
|
captchaToken: socialStorageItem.captchaToken,
|
|
182
183
|
provider: socialStorageItem.provider,
|
|
184
|
+
ssoProviderId: socialStorageItem.dynamicOauthSsoProviderId,
|
|
183
185
|
state: socialStorageItem.state,
|
|
184
186
|
verifier: socialStorageItem.codeVerifier,
|
|
185
187
|
});
|
|
@@ -136,7 +136,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
|
|
|
136
136
|
/**
|
|
137
137
|
* Find the redirect data from the first available source
|
|
138
138
|
*/
|
|
139
|
-
const { dynamicOauthCode, dynamicOauthState } = (_a = getDynamicRedirectData(redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null, window.location.href)) !== null && _a !== void 0 ? _a : {};
|
|
139
|
+
const { dynamicOauthCode, dynamicOauthState, dynamicOauthSsoProviderId } = (_a = getDynamicRedirectData(redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null, window.location.href)) !== null && _a !== void 0 ? _a : {};
|
|
140
140
|
if (!dynamicOauthState || !dynamicOauthCode) {
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
@@ -145,6 +145,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
|
|
|
145
145
|
return;
|
|
146
146
|
// we got back the dynamicOauthCode from the oauth provider, set it here so we can use it to sign in
|
|
147
147
|
socialStorageItem.code = dynamicOauthCode;
|
|
148
|
+
socialStorageItem.dynamicOauthSsoProviderId = dynamicOauthSsoProviderId;
|
|
148
149
|
setSocialStorageItem(socialStorageItem);
|
|
149
150
|
// Clear the state from local storage
|
|
150
151
|
deleteSocialStorage(socialStorageItem.provider);
|
|
@@ -176,6 +177,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
|
|
|
176
177
|
authMode: socialStorageItem.mode,
|
|
177
178
|
captchaToken: socialStorageItem.captchaToken,
|
|
178
179
|
provider: socialStorageItem.provider,
|
|
180
|
+
ssoProviderId: socialStorageItem.dynamicOauthSsoProviderId,
|
|
179
181
|
state: socialStorageItem.state,
|
|
180
182
|
verifier: socialStorageItem.codeVerifier,
|
|
181
183
|
});
|
|
@@ -17,10 +17,11 @@ const getDynamicRedirectDataFromUrl = (url) => {
|
|
|
17
17
|
const urlObj = new URL(url);
|
|
18
18
|
const dynamicOauthCode = urlObj.searchParams.get('dynamicOauthCode');
|
|
19
19
|
const dynamicOauthState = urlObj.searchParams.get('dynamicOauthState');
|
|
20
|
+
const dynamicOauthSsoProviderId = urlObj.searchParams.get('dynamicOauthSsoProviderId') || undefined;
|
|
20
21
|
if (!dynamicOauthCode || !dynamicOauthState) {
|
|
21
22
|
return null;
|
|
22
23
|
}
|
|
23
|
-
return { dynamicOauthCode, dynamicOauthState };
|
|
24
|
+
return { dynamicOauthCode, dynamicOauthSsoProviderId, dynamicOauthState };
|
|
24
25
|
}
|
|
25
26
|
catch (error) {
|
|
26
27
|
logger.logger.error('Error extracting dynamic redirect data from URL', error);
|
|
@@ -13,10 +13,11 @@ const getDynamicRedirectDataFromUrl = (url) => {
|
|
|
13
13
|
const urlObj = new URL(url);
|
|
14
14
|
const dynamicOauthCode = urlObj.searchParams.get('dynamicOauthCode');
|
|
15
15
|
const dynamicOauthState = urlObj.searchParams.get('dynamicOauthState');
|
|
16
|
+
const dynamicOauthSsoProviderId = urlObj.searchParams.get('dynamicOauthSsoProviderId') || undefined;
|
|
16
17
|
if (!dynamicOauthCode || !dynamicOauthState) {
|
|
17
18
|
return null;
|
|
18
19
|
}
|
|
19
|
-
return { dynamicOauthCode, dynamicOauthState };
|
|
20
|
+
return { dynamicOauthCode, dynamicOauthSsoProviderId, dynamicOauthState };
|
|
20
21
|
}
|
|
21
22
|
catch (error) {
|
|
22
23
|
logger.error('Error extracting dynamic redirect data from URL', error);
|
|
@@ -90,12 +90,13 @@ const unlinkOAuth = (_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({
|
|
|
90
90
|
return undefined;
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
|
-
const signInOAuth = (environmentId_2, providerType_2, _d) => _tslib.__awaiter(void 0, [environmentId_2, providerType_2, _d], void 0, function* (environmentId, providerType, { code, codeVerifier, state, captchaToken, sessionPublicKey }) {
|
|
93
|
+
const signInOAuth = (environmentId_2, providerType_2, _d) => _tslib.__awaiter(void 0, [environmentId_2, providerType_2, _d], void 0, function* (environmentId, providerType, { code, codeVerifier, state, captchaToken, sessionPublicKey, ssoProviderId, }) {
|
|
94
94
|
const oauthRequest = {
|
|
95
95
|
captchaToken,
|
|
96
96
|
code,
|
|
97
97
|
codeVerifier,
|
|
98
98
|
sessionPublicKey,
|
|
99
|
+
ssoProviderId,
|
|
99
100
|
state,
|
|
100
101
|
};
|
|
101
102
|
try {
|
|
@@ -8,7 +8,7 @@ export declare const unlinkOAuth: ({ environmentId, primaryWalletId, verifiedCre
|
|
|
8
8
|
primaryWalletId: string | undefined;
|
|
9
9
|
verifiedCredentialId: string;
|
|
10
10
|
}) => Promise<UserProfile | undefined>;
|
|
11
|
-
export declare const signInOAuth: (environmentId: string, providerType: ProviderEnum, { code, codeVerifier, state, captchaToken, sessionPublicKey }: OauthRequest) => Promise<UserProfile | undefined>;
|
|
11
|
+
export declare const signInOAuth: (environmentId: string, providerType: ProviderEnum, { code, codeVerifier, state, captchaToken, sessionPublicKey, ssoProviderId, }: OauthRequest) => Promise<UserProfile | undefined>;
|
|
12
12
|
export declare const getOAuthResult: (environmentId: string, providerType: ProviderEnum, { state }: OauthResultRequest) => Promise<OauthResultResponse | undefined>;
|
|
13
13
|
export declare const farcasterSignIn: (environmentId: string, farcasterSignInRequest: FarcasterSignInRequest) => Promise<UserProfile | undefined>;
|
|
14
14
|
export declare const farcasterVerify: (farcasterVerifyRequest: FarcasterVerifyRequest) => Promise<UserProfile | undefined>;
|
|
@@ -86,12 +86,13 @@ const unlinkOAuth = (_c) => __awaiter(void 0, [_c], void 0, function* ({ environ
|
|
|
86
86
|
return undefined;
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
|
-
const signInOAuth = (environmentId_2, providerType_2, _d) => __awaiter(void 0, [environmentId_2, providerType_2, _d], void 0, function* (environmentId, providerType, { code, codeVerifier, state, captchaToken, sessionPublicKey }) {
|
|
89
|
+
const signInOAuth = (environmentId_2, providerType_2, _d) => __awaiter(void 0, [environmentId_2, providerType_2, _d], void 0, function* (environmentId, providerType, { code, codeVerifier, state, captchaToken, sessionPublicKey, ssoProviderId, }) {
|
|
90
90
|
const oauthRequest = {
|
|
91
91
|
captchaToken,
|
|
92
92
|
code,
|
|
93
93
|
codeVerifier,
|
|
94
94
|
sessionPublicKey,
|
|
95
|
+
ssoProviderId,
|
|
95
96
|
state,
|
|
96
97
|
};
|
|
97
98
|
try {
|
|
@@ -2986,6 +2986,7 @@ const translation = {
|
|
|
2986
2986
|
dyn_wallet_delegation: {
|
|
2987
2987
|
title: 'Wallet delegation approval',
|
|
2988
2988
|
approval_required: 'Approval required',
|
|
2989
|
+
approval_requested: 'Approval requested',
|
|
2989
2990
|
approval_description: '{{appName}} is requesting access to perform automations on your behalf. You can revoke this permission at any time.',
|
|
2990
2991
|
select_wallets: 'Select Wallets',
|
|
2991
2992
|
select_all: 'Select All',
|
|
@@ -3002,6 +3003,7 @@ const translation = {
|
|
|
3002
3003
|
something_went_wrong: 'Something went wrong',
|
|
3003
3004
|
delegation_timeout_message: 'The delegation request timed out or was rejected. Please try approving again or come back in another time.',
|
|
3004
3005
|
try_again_button: 'Try again',
|
|
3006
|
+
logout_button: 'Log out',
|
|
3005
3007
|
},
|
|
3006
3008
|
};
|
|
3007
3009
|
|
|
@@ -2982,6 +2982,7 @@ export declare const translation: {
|
|
|
2982
2982
|
dyn_wallet_delegation: {
|
|
2983
2983
|
title: string;
|
|
2984
2984
|
approval_required: string;
|
|
2985
|
+
approval_requested: string;
|
|
2985
2986
|
approval_description: string;
|
|
2986
2987
|
select_wallets: string;
|
|
2987
2988
|
select_all: string;
|
|
@@ -2998,5 +2999,6 @@ export declare const translation: {
|
|
|
2998
2999
|
something_went_wrong: string;
|
|
2999
3000
|
delegation_timeout_message: string;
|
|
3000
3001
|
try_again_button: string;
|
|
3002
|
+
logout_button: string;
|
|
3001
3003
|
};
|
|
3002
3004
|
};
|
|
@@ -2982,6 +2982,7 @@ const translation = {
|
|
|
2982
2982
|
dyn_wallet_delegation: {
|
|
2983
2983
|
title: 'Wallet delegation approval',
|
|
2984
2984
|
approval_required: 'Approval required',
|
|
2985
|
+
approval_requested: 'Approval requested',
|
|
2985
2986
|
approval_description: '{{appName}} is requesting access to perform automations on your behalf. You can revoke this permission at any time.',
|
|
2986
2987
|
select_wallets: 'Select Wallets',
|
|
2987
2988
|
select_all: 'Select All',
|
|
@@ -2998,6 +2999,7 @@ const translation = {
|
|
|
2998
2999
|
something_went_wrong: 'Something went wrong',
|
|
2999
3000
|
delegation_timeout_message: 'The delegation request timed out or was rejected. Please try approving again or come back in another time.',
|
|
3000
3001
|
try_again_button: 'Try again',
|
|
3002
|
+
logout_button: 'Log out',
|
|
3001
3003
|
},
|
|
3002
3004
|
};
|
|
3003
3005
|
|
|
@@ -103,6 +103,7 @@ const viewsThatPreventModalClose = [
|
|
|
103
103
|
'login-with-sms-verification',
|
|
104
104
|
'backup-unsuccessful',
|
|
105
105
|
'wallet-upgrade-flow-view',
|
|
106
|
+
'wallet-delegation-view',
|
|
106
107
|
];
|
|
107
108
|
/**
|
|
108
109
|
* When hasPendingMfaAction returns true, user is not able to close the modal in these views at all
|
|
@@ -99,6 +99,7 @@ const viewsThatPreventModalClose = [
|
|
|
99
99
|
'login-with-sms-verification',
|
|
100
100
|
'backup-unsuccessful',
|
|
101
101
|
'wallet-upgrade-flow-view',
|
|
102
|
+
'wallet-delegation-view',
|
|
102
103
|
];
|
|
103
104
|
/**
|
|
104
105
|
* When hasPendingMfaAction returns true, user is not able to close the modal in these views at all
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { STORE_STORAGE_KEY, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, THEME, WALLET_PICKER_SEARCH_KEY, EXCHANGE_PICKER_SEARCH_KEY, PHANTOM_SIGNATURE_STATE, DEVICE_FINGERPRINT, } from './localStorage';
|
|
1
|
+
export { STORE_STORAGE_KEY, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, THEME, WALLET_PICKER_SEARCH_KEY, EXCHANGE_PICKER_SEARCH_KEY, PHANTOM_SIGNATURE_STATE, DEVICE_FINGERPRINT, DELEGATION_DENIED_WALLET_IDS, DELEGATION_PROMPT_DISMISSED, DELEGATION_COMPLETED_WALLET_IDS, DELEGATION_STATE, } from './localStorage';
|
|
2
2
|
export { BASE_LIGHT_1, BASE_LIGHT_2, BASE_LIGHT_3, BASE_LIGHT_4, BASE_LIGHT_5, BASE_DARK_5, TEXT_LIGHT_PRIMARY, TEXT_LIGHT_SECONDARY, TEXT_LIGHT_TERTIARY, TEXT_LIGHT_LINK, CONNECTION_LIGHT_GREEN, CONNECTION_LIGHT_ORANGE, ERROR_LIGHT_1, ERROR_LIGHT_2, OVERLAY_LIGHT, HOVER_LIGHT, LOADING_ANIMATION_GRADIENT_LIGHT, BASE_DARK_1, BASE_DARK_2, BASE_DARK_3, BASE_DARK_4, DYNAMIC_CONNECT_BUTTON_BACKGROUND, DYNAMIC_CONNECT_BUTTON_BORDER, DYNAMIC_CONNECT_BUTTON_COLOR, TEXT_DARK_PRIMARY, TEXT_DARK_SECONDARY, TEXT_DARK_TERTIARY, TEXT_DARK_LINK, BRAND_HOVER, BRAND_PRIMARY, BRAND_SECONDARY, CONNECTION_DARK_GREEN, CONNECTION_DARK_ORANGE, ERROR_DARK_1, ERROR_DARK_2, OVERLAY_DARK, HOVER_DARK, LOADING_ANIMATION_GRADIENT_DARK, SHADOW_DOWN_1, SHADOW_DOWN_2, SHADOW_DOWN_3, SHADOW_UP_1, BRAND_HOVER_COLOR, BRAND_PRIMARY_COLOR, BRAND_SECONDARY_COLOR, } from './colors';
|
|
3
3
|
export { BORDER_SQUARE, BORDER_ROUNDED, BORDER_RADIUS } from './theme';
|
|
4
4
|
export { TITLE, BODY_NORMAL, BODY_SMALL, BODY_MINI, BUTTON_PRIMARY, BUTTON_SECONDARY, NUMBERS_BIG, NUMBERS_MEDIUM, } from './typography';
|
|
@@ -20,6 +20,8 @@ const CAPTCHA_TOKEN = 'dynamic_captcha_token';
|
|
|
20
20
|
* Used to identify the purpose of a signature after phantom redirects back to the app in mobile
|
|
21
21
|
*/
|
|
22
22
|
const PHANTOM_SIGNATURE_STATE = 'phantom_verification_type';
|
|
23
|
+
// Wallet Delegation: unified state container for delegation flow
|
|
24
|
+
const DELEGATION_STATE = 'dynamic_delegation_state';
|
|
23
25
|
const STORE_STORAGE_KEY = 'dynamic_store';
|
|
24
26
|
const SECURE_ENCLAVE_WALLET_SESSION_KEYS = 'dynamic_secure_enclave_session_keys';
|
|
25
27
|
const SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS = {
|
|
@@ -29,6 +31,7 @@ const SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS = {
|
|
|
29
31
|
exports.BRIDGE_ONBOARDING_COMPLETED = BRIDGE_ONBOARDING_COMPLETED;
|
|
30
32
|
exports.CAPTCHA_TOKEN = CAPTCHA_TOKEN;
|
|
31
33
|
exports.CONNECTED_WALLET_NAME_SERVICE = CONNECTED_WALLET_NAME_SERVICE;
|
|
34
|
+
exports.DELEGATION_STATE = DELEGATION_STATE;
|
|
32
35
|
exports.DEVICE_FINGERPRINT = DEVICE_FINGERPRINT;
|
|
33
36
|
exports.DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS = DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS;
|
|
34
37
|
exports.EMBEDDED_WALLET_SECURE_BANNER = EMBEDDED_WALLET_SECURE_BANNER;
|
|
@@ -27,6 +27,10 @@ export type PhantomSignatureState = {
|
|
|
27
27
|
* Used to identify the purpose of a signature after phantom redirects back to the app in mobile
|
|
28
28
|
*/
|
|
29
29
|
export declare const PHANTOM_SIGNATURE_STATE = "phantom_verification_type";
|
|
30
|
+
export declare const DELEGATION_DENIED_WALLET_IDS = "dynamic_delegation_denied_wallet_ids";
|
|
31
|
+
export declare const DELEGATION_PROMPT_DISMISSED = "dynamic_delegation_prompt_dismissed";
|
|
32
|
+
export declare const DELEGATION_COMPLETED_WALLET_IDS = "dynamic_delegation_completed_wallet_ids";
|
|
33
|
+
export declare const DELEGATION_STATE = "dynamic_delegation_state";
|
|
30
34
|
export declare const STORE_STORAGE_KEY = "dynamic_store";
|
|
31
35
|
export declare const IP_LOOKUP_STORAGE_KEY = "dynamic_ip_lookup";
|
|
32
36
|
export declare const SECURE_ENCLAVE_WALLET_SESSION_KEYS = "dynamic_secure_enclave_session_keys";
|
|
@@ -16,10 +16,12 @@ const CAPTCHA_TOKEN = 'dynamic_captcha_token';
|
|
|
16
16
|
* Used to identify the purpose of a signature after phantom redirects back to the app in mobile
|
|
17
17
|
*/
|
|
18
18
|
const PHANTOM_SIGNATURE_STATE = 'phantom_verification_type';
|
|
19
|
+
// Wallet Delegation: unified state container for delegation flow
|
|
20
|
+
const DELEGATION_STATE = 'dynamic_delegation_state';
|
|
19
21
|
const STORE_STORAGE_KEY = 'dynamic_store';
|
|
20
22
|
const SECURE_ENCLAVE_WALLET_SESSION_KEYS = 'dynamic_secure_enclave_session_keys';
|
|
21
23
|
const SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS = {
|
|
22
24
|
priority: ['secureStorage', 'localStorage'],
|
|
23
25
|
};
|
|
24
26
|
|
|
25
|
-
export { BRIDGE_ONBOARDING_COMPLETED, CAPTCHA_TOKEN, CONNECTED_WALLET_NAME_SERVICE, DEVICE_FINGERPRINT, DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, EMBEDDED_WALLET_SECURE_BANNER, EMBEDDED_WALLET_SESSION_SETTINGS, EXCHANGE_PICKER_SEARCH_KEY, LAST_USED_WALLET, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, PHANTOM_SIGNATURE_STATE, PHONE_INPUT_DEFAULT_COUNTRY, SECURE_ENCLAVE_WALLET_SESSION_KEYS, SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS, STORE_STORAGE_KEY, WAGMI_LAST_SESSION_SETTINGS, WALLET_PICKER_SEARCH_KEY };
|
|
27
|
+
export { BRIDGE_ONBOARDING_COMPLETED, CAPTCHA_TOKEN, CONNECTED_WALLET_NAME_SERVICE, DELEGATION_STATE, DEVICE_FINGERPRINT, DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, EMBEDDED_WALLET_SECURE_BANNER, EMBEDDED_WALLET_SESSION_SETTINGS, EXCHANGE_PICKER_SEARCH_KEY, LAST_USED_WALLET, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, PHANTOM_SIGNATURE_STATE, PHONE_INPUT_DEFAULT_COUNTRY, SECURE_ENCLAVE_WALLET_SESSION_KEYS, SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS, STORE_STORAGE_KEY, WAGMI_LAST_SESSION_SETTINGS, WALLET_PICKER_SEARCH_KEY };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Block explorer URL patterns for different chains
|
|
8
|
+
* This mapping allows for easy configuration and extension of transaction link formats
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Predefined patterns for known block explorers
|
|
12
|
+
* Add new patterns here as needed for different chains
|
|
13
|
+
*/
|
|
14
|
+
const BLOCK_EXPLORER_PATTERNS = [
|
|
15
|
+
{
|
|
16
|
+
description: 'TRON - Uses hash fragment format',
|
|
17
|
+
domain: 'tronscan.org',
|
|
18
|
+
generateUrl: (baseUrl, hash) => {
|
|
19
|
+
const url = new URL(baseUrl);
|
|
20
|
+
return `${url.origin}/#/transaction/${hash}`;
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Default pattern for standard block explorers
|
|
26
|
+
* Used when no specific pattern matches
|
|
27
|
+
*/
|
|
28
|
+
const DEFAULT_PATTERN = {
|
|
29
|
+
description: 'Standard format used by most block explorers',
|
|
30
|
+
domain: '*',
|
|
31
|
+
generateUrl: (baseUrl, hash) => {
|
|
32
|
+
const url = new URL(baseUrl);
|
|
33
|
+
url.pathname = `/tx/${hash}`;
|
|
34
|
+
return url.toString();
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Find the appropriate pattern for a given block explorer URL
|
|
39
|
+
*/
|
|
40
|
+
const findBlockExplorerPattern = (blockExplorerUrl) => {
|
|
41
|
+
const pattern = BLOCK_EXPLORER_PATTERNS.find((pattern) => blockExplorerUrl.includes(pattern.domain));
|
|
42
|
+
return pattern || DEFAULT_PATTERN;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.BLOCK_EXPLORER_PATTERNS = BLOCK_EXPLORER_PATTERNS;
|
|
46
|
+
exports.DEFAULT_PATTERN = DEFAULT_PATTERN;
|
|
47
|
+
exports.findBlockExplorerPattern = findBlockExplorerPattern;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Block explorer URL patterns for different chains
|
|
3
|
+
* This mapping allows for easy configuration and extension of transaction link formats
|
|
4
|
+
*/
|
|
5
|
+
export interface BlockExplorerPattern {
|
|
6
|
+
/** Domain pattern to match against block explorer URLs */
|
|
7
|
+
domain: string;
|
|
8
|
+
/** Function to generate the transaction URL */
|
|
9
|
+
generateUrl: (baseUrl: string, transactionHash: string) => string;
|
|
10
|
+
/** Description of the pattern for documentation */
|
|
11
|
+
description: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Predefined patterns for known block explorers
|
|
15
|
+
* Add new patterns here as needed for different chains
|
|
16
|
+
*/
|
|
17
|
+
export declare const BLOCK_EXPLORER_PATTERNS: BlockExplorerPattern[];
|
|
18
|
+
/**
|
|
19
|
+
* Default pattern for standard block explorers
|
|
20
|
+
* Used when no specific pattern matches
|
|
21
|
+
*/
|
|
22
|
+
export declare const DEFAULT_PATTERN: BlockExplorerPattern;
|
|
23
|
+
/**
|
|
24
|
+
* Find the appropriate pattern for a given block explorer URL
|
|
25
|
+
*/
|
|
26
|
+
export declare const findBlockExplorerPattern: (blockExplorerUrl: string) => BlockExplorerPattern;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
/**
|
|
3
|
+
* Block explorer URL patterns for different chains
|
|
4
|
+
* This mapping allows for easy configuration and extension of transaction link formats
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Predefined patterns for known block explorers
|
|
8
|
+
* Add new patterns here as needed for different chains
|
|
9
|
+
*/
|
|
10
|
+
const BLOCK_EXPLORER_PATTERNS = [
|
|
11
|
+
{
|
|
12
|
+
description: 'TRON - Uses hash fragment format',
|
|
13
|
+
domain: 'tronscan.org',
|
|
14
|
+
generateUrl: (baseUrl, hash) => {
|
|
15
|
+
const url = new URL(baseUrl);
|
|
16
|
+
return `${url.origin}/#/transaction/${hash}`;
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Default pattern for standard block explorers
|
|
22
|
+
* Used when no specific pattern matches
|
|
23
|
+
*/
|
|
24
|
+
const DEFAULT_PATTERN = {
|
|
25
|
+
description: 'Standard format used by most block explorers',
|
|
26
|
+
domain: '*',
|
|
27
|
+
generateUrl: (baseUrl, hash) => {
|
|
28
|
+
const url = new URL(baseUrl);
|
|
29
|
+
url.pathname = `/tx/${hash}`;
|
|
30
|
+
return url.toString();
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Find the appropriate pattern for a given block explorer URL
|
|
35
|
+
*/
|
|
36
|
+
const findBlockExplorerPattern = (blockExplorerUrl) => {
|
|
37
|
+
const pattern = BLOCK_EXPLORER_PATTERNS.find((pattern) => blockExplorerUrl.includes(pattern.domain));
|
|
38
|
+
return pattern || DEFAULT_PATTERN;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export { BLOCK_EXPLORER_PATTERNS, DEFAULT_PATTERN, findBlockExplorerPattern };
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
6
|
var _tslib = require('../../../../../_virtual/_tslib.cjs');
|
|
7
|
+
var blockExplorerPatterns = require('./blockExplorerPatterns.cjs');
|
|
7
8
|
|
|
8
9
|
const getTransactionLink = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ walletConnector, transactionHash, }) {
|
|
9
10
|
try {
|
|
@@ -13,9 +14,10 @@ const getTransactionLink = (_a) => _tslib.__awaiter(void 0, [_a], void 0, functi
|
|
|
13
14
|
const [blockExplorerUrl] = yield walletConnector.getBlockExplorerUrlsForCurrentNetwork();
|
|
14
15
|
if (!blockExplorerUrl)
|
|
15
16
|
return undefined;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
// Find the appropriate pattern for this block explorer
|
|
18
|
+
const pattern = blockExplorerPatterns.findBlockExplorerPattern(blockExplorerUrl);
|
|
19
|
+
// Generate the transaction URL using the pattern
|
|
20
|
+
return pattern.generateUrl(blockExplorerUrl, transactionHash);
|
|
19
21
|
}
|
|
20
22
|
catch (error) {
|
|
21
23
|
return undefined;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../../../../_virtual/_tslib.js';
|
|
3
|
+
import { findBlockExplorerPattern } from './blockExplorerPatterns.js';
|
|
3
4
|
|
|
4
5
|
const getTransactionLink = (_a) => __awaiter(void 0, [_a], void 0, function* ({ walletConnector, transactionHash, }) {
|
|
5
6
|
try {
|
|
@@ -9,9 +10,10 @@ const getTransactionLink = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
9
10
|
const [blockExplorerUrl] = yield walletConnector.getBlockExplorerUrlsForCurrentNetwork();
|
|
10
11
|
if (!blockExplorerUrl)
|
|
11
12
|
return undefined;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
// Find the appropriate pattern for this block explorer
|
|
14
|
+
const pattern = findBlockExplorerPattern(blockExplorerUrl);
|
|
15
|
+
// Generate the transaction URL using the pattern
|
|
16
|
+
return pattern.generateUrl(blockExplorerUrl, transactionHash);
|
|
15
17
|
}
|
|
16
18
|
catch (error) {
|
|
17
19
|
return undefined;
|
|
@@ -4,6 +4,8 @@ import { PayWithDynamicProps } from '../../hooks/usePayWithDynamic/usePayWithDyn
|
|
|
4
4
|
export declare const SOCIAL_STORAGE_KEY = "dynamic_social_storage";
|
|
5
5
|
export type SocialStorageItem = {
|
|
6
6
|
provider: ProviderEnum;
|
|
7
|
+
/** SSO provider id */
|
|
8
|
+
dynamicOauthSsoProviderId: string | undefined;
|
|
7
9
|
/** State issued to IDP on social authentication */
|
|
8
10
|
state: string;
|
|
9
11
|
/** Code verifier used to generate the code challenge for PKCE */
|
|
@@ -207,7 +207,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
|
|
|
207
207
|
verifyFunction: () => apiCall(),
|
|
208
208
|
});
|
|
209
209
|
}), [handleError, initAuth, onSettled]);
|
|
210
|
-
const completeConnection = React.useCallback((_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser = false, }) {
|
|
210
|
+
const completeConnection = React.useCallback((_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser = false, ssoProviderId, }) {
|
|
211
211
|
try {
|
|
212
212
|
let sessionPublicKey = undefined;
|
|
213
213
|
utils.tracing.logEvent('oauth', 'completeConnection', utils.tracing.formatObject({
|
|
@@ -245,6 +245,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
|
|
|
245
245
|
code: authCode,
|
|
246
246
|
codeVerifier: verifier,
|
|
247
247
|
sessionPublicKey,
|
|
248
|
+
ssoProviderId,
|
|
248
249
|
state,
|
|
249
250
|
});
|
|
250
251
|
yield signInAccount(provider, apiCall);
|
|
@@ -371,7 +372,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
|
|
|
371
372
|
shouldRegisterSessionKeysOnSignin,
|
|
372
373
|
signInAccount,
|
|
373
374
|
]);
|
|
374
|
-
const connectSocialAccount = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ authMode, provider, validator, captchaToken, isHeadlessSocialSignIn, payingWithDynamic, triggerFundFromExchangeOnSuccess, redirectUrl, telegramAuthToken, showWidgetAfterConnection, }) {
|
|
375
|
+
const connectSocialAccount = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ authMode, provider, validator, captchaToken, isHeadlessSocialSignIn, payingWithDynamic, triggerFundFromExchangeOnSuccess, redirectUrl, telegramAuthToken, showWidgetAfterConnection, ssoProviderId, }) {
|
|
375
376
|
var _e, _f;
|
|
376
377
|
clearError();
|
|
377
378
|
setIsProcessing(true);
|
|
@@ -404,6 +405,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
|
|
|
404
405
|
socialStorage.setSocialStorageFor(provider, {
|
|
405
406
|
captchaToken,
|
|
406
407
|
codeVerifier: usingPkce ? verifier : undefined,
|
|
408
|
+
dynamicOauthSsoProviderId: ssoProviderId,
|
|
407
409
|
isHeadlessSocialSignIn,
|
|
408
410
|
mode: authMode,
|
|
409
411
|
payingWithDynamic,
|
|
@@ -451,6 +453,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
|
|
|
451
453
|
authMode,
|
|
452
454
|
captchaToken,
|
|
453
455
|
provider,
|
|
456
|
+
ssoProviderId,
|
|
454
457
|
state,
|
|
455
458
|
telegramAuthToken,
|
|
456
459
|
verifier,
|
|
@@ -20,10 +20,12 @@ export type ConnectSocialAccountProps = {
|
|
|
20
20
|
payingWithDynamic?: PayWithDynamicProps;
|
|
21
21
|
/** marks the flow as initiated by headless sign-in API */
|
|
22
22
|
isHeadlessSocialSignIn?: boolean;
|
|
23
|
+
/** SSO provider ID for social authentication */
|
|
24
|
+
ssoProviderId?: string;
|
|
23
25
|
};
|
|
24
26
|
export declare const useSocialAuth: ({ onSettled, onError, onFarcasterUrl, }: UseSocialAuthProps) => {
|
|
25
27
|
readonly checkValidProvider: (provider: ProviderEnum, authMode: SocialAuthMode) => boolean;
|
|
26
|
-
readonly completeConnection: ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser, }: {
|
|
28
|
+
readonly completeConnection: ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser, ssoProviderId, }: {
|
|
27
29
|
authMode: SocialAuthMode;
|
|
28
30
|
provider: ProviderEnum;
|
|
29
31
|
state: string;
|
|
@@ -32,6 +34,7 @@ export declare const useSocialAuth: ({ onSettled, onError, onFarcasterUrl, }: Us
|
|
|
32
34
|
verifier?: string | undefined;
|
|
33
35
|
telegramAuthToken?: string | undefined;
|
|
34
36
|
forceCreateUser?: boolean | undefined;
|
|
37
|
+
ssoProviderId?: string | undefined;
|
|
35
38
|
}) => Promise<void>;
|
|
36
39
|
readonly connectSocialAccount: (props: ConnectSocialAccountProps) => Promise<void>;
|
|
37
40
|
readonly error: SocialOAuthError | undefined;
|