all-messages chat source (PR #11) expands use cases beyond 1:1/group chats to system-wide message boards or global announcements, aligning with Filament’s resource-agnostic design. Requires careful scoping to avoid performance pitfalls (e.g., flooding users with unrelated messages).spatie-laravel-media-library-plugin, but require validation if using custom Spatie configurations (e.g., non-standard disk drivers).conversations, messages).all-messages source enables cross-resource messaging (e.g., tying chats to Filament records like posts or tickets). Implementation requires:
ChatSource::make('all-messages')->forModel(Post::class)).spatie-laravel-media-library-plugin if both are configured for Filament resources. Test asset pipeline overlaps (e.g., duplicate media tables).reverb:metrics for spikes.all-messages chats may require TTL policies or archiving strategies.all-messages chats.all-messages be scoped (e.g., per-team, per-project)? Will it replace or complement existing sources?all-messages? Are read receipts needed at scale?spatie-laravel-media-library-plugin already in use? If yes, test for conflicting migrations or duplicate media metadata.all-messages affect broadcasting costs (e.g., Pusher/Reverb pricing)?chat.system.messages).REVERB_RATE_LIMIT to prevent abuse.spatie-laravel-media-library-plugin v2.x. Verify:
public vs. private disks).ffmpeg, imagick) are enabled for thumbnails.vue-draggable).spatie/laravel-media-library and spatie/laravel-media-library-plugin are within the new version constraints (check composer.json).filament-chat:
composer update zedmagdy/filament-chat --with-dependencies
php artisan migrate
filament-chat migrations for index additions or column changes.filament-chat.php to enable all-messages source:
'sources' => [
'default' => [
'driver' => 'filament-chat',
],
'all_messages' => [
'driver' => 'filament-chat',
'type' => 'all-messages',
'scoped_to' => Post::class, // Optional: tie to a Filament resource
],
],
'media' => [
'disk' => 'public',
'thumbnails' => true, // Enable if using Spatie's image manipulation
],
->widgets([
\ZedMagdy\FilamentChat\Widgets\ChatWidget::class,
])
->resources([
// Ensure resources using `all-messages` are accessible
]),
all-messages, extend a Filament resource with chat actions:
use ZedMagdy\FilamentChat\Actions\ViewAllMessagesAction;
public static function getActions(): array
{
return [
ViewAllMessagesAction::make(),
];
}
resources/js/bootstrap.js to handle media-only messages:
Echo.channel('chat.all-messages')
.listen('MessageSent', (e) => {
if (e.message.isMediaOnly) {
// Custom logic for media previews
}
});
<input type="file" @change="handleMediaUpload" multiple>
Post resource).spatie-laravel-media-library-plugin may duplicate media management. Audit:
HandleMedia middleware.media-library::...).How can I help you explore Laravel packages today?