feat: dnshole controls widget (#867)

* feat: dnshole controls widget

* feat: add duration and timer modal

* fix: code improvment

* fix: add support for many integrations

* fix: add support for more integrations

* fix: move ControlsCard outside of main component

* fix: deepsource
This commit is contained in:
Yossi Hillali
2024-08-04 18:47:00 +03:00
committed by GitHub
parent 9013d5dbf0
commit 65c6854e44
14 changed files with 501 additions and 29 deletions

View File

@@ -25,7 +25,7 @@ export default function DnsHoleSummaryWidget({ options, integrationIds }: Widget
const [data] = clientApi.widget.dnsHole.summary.useSuspenseQuery(
{
integrationId,
integrationIds,
},
{
refetchOnMount: false,
@@ -36,7 +36,7 @@ export default function DnsHoleSummaryWidget({ options, integrationIds }: Widget
return (
<Box h="100%" {...boxPropsByLayout(options.layout)}>
{stats.map((item, index) => (
<StatCard key={index} item={item} usePiHoleColors={options.usePiHoleColors} data={data} />
<StatCard key={index} item={item} usePiHoleColors={options.usePiHoleColors} data={data[0]?.summary} />
))}
</Box>
);

View File

@@ -17,7 +17,7 @@ export const { definition, componentLoader, serverDataLoader } = createWidgetDef
defaultValue: "grid",
}),
})),
supportedIntegrations: ["piHole"],
supportedIntegrations: ["piHole", "adGuardHome"],
errors: {
INTERNAL_SERVER_ERROR: {
icon: IconServerOff,

View File

@@ -5,16 +5,19 @@ import { api } from "@homarr/api/server";
import type { WidgetProps } from "../../definition";
export default async function getServerDataAsync({ integrationIds }: WidgetProps<"dnsHoleSummary">) {
const integrationId = integrationIds.at(0);
if (!integrationId) return { initialData: undefined };
if (integrationIds.length === 0) {
return {
initialData: [],
};
}
try {
const data = await api.widget.dnsHole.summary({
integrationId,
const currentDns = await api.widget.dnsHole.summary({
integrationIds,
});
return {
initialData: data,
initialData: currentDns,
};
} catch {
return {