Files
filament-whatsapp-conector/src/Filament/Resources/WhatsappInstanceResource/Pages/ListWhatsappInstances.php
Wallace Martins 3bf496e8a9 feat: initial release v0.1.0
- Evolution API v2 integration with full HTTP client
- WhatsApp instance management (Create, Connect, Delete, LogOut, Restart)
- Real-time QR Code display with Alpine.js countdown timer
- Pairing code support for WhatsApp Web linking
- Webhook endpoint for receiving Evolution API events
- Complete instance settings (reject calls, always online, read messages, etc.)
- Filament v4 Resource with modal QR Code after instance creation
- Table actions for Connect, View, and Edit
- Status badges with Filament's native components
- Full translations support (English and Portuguese)
- Native Filament multi-tenancy support
- DTOs with Spatie Laravel Data for type safety
- Laravel Events for extensibility
- Background job processing for webhooks and messages
- Comprehensive configuration file
2025-12-07 10:14:40 -03:00

64 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace WallaceMartinss\FilamentEvolution\Filament\Resources\WhatsappInstanceResource\Pages;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
use Livewire\Attributes\On;
use Livewire\Attributes\Url;
use WallaceMartinss\FilamentEvolution\Filament\Resources\WhatsappInstanceResource;
use WallaceMartinss\FilamentEvolution\Models\WhatsappInstance;
class ListWhatsappInstances extends ListRecords
{
protected static string $resource = WhatsappInstanceResource::class;
protected string $view = 'filament-evolution::filament.pages.list-whatsapp-instances';
#[Url(except: '')]
public ?string $connectInstanceId = null;
public ?WhatsappInstance $connectInstance = null;
public bool $showQrCodeModal = false;
public function mount(): void
{
parent::mount();
if ($this->connectInstanceId) {
$this->openConnectModal($this->connectInstanceId);
}
}
public function openConnectModal(string $instanceId): void
{
$this->connectInstance = WhatsappInstance::find($instanceId);
$this->showQrCodeModal = true;
$this->dispatch('open-modal', id: 'qr-code-modal');
}
public function closeConnectModal(): void
{
$this->showQrCodeModal = false;
$this->connectInstance = null;
$this->connectInstanceId = null;
}
#[On('instance-connected')]
public function handleInstanceConnected(): void
{
$this->closeConnectModal();
$this->dispatch('close-modal', id: 'qr-code-modal');
}
protected function getHeaderActions(): array
{
return [
CreateAction::make(),
];
}
}