Skip to content

Commit 614bc70

Browse files
author
Arnaud Lier
authored
Add livewire component discovery solution. (#319)
* Create LivewireDiscoverSolution.php * Create MissingLivewireComponentSolutionProvider.php * Update IgnitionServiceProvider.php * Update MissingLivewireComponentSolutionProvider.php * Update LivewireDiscoverSolution.php * fixes
1 parent 97bfeb5 commit 614bc70

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed

src/IgnitionServiceProvider.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
use Facade\Ignition\SolutionProviders\MissingAppKeySolutionProvider;
4040
use Facade\Ignition\SolutionProviders\MissingColumnSolutionProvider;
4141
use Facade\Ignition\SolutionProviders\MissingImportSolutionProvider;
42+
use Facade\Ignition\SolutionProviders\MissingLivewireComponentSolutionProvider;
4243
use Facade\Ignition\SolutionProviders\MissingMixManifestSolutionProvider;
4344
use Facade\Ignition\SolutionProviders\MissingPackageSolutionProvider;
4445
use Facade\Ignition\SolutionProviders\RunningLaravelDuskInProductionProvider;
@@ -373,6 +374,7 @@ protected function getDefaultSolutions(): array
373374
UnknownValidationSolutionProvider::class,
374375
UndefinedPropertySolutionProvider::class,
375376
MissingMixManifestSolutionProvider::class,
377+
MissingLivewireComponentSolutionProvider::class,
376378
];
377379
}
378380

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Facade\Ignition\SolutionProviders;
4+
5+
use Facade\Ignition\Solutions\LivewireDiscoverSolution;
6+
use Facade\IgnitionContracts\HasSolutionsForThrowable;
7+
use Illuminate\Database\QueryException;
8+
use Livewire\Exceptions\ComponentNotFoundException;
9+
use Livewire\LivewireComponentsFinder;
10+
use Throwable;
11+
12+
class MissingLivewireComponentSolutionProvider implements HasSolutionsForThrowable
13+
{
14+
public function canSolve(Throwable $throwable): bool
15+
{
16+
if (! class_exists(ComponentNotFoundException::class)) {
17+
return false;
18+
}
19+
if (! class_exists(LivewireComponentsFinder::class)) {
20+
return false;
21+
}
22+
if (! $throwable instanceof ComponentNotFoundException) {
23+
return false;
24+
}
25+
26+
return true;
27+
}
28+
29+
public function getSolutions(Throwable $throwable): array
30+
{
31+
return [new LivewireDiscoverSolution('A livewire component was not found')];
32+
}
33+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
3+
namespace Facade\Ignition\Solutions;
4+
5+
use Facade\IgnitionContracts\RunnableSolution;
6+
use Livewire\LivewireComponentsFinder;
7+
8+
class LivewireDiscoverSolution implements RunnableSolution
9+
{
10+
private $customTitle;
11+
12+
public function __construct($customTitle = '')
13+
{
14+
$this->customTitle = $customTitle;
15+
}
16+
17+
public function getSolutionTitle(): string
18+
{
19+
return $this->customTitle;
20+
}
21+
22+
public function getSolutionDescription(): string
23+
{
24+
return 'You might have forgotten to discover your livewire components. You can discover your livewire components using `php artisan livewire:discover`.';
25+
}
26+
27+
public function getDocumentationLinks(): array
28+
{
29+
return [
30+
'Livewire: Artisan Commands' => 'https://laravel-livewire.com/docs/2.x/artisan-commands',
31+
];
32+
}
33+
34+
public function getRunParameters(): array
35+
{
36+
return [];
37+
}
38+
39+
public function getSolutionActionDescription(): string
40+
{
41+
return 'Pressing the button below will try to discover your components.';
42+
}
43+
44+
public function getRunButtonText(): string
45+
{
46+
return 'Run livewire components discover';
47+
}
48+
49+
public function run(array $parameters = [])
50+
{
51+
app(LivewireComponentsFinder::class)->build();
52+
}
53+
}

0 commit comments

Comments
 (0)