diff --git a/app/Livewire/Messages.php b/app/Livewire/Messages.php index 0cb10f3..9597ebe 100644 --- a/app/Livewire/Messages.php +++ b/app/Livewire/Messages.php @@ -30,10 +30,10 @@ public function mount(): void } public function openChat($id): void -{ - $this->selectedUser = User::find($id); - $this->messages = $this->loggedInUser->messages()->where('receiver_id', $id)->orWhere('sender_id', $id)->orderBy('created_at', 'asc')->get(); -} + { + $this->selectedUser = User::find($id); + $this->messages = $this->loggedInUser->messages()->where('receiver_id', $id)->orWhere('sender_id', $id)->orderBy('created_at', 'asc')->get(); + } //sendMessage public function sendMessage(): void @@ -56,8 +56,11 @@ public function render(): View return view('messages', [ 'clients' => User::where('role', 'client') - ->where('name', 'like', '%' . $this->search . '%')->orWhere('email', 'like', '%' . $this->search . '%') - ->get() + ->where(function ($query) { + $query->where('name', 'like', '%' . $this->search . '%') + ->orWhere('email', 'like', '%' . $this->search . '%'); + }) + ->get() ] ); } diff --git a/app/Livewire/SendMessageInput.php b/app/Livewire/SendMessageInput.php index e3912e9..6dc55b7 100644 --- a/app/Livewire/SendMessageInput.php +++ b/app/Livewire/SendMessageInput.php @@ -2,11 +2,25 @@ namespace App\Livewire; +use App\Models\User; +use Illuminate\View\View; use Livewire\Component; +use Livewire\WithFileUploads; class SendMessageInput extends Component { - public function render() + use WithFileUploads; + + public $message; + public array $attachments = []; + public User $recipient; + + public function mount($selectedUser): void + { + $this->recipient = $selectedUser; + } + + public function render(): View { return view('livewire.send-message-input'); } diff --git a/app/Models/User.php b/app/Models/User.php index d8c7ad6..94c4cd3 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -44,9 +44,12 @@ public function referrals(): HasMany return $this->hasMany(Referral::class, 'referrer_id'); } + //https://api.dicebear.com/8.x/pixel-art/svg?seed={{md5($this->email)}} + // https://mighty.tools/mockmind-api/content/cartoon/' . $this->id. '.jpg + public function getAvatarAttribute(): string { - return 'https://mighty.tools/mockmind-api/content/cartoon/' . $this->id. '.jpg'; + return 'https://api.dicebear.com/8.x/avataaars/svg?seed=' . $this->name; } public function getProfilePhotoAttribute(): string diff --git a/resources/views/messages.blade.php b/resources/views/messages.blade.php index ed541e0..0a2024b 100644 --- a/resources/views/messages.blade.php +++ b/resources/views/messages.blade.php @@ -24,11 +24,11 @@ class="w-12 h-12 rounded-full"> <div class="h-full flex flex-col overflow-y-auto"> @if ($messages->count() == 0) <div class="flex items-center flex-col justify-center h-full"> - <i class="fa-regular fa-bell-slash text-4xl text-gray-500"></i> + <i class="far fa-bell-slash text-4xl text-gray-500"></i> <p class="text-gray-500">No messages yet.</p> </div> @else - <div class="p-6 space-y-4"> + <div class="space-y-4"> @foreach($messages as $message) <livewire:DisplayChatMessage :message="$message" :key="$message->id"/> @endforeach @@ -51,7 +51,7 @@ class="w-12 h-12 rounded-full"> <!-- Search --> <div class="flex sticky flex-col rounded-lg"> <div class="flex relative gap-3 bg-gray-100 rounded-lg"> - <input type="text" wire:model.live="search" placeholder="Type to search ..." + <input name="search" id="searchInput" type="text" wire:model.live="search" placeholder="Type to search ..." class="w-full p-2 rounded-lg border border-gray-200 focus:outline-none"> <div class="absolute text-black/80 right-5 top-[50%] transform translate-x-1/2 -translate-y-1/2"> @@ -67,7 +67,7 @@ class="absolute text-black/80 right-5 top-[50%] transform translate-x-1/2 -trans wire:click="openChat({{ $user->id }})"> <div class=""> <img src="{{ $user->profile_photo }}" alt="{{ $user->name }}" - class="w-12 h-12 rounded-full"> + class="w-12 h-12 bg-white rounded-full"> </div> <div class="w-2/3"> <h1 class="text-gray-800 font-semibold">{{ $user->name }}</h1>