From 8b3bc18ea858f5dd7a22268d901f71e09a746d39 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Oct 2025 19:42:34 +0800 Subject: [PATCH] chore(deps): update dependency eslint-plugin-react-hooks to v6 (#4940) * chore(deps): update dependency eslint-plugin-react-hooks to v6 * fix: update ESLint configuration to use correct imports and recommended settings * chore: clean up unused code and improve readability across components --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com> --- eslint.config.ts | 12 ++++++----- package.json | 2 +- pnpm-lock.yaml | 28 ++++++++++++++++++++------ src/components/proxy/proxy-groups.tsx | 10 +++------ src/providers/app-data-provider.tsx | 14 +++---------- src/providers/chain-proxy-provider.tsx | 8 ++++---- 6 files changed, 40 insertions(+), 34 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index f7c0baa4..4d4f160c 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -1,5 +1,7 @@ -import js from "@eslint/js"; +import eslintReact from "@eslint-react/eslint-plugin"; +import eslintJS from "@eslint/js"; import configPrettier from "eslint-config-prettier"; +import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript"; import pluginImportX from "eslint-plugin-import-x"; import pluginPrettier from "eslint-plugin-prettier"; import pluginReactHooks from "eslint-plugin-react-hooks"; @@ -8,15 +10,13 @@ import pluginUnusedImports from "eslint-plugin-unused-imports"; import { defineConfig } from "eslint/config"; import globals from "globals"; import tseslint from "typescript-eslint"; -import eslintReact from "@eslint-react/eslint-plugin"; -import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript"; export default defineConfig([ { files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"], plugins: { - js, + js: eslintJS, "react-hooks": pluginReactHooks, // @ts-expect-error -- https://github.com/un-ts/eslint-plugin-import-x/issues/421 "import-x": pluginImportX, @@ -26,7 +26,7 @@ export default defineConfig([ }, extends: [ - "js/recommended", + eslintJS.configs.recommended, tseslint.configs.recommended, eslintReact.configs["recommended-typescript"], configPrettier, @@ -56,6 +56,8 @@ export default defineConfig([ { allowConstantExport: true }, ], + "@eslint-react/no-forward-ref": "off", + // TypeScript "@typescript-eslint/no-explicit-any": "off", diff --git a/package.json b/package.json index 0c23591d..e78d4433 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import-x": "^4.16.1", "eslint-plugin-prettier": "^5.5.4", - "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-hooks": "^6.1.1", "eslint-plugin-react-refresh": "^0.4.22", "eslint-plugin-unused-imports": "^4.2.0", "glob": "^11.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a7ba7cfb..f1e67728 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -193,8 +193,8 @@ importers: specifier: ^5.5.4 version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@9.36.0(jiti@2.6.0)) + specifier: ^6.1.1 + version: 6.1.1(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-react-refresh: specifier: ^0.4.22 version: 0.4.22(eslint@9.36.0(jiti@2.6.0)) @@ -2496,9 +2496,9 @@ packages: eslint: ^9.36.0 typescript: ^5.9.2 - eslint-plugin-react-hooks@5.2.0: - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} - engines: {node: '>=10'} + eslint-plugin-react-hooks@6.1.1: + resolution: {integrity: sha512-St9EKZzOAQF704nt2oJvAKZHjhrpg25ClQoaAlHmPZuajFldVLqRDW4VBNAS01NzeiQF0m0qhG1ZA807K6aVaQ==} + engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -4046,6 +4046,12 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + zod@4.1.11: resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} @@ -6636,9 +6642,15 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-react-hooks@6.1.1(eslint@9.36.0(jiti@2.6.0)): dependencies: + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 eslint: 9.36.0(jiti@2.6.0) + zod: 4.1.11 + zod-validation-error: 4.0.2(zod@4.1.11) + transitivePeerDependencies: + - supports-color eslint-plugin-react-naming-convention@2.0.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2): dependencies: @@ -8549,6 +8561,10 @@ snapshots: yocto-queue@0.1.0: {} + zod-validation-error@4.0.2(zod@4.1.11): + dependencies: + zod: 4.1.11 + zod@4.1.11: {} zustand@5.0.8(@types/react@19.1.15)(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1)): diff --git a/src/components/proxy/proxy-groups.tsx b/src/components/proxy/proxy-groups.tsx index 476f5f90..33e6b553 100644 --- a/src/components/proxy/proxy-groups.tsx +++ b/src/components/proxy/proxy-groups.tsx @@ -1,23 +1,19 @@ +import { ExpandMoreRounded } from "@mui/icons-material"; import { Box, Snackbar, Alert, Chip, - Stack, Typography, IconButton, - Collapse, Menu, MenuItem, - Divider, - Button, } from "@mui/material"; -import { ArchiveOutlined, ExpandMoreRounded } from "@mui/icons-material"; import { useLockFn } from "ahooks"; import { useRef, useState, useEffect, useCallback, useMemo } from "react"; -import useSWR from "swr"; import { useTranslation } from "react-i18next"; import { Virtuoso, type VirtuosoHandle } from "react-virtuoso"; +import useSWR from "swr"; import { useProxySelection } from "@/hooks/use-proxy-selection"; import { useVerge } from "@/hooks/use-verge"; @@ -34,8 +30,8 @@ import { BaseEmpty } from "../base"; import { ScrollTopButton } from "../layout/scroll-top-button"; import { ProxyChain } from "./proxy-chain"; -import { ProxyRender } from "./proxy-render"; import { ProxyGroupNavigator } from "./proxy-group-navigator"; +import { ProxyRender } from "./proxy-render"; import { useRenderList } from "./use-render-list"; interface Props { diff --git a/src/providers/app-data-provider.tsx b/src/providers/app-data-provider.tsx index 16ad3962..8abd1380 100644 --- a/src/providers/app-data-provider.tsx +++ b/src/providers/app-data-provider.tsx @@ -1,11 +1,5 @@ import { listen } from "@tauri-apps/api/event"; -import React, { - createContext, - useContext, - useEffect, - useMemo, - useRef, -} from "react"; +import React, { createContext, use, useEffect, useMemo, useRef } from "react"; import useSWR from "swr"; import { useClashInfo } from "@/hooks/use-clash"; @@ -589,14 +583,12 @@ export const AppDataProvider = ({ refreshAll, ]); - return ( - {children} - ); + return {children}; }; // 自定义Hook访问全局数据 export const useAppData = () => { - const context = useContext(AppDataContext); + const context = use(AppDataContext); if (!context) { throw new Error("useAppData必须在AppDataProvider内使用"); diff --git a/src/providers/chain-proxy-provider.tsx b/src/providers/chain-proxy-provider.tsx index 2b834f89..c8ccce1d 100644 --- a/src/providers/chain-proxy-provider.tsx +++ b/src/providers/chain-proxy-provider.tsx @@ -1,4 +1,4 @@ -import React, { createContext, useCallback, useContext, useState } from "react"; +import React, { createContext, useCallback, use, useState } from "react"; interface ChainProxyContextType { isChainMode: boolean; @@ -26,7 +26,7 @@ export const ChainProxyProvider = ({ }, []); return ( - {children} - + ); }; export const useChainProxy = () => { - const context = useContext(ChainProxyContext); + const context = use(ChainProxyContext); if (!context) { throw new Error("useChainProxy must be used within a ChainProxyProvider"); }