diff options
| author | Haishan <[email protected]> | 2020-12-06 20:12:16 +0800 |
|---|---|---|
| committer | Haishan <[email protected]> | 2020-12-06 21:09:18 +0800 |
| commit | b0b0edab16c99ce9cef0bbb4cd10e05a3cb3ffd7 (patch) | |
| tree | f7b487afda73e507f7130b8057782d406ef71665 /src/components/Rules.tsx | |
| parent | d2b01d80fb8dae8e3400bb09038d3afbcbd55495 (diff) | |
build: upgrade deps
Diffstat (limited to 'src/components/Rules.tsx')
| -rw-r--r-- | src/components/Rules.tsx | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/components/Rules.tsx b/src/components/Rules.tsx index 008ce3c..a6eab19 100644 --- a/src/components/Rules.tsx +++ b/src/components/Rules.tsx @@ -9,6 +9,8 @@ import { fetchRules } from 'src/api/rules'; import { RuleProviderItem } from 'src/components/rules/RuleProviderItem'; import { TextFilter } from 'src/components/rules/TextFilter'; import { ruleFilterText } from 'src/store/rules'; +import { State } from 'src/store/types'; +import type { ClashAPIConfig } from 'src/types'; import useRemainingViewPortHeight from '../hooks/useRemainingViewPortHeight'; import { getClashAPIConfig } from '../store/app'; @@ -22,7 +24,7 @@ const { memo, useMemo, useCallback } = React; const paddingBottom = 30; -function itemKey(index, { rules, provider }) { +function itemKey(index: number, { rules, provider }) { const providerQty = provider.names.length; if (index < providerQty) { @@ -33,7 +35,7 @@ function itemKey(index, { rules, provider }) { } function getItemSizeFactory({ provider }) { - return function getItemSize(idx) { + return function getItemSize(idx: number) { const providerQty = provider.names.length; if (idx < providerQty) { // provider @@ -67,16 +69,20 @@ const Row = memo(({ index, style, data }) => { ); }, areEqual); -const mapState = (s) => ({ +const mapState = (s: State) => ({ apiConfig: getClashAPIConfig(s), }); export default connect(mapState)(Rules); -function useRuleAndProvider(apiConfig) { - const { data: rules } = useQuery(['/rules', apiConfig], fetchRules, { - suspense: true, - }); +function useRuleAndProvider(apiConfig: ClashAPIConfig) { + const { data: rules, isFetching } = useQuery( + ['/rules', apiConfig], + fetchRules, + { + suspense: true, + } + ); const { data: provider } = useQuery( ['/providers/rules', apiConfig], fetchRuleProviders, @@ -85,11 +91,12 @@ function useRuleAndProvider(apiConfig) { const [filterText] = useRecoilState(ruleFilterText); if (filterText === '') { - return { rules, provider }; + return { rules, provider, isFetching }; } else { const f = filterText.toLowerCase(); return { rules: rules.filter((r) => r.payload.toLowerCase().indexOf(f) >= 0), + isFetching, provider: { byName: provider.byName, names: provider.names.filter((t) => t.toLowerCase().indexOf(f) >= 0), @@ -141,7 +148,7 @@ function Rules({ apiConfig }) { <Fab icon={refreshIcon} text="Refresh" - position={fabPosition} + style={fabPosition} onClick={invalidateQueries} /> </div> |
