implement sending Emoji, pin or mute conversation

This commit is contained in:
2026-05-01 11:30:14 +03:30
parent 1121939c25
commit 7b2541dd35
11 changed files with 359 additions and 12 deletions

View File

@@ -6,11 +6,11 @@ use Database\Factories\ConversationFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Model;
#[Fillable(['created_by_id', 'type', 'name', 'description'])]
class Conversation extends Model
@@ -44,7 +44,7 @@ class Conversation extends Model
public function users(): BelongsToMany
{
return $this->belongsToMany(User::class, 'conversation_participants')
->withPivot(['role', 'joined_at', 'last_read_at', 'muted_until'])
->withPivot(['role', 'joined_at', 'last_read_at', 'muted_until', 'pinned_at'])
->withTimestamps();
}

View File

@@ -5,10 +5,10 @@ namespace App\Models;
use Database\Factories\ConversationParticipantFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[Fillable(['conversation_id', 'user_id', 'role', 'joined_at', 'last_read_at', 'muted_until'])]
#[Fillable(['conversation_id', 'user_id', 'role', 'joined_at', 'last_read_at', 'muted_until', 'pinned_at'])]
class ConversationParticipant extends Model
{
/** @use HasFactory<ConversationParticipantFactory> */
@@ -27,9 +27,20 @@ class ConversationParticipant extends Model
'joined_at' => 'datetime',
'last_read_at' => 'datetime',
'muted_until' => 'datetime',
'pinned_at' => 'datetime',
];
}
public function isMuted(): bool
{
return $this->muted_until !== null && $this->muted_until->isFuture();
}
public function isPinned(): bool
{
return $this->pinned_at !== null;
}
/**
* @return BelongsTo<Conversation, $this>
*/