import { CheckCircleIcon } from "@heroicons/react/16/solid"; import { useCallback, useEffect, useState } from "react"; import MouseIcon from "@/assets/mouse-icon.svg"; import PointingFinger from "@/assets/pointing-finger.svg"; import { GridCard } from "@/components/Card"; import { Checkbox } from "@/components/Checkbox"; import { useDeviceSettingsStore, useSettingsStore } from "@/hooks/stores"; import { useJsonRpc } from "@/hooks/useJsonRpc"; import notifications from "@/notifications"; import { SettingsPageHeader } from "@components/SettingsPageheader"; import { FeatureFlag } from "../components/FeatureFlag"; import { SelectMenuBasic } from "../components/SelectMenuBasic"; import { useFeatureFlag } from "../hooks/useFeatureFlag"; import { SettingsItem } from "./devices.$id.settings"; type ScrollSensitivity = "low" | "default" | "high"; export default function SettingsMouseRoute() { const hideCursor = useSettingsStore(state => state.isCursorHidden); const setHideCursor = useSettingsStore(state => state.setCursorVisibility); const mouseMode = useSettingsStore(state => state.mouseMode); const setMouseMode = useSettingsStore(state => state.setMouseMode); const scrollSensitivity = useDeviceSettingsStore(state => state.scrollSensitivity); const setScrollSensitivity = useDeviceSettingsStore( state => state.setScrollSensitivity, ); const { isEnabled: isScrollSensitivityEnabled } = useFeatureFlag("0.3.8"); const [jiggler, setJiggler] = useState(false); const [send] = useJsonRpc(); useEffect(() => { send("getJigglerState", {}, resp => { if ("error" in resp) return; setJiggler(resp.result as boolean); }); if (isScrollSensitivityEnabled) { send("getScrollSensitivity", {}, resp => { if ("error" in resp) return; setScrollSensitivity(resp.result as ScrollSensitivity); }); } }, [isScrollSensitivityEnabled, send, setScrollSensitivity]); const handleJigglerChange = (enabled: boolean) => { send("setJigglerState", { enabled }, resp => { if ("error" in resp) { notifications.error( `Failed to set jiggler state: ${resp.error.data || "Unknown error"}`, ); return; } setJiggler(enabled); }); }; const onScrollSensitivityChange = useCallback( (e: React.ChangeEvent) => { const sensitivity = e.target.value as ScrollSensitivity; send("setScrollSensitivity", { sensitivity }, resp => { if ("error" in resp) { notifications.error( `Failed to set scroll sensitivity: ${resp.error.data || "Unknown error"}`, ); } notifications.success("Scroll sensitivity set successfully"); setScrollSensitivity(sensitivity); }); }, [send, setScrollSensitivity], ); return (
setHideCursor(e.target.checked)} /> handleJigglerChange(e.target.checked)} />
); }