(provider)
| 18 | } |
| 19 | |
| 20 | export function useAutocomplete(provider) { |
| 21 | const [values, setValues] = useState(cache[provider]?.values || []) |
| 22 | const [loading, setLoading] = useState(!cache[provider]) |
| 23 | |
| 24 | useEffect(() => { |
| 25 | if (!provider) { |
| 26 | setValues([]) |
| 27 | setLoading(false) |
| 28 | return |
| 29 | } |
| 30 | if (cache[provider]) { |
| 31 | setValues(cache[provider].values) |
| 32 | setLoading(false) |
| 33 | return |
| 34 | } |
| 35 | setLoading(true) |
| 36 | modelsApi.getAutocomplete(provider) |
| 37 | .then(data => { |
| 38 | const vals = data?.values || [] |
| 39 | cache[provider] = { values: vals } |
| 40 | setValues(vals) |
| 41 | }) |
| 42 | .catch(() => setValues([])) |
| 43 | .finally(() => setLoading(false)) |
| 44 | }, [provider]) |
| 45 | |
| 46 | return { values, loading } |
| 47 | } |
no test coverage detected