mirror of
https://github.com/php-flasher/php-flasher.git
synced 2026-03-31 23:17:47 +01:00
Merge pull request #164 from php-flasher/feat/livewire-3
feat(laravel): add livewire v3 support
This commit is contained in:
+1
-1
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user