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");
}