diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..8325058 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -1,5 +1,7 @@ availableProviders($user, $workspace) as $provider) { - $type = $provider->searchType(); - $results = $provider->search($query, $limitPerProvider); + try { + $type = $provider->searchType(); + $results = $provider->search($query, $limitPerProvider); - // Convert results to array format with type/icon - $formattedResults = $results->map(function ($result) use ($provider) { - if ($result instanceof SearchResult) { - return $result->withTypeAndIcon( - $provider->searchType(), - $provider->searchIcon() - )->toArray(); + // Convert results to array format with type/icon + $formattedResults = $results->map(function ($result) use ($provider) { + if ($result instanceof SearchResult) { + return $result->withTypeAndIcon( + $provider->searchType(), + $provider->searchIcon() + )->toArray(); + } + + // Handle array results + if (is_array($result)) { + $searchResult = SearchResult::fromArray($result); + + return $searchResult->withTypeAndIcon( + $provider->searchType(), + $provider->searchIcon() + )->toArray(); + } + + // Handle model objects with getUrl + return [ + 'id' => (string) ($result->id ?? uniqid()), + 'title' => (string) ($result->title ?? $result->name ?? ''), + 'subtitle' => (string) ($result->subtitle ?? $result->description ?? ''), + 'url' => $provider->getUrl($result), + 'type' => $provider->searchType(), + 'icon' => $provider->searchIcon(), + 'meta' => [], + ]; + })->toArray(); + + if (! empty($formattedResults)) { + $grouped[$type] = [ + 'label' => $provider->searchLabel(), + 'icon' => $provider->searchIcon(), + 'results' => $formattedResults, + ]; } + } catch (\Throwable $e) { + Log::warning('Search provider failed', [ + 'provider' => $provider::class, + 'query' => $query, + 'error' => $e->getMessage(), + ]); - // Handle array results - if (is_array($result)) { - $searchResult = SearchResult::fromArray($result); - - return $searchResult->withTypeAndIcon( - $provider->searchType(), - $provider->searchIcon() - )->toArray(); - } - - // Handle model objects with getUrl - return [ - 'id' => (string) ($result->id ?? uniqid()), - 'title' => (string) ($result->title ?? $result->name ?? ''), - 'subtitle' => (string) ($result->subtitle ?? $result->description ?? ''), - 'url' => $provider->getUrl($result), - 'type' => $provider->searchType(), - 'icon' => $provider->searchIcon(), - 'meta' => [], - ]; - })->toArray(); - - if (! empty($formattedResults)) { - $grouped[$type] = [ - 'label' => $provider->searchLabel(), - 'icon' => $provider->searchIcon(), - 'results' => $formattedResults, - ]; + continue; } }