Files
ai-stylegallery/app/Filament/Resources/ApiProviders/Pages/EditApiProvider.php

65 lines
2.1 KiB
PHP

<?php
namespace App\Filament\Resources\ApiProviders\Pages;
use App\Api\Plugins\PluginLoader;
use App\Filament\Resources\ApiProviders\ApiProviderResource;
use Filament\Actions;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
use Livewire\Attributes\On;
class EditApiProvider extends EditRecord
{
public $testResultState = 'none';
protected static string $resource = ApiProviderResource::class;
#[On('testConnectionFinished')]
public function onTestConnectionFinished($result)
{
$this->testResultState = $result;
}
protected function getHeaderActions(): array
{
return [
Action::make('test_connection')
->label('Verbindung testen')
->icon('heroicon-o-bolt')
->color('gray')
->action(function (): void {
try {
$provider = $this->record;
$plugin = PluginLoader::getPlugin($provider->plugin, $provider);
$plugin->testConnection($provider->toArray());
Notification::make()
->title('Verbindung erfolgreich')
->success()
->send();
} catch (\Throwable $e) {
Notification::make()
->title('Verbindung fehlgeschlagen')
->body($e->getMessage())
->danger()
->send();
}
}),
Action::make('dashboard')
->label('Provider Dashboard')
->icon('heroicon-o-arrow-top-right-on-square')
->visible(fn () => $this->record?->getDashboardUrl())
->url(fn () => $this->record?->getDashboardUrl())
->openUrlInNewTab(),
Actions\DeleteAction::make(),
];
}
protected function getRedirectUrl(): string
{
return $this->getResource()::getUrl('index');
}
}