Laravel AT Protocol Client (alpha & unstable)
at dev 46 lines 1.4 kB view raw
1<?php 2 3namespace SocialDept\AtpClient\Data\Responses\Chat\Convo; 4 5use Illuminate\Contracts\Support\Arrayable; 6use Illuminate\Support\Collection; 7use SocialDept\AtpSchema\Generated\Chat\Bsky\Convo\Defs\DeletedMessageView; 8use SocialDept\AtpSchema\Generated\Chat\Bsky\Convo\Defs\MessageView; 9 10/** 11 * @implements Arrayable<string, mixed> 12 */ 13class GetMessagesResponse implements Arrayable 14{ 15 /** 16 * @param Collection<int, MessageView|DeletedMessageView> $messages 17 */ 18 public function __construct( 19 public readonly Collection $messages, 20 public readonly ?string $cursor = null, 21 ) {} 22 23 public static function fromArray(array $data): self 24 { 25 return new self( 26 messages: collect($data['messages'] ?? [])->map( 27 function (array $message) { 28 if (isset($message['$type']) && $message['$type'] === 'chat.bsky.convo.defs#deletedMessageView') { 29 return DeletedMessageView::fromArray($message); 30 } 31 32 return MessageView::fromArray($message); 33 } 34 ), 35 cursor: $data['cursor'] ?? null, 36 ); 37 } 38 39 public function toArray(): array 40 { 41 return [ 42 'messages' => $this->messages->map(fn (MessageView|DeletedMessageView $m) => $m->toArray())->all(), 43 'cursor' => $this->cursor, 44 ]; 45 } 46}