@txnlab/use-wallet-vue
Version:
Vue library for integrating Algorand wallets into decentralized applications
1 lines • 13.5 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/walletManagerPlugin.ts","../src/useWallet.ts","../src/useNetwork.ts"],"sourcesContent":["export * from '@txnlab/use-wallet'\nexport { WalletManagerPlugin } from './walletManagerPlugin'\nexport { useWallet, type Wallet } from './useWallet'\nexport { useNetwork } from './useNetwork'\n","import { WalletManager, type WalletManagerConfig } from '@txnlab/use-wallet'\nimport { ref } from 'vue'\nimport type algosdk from 'algosdk'\n\nexport const WalletManagerPlugin = {\n install(app: any, options: WalletManagerConfig) {\n const manager = new WalletManager(options)\n const algodClient = ref(manager.algodClient)\n\n const setAlgodClient = (client: algosdk.Algodv2) => {\n algodClient.value = client\n manager.algodClient = client\n }\n\n app.provide('walletManager', manager)\n app.provide('algodClient', algodClient)\n app.provide('setAlgodClient', setAlgodClient)\n\n manager.resumeSessions().catch((error) => {\n console.error('Error resuming sessions:', error)\n })\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport {\n BaseWallet,\n WalletManager,\n type WalletAccount,\n type WalletMetadata,\n type WalletId,\n type SignMetadata,\n type SignDataResponse\n} from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\n\nexport interface Wallet {\n id: WalletId\n metadata: WalletMetadata\n accounts: WalletAccount[]\n activeAccount: WalletAccount | null\n isConnected: boolean\n isActive: boolean\n connect: (args?: Record<string, any>) => Promise<WalletAccount[]>\n disconnect: () => Promise<void>\n setActive: () => void\n setActiveAccount: (address: string) => void\n canSignData: boolean\n}\n\nexport type SetAlgodClient = (client: algosdk.Algodv2) => void\n\nexport function useWallet() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient) {\n throw new Error('Algod client not properly installed')\n }\n\n const managerStatus = useStore(manager.store, (state) => state.managerStatus)\n const isReady = computed(() => managerStatus.value === 'ready')\n\n const walletStateMap = useStore(manager.store, (state) => state.wallets)\n const activeWalletId = useStore(manager.store, (state) => state.activeWallet)\n\n const transformToWallet = (wallet: BaseWallet): Wallet => {\n const walletState = walletStateMap.value[wallet.id]\n return {\n id: wallet.id,\n metadata: wallet.metadata,\n accounts: walletState?.accounts ?? [],\n activeAccount: walletState?.activeAccount ?? null,\n isConnected: !!walletState,\n isActive: wallet.id === activeWalletId.value,\n canSignData: wallet.canSignData ?? false,\n connect: (args) => wallet.connect(args),\n disconnect: () => wallet.disconnect(),\n setActive: () => wallet.setActive(),\n setActiveAccount: (addr) => wallet.setActiveAccount(addr)\n }\n }\n\n const wallets = computed(() => {\n return [...manager.wallets.values()].map(transformToWallet)\n })\n\n const activeWallet = computed(() => {\n const wallet = activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n return wallet ? transformToWallet(wallet) : null\n })\n\n const activeBaseWallet = computed(() => {\n return activeWalletId.value ? manager.getWallet(activeWalletId.value) || null : null\n })\n\n const activeWalletState = computed(() => {\n const wallet = activeWallet.value\n return wallet ? walletStateMap.value[wallet.id] || null : null\n })\n\n const activeWalletAccounts = computed(() => {\n return activeWalletState.value?.accounts ?? null\n })\n\n const activeWalletAddresses = computed(() => {\n return activeWalletAccounts.value?.map((account) => account.address) ?? null\n })\n\n const activeAccount = computed(() => {\n return activeWalletState.value?.activeAccount ?? null\n })\n\n const activeAddress = computed(() => {\n return activeAccount.value?.address ?? null\n })\n\n const signTransactions = <T extends algosdk.Transaction[] | Uint8Array[]>(\n txnGroup: T | T[],\n indexesToSign?: number[]\n ): Promise<(Uint8Array | null)[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signTransactions(txnGroup, indexesToSign)\n }\n\n const transactionSigner = (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ): Promise<Uint8Array[]> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.transactionSigner(txnGroup, indexesToSign)\n }\n\n const signData = (data: string, metadata: SignMetadata): Promise<SignDataResponse> => {\n if (!activeBaseWallet.value) {\n throw new Error('No active wallet')\n }\n return activeBaseWallet.value.signData(data, metadata)\n }\n\n return {\n wallets,\n isReady,\n algodClient: computed(() => {\n if (!algodClient.value) {\n throw new Error('Algod client is undefined')\n }\n return algodClient.value\n }),\n activeWallet,\n activeWalletAccounts,\n activeWalletAddresses,\n activeAccount,\n activeAddress,\n signData,\n signTransactions,\n transactionSigner\n }\n}\n","import { useStore } from '@tanstack/vue-store'\nimport { WalletManager, type AlgodConfig } from '@txnlab/use-wallet'\nimport algosdk from 'algosdk'\nimport { computed, inject, ref } from 'vue'\nimport type { SetAlgodClient } from './useWallet'\n\nexport function useNetwork() {\n const manager = inject<WalletManager>('walletManager')\n const algodClient = inject<ReturnType<typeof ref<algosdk.Algodv2>>>('algodClient')\n const setAlgodClient = inject<SetAlgodClient>('setAlgodClient')\n\n if (!manager) {\n throw new Error('WalletManager plugin is not properly installed')\n }\n if (!algodClient || !setAlgodClient) {\n throw new Error('Algod client or setter not properly installed')\n }\n\n const activeNetwork = useStore(manager.store, (state) => state.activeNetwork)\n\n // Create a reactive store for network config\n const networkConfig = useStore(manager.store, (state) => ({\n networks: { ...manager.networkConfig },\n activeNetwork: state.activeNetwork\n }))\n\n const activeNetworkConfig = computed(\n () => networkConfig.value.networks[networkConfig.value.activeNetwork]\n )\n\n const setActiveNetwork = async (networkId: string): Promise<void> => {\n if (networkId === activeNetwork.value) {\n return\n }\n\n if (!manager.networkConfig[networkId]) {\n throw new Error(`Network \"${networkId}\" not found in network configuration`)\n }\n\n console.info(`[Vue] Creating new Algodv2 client...`)\n\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n\n await manager.setActiveNetwork(networkId)\n setAlgodClient(newClient)\n\n console.info(`[Vue] ✅ Active network set to ${networkId}.`)\n }\n\n const updateAlgodConfig = (networkId: string, config: Partial<AlgodConfig>): void => {\n manager.updateAlgodConfig(networkId, config)\n manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n const resetNetworkConfig = (networkId: string): void => {\n manager.resetNetworkConfig(networkId)\n manager.store.setState((state) => ({ ...state }))\n\n // If this is the active network, update the algodClient\n if (networkId === activeNetwork.value) {\n console.info(`[Vue] Creating new Algodv2 client...`)\n const { algod } = manager.networkConfig[networkId]\n const { token = '', baseServer, port = '', headers = {} } = algod\n const newClient = new algosdk.Algodv2(token, baseServer, port, headers)\n setAlgodClient(newClient)\n }\n }\n\n return {\n activeNetwork,\n networkConfig: manager.networkConfig,\n activeNetworkConfig,\n setActiveNetwork,\n updateAlgodConfig,\n resetNetworkConfig\n }\n}\n"],"mappings":"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","names":["import_use_wallet","import_vue","import_vue_store","import_use_wallet","import_algosdk","import_vue","algosdk"]}