Source: app/util/proptypes/apiEntities/profile.js

import PropTypes from 'prop-types';
import interactionShape from './interaction';

/** @module */

/**
 * Reusable object to use in `propTypes` for a `profile` prop.
 * @type {Object}
 * @category templating
 */
const profileShape = {
  dateOfBirth: PropTypes.string,
  height: PropTypes.number,
  joinHallOfFame: PropTypes.bool,
  isPregnant: PropTypes.bool,
  weighInDay: PropTypes.number,
  nextPossibleWeighInDate: {},
  isWeighInAllowed: PropTypes.bool,
  isCurrentWeighInFinished: PropTypes.bool,
  diet: PropTypes.number,
  medical: PropTypes.number,
  weighIns: PropTypes.arrayOf(
    PropTypes.shape({
      id: PropTypes.number,
      weighingDateUTC: PropTypes.string,
      emotion: PropTypes.number,
      bucket: PropTypes.number,
      skippingReason: PropTypes.number,
      weekNumber: PropTypes.number,
      weight: PropTypes.number,
    }),
  ),
  goals: PropTypes.arrayOf(
    PropTypes.shape({
      id: PropTypes.number,
      text: PropTypes.string,
      achieved: PropTypes.bool,
      createdDateUTC: PropTypes.string,
      achievedDateUTC: PropTypes.string,
    }),
  ),
  likes: PropTypes.arrayOf(PropTypes.shape(interactionShape)),
  hugs: PropTypes.arrayOf(PropTypes.shape(interactionShape)),
  applauds: PropTypes.arrayOf(PropTypes.shape(interactionShape)),
  bookmarks: PropTypes.arrayOf(PropTypes.shape(interactionShape)),
  favourites: PropTypes.arrayOf(PropTypes.shape(interactionShape)),
  reads: PropTypes.arrayOf(PropTypes.shape(interactionShape)),
  week: PropTypes.shape({
    index: PropTypes.number,
    version: PropTypes.string,
    dayOfTheWeek: PropTypes.number,
  }),
  nextPossibleAward: PropTypes.number,
  targetWeight: PropTypes.number,
  initialBMI: PropTypes.number,
  createdDateUTC: PropTypes.string,
  goalWeightLoss: PropTypes.number,
  biography: PropTypes.string,
  initialWeight: PropTypes.number,
  currentWeight: PropTypes.number,
  currentWeightLoss: PropTypes.number,
  commitments: PropTypes.arrayOf(
    PropTypes.shape({
      weight: PropTypes.number,
    }),
  ),
  awards: PropTypes.arrayOf(
    PropTypes.shape({
      id: PropTypes.number,
      award: PropTypes.number,
      achievedDateUTC: PropTypes.string,
    }),
  ),
};

export default profileShape;