Merge pull request #164 from php-flasher/feat/livewire-3

feat(laravel): add livewire v3 support
This commit is contained in:
Younes ENNAJI
2023-12-09 21:03:37 +01:00
committed by GitHub
2 changed files with 31 additions and 1 deletions
+1 -1
View File
@@ -44,7 +44,7 @@
"friendsofphp/php-cs-fixer": "^3.17",
"illuminate/routing": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0",
"illuminate/support": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0",
"livewire/livewire": "^2.12.3",
"livewire/livewire": "^2.12.3 || ^3.0",
"orchestra/testbench": "^2.0 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0",
"phpro/grumphp": "^1.16",
"phpstan/phpstan": "^1.10.16",
+30
View File
@@ -40,6 +40,7 @@ use Illuminate\Routing\Router;
use Illuminate\Support\Facades\Blade;
use Livewire\Component;
use Livewire\LivewireManager;
use Livewire\Mechanisms\HandleComponents\ComponentContext;
use Livewire\Response;
/**
@@ -221,6 +222,35 @@ final class FlasherServiceProvider extends ServiceProvider
return;
}
// Livewire v3
if (method_exists($livewire, 'componentHook')) {
$livewire->listen('dehydrate', function (Component $component, ComponentContext $context) {
if ($context->mounting || isset($context->effects['redirect'])) {
return;
}
/** @var FlasherInterface $flasher */
$flasher = app('flasher');
/** @var array{envelopes: Envelope[]} $data */
$data = $flasher->render(array(), 'array');
if (\count($data['envelopes']) > 0) {
$data['context']['livewire'] = array(
'id' => $component->getId(),
'name' => $component->getName(),
);
$context->addEffect('dispatches', array(array(
'name' => 'flasher:render',
'params' => $data,
)));
}
});
return;
}
$livewire->listen('component.dehydrate.subsequent', function (Component $component, Response $response) {
if (isset($response->effects['redirect'])) {
return;