feat: 添加节点自动更新功能,支持手动触发更新

This commit is contained in:
ryan
2026-03-10 20:32:27 +08:00
parent 83a11ead2b
commit e72d658e2f
18 changed files with 227 additions and 90 deletions
@@ -17,7 +17,6 @@ const OperationSetting = () => {
AgentHeartbeatInterval: '30000',
AgentSyncInterval: '30000',
NodeOfflineThreshold: '120000',
AgentAutoUpdate: 'false',
AgentUpdateRepo: 'Rain-kl/ATSFlare',
ServerAddress: '',
AgentDiscoveryToken: '',
@@ -77,10 +76,6 @@ const OperationSetting = () => {
setInputs((prev) => ({ ...prev, [name]: value }));
};
const handleCheckboxChange = (e, { name, checked }) => {
setInputs((prev) => ({ ...prev, [name]: checked ? 'true' : 'false' }));
};
const submitAgentIntervals = async () => {
const hb = parseInt(inputs.AgentHeartbeatInterval, 10);
const sync = parseInt(inputs.AgentSyncInterval, 10);
@@ -102,8 +97,7 @@ const OperationSetting = () => {
await updateOption('NodeOfflineThreshold', String(offline));
};
const submitAutoUpdate = async () => {
await updateOption('AgentAutoUpdate', inputs.AgentAutoUpdate);
const submitUpdateRepo = async () => {
await updateOption('AgentUpdateRepo', inputs.AgentUpdateRepo);
};
@@ -178,15 +172,13 @@ const OperationSetting = () => {
</Form.Button>
<Divider />
<Header as='h3'>Agent 自动更新</Header>
<Form.Group>
<Form.Checkbox
label='启用 Agent 自动更新'
checked={inputs.AgentAutoUpdate === 'true'}
name='AgentAutoUpdate'
onChange={handleCheckboxChange}
/>
</Form.Group>
<Header as='h3'>Agent 更新源</Header>
<Message info size='small'>
<p>
自动更新开关和手动更新由节点页单独控制,这里只配置 Agent
更新仓库。
</p>
</Message>
<Form.Group widths='equal'>
<Form.Input
label='更新仓库'
@@ -196,7 +188,7 @@ const OperationSetting = () => {
onChange={handleInputChange}
/>
</Form.Group>
<Form.Button onClick={submitAutoUpdate} primary>
<Form.Button onClick={submitUpdateRepo} primary>
保存更新设置
</Form.Button>
+20 -10
View File
@@ -1,6 +1,13 @@
import React, { useEffect, useState } from 'react';
import { Button, Divider, Form, Grid, Header, Modal } from 'semantic-ui-react';
import { API, showError, showSuccess } from '../helpers';
import {
API,
getBuildVersion,
hasBuildVersion,
normalizeVersion,
showError,
showSuccess,
} from '../helpers';
import { marked } from 'marked';
const OtherSetting = () => {
@@ -81,15 +88,18 @@ const OtherSetting = () => {
window.location = 'https://github.com/Rain-kl/ATSFlare/releases/latest';
};
const checkUpdate = async () => {
const res = await API.get(
'https://api.github.com/repos/Rain-kl/ATSFlare/releases/latest'
);
const { tag_name, body } = res.data;
if (tag_name === process.env.REACT_APP_VERSION) {
showSuccess(`已是最新版本:${tag_name}`);
} else {
setUpdateData({
const checkUpdate = async () => {
const res = await API.get(
'https://api.github.com/repos/Rain-kl/ATSFlare/releases/latest'
);
const { tag_name, body } = res.data;
if (
hasBuildVersion() &&
normalizeVersion(tag_name) === getBuildVersion()
) {
showSuccess(`已是最新版本:${tag_name}`);
} else {
setUpdateData({
tag_name: tag_name,
content: marked.parse(body),
});