src/Chat.php
<?php namespace Musonza\Chat; use Musonza\Chat\Models\Conversation;use Musonza\Chat\Models\MessageNotification;use Musonza\Chat\Services\ConversationService;use Musonza\Chat\Services\MessageService;use Musonza\Chat\Traits\SetsParticipants; class Chat{ use SetsParticipants; /** * @var MessageService */ protected $messageService; /** * @var ConversationService */ protected $conversationService; /** * @var MessageNotification */ protected $messageNotification; /** * @param MessageService $messageService * @param ConversationService $conversationService * @param MessageNotification $messageNotification */ public function __construct( MessageService $messageService, ConversationService $conversationService, MessageNotification $messageNotification ) { $this->messageService = $messageService; $this->conversationService = $conversationService; $this->messageNotification = $messageNotification; } /** * Creates a new conversation. * * @param array $participants * @param array $data * * @return Conversation */ public function createConversation(array $participants, array $data = []) { $payload = [ 'participants' => $participants, 'data' => $data, 'direct_message' => $this->conversationService->directMessage, ]; return $this->conversationService->start($payload); } public function makeDirect() { $this->conversationService->directMessage = true; return $this; } /** * Sets message. * * @param string $message * * @return MessageService */ public function message($message) { return $this->messageService->setMessage($message); } /** * Gets MessageService. * * @return MessageService */ public function messages() { return $this->messageService; } /** * Sets Conversation. * * @param Conversation $conversation * * @return ConversationService */ public function conversation(Conversation $conversation) { return $this->conversationService->setConversation($conversation); } /** * Gets ConversationService. * * @return ConversationService */ public function conversations() { return $this->conversationService; } /** * Get unread notifications. * * @return MessageNotification */ public function unReadNotifications() { return $this->messageNotification->unReadNotifications($this->participant); } /** * Should the messages be broadcasted. * * @return bool */ public static function broadcasts() { return config('musonza_chat.broadcasts'); } public static function sentMessageEvent() { return config('musonza_chat.sent_message_event'); } public static function senderFieldsWhitelist() { $fields = config('musonza_chat.sender_fields_whitelist', []); return (is_array($fields) && !empty($fields)) ? $fields : null; }}