wangzhibo
2023-10-31 9da39812105bfc387db3b3b7c4896983e03d247d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { createSignal } from 'solid-js'
import {
  fetchRuleProvidersAPI,
  fetchRulesAPI,
  updateRuleProviderAPI,
} from '~/apis'
import type { Rule, RuleProvider } from '~/types'
 
export const useRules = () => {
  const [rules, setRules] = createSignal<Rule[]>([])
  const [ruleProviders, setRuleProviders] = createSignal<RuleProvider[]>([])
 
  const updateRules = async () => {
    const [{ rules }, { providers }] = await Promise.all([
      fetchRulesAPI(),
      fetchRuleProvidersAPI(),
    ])
 
    setRules(Object.values(rules))
    setRuleProviders(Object.values(providers))
  }
 
  const updateAllRuleProvider = async () => {
    await Promise.all(
      ruleProviders().map((provider) => updateRuleProviderAPI(provider.name)),
    )
    await updateRules()
  }
 
  const updateRuleProviderByName = async (providerName: string) => {
    await updateRuleProviderAPI(providerName)
    await updateRules()
  }
 
  return {
    rules,
    ruleProviders,
    updateRules,
    updateAllRuleProvider,
    updateRuleProviderByName,
  }
}