import { ChannelData } from "@saleor/channels/utils"; import { LocalizeDate } from "@saleor/hooks/useDateLocalize"; import { IntlShape } from "react-intl"; import { Messages } from "./types"; export const getChannelsAvailabilityMessages = ({ messages, channels = [], intl, localizeDate, }: { messages?: Messages; channels?: ChannelData[]; intl: IntlShape; localizeDate: LocalizeDate; }): Messages => channels.reduce( (prevVal, currVal) => ({ ...prevVal, [currVal.id]: { ...messages, availableDateText: currVal.publicationDate && !currVal.isPublished ? intl.formatMessage( { id: "nfbabo", defaultMessage: "Will become available on {date}", description: "channel publication date", }, { date: localizeDate(currVal.publicationDate, "L"), }, ) : currVal.publicationDate ? intl.formatMessage( { id: "DIrxt7", defaultMessage: "Visible since {date}", description: "channel publication date", }, { date: localizeDate(currVal.publicationDate, "L"), }, ) : currVal.isPublished ? intl.formatMessage({ id: "mDgOmP", defaultMessage: "Visible", description: "channel publication status", }) : intl.formatMessage({ id: "beuxAP", defaultMessage: "Hidden", description: "channel publication status", }), availableLabel: intl.formatMessage({ id: "P/oGtb", defaultMessage: "Available for purchase", description: "product availability", }), availableSecondLabel: intl.formatMessage( { id: "KSp+8B", defaultMessage: "will become available on {date}", description: "product available for purchase date", }, { date: localizeDate(currVal.availableForPurchase, "L"), }, ), hiddenSecondLabel: intl.formatMessage( { id: "hAcUEl", defaultMessage: "will become published on {date}", description: "product publication date label", }, { date: localizeDate(currVal.publicationDate, "L"), }, ), setAvailabilityDateLabel: intl.formatMessage({ id: "YFQBs1", defaultMessage: "Set availability date", description: "product availability date label", }), unavailableLabel: intl.formatMessage({ id: "Y9lv8z", defaultMessage: "Unavailable for purchase", description: "product unavailability", }), }, }), {} as Messages, );