fix(server): regenerate Server Agent ID and Token after each agent creation without page refresh
- Previously, the Add Server Monitoring Agent dialog required a manual page refresh to show the new Server Agent ID and Server Token. This update automatically generates and displays new credentials after each agent creation.
This commit is contained in:
@@ -35,10 +35,7 @@ export const AddServerAgentDialog: React.FC<AddServerAgentDialogProps> = ({
|
|||||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||||
const [activeTab, setActiveTab] = useState("configure");
|
const [activeTab, setActiveTab] = useState("configure");
|
||||||
|
|
||||||
// Get current PocketBase URL
|
|
||||||
const currentPocketBaseUrl = getCurrentEndpoint();
|
const currentPocketBaseUrl = getCurrentEndpoint();
|
||||||
|
|
||||||
// Form state
|
|
||||||
const [formData, setFormData] = useState({
|
const [formData, setFormData] = useState({
|
||||||
serverName: "",
|
serverName: "",
|
||||||
description: "",
|
description: "",
|
||||||
@@ -49,12 +46,16 @@ export const AddServerAgentDialog: React.FC<AddServerAgentDialogProps> = ({
|
|||||||
notificationEnabled: true,
|
notificationEnabled: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Generated server token and agent ID
|
const generateNewCredentials = () => ({
|
||||||
const [serverToken] = useState(() =>
|
serverToken: `srv_${Math.random().toString(36).substring(2, 15)}${Math.random().toString(36).substring(2, 15)}`,
|
||||||
|
serverId: `agent_${Math.random().toString(36).substring(2, 15)}${Math.random().toString(36).substring(2, 15)}`
|
||||||
|
});
|
||||||
|
|
||||||
|
const [serverToken, setServerToken] = useState(() =>
|
||||||
`srv_${Math.random().toString(36).substring(2, 15)}${Math.random().toString(36).substring(2, 15)}`
|
`srv_${Math.random().toString(36).substring(2, 15)}${Math.random().toString(36).substring(2, 15)}`
|
||||||
);
|
);
|
||||||
|
|
||||||
const [serverId] = useState(() =>
|
const [serverId, setServerId] = useState(() =>
|
||||||
`agent_${Math.random().toString(36).substring(2, 15)}${Math.random().toString(36).substring(2, 15)}`
|
`agent_${Math.random().toString(36).substring(2, 15)}${Math.random().toString(36).substring(2, 15)}`
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -74,8 +75,6 @@ export const AddServerAgentDialog: React.FC<AddServerAgentDialogProps> = ({
|
|||||||
setIsSubmitting(true);
|
setIsSubmitting(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Here you would typically create the server monitoring configuration
|
|
||||||
// For now, we'll simulate the process
|
|
||||||
await new Promise(resolve => setTimeout(resolve, 1500));
|
await new Promise(resolve => setTimeout(resolve, 1500));
|
||||||
|
|
||||||
toast({
|
toast({
|
||||||
@@ -83,7 +82,9 @@ export const AddServerAgentDialog: React.FC<AddServerAgentDialogProps> = ({
|
|||||||
description: t('serverAgentCreatedDesc').replace('{name}', formData.serverName),
|
description: t('serverAgentCreatedDesc').replace('{name}', formData.serverName),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Switch to one-click install tab after successful creation
|
const newCredentials = generateNewCredentials();
|
||||||
|
setServerToken(newCredentials.serverToken);
|
||||||
|
setServerId(newCredentials.serverId);
|
||||||
setActiveTab("one-click");
|
setActiveTab("one-click");
|
||||||
onAgentAdded();
|
onAgentAdded();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -98,7 +99,6 @@ export const AddServerAgentDialog: React.FC<AddServerAgentDialogProps> = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleDialogClose = () => {
|
const handleDialogClose = () => {
|
||||||
// Reset form and tab when dialog closes
|
|
||||||
setActiveTab("configure");
|
setActiveTab("configure");
|
||||||
setFormData({
|
setFormData({
|
||||||
serverName: "",
|
serverName: "",
|
||||||
@@ -109,6 +109,11 @@ export const AddServerAgentDialog: React.FC<AddServerAgentDialogProps> = ({
|
|||||||
dockerEnabled: false,
|
dockerEnabled: false,
|
||||||
notificationEnabled: true,
|
notificationEnabled: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const newCredentials = generateNewCredentials();
|
||||||
|
setServerToken(newCredentials.serverToken);
|
||||||
|
setServerId(newCredentials.serverId);
|
||||||
|
|
||||||
onOpenChange(false);
|
onOpenChange(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -121,7 +126,7 @@ export const AddServerAgentDialog: React.FC<AddServerAgentDialogProps> = ({
|
|||||||
{t('addServerMonitoringAgent')}
|
{t('addServerMonitoringAgent')}
|
||||||
</DialogTitle>
|
</DialogTitle>
|
||||||
<DialogDescription>
|
<DialogDescription>
|
||||||
{t('configureAgentDesc')}
|
{t('configureAgentDesc')}
|
||||||
</DialogDescription>
|
</DialogDescription>
|
||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user