// @flow
import * as React from 'react';
import Card from 'component/common/card';
import WebUploadItem from './internal/web-upload-item';

export type UploadItem = {
  progess: string,
  params: UpdatePublishFormData,
  xhr?: { abort: () => void },
};

type Props = {
  currentUploads: { [key: string]: UploadItem },
  uploadCount: number,
};

export default function WebUploadList(props: Props) {
  const { currentUploads, uploadCount } = props;

  return (
    !!uploadCount && (
      <div>
        <Card
          title={__('Currently Uploading')}
          subtitle={
            uploadCount > 1
              ? __('You files are currently uploading. This will update automatically.')
              : __('Your file is currently uploading. This will update automatically.')
          }
          body={
            <section>
              {/* $FlowFixMe */}
              {Object.values(currentUploads).map(({ progress, params, xhr }) => (
                <WebUploadItem key={`upload${params.name}`} progress={progress} params={params} xhr={xhr} />
              ))}
            </section>
          }
        />
      </div>
    )
  );
}