Laravel AT Protocol Client (alpha & unstable)
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}