You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
import React, { useEffect, useState } from 'react' |
|
import { RouteComponentProps, useHistory } from 'react-router-dom' |
|
import { getClient, killSession } from '../api' |
|
import { SessionPictures } from './SessionPictures' |
|
|
|
type Props = RouteComponentProps<{ clientId: string }> |
|
|
|
export const Session = (props: Props) => { |
|
const history = useHistory() |
|
const { clientId } = props.match.params |
|
const [submitted, setSubmitted] = useState(false) |
|
|
|
const handleExit = async () => { |
|
history.push('/') |
|
} |
|
|
|
const handleNuke = async () => { |
|
await killSession(clientId) |
|
history.push('/') |
|
} |
|
|
|
useEffect(() => { |
|
const get = async () => { |
|
const { activeSession } = await getClient(clientId) |
|
if (activeSession) setSubmitted(true) |
|
} |
|
|
|
get() |
|
}) |
|
|
|
return ( |
|
<div> |
|
<h1>Session for {clientId}</h1> |
|
<button>Capture</button> |
|
{submitted && <SessionPictures clientId={clientId} />} |
|
<div className="controls"> |
|
<button onClick={handleNuke}>Nuke Session</button> |
|
<button onClick={handleExit}>Exit Session</button> |
|
</div> |
|
</div> |
|
) |
|
}
|
|
|