1<?php
2
3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
4// See the LICENCE file in the repository root for full licence text.
5
6namespace App\Transformers\Chat;
7
8use App\Models\Chat\Message;
9use App\Models\DeletedUser;
10use App\Transformers\TransformerAbstract;
11use App\Transformers\UserCompactTransformer;
12
13class MessageTransformer extends TransformerAbstract
14{
15 protected array $availableIncludes = [
16 'sender',
17 ];
18
19 public function transform(Message $message)
20 {
21 $type = $message->is_action
22 ? 'action'
23 : ($message->channel->isAnnouncement() ? 'markdown' : 'plain');
24
25 $response = [
26 'channel_id' => $message->channel_id,
27 'content' => $message->content,
28 'is_action' => $message->is_action, // maybe deprecate?
29 'message_id' => $message->message_id,
30 'sender_id' => $message->user_id,
31 'timestamp' => $message->timestamp_json,
32 'type' => $type,
33 ];
34
35 if ($message->uuid !== null) {
36 $response['uuid'] = $message->uuid;
37 }
38
39 return $response;
40 }
41
42 public function includeSender(Message $message)
43 {
44 return $this->item(
45 $message->sender ?? (new DeletedUser()),
46 new UserCompactTransformer()
47 );
48 }
49
50 public function includeUuid(Message $message)
51 {
52 return $this->primitive($message->uuid);
53 }
54}