diff --git a/src/Filament/Resources/ShortUrlResource/Pages/ListShortUrls.php b/src/Filament/Resources/ShortUrlResource/Pages/ListShortUrls.php index 37f4137..4f59a78 100644 --- a/src/Filament/Resources/ShortUrlResource/Pages/ListShortUrls.php +++ b/src/Filament/Resources/ShortUrlResource/Pages/ListShortUrls.php @@ -4,10 +4,13 @@ namespace Bjanczak\FilamentShortUrl\Filament\Resources\ShortUrlResource\Pages; use Bjanczak\FilamentShortUrl\Filament\Resources\ShortUrlResource; use Bjanczak\FilamentShortUrl\Filament\Resources\ShortUrlResource\Widgets\ShortUrlGlobalOverview; +use Bjanczak\FilamentShortUrl\Models\ShortUrl; use Bjanczak\FilamentShortUrl\Services\ShortUrlService; use Filament\Actions\Action; use Filament\Actions\CreateAction; +use Filament\Forms; use Filament\Resources\Pages\ManageRecords; +use Illuminate\Support\HtmlString; class ListShortUrls extends ManageRecords { @@ -30,12 +33,118 @@ class ListShortUrls extends ManageRecords ->color('primary') ->modalWidth('4xl') ->mutateFormDataUsing(function (array $data): array { - // Auto-generate key if not provided if (empty($data['url_key'])) { $data['url_key'] = app(ShortUrlService::class)->generateKey(); } return $data; + }) + ->after(function (ShortUrl $record): void { + $this->mountAction('shareAfterCreate', [ + 'shortUrl' => $record->getShortUrl(), + 'urlKey' => $record->url_key, + 'destHost' => parse_url($record->destination_url, PHP_URL_HOST) ?? '', + ]); + }), + + // Hidden action — opened programmatically after create + Action::make('shareAfterCreate') + ->label('') + ->hidden() + ->modalHeading('') + ->modalWidth('lg') + ->modalSubmitAction(false) + ->modalCancelAction(false) + ->form(function (array $arguments): array { + $shortUrl = $arguments['shortUrl'] ?? ''; + $destHost = $arguments['destHost'] ?? ''; + $encoded = urlencode($shortUrl); + $eid = 'fsu_'.substr(md5($shortUrl), 0, 8); + + $html = << + +
Time to get some clicks 🎉
+Copy and share manually or choose a platform.
+