1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-26 23:14:19 +00:00
pds-2021-g2-nest/nest_frontend/components/interactive/BoxRepositoriesActive.js

60 lines
2.2 KiB
JavaScript
Raw Normal View History

import React, { useContext } from "react"
2021-05-11 16:24:51 +00:00
import SummaryRepository from "./SummaryRepository"
2021-05-12 02:22:43 +00:00
import { faFolderOpen } from "@fortawesome/free-solid-svg-icons"
2021-05-11 14:33:12 +00:00
import ContextUser from "../../contexts/ContextUser"
import Loading from "../base/Loading"
import BoxFullScrollable from "../base/BoxFullScrollable"
2021-05-18 00:04:06 +00:00
import ContextLanguage from "../../contexts/ContextLanguage"
2021-05-18 00:48:34 +00:00
2021-04-29 14:58:31 +00:00
/**
* A {@link BoxFull} listing all the user's active repositories.
*
2021-05-11 14:33:12 +00:00
* @param repositories - Array of repositories to display in the box.
* @param archiveRepository - Function to be called when archive is pressed on a repository summary.
* @param destroyRepository - Function to be called when delete is pressed on a repository summary.
* @param running - If an action is currently running.
2021-04-29 14:58:31 +00:00
* @param props - Additional props to pass to the box.
* @returns {JSX.Element}
* @constructor
*/
2021-05-13 15:05:33 +00:00
export default function BoxRepositoriesActive({
repositories,
archiveRepository,
destroyRepository,
running,
...props
}) {
2021-05-11 14:37:15 +00:00
const { user } = useContext(ContextUser)
2021-05-18 00:48:34 +00:00
const { strings } = useContext(ContextLanguage)
2021-05-11 14:37:15 +00:00
let contents
if(repositories === null) {
contents = <Loading/>
}
else if(repositories.length === 0) {
2021-05-18 00:04:06 +00:00
contents = <i>{strings.emptyMenu}.</i>
}
else {
2021-05-11 14:33:12 +00:00
contents = repositories.map(repo => (
2021-05-11 16:24:51 +00:00
<SummaryRepository
2021-05-11 14:33:12 +00:00
key={repo["id"]}
2021-05-11 16:24:51 +00:00
repo={repo}
2021-05-12 02:22:43 +00:00
icon={faFolderOpen}
archiveSelf={() => archiveRepository(repo["id"])}
deleteSelf={() => destroyRepository(repo["id"])}
2021-05-11 14:33:12 +00:00
canArchive={true}
canEdit={true}
canDelete={repo["owner"]["username"] === user["username"]}
running={running}
2021-05-11 14:33:12 +00:00
/>
))
}
return (
2021-05-18 00:04:06 +00:00
<BoxFullScrollable header={strings.menuActive} {...props}>
{contents}
</BoxFullScrollable>
)
}