Preserve room JSON, seats, credentials and messages while removed rooms deny ordinary reads and writes. Add deliberate room-scoped controls, removed-directory filters, persistent player notices and live-authorized atomic version/revision audit receipts. Retain uncertain room/seat requests and hidden recovery drafts through removal; restore the prior pause/join settings without reviving revoked credentials. Fix AI readiness after a joining human or human faction change so real lobby starts remain legal. Verified types, lint, 5314 offline tests, 52 HTTP tests and build. Fourteen authenticated HTTP groups and independent privacy/persistence review passed. Desktop/mobile browser QA confirmed a saved removal after a lost response and refresh, one audit on exact retry, persistent notices and recovery draft continuity. All 1,945 baseline rooms, 4,121 seats and related records preserved. Positive authenticated production admin acceptance remains pending authorized QA operator access; full admin and rules gates remain open.
13 lines
995 B
TypeScript
13 lines
995 B
TypeScript
import { Button } from './ui/button';
|
|
|
|
export function RemovedRoomNotice({ code, busy, onRetry, onExit, exitDisabled }: { code: string; busy: boolean; onRetry: () => void; onExit: () => void; exitDisabled?: boolean }) {
|
|
return <section className="notice" aria-labelledby="removed-room-title">
|
|
<h1 id="removed-room-title">Room {code} has been removed</h1>
|
|
<p>An administrator removed this room from active play. Its game, saved seats and pending choices are retained for restoration.</p>
|
|
<p>Only an administrator can restore the room. Restoring it keeps existing seat ownership and access restrictions.</p>
|
|
<p>Keep this tab open if a seat or room request is unconfirmed. Its exact retry details remain here; check for restoration before continuing.</p>
|
|
<Button disabled={busy} onClick={onRetry}>{busy ? 'Checking room…' : 'Check for restoration'}</Button>
|
|
<Button variant="outline" disabled={busy || exitDisabled} onClick={onExit}>Return home</Button>
|
|
</section>;
|
|
}
|