63 lines
1.3 KiB
PHP
63 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire;
|
|
|
|
use App\Models\ZEmail;
|
|
use Livewire\Component;
|
|
use Livewire\WithPagination;
|
|
|
|
class EmailInbox extends Component
|
|
{
|
|
use WithPagination;
|
|
|
|
public $currentEmail;
|
|
public $messages = [];
|
|
public $selectedMessage = null;
|
|
public $searchTerm = '';
|
|
public $refreshInterval = 30; // seconds
|
|
|
|
public function mount()
|
|
{
|
|
$this->currentEmail = ZEmail::getEmail();
|
|
$this->loadMessages();
|
|
}
|
|
|
|
public function loadMessages()
|
|
{
|
|
if ($this->currentEmail) {
|
|
$this->messages = ZEmail::getMessages($this->currentEmail);
|
|
}
|
|
}
|
|
|
|
public function selectMessage($messageId)
|
|
{
|
|
$this->selectedMessage = $messageId;
|
|
}
|
|
|
|
public function deleteMessage($messageId)
|
|
{
|
|
ZEmail::deleteMessage($messageId);
|
|
$this->loadMessages();
|
|
$this->selectedMessage = null;
|
|
}
|
|
|
|
public function generateNewEmail()
|
|
{
|
|
$this->currentEmail = ZEmail::generateRandomEmail();
|
|
$this->loadMessages();
|
|
}
|
|
|
|
public function getPollingInterval()
|
|
{
|
|
return $this->refreshInterval * 1000; // Convert to milliseconds
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.email-inbox', [
|
|
'messages' => $this->messages,
|
|
'currentEmail' => $this->currentEmail
|
|
]);
|
|
}
|
|
}
|