- icon
+
+ {icons[item.deviceName as keyof typeof icons]?.icon}
- {!["FT1"].includes(item.deviceName) && (
+ {!["FT1"].includes(item.deviceName ?? "") && (
-
+
{item?.deviceLabel}
+
+ Device:{" "}
+ {icons[item.deviceName as keyof typeof icons]?.label ??
+ item.deviceName}
+
+
+ Status: {item?.payload?.toString()}
+
- {item?.towerNumber}/{item?.floorName}/{item?.roomName}
+ {item?.towerNumber}/{item?.floorName}/{item?.unitNumber}/
+ {item?.roomName}
{item?.deviceName === "AC" && (
diff --git a/src/features/settings/index.tsx b/src/features/settings/index.tsx
index e04260f..008b97d 100644
--- a/src/features/settings/index.tsx
+++ b/src/features/settings/index.tsx
@@ -4,32 +4,56 @@ import {
saveMerchant,
getMerchant,
} from "../../utils/storage";
+import { useNavigate } from "@tanstack/react-router";
+
export default function SettingsFeature() {
- const [form, setForm] = useState('');
+ const navigate = useNavigate();
+
+ const [form, setForm] = useState({
+ merchantName: "",
+ tower: "",
+ floor: "",
+ unit: "",
+ });
const [loading, setLoading] = useState(false);
- const merchant = getMerchant();
+
function handleChange(
- e: React.ChangeEvent
+ e: React.ChangeEvent
) {
- const { value } = e.target;
- setForm(value);
+ const { name, value } = e.target;
+ setForm((prev) => ({
+ ...prev,
+ [name]: value,
+ }));
}
function handleSubmit(e: React.FormEvent) {
e.preventDefault();
+ if (!isFormValid) return;
+
setLoading(true);
- saveMerchant(form)
+ saveMerchant(form);
+
setTimeout(() => {
setLoading(false);
+ navigate({ to: "/" });
}, 200);
-
}
useEffect(() => {
- setForm(merchant || 'SAVY');
- },[merchant]);
+ const merchant = getMerchant();
+ if (merchant) {
+ setForm(merchant);
+ }
+ }, []);
+
+ const isFormValid =
+ form.merchantName?.trim() &&
+ form.tower?.trim() &&
+ form.floor?.trim() &&
+ form.unit?.trim();
return (