diff options
Diffstat (limited to 'src/modules/rules/utils.ts')
| -rw-r--r-- | src/modules/rules/utils.ts | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/src/modules/rules/utils.ts b/src/modules/rules/utils.ts index c1d1464..772a1cc 100644 --- a/src/modules/rules/utils.ts +++ b/src/modules/rules/utils.ts @@ -1,24 +1,22 @@ -import { ClashAPIConfig } from '~/types'; +import type { RuleProvider } from '~/api/rule-provider'; +import type { RuleItem } from '~/api/rules'; +import type { ClashAPIConfig } from '~/types'; -export type RulesListItemData = { - rules: any[] | null; - provider: any; - apiConfig: ClashAPIConfig; +export type RuleProviderIndex = { + byName: Record<string, RuleProvider>; + names: string[]; }; -export function itemKey(index: number, { rules, provider }: RulesListItemData) { - if (!rules) { - return provider.names[index]; - } - return rules[index].id; -} +export type RulesTabKey = 'rules' | 'providers'; -export function getItemSizeFactory({ isRulesTab }: { isRulesTab: boolean }) { - return function getItemSize() { - return isRulesTab ? 70 : 100; - }; -} +export type RulesRowProps = { + /** 规则标签页的数据;提供商标签页下为 null */ + rules: RuleItem[] | null; + provider: RuleProviderIndex; + apiConfig: ClashAPIConfig; +}; -export function formatQty(qty: number) { - return qty < 100 ? String(qty) : '99+'; -} +// 虚拟列表要求定高。两个数字都按「内容最多的那一行」定: +// 规则行是 序号 + 两行内容(payload 长了会折行占两行),提供商行多一行元信息 +export const RULE_ROW_HEIGHT = 88; +export const PROVIDER_ROW_HEIGHT = 100; |
