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

34 lines
942 B
TypeScript

import { subscription } from "@/lib/auth"
import { ApiError } from "@/lib/types"
import { useState } from "react"
export const useUserBalance = () => {
const [loading, setLoading] = useState(false)
const [error, setError] = useState<ApiError | null>(null)
const [balance, setBalance] = useState<number>(0)
const load = async (userId?: string) => {
try {
setLoading(true)
const { data, error } = await subscription.list(
userId ? { query: { referenceId: userId } } : undefined
)
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 }
}