%PDF- %PDF-
Direktori : /home/dopla/www/wp-content/plugins/ml-slider/extendify-sdk/src/state/ |
Current File : /home/dopla/www/wp-content/plugins/ml-slider/extendify-sdk/src/state/Templates.js |
import create from 'zustand' import { useGlobalStore } from './GlobalState' import { useUserStore } from './User' import { useTaxonomyStore } from './Taxonomies' const defaultCategoryForType = (tax) => tax === 'tax_categories' ? 'Unknown' : useTaxonomyStore.getState()?.taxonomies[tax][0]?.term ?? undefined export const useTemplatesStore = create((set, get) => ({ templates: [], skipNextFetch: false, fetchToken: null, taxonomyDefaultState: {}, nextPage: '', searchParams: { taxonomies: {}, type: 'pattern', }, initTemplateData() { set({ activeTemplate: {}, }) get().setupDefaultTaxonomies() get().updateType(useGlobalStore.getState().currentType) }, appendTemplates: (templates) => set({ templates: [ ...new Map( [...get().templates, ...templates].map((item) => [ item.id, item, ]), ).values(), ], }), setupDefaultTaxonomies: () => { const taxonomies = useTaxonomyStore.getState().taxonomies let taxonomyDefaultState = Object.entries(taxonomies).reduce( (state, current) => ( (state[current[0]] = defaultCategoryForType(current[0])), state ), {}, ) const tax = {} taxonomyDefaultState = Object.assign( {}, taxonomyDefaultState, // Override with the user's preferred taxonomies - Currently only supported with tax_categories useUserStore.getState().preferredOptions?.taxonomies ?? {}, // Override with the global state useGlobalStore.getState()?.currentTaxonomies ?? {}, ) tax.taxonomies = Object.assign({}, taxonomyDefaultState) set({ taxonomyDefaultState: taxonomyDefaultState, searchParams: { ...Object.assign(get().searchParams, tax), }, }) }, updateTaxonomies: (params) => { const data = {} data.taxonomies = Object.assign( {}, get().searchParams.taxonomies, params, ) if (data?.taxonomies?.tax_categories) { // This is what the user "prefers", which may be used outside the library // which is persisted to the database, where as the global library state is in local storage useUserStore .getState() .updatePreferredOption( 'tax_categories', data?.taxonomies?.tax_categories, ) } useGlobalStore.getState().updateCurrentTaxonomies(data?.taxonomies) get().updateSearchParams(data) }, updateType(type) { useGlobalStore.getState().updateCurrentType(type) get().updateSearchParams({ type }) }, updateSearchParams: (params) => { // If taxonomies are set to {}, lets use the default if (params?.taxonomies && !Object.keys(params.taxonomies).length) { params.taxonomies = get().taxonomyDefaultState } const searchParams = Object.assign({}, get().searchParams, params) // If the params are the same then don't update if ( JSON.stringify(searchParams) === JSON.stringify(get().searchParams) ) { return } set({ templates: [], nextPage: '', searchParams, }) }, }))