1
Fork 0
mirror of https://github.com/Steffo99/sophon.git synced 2024-12-23 07:14:21 +00:00
sophon/frontend/src/components/notebook/NotebookStartButton.tsx

47 lines
1.4 KiB
TypeScript
Raw Normal View History

2021-10-14 03:05:01 +00:00
import {faLightbulb} from "@fortawesome/free-solid-svg-icons"
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"
import {Button} from "@steffo/bluelib-react"
import * as React from "react"
import {useAuthorizationContext} from "../../contexts/authorization"
import {useGroupContext} from "../../contexts/group"
import {ManagedResource} from "../../hooks/useManagedViewSet"
import {SophonNotebook} from "../../types/SophonTypes"
export interface NotebookStartButtonProps {
resource: ManagedResource<SophonNotebook>,
}
export function NotebookStartButton({resource}: NotebookStartButtonProps): JSX.Element | null {
const authorization = useAuthorizationContext()
const group = useGroupContext()
if(!authorization) {
return null
}
if(!group) {
return null
}
if(!authorization.state.user) {
return null
}
if(!(
group.value.members.includes(authorization.state.user.id) || group.value.owner === authorization.state.user.id
)) {
return null
}
if(resource.value.is_running) {
return null
}
if(resource.value.locked_by) {
return null
}
return (
<Button onClick={() => resource.action("PATCH", "start", {})} disabled={resource.busy}>
<FontAwesomeIcon icon={faLightbulb} spin={resource.busy}/>&nbsp;Start
</Button>
)
}