%PDF- %PDF-
Direktori : /home/dopla/www/wp-content/plugins/ml-slider/extendify-sdk/src/api/ |
Current File : /home/dopla/www/wp-content/plugins/ml-slider/extendify-sdk/src/api/Templates.js |
import { Axios as api } from './axios' import { useTaxonomyStore } from '../state/Taxonomies' import { useUserStore } from '../state/User' let count = 0 export const Templates = { async get(searchParams, options = {}) { count++ const defaultpageSize = searchParams.type === 'pattern' ? '8' : '4' const templates = await api.post('templates', { filterByFormula: prepareFilterFormula(searchParams), pageSize: options?.pageSize ?? defaultpageSize, categories: searchParams.taxonomies, search: searchParams.search, type: searchParams.type, offset: options.offset ?? '', initial: count === 1, request_count: count, sdk_partner: useUserStore.getState().sdkPartner ?? '', }) return templates }, related(template, queryType, wantedType) { return api.post('related', { pageSize: 4, query_type: queryType, wanted_type: wantedType, categories: template?.fields?.tax_categories, pattern_types: template?.fields?.tax_pattern_types, style: template?.fields?.tax_style, type: template?.fields?.type, template_id: template?.id, }) }, // TODO: Refactor this later to combine the following three maybeImport(template) { return api.post(`templates/${template.id}`, { template_id: template.id, maybe_import: true, type: template.fields.type, pageSize: '1', template_name: template.fields?.title, }) }, import(template) { return api.post(`templates/${template.id}`, { template_id: template.id, imported: true, base_pattern: template.fields?.base_pattern[0] ?? '', type: template.fields.type, pageSize: '1', template_name: template.fields?.title, }) }, } const prepareFilterFormula = (filters) => { let { taxonomies, type } = filters taxonomies = { ...taxonomies } const formula = [] // In Airtable, we tag them as Default if (taxonomies?.tax_categories === 'Unknown') { taxonomies.tax_categories = 'Default' } // Builds the taxonomy list by looping over all supplied taxonomies const taxFormula = Object.entries(taxonomies) .filter(([tax, term]) => checkTermIsAvailableOnType(tax, term, type)) .filter(([tax]) => Boolean(tax[1].length)) .map(([tax, term]) => `${tax} = "${term}"`) .join(', ') taxFormula.length && formula.push(taxFormula) type.length && formula.push(`{type}="${type}"`) return formula.length ? `AND(${formula.join(', ')})`.replace(/\r?\n|\r/g, '') : '' } const termTypeMap = new Map() const checkTermIsAvailableOnType = (tax, term, type) => { const key = `${tax}-${term}-${type}` if (key === 'tax_categories-Default-pattern') { return true } if (!termTypeMap.has(key)) { termTypeMap.set( key, useTaxonomyStore .getState() ?.taxonomies[tax]?.find((item) => item?.term === term) ?.type?.includes(type), ) } return termTypeMap.get(key) }