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/code/frontend/src/components/interactive/BoxRepositoriesActive.js

46 lines
1.3 KiB
JavaScript
Raw Normal View History

import React, { useContext } from "react"
2021-04-29 14:58:31 +00:00
import BoxFull from "../base/BoxFull"
import ContextUser from "../../contexts/ContextUser"
import useData from "../../hooks/useData"
import RepositorySummaryBase from "./RepositorySummaryBase"
2021-04-29 14:58:31 +00:00
import Loading from "../base/Loading"
import BoxAlert from "../base/BoxAlert"
2021-04-29 14:58:31 +00:00
/**
* A {@link BoxFull} listing all the user's active repositories.
*
* @param props - Additional props to pass to the box.
* @returns {JSX.Element}
* @constructor
*/
export default function BoxRepositoriesActive({ ...props }) {
const {fetchDataAuth} = useContext(ContextUser)
2021-04-30 13:49:18 +00:00
const {data, started, loading, error} = useData(fetchDataAuth, "GET", "/api/v1/repositories/", {
"onlyAlive": true,
})
let contents;
if(!started || loading) {
contents = <Loading/>
}
else if(error) {
contents = <BoxAlert color={"Red"}>{error.toString()}</BoxAlert>
}
else {
let repositories = [...data["owner"], ...data["spectator"]]
if(repositories.length > 0) {
contents = repositories.map(repo => <RepositorySummaryBase {...repo}/>)
}
else {
contents = <i>There's nothing here.</i>
}
}
return (
<BoxFull header={"Your active repositories"} {...props}>
{contents}
</BoxFull>
)
}