This commit is contained in:
SrGooglo 2025-03-13 23:36:44 +00:00
parent cc963f5f36
commit 64fd80c0aa

View File

@ -30,7 +30,7 @@ const ServerKeyCreator = (props) => {
const result = await ServerKeysModel.createNewServerKey({ const result = await ServerKeysModel.createNewServerKey({
name, name,
access access,
}) })
if (result) { if (result) {
@ -41,7 +41,8 @@ const ServerKeyCreator = (props) => {
const onRegenerate = async () => { const onRegenerate = async () => {
app.layout.modal.confirm({ app.layout.modal.confirm({
headerText: "Regenerate secret token", 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.", descriptionText:
"When a key is regenerated, the old secret token will be replaced with a new one. This action cannot be undone.",
onConfirm: async () => { onConfirm: async () => {
await ServerKeysModel.regenerateSecretToken(result.access_id) await ServerKeysModel.regenerateSecretToken(result.access_id)
.then((data) => { .then((data) => {
@ -52,14 +53,15 @@ const ServerKeyCreator = (props) => {
app.message.error(error.message) app.message.error(error.message)
setError(error.message) setError(error.message)
}) })
} },
}) })
} }
const onDelete = async () => { const onDelete = async () => {
app.layout.modal.confirm({ app.layout.modal.confirm({
headerText: "Delete server key", headerText: "Delete server key",
descriptionText: "Deleting this server key will remove it from your account. This action cannot be undone.", descriptionText:
"Deleting this server key will remove it from your account. This action cannot be undone.",
onConfirm: async () => { onConfirm: async () => {
await ServerKeysModel.deleteServerKey(result.access_id) await ServerKeysModel.deleteServerKey(result.access_id)
.then(() => { .then(() => {
@ -79,10 +81,13 @@ const ServerKeyCreator = (props) => {
name: result.name, name: result.name,
access: result.access, access: result.access,
access_id: result.access_id, access_id: result.access_id,
secret_token: result.secret_token secret_token: result.secret_token,
} }
await textToDownload(JSON.stringify(data), `comtyapi-${result.name}-auth.json`) await textToDownload(
JSON.stringify(data),
`comtyapi-${result.name}-auth.json`,
)
} }
React.useEffect(() => { React.useEffect(() => {
@ -92,7 +97,8 @@ const ServerKeyCreator = (props) => {
}, []) }, [])
if (result) { if (result) {
return <div className="server-key-creator"> return (
<div className="server-key-creator">
<h1>Your server key</h1> <h1>Your server key</h1>
<p>Name: {result.name}</p> <p>Name: {result.name}</p>
@ -102,73 +108,57 @@ const ServerKeyCreator = (props) => {
<SelectableText>{result.access_id}</SelectableText> <SelectableText>{result.access_id}</SelectableText>
</div> </div>
{ {result.secret_token && (
result.secret_token && <div className="server-key-creator-info"> <div className="server-key-creator-info">
<span>Secret:</span> <span>Secret:</span>
<SelectableText>{result.secret_token}</SelectableText> <SelectableText>{result.secret_token}</SelectableText>
</div> </div>
} )}
{ {result.secret_token && (
result.secret_token && <antd.Alert <antd.Alert
type="warning" type="warning"
message="Save these credentials in a safe place. You can't see them again." message="Save these credentials in a safe place. You can't see them again."
/> />
} )}
{ {result.secret_token && (
result.secret_token && <antd.Button <antd.Button onClick={generateAuthJSON} type="primary">
onClick={generateAuthJSON}
type="primary"
>
Save JSON Save JSON
</antd.Button> </antd.Button>
} )}
{ {!result.secret_token && (
!result.secret_token && <antd.Button <antd.Button type="primary" onClick={() => onRegenerate()}>
type="primary"
onClick={() => onRegenerate()}
>
Regenerate secret Regenerate secret
</antd.Button> </antd.Button>
} )}
<antd.Button <antd.Button danger onClick={() => onDelete()}>
danger
onClick={() => onDelete()}
>
Delete Delete
</antd.Button> </antd.Button>
<antd.Button <antd.Button onClick={() => props.close()}>Ok</antd.Button>
onClick={() => props.close()}
>
Ok
</antd.Button>
</div> </div>
)
} }
return <> return (
<>
<h1>Create a server key</h1> <h1>Create a server key</h1>
<antd.Form <antd.Form layout="vertical" onFinish={onSubmit}>
layout="vertical"
onFinish={onSubmit}
>
<antd.Form.Item <antd.Form.Item
label="Name" label="Name"
name="name" name="name"
rules={[ rules={[
{ {
required: true, required: true,
message: "Name is required" message: "Name is required",
} },
]} ]}
> >
<antd.Input <antd.Input onChange={(e) => setName(e.target.value)} />
onChange={(e) => setName(e.target.value)}
/>
</antd.Form.Item> </antd.Form.Item>
<antd.Form.Item <antd.Form.Item
@ -177,16 +167,20 @@ const ServerKeyCreator = (props) => {
rules={[ rules={[
{ {
required: true, required: true,
message: "Access is required" message: "Access is required",
} },
]} ]}
> >
<antd.Select <antd.Select onChange={(e) => setAccess(e)}>
onChange={(e) => setAccess(e)} <antd.Select.Option value="read">
> Read
<antd.Select.Option value="read">Read</antd.Select.Option> </antd.Select.Option>
<antd.Select.Option value="write">Write</antd.Select.Option> <antd.Select.Option value="write">
<antd.Select.Option value="readWrite">Read/Write</antd.Select.Option> Write
</antd.Select.Option>
<antd.Select.Option value="readWrite">
Read/Write
</antd.Select.Option>
</antd.Select> </antd.Select>
</antd.Form.Item> </antd.Form.Item>
@ -200,22 +194,22 @@ const ServerKeyCreator = (props) => {
</antd.Button> </antd.Button>
</antd.Form.Item> </antd.Form.Item>
{error && <antd.Form.Item> {error && (
<antd.Alert <antd.Form.Item>
type="error" <antd.Alert type="error" message={error} />
message={error} </antd.Form.Item>
/> )}
</antd.Form.Item>}
</antd.Form> </antd.Form>
</> </>
)
} }
const ServerKeyItem = (props) => { const ServerKeyItem = (props) => {
const { name, access_id } = props.data const { name, access_id } = props.data
return <div className="server-key-item"> return (
<div clas className="server-key-item-info"> <div className="server-key-item">
<div className="server-key-item-info">
<p>{name}</p> <p>{name}</p>
<span>{access_id}</span> <span>{access_id}</span>
</div> </div>
@ -228,6 +222,7 @@ const ServerKeyItem = (props) => {
/> />
</div> </div>
</div> </div>
)
} }
export default { export default {
@ -238,7 +233,9 @@ export default {
render: () => { render: () => {
const mainOrigin = useGetMainOrigin() const mainOrigin = useGetMainOrigin()
const [L_Keys, R_Keys, E_Keys, F_Keys] = app.cores.api.useRequest(ServerKeysModel.getMyServerKeys) const [L_Keys, R_Keys, E_Keys, F_Keys] = app.cores.api.useRequest(
ServerKeysModel.getMyServerKeys,
)
async function onClickCreateNewKey() { async function onClickCreateNewKey() {
app.layout.drawer.open("server_key_creator", ServerKeyCreator, { app.layout.drawer.open("server_key_creator", ServerKeyCreator, {
@ -246,7 +243,7 @@ export default {
F_Keys() F_Keys()
}, },
confirmOnOutsideClick: true, confirmOnOutsideClick: true,
confirmOnOutsideClickText: "All changes will be lost." confirmOnOutsideClickText: "All changes will be lost.",
}) })
} }
@ -257,18 +254,15 @@ export default {
}, },
onClose: () => { onClose: () => {
F_Keys() F_Keys()
} },
}) })
} }
return <div className="developer-settings"> return (
<div className="developer-settings">
<div className="card"> <div className="card">
<h3> <h3>Main Origin</h3>
Main Origin <p>{mainOrigin}</p>
</h3>
<p>
{mainOrigin}
</p>
</div> </div>
<div className="card api_keys"> <div className="card api_keys">
@ -287,35 +281,30 @@ export default {
</div> </div>
<div className="api_keys_list"> <div className="api_keys_list">
{ {L_Keys && <antd.Skeleton active />}
L_Keys && <antd.Skeleton active />
}
{ {E_Keys && (
E_Keys && <antd.Result <antd.Result
status="warning" status="warning"
title="Failed to retrieve keys" title="Failed to retrieve keys"
subTitle={E_Keys.message} subTitle={E_Keys.message}
/> />
} )}
{ {!E_Keys && !L_Keys && (
!E_Keys && !L_Keys && <> <>
{ {R_Keys.map((data, index) => {
R_Keys.map((data, index) => { return (
return <ServerKeyItem <ServerKeyItem
key={index} key={index}
data={data} data={data}
onEdit={onClickEditKey} onEdit={onClickEditKey}
/> />
}) )
} })}
{ {R_Keys.length === 0 && <antd.Empty />}
R_Keys.length === 0 && <antd.Empty />
}
</> </>
} )}
</div> </div>
</div> </div>
@ -330,5 +319,6 @@ export default {
</div> </div>
</div> </div>
</div> </div>
} )
},
} }