diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8f84f0..9c81a59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,9 @@ jobs: php: 8.4 laravel: 12 testbench: 10 - filament: 4 + filament: 5 + livewire: 4 + pest: 4 larastan: 3 pint: 1 @@ -43,6 +45,11 @@ jobs: composer --version composer require "laravel/framework:${{ env.laravel }}.*" --no-interaction --no-update composer require "orchestra/testbench:${{ env.testbench }}.*" --no-interaction --no-update --dev + composer require "filament/filament:${{ env.filament }}.*" --no-interaction --no-update + composer require "livewire/livewire:${{ env.livewire }}.*" --no-interaction --no-update + composer require "pestphp/pest:${{ env.pest }}.*" --no-interaction --no-update --dev + composer require "pestphp/pest-plugin-laravel:${{ env.pest }}.*" --no-interaction --no-update --dev + composer require "pestphp/pest-plugin-livewire:${{ env.pest }}.*" --no-interaction --no-update --dev composer require "larastan/larastan:${{ env.larastan }}.*" --no-interaction --no-update --dev composer require "laravel/pint:${{ env.pint }}.*" --no-interaction --no-update --dev composer update --prefer-dist --no-interaction @@ -59,7 +66,9 @@ jobs: php: 8.4 laravel: 12 testbench: 10 - filament: 4 + filament: 5 + livewire: 4 + pest: 4 larastan: 3 pint: 1 @@ -89,6 +98,11 @@ jobs: composer --version composer require "laravel/framework:${{ env.laravel }}.*" --no-interaction --no-update composer require "orchestra/testbench:${{ env.testbench }}.*" --no-interaction --no-update --dev + composer require "filament/filament:${{ env.filament }}.*" --no-interaction --no-update + composer require "livewire/livewire:${{ env.livewire }}.*" --no-interaction --no-update + composer require "pestphp/pest:${{ env.pest }}.*" --no-interaction --no-update --dev + composer require "pestphp/pest-plugin-laravel:${{ env.pest }}.*" --no-interaction --no-update --dev + composer require "pestphp/pest-plugin-livewire:${{ env.pest }}.*" --no-interaction --no-update --dev composer require "larastan/larastan:${{ env.larastan }}.*" --no-interaction --no-update --dev composer require "laravel/pint:${{ env.pint }}.*" --no-interaction --no-update --dev composer update --prefer-dist --no-interaction --no-suggest --dev @@ -108,19 +122,27 @@ jobs: matrix: php: [8.3, 8.4] laravel: [11, 12] + filament: [4, 5] + exclude: + - laravel: 11 + filament: 5 include: - laravel: 11 testbench: 9 - filament: 4 larastan: 3 pint: 1 - laravel: 12 testbench: 10 - filament: 4 larastan: 3 pint: 1 - - name: Tests - PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} + - filament: 4 + livewire: 3 + pest: 3 + - filament: 5 + livewire: 4 + pest: 4 + + name: Tests - PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - Filament ${{ matrix.filament }} steps: - name: Checkout code uses: actions/checkout@v4 @@ -146,6 +168,11 @@ jobs: composer --version composer require "laravel/framework:${{ matrix.laravel }}.*" --no-interaction --no-update composer require "orchestra/testbench:${{ matrix.testbench }}.*" --no-interaction --no-update --dev + composer require "filament/filament:${{ matrix.filament }}.*" --no-interaction --no-update + composer require "livewire/livewire:${{ matrix.livewire }}.*" --no-interaction --no-update + composer require "pestphp/pest:${{ matrix.pest }}.*" --no-interaction --no-update --dev + composer require "pestphp/pest-plugin-laravel:${{ matrix.pest }}.*" --no-interaction --no-update --dev + composer require "pestphp/pest-plugin-livewire:${{ matrix.pest }}.*" --no-interaction --no-update --dev composer require "larastan/larastan:${{ matrix.larastan }}.*" --no-interaction --no-update --dev composer require "laravel/pint:${{ matrix.pint }}.*" --no-interaction --no-update --dev composer update --prefer-dist --no-interaction --no-suggest --dev diff --git a/composer.json b/composer.json index 2c5aa45..57cd4c9 100644 --- a/composer.json +++ b/composer.json @@ -25,10 +25,10 @@ "league/html-to-markdown": "^5.1", "illuminate/support": "^11.0|^12.0", "illuminate/database": "^11.0|^12.0", - "livewire/livewire": "^3.5", - "filament/support": "^3.2|^4.0", - "filament/notifications": "^3.2|^4.0", - "filament/filament": "^3.2|^4.0" + "livewire/livewire": "^3.5|^4.0", + "filament/support": "^3.2|^4.0|^5.0", + "filament/notifications": "^3.2|^4.0|^5.0", + "filament/filament": "^3.2|^4.0|^5.0" }, "extra": { "laravel": { @@ -38,13 +38,14 @@ } }, "require-dev": { - "pestphp/pest": "^3.7", + "pestphp/pest": "^3.7|^4.0", "illuminate/auth": "^11.0|^12.0", "orchestra/testbench": "^9.9|^10.0", - "pestphp/pest-plugin-laravel": "^3.1", - "pestphp/pest-plugin-livewire": "^3.0", + "pestphp/pest-plugin-laravel": "^3.1|^4.0", + "pestphp/pest-plugin-livewire": "^3.0|^4.0", "laravel/pint": "^1.21", - "larastan/larastan": "^3.0" + "larastan/larastan": "^3.0", + "filament/upgrade": "^5.0" }, "config": { "allow-plugins": { diff --git a/src/CommentionsServiceProvider.php b/src/CommentionsServiceProvider.php index 4dc3b75..1663849 100644 --- a/src/CommentionsServiceProvider.php +++ b/src/CommentionsServiceProvider.php @@ -2,6 +2,7 @@ namespace Kirschbaum\Commentions; +use Composer\InstalledVersions; use Filament\Support\Assets\Css; use Filament\Support\Assets\Js; use Filament\Support\Facades\FilamentAsset; @@ -44,11 +45,15 @@ public function configurePackage(Package $package): void public function packageBooted(): void { - Livewire::component('commentions::comment', Comment::class); - Livewire::component('commentions::comment-list', CommentList::class); - Livewire::component('commentions::comments', Comments::class); - Livewire::component('commentions::reactions', Reactions::class); - Livewire::component('commentions::subscription-sidebar', SubscriptionSidebar::class); + if ($this->isLivewireV4()) { + Livewire::addNamespace('commentions', classNamespace: __NAMESPACE__ . '\\Livewire'); + } else { + Livewire::component('commentions::comment', Comment::class); + Livewire::component('commentions::comment-list', CommentList::class); + Livewire::component('commentions::comments', Comments::class); + Livewire::component('commentions::reactions', Reactions::class); + Livewire::component('commentions::subscription-sidebar', SubscriptionSidebar::class); + } FilamentAsset::register( [ @@ -76,4 +81,13 @@ public function packageBooted(): void Event::listen(UserWasMentionedEvent::class, $listenerClass); } } + + protected function isLivewireV4(): bool + { + return version_compare( + InstalledVersions::getVersion('livewire/livewire') ?? '0.0', + '4.0', + '>=' + ); + } }