import { useCallback, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { getCurrentUserProfile } from '@/api' import { notify } from '@/lib/notify' import { useAuthStore } from '@/store' export function useWalletBalanceRefresh() { const { t } = useTranslation() const setCurrentUser = useAuthStore((state) => state.setCurrentUser) const [isRefreshingBalance, setIsRefreshingBalance] = useState(false) const refreshPromiseRef = useRef | null>(null) const refreshWalletBalance = useCallback(() => { if (refreshPromiseRef.current) { return refreshPromiseRef.current } setIsRefreshingBalance(true) const refreshPromise = getCurrentUserProfile() .then((currentUser) => { setCurrentUser(currentUser) }) .catch((error: unknown) => { notify.error( error instanceof Error ? error.message : t('commonUi.toast.requestFailed'), ) }) .finally(() => { refreshPromiseRef.current = null setIsRefreshingBalance(false) }) refreshPromiseRef.current = refreshPromise return refreshPromise }, [setCurrentUser, t]) return { isRefreshingBalance, refreshWalletBalance, } }