box-ui-elements-mlh
Version: 
69 lines (58 loc) • 1.95 kB
Flow
/**
 * @flow
 * @file Preview details sidebar notices component
 * @author Box
 */
import * as React from 'react';
import getProp from 'lodash/get';
import SharedLinkExpirationNotice from '../../features/item-details/SharedLinkExpirationNotice';
import ItemExpirationNotice from '../../features/item-details/ItemExpirationNotice';
import { addTime } from '../../utils/datetime';
import DateField from '../common/date';
import type { BoxItem } from '../../common/types/core';
const ONE_MINUTE_IN_MS = 60000;
const NOTICE_DATE_FORMAT = {
    month: 'short',
    day: 'numeric',
    year: 'numeric',
};
type Props = {
    file: BoxItem,
};
const SidebarNotices = ({ file }: Props) => {
    const itemExpiration = getProp(file, 'expires_at');
    const sharedLinkExpiration = getProp(file, 'shared_link.unshared_at');
    if (!itemExpiration && !sharedLinkExpiration) {
        return null;
    }
    return (
        <>
            {!!itemExpiration && (
                <ItemExpirationNotice
                    expiration={
                        <DateField
                            // $FlowFixMe
                            date={addTime(new Date(itemExpiration), ONE_MINUTE_IN_MS)}
                            dateFormat={NOTICE_DATE_FORMAT}
                            relative={false}
                        />
                    }
                    itemType="file"
                />
            )}
            {!!sharedLinkExpiration && (
                <SharedLinkExpirationNotice
                    expiration={
                        <DateField
                            // $FlowFixMe
                            date={addTime(new Date(sharedLinkExpiration), ONE_MINUTE_IN_MS)}
                            dateFormat={NOTICE_DATE_FORMAT}
                            relative={false}
                        />
                    }
                />
            )}
        </>
    );
};
export default SidebarNotices;