| 1 |
import { useEffect, useCallback } from '@wordpress/element' |
| 2 |
import { Taxonomies as TaxonomiesApi } from '../api/Taxonomies' |
| 3 |
import { useTaxonomyStore } from '../state/Taxonomies' |
| 4 |
import { useTemplatesStore } from '../state/Templates' |
| 5 |
|
| 6 |
export default function useTaxonomies(fetchImmediately = false) { |
| 7 |
const setupDefaultTaxonomies = useTemplatesStore( |
| 8 |
(state) => state.setupDefaultTaxonomies, |
| 9 |
) |
| 10 |
const setTaxonomies = useTaxonomyStore((state) => state.setTaxonomies) |
| 11 |
const fetchTaxonomies = useCallback(async () => { |
| 12 |
let tax = await TaxonomiesApi.get() |
| 13 |
tax = Object.keys(tax).reduce((taxFiltered, key) => { |
| 14 |
taxFiltered[key] = tax[key] |
| 15 |
return taxFiltered |
| 16 |
}, {}) |
| 17 |
if (!Object.keys(tax)?.length) { |
| 18 |
return |
| 19 |
} |
| 20 |
setTaxonomies(tax) |
| 21 |
setupDefaultTaxonomies() |
| 22 |
}, [setTaxonomies, setupDefaultTaxonomies]) |
| 23 |
|
| 24 |
useEffect(() => { |
| 25 |
fetchImmediately && fetchTaxonomies() |
| 26 |
}, [fetchTaxonomies, fetchImmediately]) |
| 27 |
} |
| 28 |
|