the browser-facing portion of osu!
at master 54 lines 1.5 kB view raw
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}