27 lines
716 B
TypeScript
27 lines
716 B
TypeScript
"use client";
|
|
import { useState, useEffect, useCallback } from "react";
|
|
import { countryAPI } from "../lib/api";
|
|
|
|
export function useCountries(activeOnly = false) {
|
|
const [countries, setCountries] = useState<any[]>([]);
|
|
const [loading, setLoading] = useState(true);
|
|
|
|
const fetch = useCallback(async () => {
|
|
setLoading(true);
|
|
try {
|
|
const { data } = await countryAPI.getAll(activeOnly ? { active: "true" } : {});
|
|
setCountries(data.data || []);
|
|
} catch (error) {
|
|
console.error("Failed to fetch countries:", error);
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
}, [activeOnly]);
|
|
|
|
useEffect(() => {
|
|
fetch();
|
|
}, [fetch]);
|
|
|
|
return { countries, loading, refetch: fetch };
|
|
}
|