mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-05-05 05:30:44 +08:00
feat(channel-monitor): gate UI by feature switch + polish form UX
- AppSidebar 三处菜单项(管理端渠道监控、用户端/个人页渠道状态)按 channel_monitor_enabled 条件展开,关闭时隐藏 - ChannelStatusView setInterval 随开关启停:关闭 clearInterval, 开启/未知态自动启动,避免禁用功能后仍在轮询 - MonitorFormDialog provider Select 改为 3 色单选按钮 (openai=emerald / anthropic=orange / gemini=sky),i18n 文案 供应商 → 平台 / Provider → Platform - MonitorKeyPickerDialog 按钮列表改为 name/key/group 三列表格 + 搜索框,按 key.group.platform === provider 过滤,避免跨平台误选 - form.provider 变化时清空 api_key,修复切换平台仍保留旧 key 的 错配 bug - providerPickerClass 抽取到 useChannelMonitorFormat composable, 统一 emerald/orange/sky 颜色语义,消除硬编码 Tailwind class 重复 - maskApiKey 工具函数统一(utils/maskApiKey.ts),KeysView 与 MonitorKeyPickerDialog 共用 slice(0,6)...slice(-4) 策略 - bump version to 0.1.114.27
This commit is contained in:
@@ -160,14 +160,34 @@ watch(items, () => {
|
||||
void ensureDetailsForWindow()
|
||||
})
|
||||
|
||||
function startTimer() {
|
||||
if (countdownTimer !== undefined) return
|
||||
countdownTimer = setInterval(tick, 1000) as unknown as number
|
||||
}
|
||||
|
||||
function stopTimer() {
|
||||
if (countdownTimer !== undefined) {
|
||||
clearInterval(countdownTimer)
|
||||
countdownTimer = undefined
|
||||
}
|
||||
}
|
||||
|
||||
watch(
|
||||
() => appStore.cachedPublicSettings?.channel_monitor_enabled,
|
||||
(enabled) => {
|
||||
if (enabled === false) stopTimer()
|
||||
else startTimer()
|
||||
},
|
||||
)
|
||||
|
||||
// ── Lifecycle ──
|
||||
onMounted(() => {
|
||||
void reload(false)
|
||||
countdownTimer = setInterval(tick, 1000) as unknown as number
|
||||
if (appStore.cachedPublicSettings?.channel_monitor_enabled !== false) startTimer()
|
||||
})
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
if (countdownTimer !== undefined) clearInterval(countdownTimer)
|
||||
stopTimer()
|
||||
if (abortController) abortController.abort()
|
||||
})
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user