Untitled

 avatar
unknown
javascript
3 years ago
1.3 kB
10
Indexable
import Events from "@/components/content/Events";
import PropTypes from "prop-types";
import getEventById from "services/helpers/getEventById";
import wordpress from "..";

const getContentBySlug = async (contentType, slug) => {
  try {
    let { data } = await wordpress.get(`${contentType}`, {
      params: {
        slug: slug,
        _fields: `title,slug,acf,id,type`,
        per_page: 1,
      },
    });
    [data] = data;

    if (!data.acf.content) {
      console.error("Component data not loading");
      return;
    }
    // Retain original page data whilst changing that pages' content

    const results = data.acf.content.map((component) => {
      if (component.events) {
        let result = component.events.map((event, i, arr) =>
          getEventById("events", event.ID).then((response) => (arr[i] = response))
        );
        return result;
      }
      return component;
    });
    data.acf.content = results;

    return data;
  } catch (err) {
    console.error(`Failed to get ${contentType}: `, err);
  }
};

export default getContentBySlug;

getContentBySlug.propTypes = {
  contentType: PropTypes.string,
  slug: PropTypes.string.isRequired,
};

getContentBySlug.defaultProps = {
  contentType: "pages",
  slug: "home",
};
Editor is loading...