expo-duooomi-app/hooks/data/use-activities.ts

37 lines
1.1 KiB
TypeScript

import { root } from '@repo/core'
import { ActivityController, type ListActivitiesInput, type ListActivitiesResult } from '@repo/sdk'
import { useState } from 'react'
import { type ApiError } from '@/lib/types'
import { handleError } from './use-error'
export const useActivities = () => {
const [loading, setLoading] = useState(false)
const [error, setError] = useState<ApiError | null>(null)
const [data, setData] = useState<ListActivitiesResult>()
const OWNER_ID = process.env.EXPO_PUBLIC_OWNER_ID || ''
const load = async (params: ListActivitiesInput = { page: 1, limit: 10, orderBy: 'createdAt', order: 'desc' }) => {
try {
setLoading(true)
const activity = root.get(ActivityController)
const { data, error } = await handleError(
async () => await activity.list({ isActive: true, ownerId: OWNER_ID, ...params }),
)
if (error) {
setError(error)
return
}
setData(data)
} catch (e) {
setError(e as ApiError)
} finally {
setLoading(false)
}
}
return { load, loading, error, data }
}