import React, { useContext } from "react"
import Button from "../base/Button"
import { faArchive, faFolder, faFolderOpen, faPencilAlt, faTrash } from "@fortawesome/free-solid-svg-icons"
import { useHistory } from "react-router"
import useBackend from "../../hooks/useBackend"
import ContextUser from "../../contexts/ContextUser"
import Summary from "../base/Summary"
/**
* A long line representing a repository in a list.
*
* @param repo - The repository object.
* @param refresh - Function that can be called to refresh the repositories list.
* @param canDelete - If the Delete button should be displayed or not.
* @param canEdit - If the Edit button should be displayed or not.
* @param canArchive - If the Archive button should be displayed or not.
* @param className - Additional class(es) to be added to the outer box.
* @param props - Additional props to pass to the outer box.
* @returns {JSX.Element}
* @constructor
*/
export default function SummaryRepository(
{ repo, refresh, canDelete, canEdit, canArchive, className, ...props },
) {
const { fetchDataAuth } = useContext(ContextUser)
const history = useHistory()
const { fetchNow: archiveThis } = useBackend(fetchDataAuth, "PATCH", `/api/v1/repositories/${repo.id}`, { "close": true })
const { fetchNow: unarchiveThis } = useBackend(fetchDataAuth, "PATCH", `/api/v1/repositories/${repo.id}`, { "open": true })
const { fetchNow: deletThis } = useBackend(fetchDataAuth, "DELETE", `/api/v1/repositories/${repo.id}`)
const onEditClick = () => {
history.push(`/repositories/${repo.id}/edit`)
}
const onArchiveClick = async () => {
await archiveThis()
await refresh()
}
const onUnarchiveClick = async () => {
await unarchiveThis()
await refresh()
}
const onDeleteClick = async () => {
await deletThis()
await refresh()
}
const buttons = <>
{canDelete ?
: null}
{canEdit ?
: null}
{canArchive ?
: null}
>
return (
)
}