diff --git a/app/lib/scorecard/backend.dart b/app/lib/scorecard/backend.dart index 286c9ac96f..3de3a82ad2 100644 --- a/app/lib/scorecard/backend.dart +++ b/app/lib/scorecard/backend.dart @@ -73,6 +73,9 @@ class ScoreCardBackend { @visibleForTesting Future getPackageView(String package) async { return await cache.packageView(package).get(() async { + if (!await packageBackend.isPackageVisible(package)) { + return null; + } final p = await packageBackend.lookupPackage(package); if (p == null) { _logger.warning('Package lookup failed for "$package".'); @@ -85,20 +88,24 @@ class ScoreCardBackend { return null; } - final releases = await packageBackend.latestReleases(p); - final pvFuture = packageBackend.lookupPackageVersion(package, version); - final cardFuture = scoreCardBackend.getScoreCardData(package, version); - await Future.wait([pvFuture, cardFuture]); - - final pv = await pvFuture; - final card = await cardFuture; - - return PackageView.fromModel( - package: p, - releases: releases, - version: pv, - scoreCard: card, - ); + try { + final releases = await packageBackend.latestReleases(p); + final pvFuture = packageBackend.lookupPackageVersion(package, version); + final cardFuture = scoreCardBackend.getScoreCardData(package, version); + await Future.wait([pvFuture, cardFuture]); + + final pv = await pvFuture; + final card = await cardFuture; + + return PackageView.fromModel( + package: p, + releases: releases, + version: pv, + scoreCard: card, + ); + } on NotFoundException catch (_) { + return null; + } }); } diff --git a/app/lib/search/backend.dart b/app/lib/search/backend.dart index 47118784e1..34de498562 100644 --- a/app/lib/search/backend.dart +++ b/app/lib/search/backend.dart @@ -171,6 +171,8 @@ class SearchBackend { snapshot.add(doc); } on RemovedPackageException catch (_) { snapshot.remove(package); + } on NotFoundException catch (_) { + snapshot.remove(package); } }); }