UNPKG

@reown/appkit-controllers

Version:

#### 🔗 [Website](https://reown.com/appkit)

171 lines • 5.55 kB
import { proxy, snapshot } from 'valtio/vanilla'; import { subscribeKey as subKey } from 'valtio/vanilla/utils'; import { ConstantsUtil } from '../utils/ConstantsUtil.js'; import { OptionsUtil } from '../utils/OptionsUtil.js'; // -- State --------------------------------------------- // const state = proxy({ features: ConstantsUtil.DEFAULT_FEATURES, projectId: '', sdkType: 'appkit', sdkVersion: 'html-wagmi-undefined', defaultAccountTypes: ConstantsUtil.DEFAULT_ACCOUNT_TYPES, enableNetworkSwitch: true, experimental_preferUniversalLinks: false, remoteFeatures: {} }); // -- Controller ---------------------------------------- // export const OptionsController = { state, subscribeKey(key, callback) { return subKey(state, key, callback); }, setOptions(options) { Object.assign(state, options); }, setRemoteFeatures(remoteFeatures) { if (!remoteFeatures) { return; } const newRemoteFeatures = { ...state.remoteFeatures, ...remoteFeatures }; state.remoteFeatures = newRemoteFeatures; if (state.remoteFeatures?.socials) { state.remoteFeatures.socials = OptionsUtil.filterSocialsByPlatform(state.remoteFeatures.socials); } }, setFeatures(features) { if (!features) { return; } if (!state.features) { state.features = ConstantsUtil.DEFAULT_FEATURES; } const newFeatures = { ...state.features, ...features }; state.features = newFeatures; }, setProjectId(projectId) { state.projectId = projectId; }, setCustomRpcUrls(customRpcUrls) { state.customRpcUrls = customRpcUrls; }, setAllWallets(allWallets) { state.allWallets = allWallets; }, setIncludeWalletIds(includeWalletIds) { state.includeWalletIds = includeWalletIds; }, setExcludeWalletIds(excludeWalletIds) { state.excludeWalletIds = excludeWalletIds; }, setFeaturedWalletIds(featuredWalletIds) { state.featuredWalletIds = featuredWalletIds; }, setTokens(tokens) { state.tokens = tokens; }, setTermsConditionsUrl(termsConditionsUrl) { state.termsConditionsUrl = termsConditionsUrl; }, setPrivacyPolicyUrl(privacyPolicyUrl) { state.privacyPolicyUrl = privacyPolicyUrl; }, setCustomWallets(customWallets) { state.customWallets = customWallets; }, setIsSiweEnabled(isSiweEnabled) { state.isSiweEnabled = isSiweEnabled; }, setIsUniversalProvider(isUniversalProvider) { state.isUniversalProvider = isUniversalProvider; }, setSdkVersion(sdkVersion) { state.sdkVersion = sdkVersion; }, setMetadata(metadata) { state.metadata = metadata; }, setDisableAppend(disableAppend) { state.disableAppend = disableAppend; }, setEIP6963Enabled(enableEIP6963) { state.enableEIP6963 = enableEIP6963; }, setDebug(debug) { state.debug = debug; }, setEnableWalletConnect(enableWalletConnect) { state.enableWalletConnect = enableWalletConnect; }, setEnableWalletGuide(enableWalletGuide) { state.enableWalletGuide = enableWalletGuide; }, setEnableAuthLogger(enableAuthLogger) { state.enableAuthLogger = enableAuthLogger; }, setEnableWallets(enableWallets) { state.enableWallets = enableWallets; }, setPreferUniversalLinks(preferUniversalLinks) { state.experimental_preferUniversalLinks = preferUniversalLinks; }, setHasMultipleAddresses(hasMultipleAddresses) { state.hasMultipleAddresses = hasMultipleAddresses; }, setSIWX(siwx) { state.siwx = siwx; }, setConnectMethodsOrder(connectMethodsOrder) { state.features = { ...state.features, connectMethodsOrder }; }, setWalletFeaturesOrder(walletFeaturesOrder) { state.features = { ...state.features, walletFeaturesOrder }; }, setSocialsOrder(socialsOrder) { state.remoteFeatures = { ...state.remoteFeatures, socials: socialsOrder }; }, setCollapseWallets(collapseWallets) { state.features = { ...state.features, collapseWallets }; }, setEnableEmbedded(enableEmbedded) { state.enableEmbedded = enableEmbedded; }, setAllowUnsupportedChain(allowUnsupportedChain) { state.allowUnsupportedChain = allowUnsupportedChain; }, setManualWCControl(manualWCControl) { state.manualWCControl = manualWCControl; }, setEnableNetworkSwitch(enableNetworkSwitch) { state.enableNetworkSwitch = enableNetworkSwitch; }, setDefaultAccountTypes(defaultAccountType = {}) { Object.entries(defaultAccountType).forEach(([namespace, accountType]) => { if (accountType) { // @ts-expect-error - Keys are validated by the param type state.defaultAccountTypes[namespace] = accountType; } }); }, setUniversalProviderConfigOverride(universalProviderConfigOverride) { state.universalProviderConfigOverride = universalProviderConfigOverride; }, getUniversalProviderConfigOverride() { return state.universalProviderConfigOverride; }, getSnapshot() { return snapshot(state); } }; //# sourceMappingURL=OptionsController.js.map