feat: 添加显隐标签的设置

This commit is contained in:
Baobhan Sith
2025-05-03 20:34:52 +08:00
parent c3470a5419
commit 6144633a5e
10 changed files with 592 additions and 137 deletions
@@ -31,6 +31,8 @@ const AUTO_COPY_ON_SELECT_KEY = 'autoCopyOnSelect'; // 终端选中自动复制
const STATUS_MONITOR_INTERVAL_SECONDS_KEY = 'statusMonitorIntervalSeconds'; // 状态监控间隔设置键
const DEFAULT_STATUS_MONITOR_INTERVAL_SECONDS = 3; // 默认状态监控间隔
const IP_BLACKLIST_ENABLED_KEY = 'ipBlacklistEnabled'; // IP 黑名单启用设置键
const SHOW_CONNECTION_TAGS_KEY = 'showConnectionTags'; // 连接标签显示设置键
const SHOW_QUICK_COMMAND_TAGS_KEY = 'showQuickCommandTags'; // 快捷指令标签显示设置键
export const settingsService = {
/**
@@ -479,6 +481,60 @@ export const settingsService = {
// Directly call the specific repository function with the full, validated config
await setCaptchaConfigInRepo(configToSave);
console.log('[SettingsService] CAPTCHA config successfully set.');
}, // <-- Add comma here
// --- Show Connection Tags ---
async getShowConnectionTags(): Promise<boolean> {
console.log(`[Service] Attempting to get setting for key: ${SHOW_CONNECTION_TAGS_KEY}`);
try {
const valueStr = await settingsRepository.getSetting(SHOW_CONNECTION_TAGS_KEY);
console.log(`[Service] Raw value from repository for ${SHOW_CONNECTION_TAGS_KEY}:`, valueStr);
// 默认显示,所以只有当值为 'false' 时才返回 false
return valueStr !== 'false';
} catch (error) {
console.error(`[Service] Error getting show connection tags setting (key: ${SHOW_CONNECTION_TAGS_KEY}):`, error);
return true; // 默认返回 true
}
}, // *** 确保这里有逗号 ***
async setShowConnectionTags(enabled: boolean): Promise<void> {
console.log(`[Service] setShowConnectionTags called with: ${enabled}`);
try {
const valueStr = String(enabled);
console.log(`[Service] Attempting to save setting. Key: ${SHOW_CONNECTION_TAGS_KEY}, Value: ${valueStr}`);
await settingsRepository.setSetting(SHOW_CONNECTION_TAGS_KEY, valueStr);
console.log(`[Service] Successfully saved setting for key: ${SHOW_CONNECTION_TAGS_KEY}`);
} catch (error) {
console.error(`[Service] Error calling settingsRepository.setSetting for key ${SHOW_CONNECTION_TAGS_KEY}:`, error);
throw new Error('Failed to save show connection tags setting.');
}
}, // *** 确保这里有逗号 ***
// --- Show Quick Command Tags ---
async getShowQuickCommandTags(): Promise<boolean> {
console.log(`[Service] Attempting to get setting for key: ${SHOW_QUICK_COMMAND_TAGS_KEY}`);
try {
const valueStr = await settingsRepository.getSetting(SHOW_QUICK_COMMAND_TAGS_KEY);
console.log(`[Service] Raw value from repository for ${SHOW_QUICK_COMMAND_TAGS_KEY}:`, valueStr);
// 默认显示,所以只有当值为 'false' 时才返回 false
return valueStr !== 'false';
} catch (error) {
console.error(`[Service] Error getting show quick command tags setting (key: ${SHOW_QUICK_COMMAND_TAGS_KEY}):`, error);
return true; // 默认返回 true
}
}, // *** 确保这里有逗号 ***
async setShowQuickCommandTags(enabled: boolean): Promise<void> {
console.log(`[Service] setShowQuickCommandTags called with: ${enabled}`);
try {
const valueStr = String(enabled);
console.log(`[Service] Attempting to save setting. Key: ${SHOW_QUICK_COMMAND_TAGS_KEY}, Value: ${valueStr}`);
await settingsRepository.setSetting(SHOW_QUICK_COMMAND_TAGS_KEY, valueStr);
console.log(`[Service] Successfully saved setting for key: ${SHOW_QUICK_COMMAND_TAGS_KEY}`);
} catch (error) {
console.error(`[Service] Error calling settingsRepository.setSetting for key ${SHOW_QUICK_COMMAND_TAGS_KEY}:`, error);
throw new Error('Failed to save show quick command tags setting.');
}
} // <-- No comma after the last method
}; // <-- End of settingsService object definition
@@ -417,6 +417,86 @@ async setCaptchaConfig(req: Request, res: Response): Promise<void> {
res.status(500).json({ message: '设置 CAPTCHA 配置失败', error: error.message });
}
}
}
}, // <-- Add comma here
// --- Show Connection Tags ---
async getShowConnectionTags(req: Request, res: Response): Promise<void> {
try {
console.log('[控制器] 收到获取“显示连接标签”设置的请求。');
const isEnabled = await settingsService.getShowConnectionTags();
console.log(`[控制器] 向客户端发送“显示连接标签”设置: ${isEnabled}`);
res.json({ enabled: isEnabled });
} catch (error: any) {
console.error('[控制器] 获取“显示连接标签”设置时出错:', error);
res.status(500).json({ message: '获取“显示连接标签”设置失败', error: error.message });
}
}, // *** 确保这里有逗号 ***
async setShowConnectionTags(req: Request, res: Response): Promise<void> {
console.log('[控制器] 收到设置“显示连接标签”设置的请求。');
try {
const { enabled } = req.body;
console.log('[控制器] 请求体 enabled:', enabled);
if (typeof enabled !== 'boolean') {
console.warn('[控制器] 收到无效的 enabled 格式:', enabled);
res.status(400).json({ message: '无效的请求体,"enabled" 必须是一个布尔值' });
return;
}
console.log('[控制器] 调用 settingsService.setShowConnectionTags...');
await settingsService.setShowConnectionTags(enabled);
console.log('[控制器] settingsService.setShowConnectionTags 成功完成。');
auditLogService.logAction('SETTINGS_UPDATED', { updatedKeys: ['showConnectionTags'] });
notificationService.sendNotification('SETTINGS_UPDATED', { updatedKeys: ['showConnectionTags'] });
console.log('[控制器] 发送成功响应。');
res.status(200).json({ message: '“显示连接标签”设置已成功更新' });
} catch (error: any) {
console.error('[控制器] 设置“显示连接标签”时出错:', error);
res.status(500).json({ message: '设置“显示连接标签”失败', error: error.message });
}
}, // *** 确保这里有逗号 ***
// --- Show Quick Command Tags ---
async getShowQuickCommandTags(req: Request, res: Response): Promise<void> {
try {
console.log('[控制器] 收到获取“显示快捷指令标签”设置的请求。');
const isEnabled = await settingsService.getShowQuickCommandTags();
console.log(`[控制器] 向客户端发送“显示快捷指令标签”设置: ${isEnabled}`);
res.json({ enabled: isEnabled });
} catch (error: any) {
console.error('[控制器] 获取“显示快捷指令标签”设置时出错:', error);
res.status(500).json({ message: '获取“显示快捷指令标签”设置失败', error: error.message });
}
}, // *** 确保这里有逗号 ***
async setShowQuickCommandTags(req: Request, res: Response): Promise<void> {
console.log('[控制器] 收到设置“显示快捷指令标签”设置的请求。');
try {
const { enabled } = req.body;
console.log('[控制器] 请求体 enabled:', enabled);
if (typeof enabled !== 'boolean') {
console.warn('[控制器] 收到无效的 enabled 格式:', enabled);
res.status(400).json({ message: '无效的请求体,"enabled" 必须是一个布尔值' });
return;
}
console.log('[控制器] 调用 settingsService.setShowQuickCommandTags...');
await settingsService.setShowQuickCommandTags(enabled);
console.log('[控制器] settingsService.setShowQuickCommandTags 成功完成。');
auditLogService.logAction('SETTINGS_UPDATED', { updatedKeys: ['showQuickCommandTags'] });
notificationService.sendNotification('SETTINGS_UPDATED', { updatedKeys: ['showQuickCommandTags'] });
console.log('[控制器] 发送成功响应。');
res.status(200).json({ message: '“显示快捷指令标签”设置已成功更新' });
} catch (error: any) {
console.error('[控制器] 设置“显示快捷指令标签”时出错:', error);
res.status(500).json({ message: '设置“显示快捷指令标签”失败', error: error.message });
}
} // <-- No comma after the last method
};
@@ -53,6 +53,18 @@ router.get('/sidebar', settingsController.getSidebarConfig);
// PUT /api/v1/settings/sidebar - 更新侧栏配置
router.put('/sidebar', settingsController.setSidebarConfig);
// +++ 新增:显示连接标签路由 +++
// GET /api/v1/settings/show-connection-tags - 获取设置
router.get('/show-connection-tags', settingsController.getShowConnectionTags);
// PUT /api/v1/settings/show-connection-tags - 更新设置
router.put('/show-connection-tags', settingsController.setShowConnectionTags);
// +++ 新增:显示快捷指令标签路由 +++
// GET /api/v1/settings/show-quick-command-tags - 获取设置
router.get('/show-quick-command-tags', settingsController.getShowQuickCommandTags);
// PUT /api/v1/settings/show-quick-command-tags - 更新设置
router.put('/show-quick-command-tags', settingsController.setShowQuickCommandTags);
export default router;