Skip to content

Commit dfc0ccb

Browse files
committed
refactor project config interface
1 parent 6220e9d commit dfc0ccb

File tree

4 files changed

+61
-73
lines changed

4 files changed

+61
-73
lines changed

packages/no-modal/src/base/connector/constants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,8 @@ export const CONNECTOR_CATEGORY = {
1919
EXTERNAL: "external",
2020
IN_APP: "in_app",
2121
} as const;
22+
23+
export const SMART_ACCOUNT_WALLET_SCOPE = {
24+
EMBEDDED: "embedded",
25+
ALL: "all",
26+
} as const;

packages/no-modal/src/base/interfaces.ts

Lines changed: 29 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,76 +3,60 @@ import { type SmartAccountType } from "@toruslabs/ethereum-controllers";
33
import { type AuthConnectionConfig, type WhiteLabelData } from "@web3auth/auth";
44

55
import { type ChainNamespaceType, type CustomChainConfig } from "./chain/IChainInterface";
6+
import { SMART_ACCOUNT_WALLET_SCOPE } from "./connector";
67

78
export interface WhitelistResponse {
89
urls: string[];
910
signed_urls: Record<string, string>;
1011
}
1112

12-
export type ChainsConfig = {
13-
chainId: string;
14-
enabled: boolean;
15-
config: CustomChainConfig;
16-
}[];
13+
export type ChainsConfig = CustomChainConfig[];
1714

1815
export interface ExternalWalletsConfig {
19-
enabled: boolean;
20-
config: { wallet: string; enabled: boolean }[];
16+
disableAllRecommendedWallets?: boolean;
17+
disableAllOtherWallets?: boolean;
18+
disabledWallets?: string[];
2119
}
2220

23-
export const SMART_ACCOUNT_WALLET_SCOPE = {
24-
EMBEDDED_ONLY: "embeddedOnly",
25-
ALL: "all",
26-
} as const;
27-
2821
export type SmartAccountWalletScope = (typeof SMART_ACCOUNT_WALLET_SCOPE)[keyof typeof SMART_ACCOUNT_WALLET_SCOPE];
2922

3023
export interface SmartAccountsConfig {
31-
enabled: boolean;
32-
config: {
33-
smartAccountType: SmartAccountType;
34-
walletScope: SmartAccountWalletScope;
35-
chains: {
36-
chainId: string;
37-
bundlerConfig: {
38-
url: string;
39-
};
40-
paymasterConfig?: {
41-
url: string;
42-
};
43-
}[];
44-
};
24+
smartAccountType: SmartAccountType;
25+
walletScope: SmartAccountWalletScope;
26+
chains: {
27+
chainId: string;
28+
bundlerConfig: {
29+
url: string;
30+
};
31+
paymasterConfig?: {
32+
url: string;
33+
};
34+
}[];
4535
}
4636

4737
export interface WalletUiConfig {
48-
portfolioWidgetEnabled: boolean;
49-
portfolioWidgetPosition: BUTTON_POSITION_TYPE;
50-
confirmationModalEnabled: boolean;
51-
walletConnectEnabled: boolean;
52-
tokenDisplayEnabled: boolean;
53-
nftDisplayEnabled: boolean;
54-
defaultPortfolio: "token" | "nft";
55-
showAllTokensButtonEnabled: boolean;
56-
buyButtonEnabled: boolean;
57-
sendButtonEnabled: boolean;
58-
swapButtonEnabled: boolean;
59-
receiveButtonEnabled: boolean;
38+
enablePortfolioWidget?: boolean;
39+
enableConfirmationModal?: boolean;
40+
enableWalletConnect?: boolean;
41+
enableTokenDisplay?: boolean;
42+
enableNftDisplay?: boolean;
43+
enableShowAllTokensButton?: boolean;
44+
enableBuyButton?: boolean;
45+
enableSendButton?: boolean;
46+
enableSwapButton?: boolean;
47+
enableReceiveButton?: boolean;
48+
portfolioWidgetPosition?: BUTTON_POSITION_TYPE;
49+
defaultPortfolio?: "token" | "nft";
6050
}
6151

6252
// TODO: finalize the project config
6353
export interface ProjectConfig {
6454
// Legacy
6555
sms_otp_enabled: boolean;
66-
/** @deprecated If external_wallets.enabled is true, WC will be enabled automatically */
67-
wallet_connect_enabled: boolean;
68-
/** @deprecated always use Web3Auth WalletConnect project ID */
69-
wallet_connect_project_id?: string;
70-
/** @deprecated use keyExportEnabled */
71-
key_export_enabled?: boolean;
7256
// Project settings
7357
userDataIncludedInToken?: boolean; // TODO: implement this
7458
sessionTime?: number;
75-
keyExportEnabled?: boolean;
59+
enableKeyExport?: boolean;
7660
whitelist?: WhitelistResponse; // remain unchanged
7761
whitelabel?: WhiteLabelData; // remain unchanged
7862
// Chains

packages/no-modal/src/connectors/auth-connector/authConnector.ts

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -523,46 +523,46 @@ export const authConnector = (params?: Omit<AuthConnectorOptions, "coreOptions"
523523
]) as AuthConnectorOptions["connectorSettings"];
524524

525525
// WS settings
526-
const { keyExportEnabled, walletUi } = projectConfig;
527-
const isKeyExportEnabled = typeof keyExportEnabled === "boolean" ? keyExportEnabled : true;
526+
const { enableKeyExport, walletUi } = projectConfig;
527+
const isKeyExportEnabled = typeof enableKeyExport === "boolean" ? enableKeyExport : true;
528528
const {
529-
portfolioWidgetEnabled = false,
529+
enablePortfolioWidget = false,
530+
enableTokenDisplay = true,
531+
enableNftDisplay = true,
532+
enableWalletConnect = true,
533+
enableBuyButton = true,
534+
enableSendButton = true,
535+
enableSwapButton = true,
536+
enableReceiveButton = true,
537+
enableShowAllTokensButton = true,
538+
enableConfirmationModal = false,
530539
portfolioWidgetPosition = BUTTON_POSITION.BOTTOM_LEFT,
531540
defaultPortfolio = "token",
532-
tokenDisplayEnabled = true,
533-
nftDisplayEnabled = true,
534-
walletConnectEnabled = true,
535-
buyButtonEnabled = true,
536-
sendButtonEnabled = true,
537-
swapButtonEnabled = true,
538-
receiveButtonEnabled = true,
539-
showAllTokensButtonEnabled = true,
540-
confirmationModalEnabled = false,
541541
} = walletUi || {};
542542
const projectConfigWhiteLabel: WalletServicesSettings["whiteLabel"] = {
543-
showWidgetButton: portfolioWidgetEnabled,
544-
hideNftDisplay: !nftDisplayEnabled,
545-
hideTokenDisplay: !tokenDisplayEnabled,
546-
hideTransfers: !sendButtonEnabled,
547-
hideTopup: !buyButtonEnabled,
548-
hideReceive: !receiveButtonEnabled,
549-
hideSwap: !swapButtonEnabled,
550-
hideShowAllTokens: !showAllTokensButtonEnabled,
551-
hideWalletConnect: !walletConnectEnabled,
543+
showWidgetButton: enablePortfolioWidget,
544+
hideNftDisplay: !enableNftDisplay,
545+
hideTokenDisplay: !enableTokenDisplay,
546+
hideTransfers: !enableSendButton,
547+
hideTopup: !enableBuyButton,
548+
hideReceive: !enableReceiveButton,
549+
hideSwap: !enableSwapButton,
550+
hideShowAllTokens: !enableShowAllTokensButton,
551+
hideWalletConnect: !enableWalletConnect,
552552
buttonPosition: portfolioWidgetPosition,
553553
defaultPortfolio,
554554
};
555555
const whiteLabel = deepmerge.all([projectConfigWhiteLabel, uiConfig, coreOptions.walletServicesConfig?.whiteLabel || {}]);
556556
const confirmationStrategy =
557557
coreOptions.walletServicesConfig?.confirmationStrategy ??
558-
(confirmationModalEnabled ? CONFIRMATION_STRATEGY.MODAL : CONFIRMATION_STRATEGY.AUTO_APPROVE);
558+
(enableConfirmationModal ? CONFIRMATION_STRATEGY.MODAL : CONFIRMATION_STRATEGY.AUTO_APPROVE);
559559
const finalWsSettings: WalletServicesSettings = {
560560
...coreOptions.walletServicesConfig,
561561
confirmationStrategy,
562562
whiteLabel,
563563
accountAbstractionConfig: coreOptions.accountAbstractionConfig,
564564
enableLogging: coreOptions.enableLogging,
565-
enableKeyExport: keyExportEnabled,
565+
enableKeyExport: enableKeyExport,
566566
};
567567

568568
// Core options

packages/no-modal/src/noModal.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,7 @@ export class Web3AuthNoModal extends SafeEventEmitter<Web3AuthNoModalEvents> imp
228228
protected initChainsConfig(projectConfig: ProjectConfig) {
229229
// merge chains from project config with core options, core options chains will take precedence over project config chains
230230
const chainMap = new Map<string, CustomChainConfig>();
231-
const enabledProjectConfigChains = projectConfig.chains?.filter((chain) => chain.enabled).map((chain) => chain.config) || [];
232-
const allChains = [...enabledProjectConfigChains, ...(this.coreOptions.chains || [])];
231+
const allChains = [...(projectConfig.chains || []), ...(this.coreOptions.chains || [])];
233232
for (const chain of allChains) {
234233
const existingChain = chainMap.get(chain.chainId);
235234
if (!existingChain) chainMap.set(chain.chainId, chain);
@@ -267,11 +266,11 @@ export class Web3AuthNoModal extends SafeEventEmitter<Web3AuthNoModalEvents> imp
267266
}
268267

269268
protected initAccountAbstractionConfig(projectConfig?: ProjectConfig) {
270-
const isAAEnabled = Boolean(this.coreOptions.accountAbstractionConfig) || projectConfig?.smartAccounts?.enabled;
269+
const isAAEnabled = Boolean(this.coreOptions.accountAbstractionConfig || projectConfig?.smartAccounts);
271270
if (!isAAEnabled) return;
272271

273272
// merge project config with core options, code config take precedence over project config
274-
const { walletScope, ...configWithoutWalletScope } = projectConfig?.smartAccounts?.config || {};
273+
const { walletScope, ...configWithoutWalletScope } = projectConfig?.smartAccounts || {};
275274
this.coreOptions.accountAbstractionConfig = deepmerge(configWithoutWalletScope || {}, this.coreOptions.accountAbstractionConfig || {});
276275

277276
// determine if we should use AA with external wallet
@@ -317,7 +316,7 @@ export class Web3AuthNoModal extends SafeEventEmitter<Web3AuthNoModalEvents> imp
317316
};
318317

319318
// add injected connectors
320-
const isExternalWalletEnabled = projectConfig.externalWalletLogin?.enabled ?? true;
319+
const isExternalWalletEnabled = Boolean(projectConfig.externalWalletLogin);
321320
const isMipdEnabled = isExternalWalletEnabled && (this.coreOptions.multiInjectedProviderDiscovery ?? true);
322321
const chainNamespaces = new Set(this.coreOptions.chains.map((chain) => chain.chainNamespace));
323322
if (isMipdEnabled) {

0 commit comments

Comments
 (0)