service = $service; $this->avatarRepository = $avatarRepository; $this->eventDispatcher = $eventDispatcher; } public function setToken(string $token): void { $this->token = $token; $this->room = null; } public function isValidToken(): bool { $room = $this->getRoom(); return $room !== null; } /** * @PublicPage * * @NoCSRFRequired * * @return void */ public function meetingEnded($recordingmarks = false): void { $recordingmarks = \boolval($recordingmarks); $room = $this->getRoom(); $this->service->updateRunning($room->getId(), false); $this->avatarRepository->clearRoom($room->uid); $this->eventDispatcher->dispatch(MeetingEndedEvent::class, new MeetingEndedEvent($room, $recordingmarks)); } /** * @PublicPage * * @NoCSRFRequired * * @return void */ public function recordingReady(): void { $this->eventDispatcher->dispatch(RecordingReadyEvent::class, new RecordingReadyEvent($this->getRoom())); } private function getRoom(): ?Room { if ($this->room === null) { $this->room = $this->service->findByUid($this->token); } return $this->room; } }