expo-duooomi-app/hooks/core/use-user-balance.ts

33 lines
864 B
TypeScript

import { useState } from 'react'
import { subscription } from '@/lib/auth'
import { type ApiError } from '@/lib/types'
export const useUserBalance = () => {
const [loading, setLoading] = useState(false)
const [error, setError] = useState<ApiError | null>(null)
const [balance, setBalance] = useState<number>(0)
const load = async () => {
try {
setLoading(true)
const { data, error } = await subscription.list()
if (error) {
setError(error)
return
}
const meteredSubscriptions = data?.filter((sub) => sub.type === 'metered') || []
const creditBalance = meteredSubscriptions[0]?.creditBalance?.remainingTokenBalance || 0
setBalance(creditBalance)
} catch (e) {
setError(e as ApiError)
} finally {
setLoading(false)
}
}
return { balance, loading, error, load }
}