2021-03-18 05:52:36 -04:00
|
|
|
import { useTranslation } from 'react-i18next'
|
|
|
|
import { Alert, Button } from 'react-bootstrap'
|
|
|
|
import { useFileTreeCreateForm } from '../../contexts/file-tree-create-form'
|
|
|
|
import { useFileTreeActionable } from '../../contexts/file-tree-actionable'
|
|
|
|
import { useFileTreeMutable } from '../../contexts/file-tree-mutable'
|
|
|
|
import PropTypes from 'prop-types'
|
|
|
|
|
|
|
|
export default function FileTreeModalCreateFileFooter() {
|
|
|
|
const { valid } = useFileTreeCreateForm()
|
|
|
|
const { newFileCreateMode, inFlight, cancel } = useFileTreeActionable()
|
|
|
|
const { fileCount } = useFileTreeMutable()
|
|
|
|
|
|
|
|
return (
|
|
|
|
<FileTreeModalCreateFileFooterContent
|
|
|
|
valid={valid}
|
|
|
|
cancel={cancel}
|
|
|
|
newFileCreateMode={newFileCreateMode}
|
|
|
|
inFlight={inFlight}
|
|
|
|
fileCount={fileCount}
|
|
|
|
/>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export function FileTreeModalCreateFileFooterContent({
|
|
|
|
valid,
|
|
|
|
fileCount,
|
|
|
|
inFlight,
|
|
|
|
newFileCreateMode,
|
2021-04-27 03:52:58 -04:00
|
|
|
cancel,
|
2021-03-18 05:52:36 -04:00
|
|
|
}) {
|
|
|
|
const { t } = useTranslation()
|
|
|
|
|
|
|
|
return (
|
|
|
|
<>
|
|
|
|
{fileCount.status === 'warning' && (
|
|
|
|
<div className="modal-footer-left approaching-file-limit">
|
|
|
|
{t('project_approaching_file_limit')} ({fileCount.value}/
|
|
|
|
{fileCount.limit})
|
|
|
|
</div>
|
|
|
|
)}
|
|
|
|
|
|
|
|
{fileCount.status === 'error' && (
|
|
|
|
<Alert bsStyle="warning" className="at-file-limit">
|
|
|
|
{/* TODO: add parameter for fileCount.limit */}
|
|
|
|
{t('project_has_too_many_files')}
|
|
|
|
</Alert>
|
|
|
|
)}
|
|
|
|
|
|
|
|
<Button
|
|
|
|
bsStyle="default"
|
|
|
|
type="button"
|
|
|
|
disabled={inFlight}
|
|
|
|
onClick={cancel}
|
|
|
|
>
|
|
|
|
{t('cancel')}
|
|
|
|
</Button>
|
|
|
|
|
|
|
|
{newFileCreateMode !== 'upload' && (
|
|
|
|
<Button
|
|
|
|
bsStyle="primary"
|
|
|
|
type="submit"
|
|
|
|
form="create-file"
|
|
|
|
disabled={inFlight || !valid}
|
|
|
|
>
|
|
|
|
<span>{inFlight ? `${t('creating')}…` : t('create')}</span>
|
|
|
|
</Button>
|
|
|
|
)}
|
|
|
|
</>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
FileTreeModalCreateFileFooterContent.propTypes = {
|
|
|
|
cancel: PropTypes.func.isRequired,
|
|
|
|
fileCount: PropTypes.shape({
|
|
|
|
limit: PropTypes.number.isRequired,
|
|
|
|
status: PropTypes.string.isRequired,
|
2021-04-27 03:52:58 -04:00
|
|
|
value: PropTypes.number.isRequired,
|
2021-03-18 05:52:36 -04:00
|
|
|
}).isRequired,
|
|
|
|
inFlight: PropTypes.bool.isRequired,
|
|
|
|
newFileCreateMode: PropTypes.string,
|
2021-04-27 03:52:58 -04:00
|
|
|
valid: PropTypes.bool.isRequired,
|
2021-03-18 05:52:36 -04:00
|
|
|
}
|