Skip to content

Events ​

All events live in Hoceineel\FilamentMediaLibrary\Events and carry one public property, $item, the MediaItem model. They use Dispatchable and SerializesModels, so a queued listener works.

EventFired whenPayload
MediaItemUploadedA file is stored in the library, by upload, URL import, the picker or media-library:import.public MediaItem $item
MediaItemDeletedFiles are deleted from the browser, including a move to the trash. It fires once per item.public MediaItem $item
MediaItemReplacedA file's content is swapped: replace file, save an edit over the original, or restore a version.public MediaItem $item

MediaItemDeleted also fires for a soft delete, so check $event->item->trashed() to tell trash from permanent removal. media-library:prune removes files directly and does not fire it.

Listening ​

Laravel discovers listeners by their type-hinted handle method:

php
namespace App\Listeners;

use Hoceineel\FilamentMediaLibrary\Events\MediaItemUploaded;
use Illuminate\Contracts\Queue\ShouldQueue;

class NotifyAssetTeam implements ShouldQueue
{
    public function handle(MediaItemUploaded $event): void
    {
        logger()->info('New asset', [
            'name' => $event->item->name,
            'size' => $event->item->humanSize(),
            'uploaded_by' => $event->item->uploaded_by,
        ]);
    }
}

Or register one explicitly:

php
use Hoceineel\FilamentMediaLibrary\Events\MediaItemReplaced;
use Illuminate\Support\Facades\Event;

Event::listen(MediaItemReplaced::class, function (MediaItemReplaced $event): void {
    Cache::forget("asset-{$event->item->getKey()}");
});

Use MediaItemReplaced to clear CDN or page caches, because the file URL stays the same when the content changes.

Commercial licence. One licence per production project. Terms · Privacy · Refunds