import { Button } from "@mui/material"; import { joinSession, leaveSession, type Session, type Tokens, } from "../../api/client"; import { Async } from "react-async"; import { useNavigate } from "react-router"; export const SessionAction = (props: { session: Session; tokensPromise: Promise; }) => { const { session, tokensPromise } = props; const navigate = useNavigate(); if (session.status !== "OPEN") { return ( ); } if (session.includesRequester) { return ( ); } if (session.userCount >= session.size) { return ( ); } const renderLoadingButton = () => ( ); const renderBuyTokensButton = () => ( ); const renderSignInButton = () => ( ); return ( {renderLoadingButton()} > {(tokens) => tokens.available === 0 ? renderBuyTokensButton() : renderSignInButton() } ); };