mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-11-09 11:52:08 +08:00
refactor: optimize swr data refresh paths
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { useEffect } from 'react'
|
||||
|
||||
import { useListen } from '@/hooks/use-listen'
|
||||
import { queryClient } from '@/services/query-client'
|
||||
import { revalidateQueries } from '@/services/query-client'
|
||||
|
||||
export const useLayoutEvents = (
|
||||
handleNotice: (payload: [string, string]) => void,
|
||||
@@ -12,9 +12,7 @@ export const useLayoutEvents = (
|
||||
const unlisteners: Array<() => void> = []
|
||||
let disposed = false
|
||||
const revalidateKeys = (keys: readonly string[]) => {
|
||||
keys.forEach((key) => {
|
||||
queryClient.invalidateQueries({ queryKey: [key] })
|
||||
})
|
||||
void revalidateQueries(keys.map((key) => [key]))
|
||||
}
|
||||
|
||||
const register = (
|
||||
@@ -42,7 +40,7 @@ export const useLayoutEvents = (
|
||||
}
|
||||
|
||||
register(
|
||||
addListener('verge://refresh-clash-config', async () => {
|
||||
addListener('verge://refresh-clash-config', () => {
|
||||
revalidateKeys([
|
||||
'getProxies',
|
||||
'getVersion',
|
||||
|
||||
+10
-12
@@ -64,8 +64,12 @@ import {
|
||||
updateProfile,
|
||||
} from '@/services/cmds'
|
||||
import { showNotice } from '@/services/notice-service'
|
||||
import { useQuery } from '@/services/query-client'
|
||||
import { queryClient } from '@/services/query-client'
|
||||
import {
|
||||
fetchCacheData,
|
||||
revalidateQueries,
|
||||
setCacheData,
|
||||
useQuery,
|
||||
} from '@/services/query-client'
|
||||
import {
|
||||
useLoadingCache,
|
||||
useSetLoadingCache,
|
||||
@@ -233,7 +237,7 @@ const ProfilePage = () => {
|
||||
return () => {
|
||||
unsubscribe.then((cleanup) => cleanup())
|
||||
}
|
||||
}, [addListener, mutateProfiles, t])
|
||||
}, [addListener, mutateProfiles])
|
||||
|
||||
// 添加紧急恢复功能
|
||||
const onEmergencyRefresh = useLockFn(async () => {
|
||||
@@ -241,10 +245,7 @@ const ProfilePage = () => {
|
||||
|
||||
try {
|
||||
// 只失效 profiles 相关 query,不影响 WS 订阅、IP 缓存等其他 query
|
||||
await Promise.all([
|
||||
queryClient.invalidateQueries({ queryKey: ['getProfiles'] }),
|
||||
queryClient.invalidateQueries({ queryKey: ['getRuntimeLogs'] }),
|
||||
])
|
||||
await revalidateQueries([['getProfiles'], ['getRuntimeLogs']])
|
||||
|
||||
// 强制重新获取配置数据
|
||||
await mutateProfiles()
|
||||
@@ -371,10 +372,7 @@ const ProfilePage = () => {
|
||||
console.warn(`[导入刷新] 常规刷新失败,尝试清除缓存重新获取`)
|
||||
try {
|
||||
// 清除缓存并重新获取
|
||||
await queryClient.fetchQuery({
|
||||
queryKey: ['getProfiles'],
|
||||
queryFn: getProfiles,
|
||||
})
|
||||
await fetchCacheData(['getProfiles'], getProfiles)
|
||||
await onEnhance(false)
|
||||
showNotice.error(
|
||||
'profiles.page.feedback.notifications.importNeedsRefresh',
|
||||
@@ -482,7 +480,7 @@ const ProfilePage = () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
queryClient.setQueryData(['getProxies'], await calcuProxies())
|
||||
setCacheData(['getProxies'], await calcuProxies())
|
||||
|
||||
// 完成切换
|
||||
await mutateLogs()
|
||||
|
||||
Reference in New Issue
Block a user