import * as React from 'react'; import { useMemo } from 'react'; import { useRecoilValue } from 'recoil'; import { SettingsAtom, TabInfoAtom } from '../../state'; import * as l10n from '@vscode/l10n'; import { LocalizationKey } from '../../../localization'; export interface IStatusProps { draft: boolean | string; published: number | null | undefined; } export const Status: React.FunctionComponent = ({ draft, published }: React.PropsWithChildren) => { const settings = useRecoilValue(SettingsAtom); const tabInfo = useRecoilValue(TabInfoAtom); const draftField = useMemo(() => settings?.draftField, [settings]); const isFuture = useMemo(() => published ? published > Date.now() : false, [published]); const draftValue = useMemo(() => { if (draftField && draftField.type === 'choice') { return draft; } else if (draftField && typeof draftField.invert !== 'undefined' && draftField.invert) { return !draft; } else { return draft; } }, [draftField, draft]); if (settings?.draftField && settings.draftField.type === 'choice') { if (draftValue) { return ( {draftValue} ); } else { return null; } } if (tabInfo && Object.keys(tabInfo).length <= 1) { return null; } return ( { draftValue ? l10n.t(LocalizationKey.dashboardContentsStatusDraft) : ( isFuture ? l10n.t(LocalizationKey.dashboardContentsStatusScheduled) : l10n.t(LocalizationKey.dashboardContentsStatusPublished) ) } ); };