mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-11-01 03:42:07 +08:00
feat(enhance): warn when extensions write app-owned keys
This commit is contained in:
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "كتبت الإضافات الحقول {{keys}} التي تديرها الإعدادات، لذلك تم تجاهل هذه القيم",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "Erweiterungen haben {{keys}} gesetzt, die von den Einstellungen verwaltet werden, daher wurden diese Werte verworfen",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "Extensions wrote {{keys}}, which Settings manages, so those values were discarded",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "Las extensiones escribieron {{keys}}, campos gestionados por los ajustes, por lo que esos valores se descartaron",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "افزونهها فیلدهای {{keys}} را نوشتند که توسط تنظیمات مدیریت میشوند، بنابراین این مقادیر نادیده گرفته شدند",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "Ekstensi menulis {{keys}} yang dikelola oleh Pengaturan, sehingga nilai tersebut diabaikan",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "拡張設定またはスクリプトが、アプリ設定で管理される {{keys}} を書き込んだため、その値は破棄されました",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "강제 새로고침 완료",
|
||||
"discardedKeys": "확장 설정 또는 스크립트가 앱 설정이 관리하는 {{keys}} 필드를 작성하여 해당 값은 무시되었습니다",
|
||||
"emergencyRefreshFailed": "긴급 새로고침 실패: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Принудительное обновление завершено",
|
||||
"discardedKeys": "Расширения записали поля {{keys}}, которыми управляют настройки приложения, поэтому эти значения отброшены",
|
||||
"emergencyRefreshFailed": "Экстренное обновление не удалось: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Zorunlu yenileme tamamlandı",
|
||||
"discardedKeys": "Uzantılar, Ayarlar tarafından yönetilen {{keys}} alanlarını yazdığı için bu değerler yok sayıldı",
|
||||
"emergencyRefreshFailed": "Acil yenileme başarısız oldu: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "Киңәйтмәләр Көйләүләр белән идарә ителә торган {{keys}} кырларын язды, шуңа күрә бу кыйммәтләр кире кагылды",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "数据已强制刷新",
|
||||
"discardedKeys": "扩展配置或脚本写入了由应用设置接管的字段 {{keys}},这些值已被丢弃",
|
||||
"emergencyRefreshFailed": "紧急刷新失败: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
},
|
||||
"notices": {
|
||||
"forceRefreshCompleted": "Force refresh completed",
|
||||
"discardedKeys": "擴充設定或腳本寫入了由應用程式設定接管的欄位 {{keys}},這些值已被捨棄",
|
||||
"emergencyRefreshFailed": "Emergency refresh failed: {{message}}"
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -14,6 +14,7 @@ vi.mock('@/hooks/use-profiles', () => ({ revalidateProfiles: vi.fn() }))
|
||||
vi.mock('@/hooks/use-system-state', () => ({ runStateQueryKey: ['state'] }))
|
||||
vi.mock('@/services/events', () => ({ subscribeVergeEvents: vi.fn() }))
|
||||
vi.mock('@/services/cmds', () => ({
|
||||
takeDiscardedKeysNotice: vi.fn().mockResolvedValue(null),
|
||||
takeDnsOverrideNotice: vi.fn(),
|
||||
takeServiceFallbackNotice: vi.fn().mockResolvedValue(false),
|
||||
}))
|
||||
|
||||
@@ -64,6 +64,7 @@ export const useLayoutEvents = (
|
||||
() => {
|
||||
revalidateKeys(['getRuntimeState', 'getVergeConfig'])
|
||||
handleNotice(['dns_override::auto_disabled', ''])
|
||||
handleNotice(['enhance::discarded_keys', ''])
|
||||
handleNotice(['service_core::sidecar_fallback', ''])
|
||||
},
|
||||
)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
takeDiscardedKeysNotice,
|
||||
takeDnsOverrideNotice,
|
||||
takeServiceFallbackNotice,
|
||||
} from '@/services/cmds'
|
||||
@@ -55,6 +56,22 @@ export const handleNoticeMessage = (
|
||||
console.error('Failed to read the pending DNS override notice', error)
|
||||
})
|
||||
},
|
||||
'enhance::discarded_keys': () => {
|
||||
void takeDiscardedKeysNotice()
|
||||
.then((keys) => {
|
||||
if (keys) {
|
||||
showNotice.warning('profiles.page.feedback.notices.discardedKeys', {
|
||||
keys,
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(
|
||||
'Failed to read the pending discarded keys notice',
|
||||
error,
|
||||
)
|
||||
})
|
||||
},
|
||||
'tun_mode::auto_disabled': () =>
|
||||
showNotice.info(
|
||||
'settings.sections.system.notifications.tunMode.autoDisabled',
|
||||
|
||||
@@ -186,6 +186,10 @@ export async function takeServiceFallbackNotice() {
|
||||
return invoke<boolean>('take_service_fallback_notice')
|
||||
}
|
||||
|
||||
export async function takeDiscardedKeysNotice() {
|
||||
return invoke<string | null>('take_discarded_keys_notice')
|
||||
}
|
||||
|
||||
export async function getSystemProxy() {
|
||||
return invoke<{
|
||||
enable: boolean
|
||||
|
||||
@@ -186,6 +186,7 @@ export const translationKeys = [
|
||||
'profiles.page.feedback.notifications.switchBusy',
|
||||
'profiles.page.feedback.notifications.batchDeleted',
|
||||
'profiles.page.feedback.notices.forceRefreshCompleted',
|
||||
'profiles.page.feedback.notices.discardedKeys',
|
||||
'profiles.page.feedback.notices.emergencyRefreshFailed',
|
||||
'profiles.page.feedback.tooltips.forceRefreshStaleData',
|
||||
'profiles.page.title',
|
||||
|
||||
@@ -446,6 +446,7 @@ export interface TranslationResources {
|
||||
updateFailed: string
|
||||
}
|
||||
notices: {
|
||||
discardedKeys: string
|
||||
emergencyRefreshFailed: string
|
||||
forceRefreshCompleted: string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user