import classNames from "classnames"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { shortcutServiceClient } from "@/grpcweb"; import { GetShortcutAnalyticsResponse } from "@/types/proto/api/v1/shortcut_service"; import Icon from "./Icon"; interface Props { shortcutId: number; className?: string; } const AnalyticsView: React.FC = (props: Props) => { const { shortcutId, className } = props; const { t } = useTranslation(); const [analytics, setAnalytics] = useState(null); const [selectedDeviceTab, setSelectedDeviceTab] = useState<"os" | "browser">("browser"); useEffect(() => { shortcutServiceClient.getShortcutAnalytics({ id: shortcutId }).then((response) => { setAnalytics(response); }); }, []); return (
{analytics ? ( <>

{t("analytics.top-sources")}

{t("analytics.source")} {t("analytics.visitors")}
{analytics.references.length === 0 && (

No data found.

)} {analytics.references.map((reference) => (
{reference.name ? ( {reference.name} ) : ( "Direct" )} {reference.count}
))}
{t("analytics.devices")}
/
{selectedDeviceTab === "browser" ? (
{t("analytics.browsers")} {t("analytics.visitors")}
{analytics.browsers.length === 0 && (

No data found.

)} {analytics.browsers.map((reference) => (
{reference.name || "Unknown"} {reference.count}
))}
) : (
{t("analytics.operating-system")} {t("analytics.visitors")}
{analytics.devices.length === 0 && (

No data found.

)} {analytics.devices.map((device) => (
{device.name || "Unknown"} {device.count}
))}
)}
) : (
{t("common.loading")}
)}
); }; export default AnalyticsView;