{t(deniedHintKey)}
@@ -2254,6 +2312,9 @@ export function ViewerPage({ roomId, viewerGrant }: ViewerPageProps) { presentation.stage, assignedRouteKind, ); + const noticeVisual = presentation.noticeKey + ? viewerNoticeVisual(presentation.noticeKey) + : null; const selectedChildEvidence = selectedPawn !== null && selectedPawn !== selfPeerId && @@ -2341,10 +2402,11 @@ export function ViewerPage({ roomId, viewerGrant }: ViewerPageProps) { (presentation.stage === "receiving" && presentation.hasRetainedFrame) } + controlsList={theaterMode ? "nofullscreen" : undefined} playsInline onPlay={() => { invalidateQualityPresentation(); - setFrameProofEpoch((current) => current + 1); + rearmCurrentFrameProof(); const binding = remoteMediaRef.current; if (binding) { dispatchPresentation({ @@ -2390,6 +2452,45 @@ export function ViewerPage({ roomId, viewerGrant }: ViewerPageProps) { /> )} + {(presentation.noticeKey || + (routePresentation.evidence === peerSnapshot && + peerSnapshot?.error) || + relaySnapshot?.error || + qualityLimitation) && ( +