diff --git a/packages/integrations/src/adguard-home/adguard-home-integration.ts b/packages/integrations/src/adguard-home/adguard-home-integration.ts index a41070c78..2e41bd916 100644 --- a/packages/integrations/src/adguard-home/adguard-home-integration.ts +++ b/packages/integrations/src/adguard-home/adguard-home-integration.ts @@ -123,7 +123,7 @@ export class AdGuardHomeIntegration extends Integration implements DnsHoleSummar } } - public async disableAsync(duration?: number): Promise { + public async disableAsync(duration = 0): Promise { const response = await fetch(`${this.integration.url}/control/protection`, { method: "POST", headers: { @@ -132,7 +132,7 @@ export class AdGuardHomeIntegration extends Integration implements DnsHoleSummar }, body: JSON.stringify({ enabled: false, - duration: duration, + duration: duration * 1000, }), }); if (!response.ok) { diff --git a/packages/widgets/src/dns-hole/controls/TimerModal.tsx b/packages/widgets/src/dns-hole/controls/TimerModal.tsx index 71cb09c10..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; - integrationIds: string[]; + selectedIntegrationIds: string[]; disableDns: (data: { duration: number; integrationId: string }) => void; } -const TimerModal = ({ opened, close, integrationIds, 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, integrationIds, disableDns }: TimerModalPro const handleSetTimer = () => { const duration = hours * 3600 + minutes * 60; - integrationIds.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 de89e89ce..0859dc728 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 [selectedIntegrationIds, setSelectedIntegrationIds] = useState([]); const [opened, { close, open }] = useDisclosure(false); const [data] = clientApi.widget.dnsHole.summary.useSuspenseQuery( @@ -67,8 +68,10 @@ export default function DnsHoleControlsWidget({ options, integrationIds }: Widge } }; - const allEnabled = status.every((item) => item.enabled); - const allDisabled = status.every((item) => !item.enabled); + const enabledIntegrations = integrationIds.filter((id) => status.find((item) => item.integrationId === id)?.enabled); + const disabledIntegrations = integrationIds.filter( + (id) => !status.find((item) => item.integrationId === id)?.enabled, + ); return ( @@ -76,10 +79,8 @@ export default function DnsHoleControlsWidget({ options, integrationIds }: Widge