openvk/Web/Events/NewMessageEvent.php

55 lines
1.6 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
2020-06-07 19:04:43 +03:00
namespace openvk\Web\Events;
2020-06-07 19:04:43 +03:00
use openvk\Web\Models\Entities\Message;
use openvk\Web\Models\Repositories\Messages;
2020-06-07 19:04:43 +03:00
class NewMessageEvent implements ILPEmitable
{
protected $payload;
public function __construct(Message $message)
2020-06-07 19:04:43 +03:00
{
$this->payload = $message->simplify();
}
public function getLongPoolSummary(): object
2020-06-07 19:04:43 +03:00
{
return (object) [
"type" => "newMessage",
"message" => $this->payload,
];
}
public function getVKAPISummary(int $userId): array
{
$msg = (new Messages())->get($this->payload["uuid"]);
$peer = $msg->getSender()->getId();
if ($peer === $userId) {
$peer = $msg->getRecipient()->getId();
}
/*
* Source:
* https://github.com/danyadev/longpoll-doc
*/
return [
4, # event type
$msg->getId(), # messageId
256, # checked for spam flag
$peer, # TODO calculate peer correctly
$msg->getSendTime()->timestamp(), # creation time in unix
$msg->getText(), # text (formatted)
[], # empty additional info
[], # empty attachments
$msg->getId() << 2, # id as random_id
$peer, # conversation id
0, # not edited yet
];
}
}