Skip to content

Commit

Permalink
Add metas column to Message (#22)
Browse files Browse the repository at this point in the history
* Add metas column to Message

* updated `WhereHasLastMessage` query with `type` column

* added token to message request validator

* suspended passing type prop

* updated WhereHasLastMessage query with type column

* added token to message request validator

* suspended passing type prop

* Added metas to create message

* removed metas ref

* formatting

Co-authored-by: Michael Ishola <[email protected]>
  • Loading branch information
hmreumann and myckhel authored Jul 1, 2021
1 parent a86bcac commit 8830185
Show file tree
Hide file tree
Showing 10 changed files with 9 additions and 183 deletions.
1 change: 0 additions & 1 deletion config/chat-system.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"conversation_user" => "Myckhel\\ChatSystem\\Models\\ConversationUser",
"message" => "Myckhel\\ChatSystem\\Models\\Message",
"chat_event" => "Myckhel\\ChatSystem\\Models\\ChatEvent",
"meta" => "Myckhel\\ChatSystem\\Models\\Meta",
],

/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public function up()
$table->nullableMorphs('reply');
$table->text('message')->nullable();
$table->enum('type', ['user', 'system', 'activity'])->default('user')->index();
$table->json('metas')->nullable();
$table->timestamps();
});
}
Expand Down
35 changes: 0 additions & 35 deletions database/migrations/2021_04_06_181727_create_metas_table.php

This file was deleted.

1 change: 0 additions & 1 deletion src/Events/Message/Created.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ public function broadcastAs() {
}

function broadcastWith() {
$this->message->metas->keyValue();
return [
'message' => $this->message,
];
Expand Down
15 changes: 3 additions & 12 deletions src/Http/Controllers/MessageController.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,8 @@ public function index(PaginableRequest $request)
// ->withUrls(['image', 'videos'])
->whereConversationWasntDeleted($user)
->with($with)->latest()
->metas(['token'])
->paginate($request->pageSize);

$messages->map(fn ($msg) => $msg->metas->keyValue());

// $messages->withUrls(['image', 'videos']);
return $messages;
}
Expand Down Expand Up @@ -100,6 +97,7 @@ public function store(Request $request)
'other_user_id' => ['int', Rule::requiredIf(fn () => !$request->conversation_id)],
'message' => '',
'reply_id' => 'int',
'token' => 'string',
'reply_type' => [
Rule::requiredIf(fn () => $request->reply_id),
"in:".Config::config('models.message'),
Expand All @@ -125,10 +123,7 @@ public function store(Request $request)
$message = $conversation->messages()
->when(
$token,
fn ($q) => $q->whereHas('metas', fn ($q) =>
$q->whereMetableType(Config::config('models.message'))
->whereName('token')->whereValue($token)
),
fn ($q) => $q->where('metas->token', $token),
fn ($q) => $q->whereNull('id')
)
->firstOrCreate([],
Expand All @@ -138,24 +133,20 @@ public function store(Request $request)
'user_id' => $user->id,
'message' => $request->message,
'type' => $type ?? 'user',
'metas' => $token ? ['token' => $token] : null,
]
);
$message->loadMorph('reply', [
Config::config('models.message') => ['reply'],
]);

if ($message->wasRecentlyCreated) {
if ($token) {
$meta = ['name' => 'token', 'value' => $token];
$message->addMeta($meta, $meta);
}

// $message->saveImage($image, 'image');
// $message->saveVideo($videos, 'videos');

broadcast(new Created($message));

$token && $message->metas->keyValue();
// $otherUser->notify(new CreatedMessage($message, $user));
}

Expand Down
2 changes: 1 addition & 1 deletion src/Models/Conversation.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ protected static function newFactory(){

function scopeWhereHasLastMessage($q, $user = null) {
$q->whereHas('last_message', fn ($q) =>
$q->whereDoesntHave('metas', fn ($q) => $q->whereName('system'))
$q->where('type', '!=', 'system')
->whereConversationWasntDeleted($user)
);
}
Expand Down
7 changes: 3 additions & 4 deletions src/Models/Message.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,14 @@
use Carbon\Carbon;
use Myckhel\ChatSystem\Traits\ChatEvent\HasChatEvent;
use Myckhel\ChatSystem\Contracts\ChatEventMaker;
use Myckhel\ChatSystem\Traits\HasMeta;
use Myckhel\ChatSystem\Database\Factories\MessageFactory;
use Myckhel\ChatSystem\Traits\Config;

class Message extends Model
{
use HasFactory, HasChatEvent, HasMeta, Config;
protected $fillable = ['conversation_id', 'user_id', 'reply_id', 'reply_type', 'message', 'type'];
protected $casts = ['conversation_id' => 'int', 'reply_id' => 'int', 'user_id' => 'int'];
use HasFactory, HasChatEvent, Config;
protected $fillable = ['conversation_id', 'user_id', 'reply_id', 'reply_type', 'message', 'type', 'metas'];
protected $casts = ['conversation_id' => 'int', 'reply_id' => 'int', 'user_id' => 'int', 'metas' => 'array'];
protected $searches = ['message'];
protected $appends = ['isSender'];
protected $hidden = ['media'];
Expand Down
37 changes: 0 additions & 37 deletions src/Models/Meta.php

This file was deleted.

91 changes: 0 additions & 91 deletions src/Traits/HasMeta.php

This file was deleted.

2 changes: 1 addition & 1 deletion src/Traits/Message/HasMessage.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ trait HasMessage
function messages($conversation = null, $otherUser = null, Array $reply = [], $type = 'private'){
if ($type == 'private') {
if ($conversation || $otherUser) {
$conversation = $this->conversations($conversation, $otherUser, type: [$type])->first();
$conversation = $this->conversations($conversation, $otherUser)->first();
// if conversation doesnt exist and add participant
if (!$conversation) {
$conversation = $this->conversations()->create([
Expand Down

0 comments on commit 8830185

Please sign in to comment.