diff --git a/frontend/src/components/SwitchbarPopover.tsx b/frontend/src/components/SwitchbarPopover.tsx
index 0ac7071ee..1c0dd62fb 100644
--- a/frontend/src/components/SwitchbarPopover.tsx
+++ b/frontend/src/components/SwitchbarPopover.tsx
@@ -1,7 +1,9 @@
+import { useState } from 'react';
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { Plug, Power, PowerOff, Loader2, Wifi, WifiOff, Zap } from 'lucide-react';
import { api } from '../api/client';
import type { SmartPlug } from '../api/client';
+import { ConfirmModal } from './ConfirmModal';
interface SwitchbarPopoverProps {
onClose: () => void;
@@ -9,6 +11,7 @@ interface SwitchbarPopoverProps {
function SwitchItem({ plug }: { plug: SmartPlug }) {
const queryClient = useQueryClient();
+ const [confirmAction, setConfirmAction] = useState<'on' | 'off' | null>(null);
// Fetch current status
const { data: status, isLoading: statusLoading } = useQuery({
@@ -29,66 +32,86 @@ function SwitchItem({ plug }: { plug: SmartPlug }) {
const isReachable = status?.reachable ?? false;
const isPending = controlMutation.isPending;
+ const handleConfirm = () => {
+ if (confirmAction) {
+ controlMutation.mutate(confirmAction);
+ setConfirmAction(null);
+ }
+ };
+
return (
-
-
-
-
-
{plug.name}
-
- {statusLoading ? (
-
- ) : isReachable ? (
- <>
-
-
{status?.state || 'Unknown'}
- {status?.energy?.power !== null && status?.energy?.power !== undefined && (
- <>
-
|
-
-
{Math.round(status.energy.power)}W
- >
- )}
- >
- ) : (
- <>
-
-
Offline
- >
- )}
+ <>
+
+
+
+
+
{plug.name}
+
+ {statusLoading ? (
+
+ ) : isReachable ? (
+ <>
+
+ {status?.state || 'Unknown'}
+ {status?.energy?.power !== null && status?.energy?.power !== undefined && (
+ <>
+ |
+
+ {Math.round(status.energy.power)}W
+ >
+ )}
+ >
+ ) : (
+ <>
+
+ Offline
+ >
+ )}
+
+
+
+
+
+
+
-
-
-
-
-
+ {confirmAction && (
+
setConfirmAction(null)}
+ />
+ )}
+ >
);
}