46 lines
1.1 KiB
PHP
46 lines
1.1 KiB
PHP
<?php
|
|
|
|
// app/Http/Livewire/OnlineUsersList.php
|
|
namespace App\Http\Livewire;
|
|
|
|
use App\Services\PresenceService;
|
|
use Livewire\Attributes\On;
|
|
use Livewire\Component;
|
|
|
|
class OnlineUsersList extends Component
|
|
{
|
|
public $onlineUsers = [];
|
|
public $guard = 'web';
|
|
public $showCount = true;
|
|
public $showAvatars = true;
|
|
public $maxDisplay = 10;
|
|
public $refreshInterval = 10;
|
|
|
|
public function mount($guard = 'web', $showCount = true, $showAvatars = true, $maxDisplay = 10)
|
|
{
|
|
$this->guard = $guard;
|
|
$this->showCount = $showCount;
|
|
$this->showAvatars = $showAvatars;
|
|
$this->maxDisplay = $maxDisplay;
|
|
$this->loadOnlineUsers();
|
|
}
|
|
|
|
public function loadOnlineUsers()
|
|
{
|
|
try {
|
|
$presenceService = app(PresenceService::class);
|
|
$users = $presenceService->getOnlineUsers($this->guard);
|
|
|
|
// Limit the display count
|
|
$this->onlineUsers = $users->take($this->maxDisplay)->toArray();
|
|
} catch (\Exception $e) {
|
|
$this->onlineUsers = [];
|
|
}
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.online-users-list');
|
|
}
|
|
}
|