From 01fac01aa15e23589d3bc151c1e473cdc2e94ed7 Mon Sep 17 00:00:00 2001 From: hillaliy Date: Fri, 9 Aug 2024 15:29:08 +0300 Subject: [PATCH 1/5] fix: DnsHole controls timer --- .../adguard-home/adguard-home-integration.ts | 1 + .../src/dns-hole/controls/TimerModal.tsx | 6 +-- .../src/dns-hole/controls/component.tsx | 38 +++++++++++++++++-- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/packages/integrations/src/adguard-home/adguard-home-integration.ts b/packages/integrations/src/adguard-home/adguard-home-integration.ts index a41070c78..37643ae1a 100644 --- a/packages/integrations/src/adguard-home/adguard-home-integration.ts +++ b/packages/integrations/src/adguard-home/adguard-home-integration.ts @@ -124,6 +124,7 @@ export class AdGuardHomeIntegration extends Integration implements DnsHoleSummar } public async disableAsync(duration?: number): Promise { + duration = duration ? duration * 1000 : 0; const response = await fetch(`${this.integration.url}/control/protection`, { method: "POST", headers: { diff --git a/packages/widgets/src/dns-hole/controls/TimerModal.tsx b/packages/widgets/src/dns-hole/controls/TimerModal.tsx index 71cb09c10..9f6a7210f 100644 --- a/packages/widgets/src/dns-hole/controls/TimerModal.tsx +++ b/packages/widgets/src/dns-hole/controls/TimerModal.tsx @@ -8,11 +8,11 @@ import { useI18n } from "@homarr/translation/client"; interface TimerModalProps { opened: boolean; close: () => void; - integrationIds: string[]; + selectedIntegration: string[]; disableDns: (data: { duration: number; integrationId: string }) => void; } -const TimerModal = ({ opened, close, integrationIds, disableDns }: TimerModalProps) => { +const TimerModal = ({ opened, close, selectedIntegration, disableDns }: TimerModalProps) => { const t = useI18n(); const [hours, setHours] = useState(0); const [minutes, setMinutes] = useState(0); @@ -21,7 +21,7 @@ const TimerModal = ({ opened, close, integrationIds, disableDns }: TimerModalPro const handleSetTimer = () => { const duration = hours * 3600 + minutes * 60; - integrationIds.forEach((integrationId) => { + selectedIntegration.forEach((integrationId) => { disableDns({ duration, integrationId }); }); setHours(0); diff --git a/packages/widgets/src/dns-hole/controls/component.tsx b/packages/widgets/src/dns-hole/controls/component.tsx index de89e89ce..1c027b849 100644 --- a/packages/widgets/src/dns-hole/controls/component.tsx +++ b/packages/widgets/src/dns-hole/controls/component.tsx @@ -24,6 +24,7 @@ export default function DnsHoleControlsWidget({ options, integrationIds }: Widge const [status, setStatus] = useState<{ integrationId: string; enabled: boolean }[]>( integrationIds.map((id) => ({ integrationId: id, enabled: false })), ); + const [selectedIntegration, setSelectedIntegration] = useState([]); const [opened, { close, open }] = useDisclosure(false); const [data] = clientApi.widget.dnsHole.summary.useSuspenseQuery( @@ -90,7 +91,17 @@ export default function DnsHoleControlsWidget({ options, integrationIds }: Widge - @@ -114,11 +125,19 @@ export default function DnsHoleControlsWidget({ options, integrationIds }: Widge {data.map((integrationData) => - ControlsCard(integrationData.integrationId, integrationData.integrationKind, toggleDns, status, open, t), + ControlsCard( + integrationData.integrationId, + integrationData.integrationKind, + toggleDns, + status, + setSelectedIntegration, + open, + t, + ), )} - + ); } @@ -128,6 +147,7 @@ const ControlsCard = ( integrationKind: string, toggleDns: (integrationId: string) => void, status: { integrationId: string; enabled: boolean }[], + setSelectedIntegration: (integrationId: string[]) => void, open: () => void, t: TranslationFunction, ) => { @@ -149,7 +169,17 @@ const ControlsCard = ( {t(`widget.dnsHoleControls.controls.${isEnabled ? "enabled" : "disabled"}`)} - + { + setSelectedIntegration([integrationId]); + open(); + }} + > From 6df2b3368b0ceb38f8350524bb86ed8374cdedf7 Mon Sep 17 00:00:00 2001 From: hillaliy Date: Sat, 10 Aug 2024 07:50:18 +0300 Subject: [PATCH 2/5] fix: use plural naming --- .../widgets/src/dns-hole/controls/TimerModal.tsx | 6 +++--- .../widgets/src/dns-hole/controls/component.tsx | 13 +++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/widgets/src/dns-hole/controls/TimerModal.tsx b/packages/widgets/src/dns-hole/controls/TimerModal.tsx index 9f6a7210f..06281241e 100644 --- a/packages/widgets/src/dns-hole/controls/TimerModal.tsx +++ b/packages/widgets/src/dns-hole/controls/TimerModal.tsx @@ -8,11 +8,11 @@ import { useI18n } from "@homarr/translation/client"; interface TimerModalProps { opened: boolean; close: () => void; - selectedIntegration: string[]; + selectedIntegrationIds: string[]; disableDns: (data: { duration: number; integrationId: string }) => void; } -const TimerModal = ({ opened, close, selectedIntegration, disableDns }: TimerModalProps) => { +const TimerModal = ({ opened, close, selectedIntegrationIds, disableDns }: TimerModalProps) => { const t = useI18n(); const [hours, setHours] = useState(0); const [minutes, setMinutes] = useState(0); @@ -21,7 +21,7 @@ const TimerModal = ({ opened, close, selectedIntegration, disableDns }: TimerMod const handleSetTimer = () => { const duration = hours * 3600 + minutes * 60; - selectedIntegration.forEach((integrationId) => { + selectedIntegrationIds.forEach((integrationId) => { disableDns({ duration, integrationId }); }); setHours(0); diff --git a/packages/widgets/src/dns-hole/controls/component.tsx b/packages/widgets/src/dns-hole/controls/component.tsx index 1c027b849..40f3fc20e 100644 --- a/packages/widgets/src/dns-hole/controls/component.tsx +++ b/packages/widgets/src/dns-hole/controls/component.tsx @@ -24,7 +24,7 @@ export default function DnsHoleControlsWidget({ options, integrationIds }: Widge const [status, setStatus] = useState<{ integrationId: string; enabled: boolean }[]>( integrationIds.map((id) => ({ integrationId: id, enabled: false })), ); - const [selectedIntegration, setSelectedIntegration] = useState([]); + const [selectedIntegrationIds, setSelectedIntegrationIds] = useState([]); const [opened, { close, open }] = useDisclosure(false); const [data] = clientApi.widget.dnsHole.summary.useSuspenseQuery( @@ -93,7 +93,7 @@ export default function DnsHoleControlsWidget({ options, integrationIds }: Widge