diff --git a/src/Override/DefaultOverride.php b/src/Override/DefaultOverride.php index 35e2254..f4ba6f9 100644 --- a/src/Override/DefaultOverride.php +++ b/src/Override/DefaultOverride.php @@ -82,6 +82,7 @@ public function recordRequest($request): bool '_debugbar*', '__clockwork*', '_ignition/*', + '*livewire.min.js*' ]; foreach ($ignore as $ignored ) { diff --git a/src/Recorders/RequestRecorder.php b/src/Recorders/RequestRecorder.php index edb6576..4479265 100644 --- a/src/Recorders/RequestRecorder.php +++ b/src/Recorders/RequestRecorder.php @@ -5,6 +5,7 @@ use BinaryBuilds\LaritorClient\Helpers\DataHelper; use BinaryBuilds\LaritorClient\Helpers\FilterHelper; use Illuminate\Foundation\Http\Events\RequestHandled; +use Illuminate\Support\Str; class RequestRecorder extends Recorder { @@ -92,7 +93,7 @@ private function getContext($request) { $context = []; - if (ltrim($request->path(), '/') === 'livewire/update') { + if ($this->isLivewireUpdateRequest($request)) { $components = $request->input('components', []); if (is_array($components)) { foreach ($components as $component) { @@ -178,19 +179,22 @@ private function getAuthenticatedUser() private function getUrl($request) { - if (ltrim($request->path(), '/') === 'livewire/update') { + if ($this->isLivewireUpdateRequest($request)) { $url = ''; - $fragments = parse_url($request->headers->get('referer')); - if (isset($fragments['path'])) { - $url = rtrim($fragments['path'], '/'); - } + $referer = $request->headers->get('referer'); + if ($referer) { + $fragments = parse_url($referer); + if (isset($fragments['path'])) { + $url = rtrim($fragments['path'], '/'); + } - if (config('laritor.requests.query_string') && isset($fragments['query'])) { - $url .= '?' . $fragments['query']; - } + if (config('laritor.requests.query_string') && isset($fragments['query'])) { + $url .= '?' . $fragments['query']; + } - if ($url) { - return $url; + if ($url) { + return $url; + } } } @@ -203,4 +207,12 @@ private function getUrl($request) return $request->path().$query; } + + public function isLivewireUpdateRequest($request): bool + { + $route = $request->route() ? $request->route()->getName() : ''; + + return ($route && Str::endsWith($route, 'livewire.update')) || + preg_match('#^livewire(?:-[^/]+)?/update$#', ltrim($request->path(), '/')) === 1; + } }