UNPKG

@reown/appkit-controllers

Version:

The full stack toolkit to build onchain app UX.

62 lines 1.81 kB
import { proxy, ref, subscribe } from 'valtio/vanilla'; import { subscribeKey as subKey } from 'valtio/vanilla/utils'; const CLEAN_PROVIDERS_STATE = { eip155: undefined, solana: undefined, polkadot: undefined, bip122: undefined, cosmos: undefined, sui: undefined, stacks: undefined, ton: undefined, tron: undefined }; const state = proxy({ providers: { ...CLEAN_PROVIDERS_STATE }, providerIds: { ...CLEAN_PROVIDERS_STATE } }); export const ProviderController = { state, subscribeKey(key, callback) { return subKey(state, key, callback); }, subscribe(callback) { return subscribe(state, () => { callback(state); }); }, subscribeProviders(callback) { return subscribe(state.providers, () => callback(state.providers)); }, setProvider(chainNamespace, provider) { if (chainNamespace && provider) { state.providers[chainNamespace] = ref(provider); } }, getProvider(chainNamespace) { if (!chainNamespace) { return undefined; } return state.providers[chainNamespace]; }, setProviderId(chainNamespace, providerId) { if (providerId) { state.providerIds[chainNamespace] = providerId; } }, getProviderId(chainNamespace) { if (!chainNamespace) { return undefined; } return state.providerIds[chainNamespace]; }, reset() { state.providers = { ...CLEAN_PROVIDERS_STATE }; state.providerIds = { ...CLEAN_PROVIDERS_STATE }; }, resetChain(chainNamespace) { state.providers[chainNamespace] = undefined; state.providerIds[chainNamespace] = undefined; } }; //# sourceMappingURL=ProviderController.js.map