fix(scheduled): Fix response format

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2025-12-05 15:32:29 +01:00 committed by Anna Larch
commit ae0c19981c
3 changed files with 9 additions and 24 deletions

View file

@ -366,6 +366,7 @@ class ChatController extends AEnvironmentAwareOCSController {
$scheduledMessages = $this->scheduledMessageManager->getMessages( $scheduledMessages = $this->scheduledMessageManager->getMessages(
$this->room, $this->room,
$this->participant, $this->participant,
$this->getResponseFormat(),
); );
return new DataResponse($scheduledMessages, Http::STATUS_OK); return new DataResponse($scheduledMessages, Http::STATUS_OK);
@ -465,7 +466,7 @@ class ChatController extends AEnvironmentAwareOCSController {
return new DataResponse(['error' => 'message'], Http::STATUS_REQUEST_ENTITY_TOO_LARGE); return new DataResponse(['error' => 'message'], Http::STATUS_REQUEST_ENTITY_TOO_LARGE);
} }
$data = $this->scheduledMessageManager->parseScheduledMessage($scheduledMessage, $parentMessage); $data = $this->scheduledMessageManager->parseScheduledMessage($this->getResponseFormat(), $scheduledMessage, $parentMessage);
return new DataResponse($data, Http::STATUS_CREATED); return new DataResponse($data, Http::STATUS_CREATED);
} }
@ -545,7 +546,7 @@ class ChatController extends AEnvironmentAwareOCSController {
} }
} }
$data = $this->scheduledMessageManager->parseScheduledMessage($scheduledMessage, $parentMessage); $data = $this->scheduledMessageManager->parseScheduledMessage($this->getResponseFormat(), $scheduledMessage, $parentMessage);
return new DataResponse($data, Http::STATUS_ACCEPTED); return new DataResponse($data, Http::STATUS_ACCEPTED);
} }

View file

@ -38,7 +38,7 @@ use OCP\DB\Types;
* *
* @psalm-import-type TalkScheduledMessage from ResponseDefinitions * @psalm-import-type TalkScheduledMessage from ResponseDefinitions
*/ */
class ScheduledMessage extends Entity implements \JsonSerializable { class ScheduledMessage extends Entity {
public const METADATA_THREAD_TITLE = 'threadTitle'; public const METADATA_THREAD_TITLE = 'threadTitle';
public const METADATA_THREAD_ID = 'threadId'; public const METADATA_THREAD_ID = 'threadId';
public const METADATA_SILENT = 'silent'; public const METADATA_SILENT = 'silent';
@ -95,22 +95,6 @@ class ScheduledMessage extends Entity implements \JsonSerializable {
$this->markFieldUpdated('message'); $this->markFieldUpdated('message');
} }
#[\Override]
public function jsonSerialize(): array {
return [
'roomId' => $this->getRoomId(),
'actorId' => $this->getActorId(),
'actorType' => $this->getActorType(),
'threadId' => $this->getThreadId(),
'parentId' => $this->getParentId(),
'message' => $this->getMessage(),
'messageType' => $this->getMessageType(),
'createdAt' => $this->getCreatedAt()->getTimestamp(),
'sendAt' => $this->getSendAt()?->getTimestamp(),
'metaData' => $this->getDecodedMetaData(),
];
}
/** /**
* @param string $format * @param string $format
* @psalm-param 'json'|'xml' $format * @psalm-param 'json'|'xml' $format
@ -131,7 +115,7 @@ class ScheduledMessage extends Entity implements \JsonSerializable {
]; ];
if ($parent !== null) { if ($parent !== null) {
$data['parent'] = $parent->toArray('json', $thread); $data['parent'] = $parent->toArray($format, $thread);
} }
if ($thread !== null) { if ($thread !== null) {

View file

@ -128,7 +128,7 @@ class ScheduledMessageService {
/** /**
* @return list<TalkScheduledMessage> * @return list<TalkScheduledMessage>
*/ */
public function getMessages(Room $chat, Participant $participant): array { public function getMessages(Room $chat, Participant $participant, string $format): array {
$result = $this->scheduledMessageMapper->findByRoomAndActor( $result = $this->scheduledMessageMapper->findByRoomAndActor(
$chat, $chat,
$participant->getAttendee()->getActorType(), $participant->getAttendee()->getActorType(),
@ -166,13 +166,13 @@ class ScheduledMessageService {
} else { } else {
$thread = Thread::fromRow($thread); $thread = Thread::fromRow($thread);
} }
$messages[] = $this->parseScheduledMessage($scheduleMessage, $parent, $thread); $messages[] = $this->parseScheduledMessage($format, $scheduleMessage, $parent, $thread);
} }
return $messages; return $messages;
} }
public function parseScheduledMessage(ScheduledMessage $message, ?Message $parentMessage, ?Thread $thread = null): array { public function parseScheduledMessage(string $format, ScheduledMessage $message, ?Message $parentMessage, ?Thread $thread = null): array {
if ($thread === null if ($thread === null
&& $message->getThreadId() !== Thread::THREAD_NONE && $message->getThreadId() !== Thread::THREAD_NONE
&& $message->getThreadId() !== Thread::THREAD_CREATE && $message->getThreadId() !== Thread::THREAD_CREATE
@ -187,7 +187,7 @@ class ScheduledMessageService {
$thread = null; $thread = null;
} }
} }
return $message->toArray($parentMessage, $thread ?? null); return $message->toArray($format, $parentMessage, $thread ?? null);
} }
public function getScheduledMessageCount(Room $chat, Participant $participant): int { public function getScheduledMessageCount(Room $chat, Participant $participant): int {