86 lines
2.0 KiB
TypeScript
86 lines
2.0 KiB
TypeScript
import { ref } from 'vue'
|
|
import { useToast } from './useToast'
|
|
|
|
export interface RetryStage {
|
|
maxElapsed: number
|
|
interval: number
|
|
}
|
|
|
|
export interface Settings {
|
|
timeApiUrl: string
|
|
traceEnabled: boolean
|
|
traceMaxBody: number
|
|
logLevel: string
|
|
concurrency: number
|
|
attempts: number
|
|
retryStages: RetryStage[]
|
|
seckillMode: number // 0=标准, 1=激进
|
|
}
|
|
|
|
const App = window.go.main.App
|
|
|
|
const defaultRetryStages: RetryStage[] = [
|
|
{ maxElapsed: 4, interval: 120 },
|
|
{ maxElapsed: 12, interval: 200 },
|
|
{ maxElapsed: 30, interval: 500 },
|
|
{ maxElapsed: 75, interval: 1000 }
|
|
]
|
|
|
|
const settings = ref<Settings>({
|
|
timeApiUrl: '',
|
|
traceEnabled: false,
|
|
traceMaxBody: 0,
|
|
logLevel: 'info',
|
|
concurrency: 150,
|
|
attempts: 1,
|
|
retryStages: [...defaultRetryStages],
|
|
seckillMode: 1
|
|
})
|
|
|
|
export function useSettings() {
|
|
const { showToast } = useToast()
|
|
|
|
const loadSettings = async () => {
|
|
try {
|
|
const cfg = await App.GetSettings()
|
|
settings.value = {
|
|
timeApiUrl: cfg.timeApiUrl || '',
|
|
traceEnabled: !!cfg.traceEnabled,
|
|
traceMaxBody: cfg.traceMaxBody || 0,
|
|
logLevel: cfg.logLevel || 'info',
|
|
concurrency: cfg.concurrency || 150,
|
|
attempts: cfg.attempts || 1,
|
|
retryStages: cfg.retryStages && cfg.retryStages.length > 0
|
|
? cfg.retryStages
|
|
: [...defaultRetryStages],
|
|
seckillMode: cfg.seckillMode ?? 1
|
|
}
|
|
} catch (e: any) {
|
|
showToast('读取设置失败', e.message, 'error')
|
|
}
|
|
}
|
|
|
|
const saveSettings = async (newSettings: Settings) => {
|
|
try {
|
|
const d = await App.SaveSettings(newSettings)
|
|
if (d.success) {
|
|
settings.value = { ...newSettings }
|
|
showToast('设置已保存', '配置已生效', 'success')
|
|
return true
|
|
} else {
|
|
showToast('保存失败', d.error || '', 'error')
|
|
return false
|
|
}
|
|
} catch (e: any) {
|
|
showToast('保存失败', e.message, 'error')
|
|
return false
|
|
}
|
|
}
|
|
|
|
return {
|
|
settings,
|
|
loadSettings,
|
|
saveSettings
|
|
}
|
|
}
|