summaryrefslogtreecommitdiff
path: root/src/modules/rules/utils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/rules/utils.ts')
-rw-r--r--src/modules/rules/utils.ts36
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;