import Block from "components/services/widget/block"; import Container from "components/services/widget/container"; import { useTranslation } from "next-i18next"; import { useMemo } from "react"; import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Component({ service }) { const { t } = useTranslation(); const { widget } = service; const { data: nextcloudData, error: nextcloudError } = useWidgetAPI(widget, "serverinfo"); // Support for deprecated fields (cpuload, memoryusage) const [showCpuLoad, showMemoryUsage] = useMemo(() => { // Default values if fields is not set if (!widget.fields) return [false, false]; // Allows for backwards compatibility with existing values of fields if (widget.fields.length <= 4) return [true, true]; // If all fields are enabled, drop cpuload and memoryusage if (widget.fields.length === 6) return [false, false]; const hasCpuLoad = widget.fields?.includes("cpuload"); const hasMemoryUsage = widget.fields?.includes("memoryusage"); // If (for some reason) 5 fields are set, drop memoryusage if (hasCpuLoad && hasMemoryUsage) return [true, false]; return [!hasCpuLoad, !hasMemoryUsage]; }, [widget.fields]); if (nextcloudError) { return ; } if (!nextcloudData) { return ( {showCpuLoad && } {showMemoryUsage && } ); } const { nextcloud: nextcloudInfo, activeUsers } = nextcloudData.ocs.data; const memoryUsage = 100 * ((parseFloat(nextcloudInfo.system.mem_total) - parseFloat(nextcloudInfo.system.mem_free)) / parseFloat(nextcloudInfo.system.mem_total)); return ( {showCpuLoad && ( )} {showMemoryUsage && ( )} ); }