diff --git a/frontend/src/components/Canvas.js b/frontend/src/components/Canvas.js index 05e8a694..3e691130 100644 --- a/frontend/src/components/Canvas.js +++ b/frontend/src/components/Canvas.js @@ -70,6 +70,7 @@ function Canvas({ viewOnly = false, isOwner = false, roomType = 'public', + walletConnected = false, }) { const canvasRef = useRef(null); const snapshotRef = useRef(null); @@ -1708,7 +1709,13 @@ function Canvas({ // When historyMode is active, a specific user is selected for replay, or // when viewOnly is true (room is archived or user is a viewer), editing // should be disabled. - const editingEnabled = !(historyMode || (selectedUser && selectedUser !== "") || viewOnly); + // For secure rooms, wallet must be connected to allow editing. + const editingEnabled = !( + historyMode || + (selectedUser && selectedUser !== "") || + viewOnly || + (roomType === 'secure' && !walletConnected) + ); return (
@@ -1790,6 +1797,26 @@ function Canvas({ )} + {/* Wallet disconnected banner - visible when secure room wallet is not connected */} + {roomType === 'secure' && !walletConnected && ( + + + + ⚠ Wallet Not Connected — Canvas Locked + + + + )} + {/* Confirm Destructive Delete dialog (owner-only) */} { setConfirmDestructiveOpen(false); setDestructiveConfirmText(''); }}> Permanently delete room diff --git a/frontend/src/pages/Room.jsx b/frontend/src/pages/Room.jsx index 95dab1ae..481bc169 100644 --- a/frontend/src/pages/Room.jsx +++ b/frontend/src/pages/Room.jsx @@ -193,6 +193,7 @@ export default function Room({ auth }) { viewOnly={viewOnly} isOwner={isOwner} roomType={info?.type || 'public'} + walletConnected={walletConnected} onOpenSettings={((info && ((info.myRole || 'editor') !== 'viewer')) ? (() => navigate(`/rooms/${roomId}/settings`)) : null)} />