import React from "react" import * as antd from "antd" import { Icons } from "@components/Icons" import SelectableText from "@components/SelectableText" import useGetMainOrigin from "@hooks/useGetMainOrigin" import textToDownload from "@utils/textToDownload" import ServerKeysModel from "@models/api" import "./index.less" const ServerKeyCreator = (props) => { const [name, setName] = React.useState("") const [access, setAccess] = React.useState(null) const [result, setResult] = React.useState(null) const [error, setError] = React.useState(null) const canSubmit = () => { return name && access } const onSubmit = async () => { if (!canSubmit()) { return } const result = await ServerKeysModel.createNewServerKey({ name, access, }) if (result) { setResult(result) } } const onRegenerate = async () => { app.layout.modal.confirm({ headerText: "Regenerate secret token", descriptionText: "When a key is regenerated, the old secret token will be replaced with a new one. This action cannot be undone.", onConfirm: async () => { await ServerKeysModel.regenerateSecretToken(result.access_id) .then((data) => { app.message.info("Secret token regenerated") setResult(data) }) .catch((error) => { app.message.error(error.message) setError(error.message) }) }, }) } const onDelete = async () => { app.layout.modal.confirm({ headerText: "Delete server key", descriptionText: "Deleting this server key will remove it from your account. This action cannot be undone.", onConfirm: async () => { await ServerKeysModel.deleteServerKey(result.access_id) .then(() => { app.message.info("Server key deleted") props.close() }) .catch((error) => { app.message.error(error.message) setError(error.message) }) }, }) } async function generateAuthJSON() { const data = { name: result.name, access: result.access, access_id: result.access_id, secret_token: result.secret_token, } await textToDownload( JSON.stringify(data), `comtyapi-${result.name}-auth.json`, ) } React.useEffect(() => { if (props.data) { setResult(props.data) } }, []) if (result) { return (

Your server key

Name: {result.name}

Access ID: {result.access_id}
{result.secret_token && (
Secret: {result.secret_token}
)} {result.secret_token && ( )} {result.secret_token && ( Save JSON )} {!result.secret_token && ( onRegenerate()}> Regenerate secret )} onDelete()}> Delete props.close()}>Ok
) } return ( <>

Create a server key

setName(e.target.value)} /> setAccess(e)}> Read Write Read/Write Create {error && ( )} ) } const ServerKeyItem = (props) => { const { name, access_id } = props.data return (

{name}

{access_id}
} onClick={() => props.onEdit(props.data)} />
) } export default { id: "api", icon: "TbApi", label: "API", group: "advanced", render: () => { const mainOrigin = useGetMainOrigin() const [L_Keys, R_Keys, E_Keys, F_Keys] = app.cores.api.useRequest( ServerKeysModel.getMyServerKeys, ) async function onClickCreateNewKey() { app.layout.drawer.open("server_key_creator", ServerKeyCreator, { onClose: () => { F_Keys() }, confirmOnOutsideClick: true, confirmOnOutsideClickText: "All changes will be lost.", }) } async function onClickEditKey(key) { app.layout.drawer.open("server_key_creator", ServerKeyCreator, { props: { data: key, }, onClose: () => { F_Keys() }, }) } return (

Main Origin

{mainOrigin}

Your Keys

Manage your API keys

Create new
{L_Keys && } {E_Keys && ( )} {!E_Keys && !L_Keys && ( <> {R_Keys.map((data, index) => { return ( ) })} {R_Keys.length === 0 && } )}

Documentations

Comty CLI Comty.JS for NodeJS Comty Extensions SDK Spectrum API
) }, }