diff --git a/fe-app-podkop/src/helpers/index.ts b/fe-app-podkop/src/helpers/index.ts index b82ff09..3ec39ab 100644 --- a/fe-app-podkop/src/helpers/index.ts +++ b/fe-app-podkop/src/helpers/index.ts @@ -11,3 +11,4 @@ export * from './splitProxyString'; export * from './preserveScrollForPage'; export * from './parseQueryString'; export * from './svgEl'; +export * from './insertIf'; diff --git a/fe-app-podkop/src/helpers/insertIf.ts b/fe-app-podkop/src/helpers/insertIf.ts new file mode 100644 index 0000000..cfb93f3 --- /dev/null +++ b/fe-app-podkop/src/helpers/insertIf.ts @@ -0,0 +1,7 @@ +export function insertIf(condition: boolean, elements: Array) { + return condition ? elements : ([] as Array); +} + +export function insertIfObj(condition: boolean, object: T) { + return condition ? object : ({} as T); +} diff --git a/fe-app-podkop/src/podkop/tabs/diagnostic/checks/runDnsCheck.ts b/fe-app-podkop/src/podkop/tabs/diagnostic/checks/runDnsCheck.ts index fb5a2a8..6d9ef0b 100644 --- a/fe-app-podkop/src/podkop/tabs/diagnostic/checks/runDnsCheck.ts +++ b/fe-app-podkop/src/podkop/tabs/diagnostic/checks/runDnsCheck.ts @@ -1,5 +1,7 @@ import { getDNSCheck } from '../../../methods'; import { updateDiagnosticsCheck } from '../updateDiagnosticsCheck'; +import { insertIf } from '../../../../helpers'; +import { IDiagnosticsChecksItem } from '../../../../store'; export async function runDnsCheck() { const code = 'dns_check'; @@ -58,20 +60,25 @@ export async function runDnsCheck() { description: _('DNS checks passed'), state: getStatus(), items: [ - { - state: data.bootstrap_dns_status ? 'success' : 'error', - key: _('Bootsrap DNS'), - value: data.bootstrap_dns_server, - }, + ...insertIf( + data.dns_type === 'doh' || data.dns_type === 'dot', + [ + { + state: data.bootstrap_dns_status ? 'success' : 'error', + key: _('Bootsrap DNS'), + value: `${data.bootstrap_dns_server} ${data.bootstrap_dns_status ? '✅' : '❌'}`, + }, + ], + ), { state: data.dns_status ? 'success' : 'error', key: _('Main DNS'), - value: `${data.dns_server} [${data.dns_type}]`, + value: `${data.dns_server} [${data.dns_type}] ${data.dns_status ? '✅' : '❌'}`, }, { state: data.local_dns_status ? 'success' : 'error', key: _('Local DNS'), - value: data.local_dns_status ? _('Enabled') : _('Failed'), + value: data.local_dns_status ? '✅' : '❌', }, ], }); diff --git a/fe-app-podkop/src/store.ts b/fe-app-podkop/src/store.ts index 5e07548..4b734cd 100644 --- a/fe-app-podkop/src/store.ts +++ b/fe-app-podkop/src/store.ts @@ -112,16 +112,18 @@ class Store> { } } +export interface IDiagnosticsChecksItem { + state: 'error' | 'warning' | 'success'; + key: string; + value: string; +} + export interface IDiagnosticsChecksStoreItem { code: string; title: string; description: string; state: 'loading' | 'warning' | 'success' | 'error' | 'skipped'; - items: Array<{ - state: 'error' | 'warning' | 'success'; - key: string; - value: string; - }>; + items: Array; } export interface StoreType { diff --git a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/main.js b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/main.js index 1a4e2b2..77dadcd 100644 --- a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/main.js +++ b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/main.js @@ -768,6 +768,14 @@ function svgEl(tag, attrs = {}, children = []) { return el; } +// src/helpers/insertIf.ts +function insertIf(condition, elements) { + return condition ? elements : []; +} +function insertIfObj(condition, object) { + return condition ? object : {}; +} + // src/validators/validateVlessUrl.ts function validateVlessUrl(url) { try { @@ -2538,20 +2546,25 @@ async function runDnsCheck() { description: _("DNS checks passed"), state: getStatus(), items: [ - { - state: data.bootstrap_dns_status ? "success" : "error", - key: _("Bootsrap DNS"), - value: data.bootstrap_dns_server - }, + ...insertIf( + data.dns_type === "doh" || data.dns_type === "dot", + [ + { + state: data.bootstrap_dns_status ? "success" : "error", + key: _("Bootsrap DNS"), + value: `${data.bootstrap_dns_server} ${data.bootstrap_dns_status ? "\u2705" : "\u274C"}` + } + ] + ), { state: data.dns_status ? "success" : "error", key: _("Main DNS"), - value: `${data.dns_server} [${data.dns_type}]` + value: `${data.dns_server} [${data.dns_type}] ${data.dns_status ? "\u2705" : "\u274C"}` }, { state: data.local_dns_status ? "success" : "error", key: _("Local DNS"), - value: data.local_dns_status ? _("Enabled") : _("Failed") + value: data.local_dns_status ? "\u2705" : "\u274C" } ] }); @@ -2812,6 +2825,8 @@ return baseclass.extend({ initDashboardController, initDiagnosticController, injectGlobalStyles, + insertIf, + insertIfObj, maskIP, onMount, parseQueryString,