diff --git a/apps/web/src/components/nav/ModerationPanel.tsx b/apps/web/src/components/nav/ModerationPanel.tsx index 28e7c9ce..6ac81df0 100644 --- a/apps/web/src/components/nav/ModerationPanel.tsx +++ b/apps/web/src/components/nav/ModerationPanel.tsx @@ -88,6 +88,7 @@ export function ModerationPanel({ // Settings state const [accessMode, setAccessMode] = useState('open') + const [originalAccessMode, setOriginalAccessMode] = useState('open') const [roomPassword, setRoomPassword] = useState('') const [showPasswordInput, setShowPasswordInput] = useState(false) const [selectedNewOwner, setSelectedNewOwner] = useState('') @@ -340,7 +341,9 @@ export function ModerationPanel({ const roomRes = await fetch(`/api/arcade/rooms/${roomId}`) if (roomRes.ok) { const data = await roomRes.json() - setAccessMode(data.room?.accessMode || 'open') + const currentAccessMode = data.room?.accessMode || 'open' + setAccessMode(currentAccessMode) + setOriginalAccessMode(currentAccessMode) } // Fetch join requests if any @@ -378,6 +381,7 @@ export function ModerationPanel({ } alert('Room settings updated successfully!') + setOriginalAccessMode(accessMode) // Update original to current setShowPasswordInput(false) setRoomPassword('') } catch (err) { @@ -473,6 +477,9 @@ export function ModerationPanel({ const pendingReports = reports.filter((r) => r.status === 'pending') const otherMembers = members.filter((m) => m.userId !== currentUserId) + // Check if there are unsaved changes in settings + const hasUnsavedAccessModeChanges = accessMode !== originalAccessMode + // Group reports by reported user ID const reportsByUser = pendingReports.reduce( (acc, report) => { @@ -1429,31 +1436,33 @@ export function ModerationPanel({ /> )} - + {hasUnsavedAccessModeChanges && ( + + )} @@ -1663,23 +1672,44 @@ export function ModerationPanel({