mirror of
https://github.com/nextcloud/spreed.git
synced 2025-12-17 21:12:20 +01:00
fix(scheduled): Remove roomId and parentId from response and make id a string
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
92a9e51991
commit
494ce57ce5
4 changed files with 53 additions and 87 deletions
|
|
@ -37,7 +37,6 @@ use OCP\DB\Types;
|
|||
* @method \DateTime|null getSendAt()
|
||||
*
|
||||
* @psalm-import-type TalkScheduledMessage from ResponseDefinitions
|
||||
* @psalm-import-type TalkScheduledMessageMetaData from ResponseDefinitions
|
||||
*/
|
||||
class ScheduledMessage extends Entity implements \JsonSerializable {
|
||||
public const METADATA_THREAD_TITLE = 'threadTitle';
|
||||
|
|
@ -70,13 +69,16 @@ class ScheduledMessage extends Entity implements \JsonSerializable {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return TalkScheduledMessageMetaData
|
||||
* @return array{silent: bool, threadId: int, threadTitle?: string, lastEditedTime?: int}
|
||||
*/
|
||||
public function getDecodedMetaData(): array {
|
||||
return json_decode($this->metaData, true, 512, JSON_THROW_ON_ERROR);
|
||||
}
|
||||
|
||||
public function setMetaData(?array $metaData): void {
|
||||
/**
|
||||
* @param array{silent: bool, threadId: int, threadTitle?: string, lastEditedTime?: int} $metaData
|
||||
*/
|
||||
public function setMetaData(array $metaData): void {
|
||||
$this->metaData = json_encode($metaData, JSON_THROW_ON_ERROR);
|
||||
$this->markFieldUpdated('metaData');
|
||||
}
|
||||
|
|
@ -110,36 +112,33 @@ class ScheduledMessage extends Entity implements \JsonSerializable {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param string $format
|
||||
* @psalm-param 'json'|'xml' $format
|
||||
* @return TalkScheduledMessage
|
||||
*/
|
||||
public function toArray(?Message $parent, ?Thread $thread) : array {
|
||||
public function toArray(string $format, ?Message $parent, ?Thread $thread) : array {
|
||||
$metaData = $this->getDecodedMetaData();
|
||||
$data = [
|
||||
'id' => $this->id,
|
||||
'roomId' => $this->getRoomId(),
|
||||
'id' => (string)$this->id,
|
||||
'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(),
|
||||
'sendAt' => $this->getSendAt()?->getTimestamp() ?? 0,
|
||||
'silent' => $metaData['silent'] ?? false,
|
||||
];
|
||||
|
||||
if ($parent !== null) {
|
||||
$data['parent'] = $parent->toArray('json', $thread);
|
||||
}
|
||||
|
||||
$metaData = $this->getDecodedMetaData();
|
||||
if ($thread !== null) {
|
||||
$data['threadExists'] = true;
|
||||
$data['threadTitle'] = $thread->getName();
|
||||
$metaData[self::METADATA_THREAD_TITLE] = $thread->getName();
|
||||
} elseif (isset($metaData[self::METADATA_THREAD_TITLE]) && $this->getThreadId() === Thread::THREAD_CREATE) {
|
||||
$data['threadExists'] = false;
|
||||
$data['threadTitle'] = (string)$metaData[self::METADATA_THREAD_TITLE];
|
||||
}
|
||||
$data['metaData'] = $metaData;
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -566,28 +566,19 @@ namespace OCA\Talk;
|
|||
* },
|
||||
* }
|
||||
*
|
||||
* @psalm-type TalkScheduledMessageMetaData = array{
|
||||
* threadId: int,
|
||||
* threadTitle: string,
|
||||
* silent: bool,
|
||||
* lastEditedTime?: int,
|
||||
* }
|
||||
*
|
||||
* @psalm-type TalkScheduledMessage = array{
|
||||
* id: int,
|
||||
* roomId: int,
|
||||
* actorId: string,
|
||||
* actorType: string,
|
||||
* threadId: int,
|
||||
* threadExists?: boolean,
|
||||
* threadTitle?: string,
|
||||
* parentId: ?int,
|
||||
* parent?: TalkChatMessage,
|
||||
* message: string,
|
||||
* messageType: string,
|
||||
* createdAt: int,
|
||||
* sendAt: ?int,
|
||||
* metaData: TalkScheduledMessageMetaData,
|
||||
* // SnowflakeID
|
||||
* id: string,
|
||||
* actorId: string,
|
||||
* actorType: string,
|
||||
* threadId: int,
|
||||
* threadTitle?: string,
|
||||
* parent?: TalkChatMessage,
|
||||
* message: string,
|
||||
* messageType: string,
|
||||
* createdAt: int,
|
||||
* sendAt: int,
|
||||
* silent: bool,
|
||||
* }
|
||||
*/
|
||||
class ResponseDefinitions {
|
||||
|
|
|
|||
|
|
@ -1989,18 +1989,6 @@ class FeatureContext implements Context, SnippetAcceptingContext {
|
|||
self::$messageIdToText[$response['id']] = $row['message'];
|
||||
Assert::assertEquals($row['message'], $response['message']);
|
||||
Assert::assertEquals($row['sendAt'], $response['sendAt']);
|
||||
Assert::assertArrayHasKey('metaData', $response);
|
||||
$metaData = $response['metaData'];
|
||||
Assert::assertArrayHasKey('silent', $metaData);
|
||||
Assert::assertArrayHasKey('threadTitle', $metaData);
|
||||
Assert::assertArrayHasKey('threadId', $metaData);
|
||||
Assert::assertArrayHasKey('lastEditedTime', $metaData);
|
||||
if (isset($row['silent'])) {
|
||||
Assert::assertEquals($metaData['silent'], (bool)$row['silent']);
|
||||
}
|
||||
if (isset($row['threadTitle'])) {
|
||||
Assert::assertEquals($metaData['threadTitle'], (bool)$row['threadTitle']);
|
||||
}
|
||||
}
|
||||
|
||||
#[When('/^user "([^"]*)" deletes scheduled message "([^"]*)" from room "([^"]*)" with (\d+)(?: \((v1)\))?$/')]
|
||||
|
|
@ -2034,38 +2022,26 @@ class FeatureContext implements Context, SnippetAcceptingContext {
|
|||
Assert::assertArrayHasKey('createdAt', $message);
|
||||
Assert::assertIsInt($message['createdAt']);
|
||||
unset($message['createdAt']);
|
||||
$metaData = $message['metaData'];
|
||||
if (isset($metaData['lastEditedTime'])) {
|
||||
$metaData['lastEditedTime'] = 0;
|
||||
}
|
||||
if (isset($message['parent'])) {
|
||||
$parent = $message['parent'];
|
||||
Assert::assertArrayHasKey('message', $parent);
|
||||
Assert::assertArrayHasKey('actorId', $parent);
|
||||
$message['parent'] = self::$messageIdToText[$parent['id']];
|
||||
} else {
|
||||
$message['parent'] = 'null';
|
||||
}
|
||||
$message['metaData'] = $metaData;
|
||||
}
|
||||
|
||||
$expected = $formData->getColumnsHash();
|
||||
foreach ($expected as &$row) {
|
||||
$row['id'] = self::$textToMessageId[$row['message']];
|
||||
$row['sendAt'] = (int)$row['sendAt'];
|
||||
$row['metaData'] = json_decode($row['metaData'], true);
|
||||
$row['roomId'] = self::$identifierToId[$row['roomId']];
|
||||
$row['parentId'] = ($row['parentId'] === 'null' ? null : self::$textToMessageId[$row['parentId']]);
|
||||
if (isset($row['parent'])) {
|
||||
$parent = [];
|
||||
}
|
||||
$row['silent'] = $row['silent'] === 'true';
|
||||
if ($row['threadId'] === '-1') {
|
||||
$row['threadId'] = -1;
|
||||
$row['threadExists'] = false;
|
||||
$row['threadTitle'] = $row['metaData']['threadTitle'];
|
||||
} elseif ($row['threadId'] !== '0') {
|
||||
$row['threadTitle'] = $row['threadId'];
|
||||
$row['threadId'] = self::$titleToThreadId[$row['threadId']];
|
||||
$row['threadTitle'] = self::$threadIdToTitle[$row['threadId']];
|
||||
$row['threadExists'] = true;
|
||||
$row['metaData']['threadId'] = $row['threadId'];
|
||||
} else {
|
||||
$row['threadId'] = (int)$row['threadId'];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ Feature: chat-4/scheduling
|
|||
| message | Message 1 |
|
||||
| sendAt | 1985514582 |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 1 | room | users | participant1 | 0 | null | Message 1 | comment | 1985514582 | {"threadTitle":"","silent":false,"threadId":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 1 | users | participant1 | 0 | null | Message 1 | comment | 1985514582 | false |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
|
|
@ -28,8 +28,8 @@ Feature: chat-4/scheduling
|
|||
| sendAt | 1985514582 |
|
||||
| silent | true |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 2 | room | users | participant1 | 0 | null | Message 2 | comment | 1985514582 | {"threadTitle":"","silent":true,"threadId":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 2 | users | participant1 | 0 | null | Message 2 | comment | 1985514582 | true |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
|
|
@ -40,8 +40,8 @@ Feature: chat-4/scheduling
|
|||
| sendAt | 1985514582 |
|
||||
| replyTo | Message |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | parent | message | messageType | sendAt | metaData |
|
||||
| Message 3 | room | users | participant1 | 0 | Message | Message |Message 3 | comment | 1985514582 | {"threadTitle":"","silent":false,"threadId":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 3 | users | participant1 | 0 | Message |Message 3 | comment | 1985514582 | false |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
|
|
@ -52,8 +52,8 @@ Feature: chat-4/scheduling
|
|||
| sendAt | 1985514582 |
|
||||
| threadTitle | Scheduled Thread |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 4 | room | users | participant1 | -1 | null | Message 4 | comment | 1985514582 | {"threadTitle":"Scheduled Thread","silent":false,"threadId":-1} |
|
||||
| id | actorType | actorId | threadId | threadTitle | parent | message | messageType | sendAt | silent |
|
||||
| Message 4 | users | participant1 | -1 | Scheduled Thread | null | Message 4 | comment | 1985514582 | false |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
|
|
@ -65,8 +65,8 @@ Feature: chat-4/scheduling
|
|||
| sendAt | 1985514582 |
|
||||
| threadId | Thread 1 |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 5 | room | users | participant1 | Thread 1 | null | Message 5 | comment | 1985514582 | {"threadTitle":"Thread 1","silent":false,"threadId":"Thread 1"} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 5 | users | participant1 | Thread 1 | null | Message 5 | comment | 1985514582 | false |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
|
|
@ -79,8 +79,8 @@ Feature: chat-4/scheduling
|
|||
| replyTo | Message 0 |
|
||||
| threadId | Thread 1 |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | parent | message | messageType | sendAt | metaData |
|
||||
| Message 5 | room | users | participant1 | Thread 1 | Message 0 | Message 0 | Message 5 | comment | 1985514582 | {"threadTitle":"Thread 1","silent":false,"threadId":"Thread 1"} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 5 | users | participant1 | Thread 1 | Message 0 | Message 5 | comment | 1985514582 | false |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
|
|
@ -95,16 +95,16 @@ Feature: chat-4/scheduling
|
|||
| sendAt |1985514584 |
|
||||
| silent | true |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 1 | room | users | participant1 | 0 | null | Message 1 | comment | 1985514582 | {"threadTitle":"","silent":false,"threadId":0} |
|
||||
| Message 2 | room | users | participant1 | 0 | null | Message 2 | comment | 1985514584 | {"threadTitle":"","silent":true,"threadId":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 1 | users | participant1 | 0 | null | Message 1 | comment | 1985514582 | false |
|
||||
| Message 2 | users | participant1 | 0 | null | Message 2 | comment | 1985514584 | true |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
When user "participant1" deletes scheduled message "Message 1" from room "room" with 200
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 2 | room | users | participant1 | 0 | null | Message 2 | comment | 1985514584 | {"threadTitle":"","silent":true,"threadId":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 2 | users | participant1 | 0 | null | Message 2 | comment | 1985514584 | true |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
|
|
@ -119,8 +119,8 @@ Feature: chat-4/scheduling
|
|||
| message | Message 1 |
|
||||
| sendAt | 1985514582 |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 1 | room | users | participant1 | 0 | null | Message 1 | comment | 1985514582 | {"threadTitle":"","silent":false,"threadId":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 1 | users | participant1 | 0 | null | Message 1 | comment | 1985514582 | false |
|
||||
Then user "participant1" is participant of the following rooms (v4)
|
||||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
|
|
@ -131,19 +131,19 @@ Feature: chat-4/scheduling
|
|||
| id | type | hasScheduledMessages |
|
||||
| room | 2 | true |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 1 edited | room | users | participant1 | 0 | null | Message 1 edited | comment | 1985514582 | {"threadTitle":"","silent":false,"threadId":0,"lastEditedTime":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 1 edited | users | participant1 | 0 | null | Message 1 edited | comment | 1985514582 | false |
|
||||
When user "participant1" updates scheduled message "Message 1" in room "room" with 202
|
||||
| message | Message 1 edited |
|
||||
| sendAt | 1985514582 |
|
||||
| silent | true |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 1 edited | room | users | participant1 | 0 | null | Message 1 edited | comment | 1985514582 | {"threadTitle":"","silent":true,"threadId":0,"lastEditedTime":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 1 edited | users | participant1 | 0 | null | Message 1 edited | comment | 1985514582 | true |
|
||||
When user "participant1" updates scheduled message "Message 1" in room "room" with 400
|
||||
| message | Message 1 edited |
|
||||
| sendAt | 1985514582 |
|
||||
| threadTitle | Abcd |
|
||||
Then user "participant1" sees the following scheduled messages in room "room" with 200
|
||||
| id | roomId | actorType | actorId | threadId | parentId | message | messageType | sendAt | metaData |
|
||||
| Message 1 edited | room | users | participant1 | 0 | null | Message 1 edited | comment | 1985514582 | {"threadTitle":"","silent":true,"threadId":0,"lastEditedTime":0} |
|
||||
| id | actorType | actorId | threadId | parent | message | messageType | sendAt | silent |
|
||||
| Message 1 edited | users | participant1 | 0 | null | Message 1 edited | comment | 1985514582 | true |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue