From 69fc8071a2d2ea35bd65c9d7eea6616e0837205c Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 17 Nov 2023 18:12:30 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Migrate=20dns-hole=20widge?= =?UTF-8?q?t=20to=20board=20database?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/api/routers/dns-hole/router.ts | 4 ++-- .../queue/NormalizedDownloadQueueResponse.ts | 2 +- src/widgets/dnshole/DnsHoleControls.tsx | 5 ++--- src/widgets/dnshole/DnsHoleSummary.tsx | 22 ++++++++++++------- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/server/api/routers/dns-hole/router.ts b/src/server/api/routers/dns-hole/router.ts index 8c7f73553..152bc6b58 100644 --- a/src/server/api/routers/dns-hole/router.ts +++ b/src/server/api/routers/dns-hole/router.ts @@ -173,11 +173,11 @@ const collectAdGuardSummary = async (app: ConfigAppType) => { const blockedQueriesToday = stats.time_units === 'days' - ? stats.blocked_filtering[stats.blocked_filtering.length - 1] + ? stats.blocked_filtering[stats.blocked_filtering.length - 1] ?? 0 : stats.blocked_filtering.reduce((prev, sum) => prev + sum, 0); const queriesToday = stats.time_units === 'days' - ? stats.dns_queries[stats.dns_queries.length - 1] + ? stats.dns_queries[stats.dns_queries.length - 1] ?? 0 : stats.dns_queries.reduce((prev, sum) => prev + sum, 0); return { diff --git a/src/types/api/downloads/queue/NormalizedDownloadQueueResponse.ts b/src/types/api/downloads/queue/NormalizedDownloadQueueResponse.ts index a0f5f44ca..d5155bbcb 100644 --- a/src/types/api/downloads/queue/NormalizedDownloadQueueResponse.ts +++ b/src/types/api/downloads/queue/NormalizedDownloadQueueResponse.ts @@ -8,7 +8,7 @@ export type NormalizedDownloadQueueResponse = { export type NormalizedDownloadAppStat = { success: boolean; - appId: string; + integrationId: string; } & (TorrentTotalDownload | UsenetTotalDownloas); export type TorrentTotalDownload = { diff --git a/src/widgets/dnshole/DnsHoleControls.tsx b/src/widgets/dnshole/DnsHoleControls.tsx index baa6551d6..c308e1db8 100644 --- a/src/widgets/dnshole/DnsHoleControls.tsx +++ b/src/widgets/dnshole/DnsHoleControls.tsx @@ -21,7 +21,7 @@ import { api } from '~/utils/api'; import { defineWidget } from '../helper'; import { WidgetLoading } from '../loading'; -import { IWidget, InferWidget } from '../widgets'; +import { InferWidget } from '../widgets'; import { useDnsHoleSummeryQuery } from './DnsHoleSummary'; const definition = defineWidget({ @@ -71,7 +71,7 @@ function DnsHoleControlsWidgetTile({ widget }: DnsHoleControlsWidgetProps) { const utils = api.useContext(); const { data: sessionData } = useSession(); const { isInitialLoading, data, isFetching: fetchingDnsSummary } = useDnsHoleSummeryQuery(); - const { mutateAsync, isLoading: changingStatus } = useDnsHoleControlMutation(); + const { mutateAsync, isLoading: changingStatus } = api.dnsHole.control.useMutation(); const { width, ref } = useElementSize(); const { t } = useTranslation(['common', 'modules/dns-hole-controls']); @@ -265,6 +265,5 @@ function DnsHoleControlsWidgetTile({ widget }: DnsHoleControlsWidgetProps) { ); } -const useDnsHoleControlMutation = () => api.dnsHole.control.useMutation(); export default definition; diff --git a/src/widgets/dnshole/DnsHoleSummary.tsx b/src/widgets/dnshole/DnsHoleSummary.tsx index e48270c3c..7e37b4822 100644 --- a/src/widgets/dnshole/DnsHoleSummary.tsx +++ b/src/widgets/dnshole/DnsHoleSummary.tsx @@ -1,4 +1,4 @@ -import { Box, Card, Center, Container, Flex, Text } from '@mantine/core'; +import { Card, Center, Container, Flex, Text } from '@mantine/core'; import { useElementSize } from '@mantine/hooks'; import { IconAd, @@ -9,13 +9,12 @@ import { TablerIconsProps, } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; -import { useConfigContext } from '~/config/provider'; import { formatNumber, formatPercentage } from '~/tools/client/math'; import { RouterOutputs, api } from '~/utils/api'; import { defineWidget } from '../helper'; import { WidgetLoading } from '../loading'; -import { IWidget, InferWidget } from '../widgets'; +import { InferWidget } from '../widgets'; const availableLayouts = ['grid', 'row', 'column'] as const; type AvailableLayout = (typeof availableLayouts)[number]; @@ -50,12 +49,20 @@ interface DnsHoleSummaryWidgetProps { } function DnsHoleSummaryWidgetTile({ widget }: DnsHoleSummaryWidgetProps) { - const { isInitialLoading, data } = useDnsHoleSummeryQuery(); + const firstIntegration = widget.integrations[0]; + const { isInitialLoading, data } = useDnsHoleSummeryQuery({ + integrationId: firstIntegration?.id, + }); if (isInitialLoading || !data) { return ; } + // TODO: Add no integration notice + if (!firstIntegration) { + return <>; + } + return ( {stats.map((item, index) => ( @@ -104,15 +111,14 @@ type StatItem = { color: string; }; -export const useDnsHoleSummeryQuery = () => { - const { name: configName } = useConfigContext(); - +export const useDnsHoleSummeryQuery = ({ integrationId }: { integrationId?: string }) => { return api.dnsHole.summary.useQuery( { - configName: configName!, + integrationId: integrationId!, }, { staleTime: 1000 * 60 * 2, + enabled: !!integrationId, } ); };