34 lines
700 B
JavaScript
34 lines
700 B
JavaScript
import { useEffect, useState } from "react";
|
|
import { apiGet } from "../api/client";
|
|
|
|
export function useSalonSearch(query) {
|
|
const [salons, setSalons] = useState([]);
|
|
const [status, setStatus] = useState("idle");
|
|
|
|
useEffect(() => {
|
|
let ignore = false;
|
|
|
|
async function load() {
|
|
setStatus("loading");
|
|
try {
|
|
const data = await apiGet(`/salons/?q=${encodeURIComponent(query)}`);
|
|
if (!ignore) {
|
|
setSalons(data);
|
|
setStatus("ready");
|
|
}
|
|
} catch {
|
|
if (!ignore) {
|
|
setStatus("error");
|
|
}
|
|
}
|
|
}
|
|
|
|
load();
|
|
return () => {
|
|
ignore = true;
|
|
};
|
|
}, [query]);
|
|
|
|
return { salons, status };
|
|
}
|