diff --git a/Data/Server/WebUI/src/Access_Management/Github_API_Token.jsx b/Data/Server/WebUI/src/Access_Management/Github_API_Token.jsx index de1c96b..ceb75ba 100644 --- a/Data/Server/WebUI/src/Access_Management/Github_API_Token.jsx +++ b/Data/Server/WebUI/src/Access_Management/Github_API_Token.jsx @@ -10,6 +10,9 @@ import { Typography } from "@mui/material"; import RefreshIcon from "@mui/icons-material/Refresh"; +import SaveIcon from "@mui/icons-material/Save"; +import VisibilityIcon from "@mui/icons-material/Visibility"; +import VisibilityOffIcon from "@mui/icons-material/VisibilityOff"; const paperSx = { m: 2, @@ -42,6 +45,7 @@ export default function GithubAPIToken({ isAdmin = false }) { const [token, setToken] = useState(""); const [inputValue, setInputValue] = useState(""); const [fetchError, setFetchError] = useState(""); + const [showToken, setShowToken] = useState(false); const [verification, setVerification] = useState({ message: "", valid: null, @@ -62,6 +66,7 @@ export default function GithubAPIToken({ isAdmin = false }) { const storedToken = typeof data?.token === "string" ? data.token : ""; setToken(storedToken); setInputValue(storedToken); + setShowToken(false); setVerification({ message: typeof data?.message === "string" ? data.message : "", valid: data?.valid === true, @@ -101,6 +106,7 @@ export default function GithubAPIToken({ isAdmin = false }) { const storedToken = typeof data?.token === "string" ? data.token : ""; setToken(storedToken); setInputValue(storedToken); + setShowToken(false); setVerification({ message: typeof data?.message === "string" ? data.message : "", valid: data?.valid === true, @@ -135,6 +141,10 @@ export default function GithubAPIToken({ isAdmin = false }) { return { text: message, color: "#ff8080" }; }, [dirty, verification]); + const toggleReveal = useCallback(() => { + setShowToken((prev) => !prev); + }, []); + if (!isAdmin) { return ( @@ -197,16 +207,6 @@ export default function GithubAPIToken({ isAdmin = false }) { - + + + {(verificationMessage.text || (!dirty && verification.rateLimit)) && ( + + {verificationMessage.text && `${verificationMessage.text} `} + {!dirty && + verification.rateLimit && + `- Hourly Request Rate Limit: ${verification.rateLimit.toLocaleString()}`} + + )} - )} - {fetchError && ( - - {fetchError} - - )} + {loading && ( + + + Loading token… + + )} + + {fetchError && ( + + {fetchError} + + )} );