streamActionsRequest = $streamActionsRequest; $this->miscService = $miscService; } /** * @param string $actorId * @param string $streamId * @param string $key * @param string $value */ public function setAction(string $actorId, string $streamId, string $key, string $value) { $action = $this->loadAction($actorId, $streamId); $action->updateValue($key, $value); $this->saveAction($action); } /** * @param string $actorId * @param string $streamId * @param string $key * @param int $value */ public function setActionInt(string $actorId, string $streamId, string $key, int $value) { $action = $this->loadAction($actorId, $streamId); $action->updateValueInt($key, $value); $this->saveAction($action); } /** * @param string $actorId * @param string $streamId * @param string $key * @param bool $value */ public function setActionBool(string $actorId, string $streamId, string $key, bool $value): void { $action = $this->loadAction($actorId, $streamId); $action->updateValueBool($key, $value); $this->saveAction($action); } /** * @param string $actorId * @param string $streamId * * @return StreamAction */ private function loadAction(string $actorId, string $streamId): StreamAction { try { $action = $this->streamActionsRequest->getAction($actorId, $streamId); } catch (StreamActionDoesNotExistException $e) { $action = new StreamAction($actorId, $streamId); } return $action; } /** * @param StreamAction $action */ private function saveAction(StreamAction $action) { if ($this->streamActionsRequest->update($action) === 0) { $this->streamActionsRequest->create($action); } } }