UNPKG

@buddy-link/react

Version:

Buddy SDK - React components and hooks for wallet integration

47 lines (35 loc) 1.17 kB
'use client'; import { useEffect, useRef, useState } from 'react' import { detectSolana } from './solana' import { useBuddyState, BUDDY_WALLETS } from '../../../../index' export const Detect = () => { const [wallets, setWallets] = useBuddyState(BUDDY_WALLETS); const intervalRef = useRef(null); // Helper function to compare wallet objects by their keys only const walletsChanged = (prev, current) => { const prevKeys = Object.keys(prev).sort() const currentKeys = Object.keys(current).sort() if (prevKeys.length !== currentKeys.length) return true return prevKeys.some((key, index) => key !== currentKeys[index]) } useEffect(() => { const detect = () => { try { if (typeof window === 'undefined') return const detected = detectSolana() setWallets((prev) => walletsChanged(prev, detected) ? detected : prev ) } catch (_) {} } detect() intervalRef.current = setInterval(detect, 1000) return () => { if (intervalRef.current) { clearInterval(intervalRef.current) intervalRef.current = null } } }, []) return null }