From 6df50c225b1ecba8b0ad6980452b96566dc94e83 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Wed, 8 Jan 2025 10:11:02 +0100 Subject: [PATCH 1/3] Migrate getPublisher method's isBlocked check. --- app/lib/admin/actions/moderate_publisher.dart | 2 +- app/lib/admin/actions/moderate_user.dart | 2 +- app/lib/admin/actions/publisher_info.dart | 2 +- .../admin/actions/publisher_members_list.dart | 2 +- app/lib/admin/tools/package_publisher.dart | 2 +- app/lib/frontend/handlers/account.dart | 2 +- app/lib/frontend/handlers/publisher.dart | 6 ++-- app/lib/frontend/handlers/report.dart | 4 +-- app/lib/package/backend.dart | 2 +- app/lib/publisher/backend.dart | 29 ++++++++++--------- app/lib/shared/integrity.dart | 2 +- app/test/account/consent_backend_test.dart | 2 +- app/test/admin/api_test.dart | 3 +- app/test/admin/api_tool_test.dart | 4 +-- app/test/admin/moderate_publisher_test.dart | 6 ++-- app/test/admin/moderate_user_test.dart | 2 +- app/test/admin/publisher_actions_test.dart | 6 ++-- app/test/frontend/templates_test.dart | 12 +++++--- .../maintenance/migrate_isblocked_test.dart | 4 +-- 19 files changed, 51 insertions(+), 43 deletions(-) diff --git a/app/lib/admin/actions/moderate_publisher.dart b/app/lib/admin/actions/moderate_publisher.dart index 30c552a0e0..1953ceb14f 100644 --- a/app/lib/admin/actions/moderate_publisher.dart +++ b/app/lib/admin/actions/moderate_publisher.dart @@ -36,7 +36,7 @@ can't be updated, administrators must not be able to update publisher options. 'publisherId must be given', ); - final publisher = await publisherBackend.getPublisher(publisherId!); + final publisher = await publisherBackend.lookupPublisher(publisherId!); InvalidInputException.check( publisher != null, 'Unable to locate publisher.'); diff --git a/app/lib/admin/actions/moderate_user.dart b/app/lib/admin/actions/moderate_user.dart index 3f5161e83f..9d23b18832 100644 --- a/app/lib/admin/actions/moderate_user.dart +++ b/app/lib/admin/actions/moderate_user.dart @@ -105,7 +105,7 @@ The active web sessions of the user will be expired. final publishers = await publisherBackend.listPublishersForUser(user.userId); for (final e in publishers.publishers!) { - final p = await publisherBackend.getPublisher(e.publisherId); + final p = await publisherBackend.lookupPublisher(e.publisherId); if (p == null) { continue; } diff --git a/app/lib/admin/actions/publisher_info.dart b/app/lib/admin/actions/publisher_info.dart index f0418d6ddc..2d996ac5ba 100644 --- a/app/lib/admin/actions/publisher_info.dart +++ b/app/lib/admin/actions/publisher_info.dart @@ -22,7 +22,7 @@ Loads and displays the publisher information. '`publisher` must be given', ); - final p = await publisherBackend.getPublisher(publisherId!); + final p = await publisherBackend.lookupPublisher(publisherId!); if (p == null) { throw NotFoundException.resource(publisherId); } diff --git a/app/lib/admin/actions/publisher_members_list.dart b/app/lib/admin/actions/publisher_members_list.dart index 475bf43146..de870b3401 100644 --- a/app/lib/admin/actions/publisher_members_list.dart +++ b/app/lib/admin/actions/publisher_members_list.dart @@ -18,7 +18,7 @@ Get information about a publisher and list all its members. final publisherId = options['publisher'] ?? (throw InvalidInputException('Missing --publisher argument.')); - final publisher = await publisherBackend.getPublisher(publisherId); + final publisher = await publisherBackend.lookupPublisher(publisherId); if (publisher == null) { throw NotFoundException.resource(publisherId); } diff --git a/app/lib/admin/tools/package_publisher.dart b/app/lib/admin/tools/package_publisher.dart index b7c994b8b6..b88ce47792 100644 --- a/app/lib/admin/tools/package_publisher.dart +++ b/app/lib/admin/tools/package_publisher.dart @@ -27,7 +27,7 @@ Future executeSetPackagePublisher(List args) async { } final package = (await packageBackend.lookupPackage(packageName))!; - final publisher = await publisherBackend.getPublisher(publisherId); + final publisher = await publisherBackend.lookupPublisher(publisherId); if (publisher == null) { return 'No such publisher.'; } diff --git a/app/lib/frontend/handlers/account.dart b/app/lib/frontend/handlers/account.dart index b248f2bc2c..bd9dc39476 100644 --- a/app/lib/frontend/handlers/account.dart +++ b/app/lib/frontend/handlers/account.dart @@ -251,7 +251,7 @@ Future accountPublisherOptionsHandler( shelf.Request request, String publisherId) async { checkPublisherIdParam(publisherId); final user = await requireAuthenticatedWebUser(); - final publisher = await publisherBackend.getPublisher(publisherId); + final publisher = await publisherBackend.getListedPublisher(publisherId); if (publisher == null) { throw NotFoundException.resource('publisher "$publisherId"'); } diff --git a/app/lib/frontend/handlers/publisher.dart b/app/lib/frontend/handlers/publisher.dart index 09dbcad1c2..ae20714836 100644 --- a/app/lib/frontend/handlers/publisher.dart +++ b/app/lib/frontend/handlers/publisher.dart @@ -82,7 +82,7 @@ Future publisherPackagesPageHandler( } } - final publisher = await publisherBackend.getPublisher(publisherId); + final publisher = await publisherBackend.lookupPublisher(publisherId); if (publisher == null) { // We may introduce search for publishers (e.g. somebody just mistyped a // domain name), but now we just have a formatted error page. @@ -146,7 +146,7 @@ Future publisherPackagesPageHandler( /// Handles requests for `GET /publishers//admin`. Future publisherAdminPageHandler( shelf.Request request, String publisherId) async { - final publisher = await publisherBackend.getPublisher(publisherId); + final publisher = await publisherBackend.getListedPublisher(publisherId); if (publisher == null) { // We may introduce search for publishers (e.g. somebody just mistyped a // domain name), but now we just have a formatted error page. @@ -174,7 +174,7 @@ Future publisherAdminPageHandler( /// Handles requests for `GET /publishers//activity-log`. Future publisherActivityLogPageHandler( shelf.Request request, String publisherId) async { - final publisher = await publisherBackend.getPublisher(publisherId); + final publisher = await publisherBackend.getListedPublisher(publisherId); if (publisher == null) { // We may introduce search for publishers (e.g. somebody just mistyped a // domain name), but now we just have a formatted error page. diff --git a/app/lib/frontend/handlers/report.dart b/app/lib/frontend/handlers/report.dart index c8c700450c..3743beb850 100644 --- a/app/lib/frontend/handlers/report.dart +++ b/app/lib/frontend/handlers/report.dart @@ -105,7 +105,7 @@ Future verifyModerationSubjectExists(ModerationSubject? subject) async { final publisherId = subject?.publisherId; if (publisherId != null) { - final p = await publisherBackend.getPublisher(publisherId); + final p = await publisherBackend.lookupPublisher(publisherId); if (p == null) { throw NotFoundException('Publisher "$publisherId" does not exist.'); } @@ -223,7 +223,7 @@ Future processReportPageHandler( final pkg = await packageBackend.lookupPackage(subject.package!); isSubjectOwner = await packageBackend.isPackageAdmin(pkg!, user.userId); } else if (subject.isPublisher) { - final p = await publisherBackend.getPublisher(subject.publisherId!); + final p = await publisherBackend.lookupPublisher(subject.publisherId!); isSubjectOwner = await publisherBackend.isMemberAdmin(p!, user.userId); } } diff --git a/app/lib/package/backend.dart b/app/lib/package/backend.dart index 50f99b8343..93eadd8f16 100644 --- a/app/lib/package/backend.dart +++ b/app/lib/package/backend.dart @@ -675,7 +675,7 @@ class PackageBackend { return p.containsUploader(userId); } else { final publisherId = p.publisherId!; - final publisher = await publisherBackend.getPublisher(publisherId); + final publisher = await publisherBackend.getListedPublisher(publisherId); if (publisher == null) { return false; } diff --git a/app/lib/publisher/backend.dart b/app/lib/publisher/backend.dart index 07b64bb18c..c167cf7227 100644 --- a/app/lib/publisher/backend.dart +++ b/app/lib/publisher/backend.dart @@ -58,15 +58,18 @@ class PublisherBackend { return visible!; } - /// Loads a publisher. Returns `null` if it does not exists, or is blocked (not visible). - Future getPublisher(String publisherId) async { + /// Loads a [Publisher] entity or `null` if there is no such entity. + Future lookupPublisher(String publisherId) async { checkPublisherIdParam(publisherId); final pKey = _db.emptyKey.append(Publisher, id: publisherId); - final p = await _db.lookupOrNull(pKey); - if (p != null && p.isBlocked) { - return null; - } - return p; + return await _db.lookupOrNull(pKey); + } + + /// Loads a [Publisher] entity or `null` if there is no such entity, + /// or if the entity is not listed / visible. + Future getListedPublisher(String publisherId) async { + final p = await lookupPublisher(publisherId); + return p == null || p.isUnlisted ? null : p; } /// List publishers (in no specific order, it will be listed by their @@ -250,7 +253,7 @@ class PublisherBackend { /// Gets the publisher data Future getPublisherInfo(String publisherId) async { checkPublisherIdParam(publisherId); - final p = await getPublisher(publisherId); + final p = await getListedPublisher(publisherId); if (p == null) { throw NotFoundException('Publisher $publisherId does not exists.'); } @@ -598,13 +601,13 @@ Future requirePublisherAdmin( String? publisherId, String userId) async { ArgumentError.checkNotNull(userId, 'userId'); ArgumentError.checkNotNull(publisherId, 'publisherId'); - final p = await publisherBackend.getPublisher(publisherId!); - if (p == null) { - throw NotFoundException('Publisher $publisherId does not exists.'); - } - if (p.isModerated) { + final p = await publisherBackend.lookupPublisher(publisherId!); + if (p != null && p.isModerated) { throw ModeratedException.publisher(publisherId); } + if (p == null || p.isUnlisted) { + throw NotFoundException('Publisher $publisherId does not exists.'); + } final member = await publisherBackend._db .lookupOrNull(p.key.append(PublisherMember, id: userId)); diff --git a/app/lib/shared/integrity.dart b/app/lib/shared/integrity.dart index b300a56f8c..8ed5d85296 100644 --- a/app/lib/shared/integrity.dart +++ b/app/lib/shared/integrity.dart @@ -262,7 +262,7 @@ class IntegrityChecker { publisherAttributes.increaseMemberCount(pm.publisherId); if (!publisherAttributes.publisherIds.contains(pm.publisherId)) { // double check actual status to prevent misreports on cache race conditions - final p = await publisherBackend.getPublisher(pm.publisherId); + final p = await publisherBackend.lookupPublisher(pm.publisherId); if (p == null) { yield 'PublisherMember "${pm.userId}" references a non-existing `publisherId`: "${pm.publisherId}".'; } diff --git a/app/test/account/consent_backend_test.dart b/app/test/account/consent_backend_test.dart index 4eb4e9f0fa..60a94279fa 100644 --- a/app/test/account/consent_backend_test.dart +++ b/app/test/account/consent_backend_test.dart @@ -333,7 +333,7 @@ Future _expireConsent(String? consentId) async { Future _removeAdminRole(String publisherId, String email) async { await withFakeAuthRequestContext(email, () async { final agent = await requireAuthenticatedWebUser(); - final publisher = await publisherBackend.getPublisher(publisherId); + final publisher = await publisherBackend.lookupPublisher(publisherId); final member = await publisherBackend.getPublisherMember(publisher!, agent.userId); member!.role = 'non-admin'; diff --git a/app/test/admin/api_test.dart b/app/test/admin/api_test.dart index 8e56d3cbc4..457f035641 100644 --- a/app/test/admin/api_test.dart +++ b/app/test/admin/api_test.dart @@ -349,7 +349,8 @@ void main() { expect(oxygen.uploaders, []); expect(oxygen.isDiscontinued, true); - final publisher = await publisherBackend.getPublisher('example.com'); + final publisher = + await publisherBackend.lookupPublisher('example.com'); expect(publisher!.contactEmail, isNull); expect(publisher.isAbandoned, isTrue); diff --git a/app/test/admin/api_tool_test.dart b/app/test/admin/api_tool_test.dart index 545fbd93a0..bff9d1b5ba 100644 --- a/app/test/admin/api_tool_test.dart +++ b/app/test/admin/api_tool_test.dart @@ -141,7 +141,7 @@ void main() { group('create and delete publisher', () { testWithProfile('publisher has packages', fn: () async { - final p1 = await publisherBackend.getPublisher('example.com'); + final p1 = await publisherBackend.lookupPublisher('example.com'); expect(p1, isNotNull); await expectLater( @@ -161,7 +161,7 @@ void main() { }, ))); - final p2 = await publisherBackend.getPublisher('example.com'); + final p2 = await publisherBackend.lookupPublisher('example.com'); expect(p2, isNotNull); }); }); diff --git a/app/test/admin/moderate_publisher_test.dart b/app/test/admin/moderate_publisher_test.dart index 94b2828abf..9e2d5f9e6d 100644 --- a/app/test/admin/moderate_publisher_test.dart +++ b/app/test/admin/moderate_publisher_test.dart @@ -68,7 +68,7 @@ void main() { 'before': {'isModerated': false, 'moderatedAt': null}, 'after': {'isModerated': true, 'moderatedAt': isNotEmpty}, }); - final p2 = await publisherBackend.getPublisher('example.com'); + final p2 = await publisherBackend.lookupPublisher('example.com'); expect(p2!.isModerated, isTrue); final r3 = @@ -78,7 +78,7 @@ void main() { 'before': {'isModerated': true, 'moderatedAt': isNotEmpty}, 'after': {'isModerated': false, 'moderatedAt': isNull}, }); - final p3 = await publisherBackend.getPublisher('example.com'); + final p3 = await publisherBackend.lookupPublisher('example.com'); expect(p3!.isModerated, isFalse); }); @@ -214,7 +214,7 @@ void main() { await adminBackend.deleteModeratedSubjects(before: clock.now().toUtc()); // no publisher or member - expect(await publisherBackend.getPublisher('example.com'), isNull); + expect(await publisherBackend.lookupPublisher('example.com'), isNull); expect( await publisherBackend.listPublisherMembers('example.com'), isEmpty, diff --git a/app/test/admin/moderate_user_test.dart b/app/test/admin/moderate_user_test.dart index 82a36875a9..6c03b2eef7 100644 --- a/app/test/admin/moderate_user_test.dart +++ b/app/test/admin/moderate_user_test.dart @@ -301,7 +301,7 @@ void main() { expect(pkg.isDiscontinued, true); // publisher has no members - final publisher = await publisherBackend.getPublisher('example.com'); + final publisher = await publisherBackend.lookupPublisher('example.com'); expect(publisher!.isAbandoned, true); final members = await publisherBackend.listPublisherMembers('example.com'); diff --git a/app/test/admin/publisher_actions_test.dart b/app/test/admin/publisher_actions_test.dart index 22b8106e5e..996e91fb29 100644 --- a/app/test/admin/publisher_actions_test.dart +++ b/app/test/admin/publisher_actions_test.dart @@ -35,7 +35,7 @@ void main() { 'creating, listing members and deleting publisher with no packages', fn: () async { final client = createPubApiClient(authToken: siteAdminToken); - final p0 = await publisherBackend.getPublisher('other.com'); + final p0 = await publisherBackend.lookupPublisher('other.com'); expect(p0, isNull); final rs1 = await client.adminInvokeAction( 'publisher-create', @@ -65,7 +65,7 @@ void main() { {'email': 'user@pub.dev', 'role': 'admin', 'userId': isA()} ] }); - final p1 = await publisherBackend.getPublisher('other.com'); + final p1 = await publisherBackend.lookupPublisher('other.com'); expect(p1, isNotNull); final rs2 = await client.adminInvokeAction('publisher-delete', AdminInvokeActionArguments(arguments: {'publisher': 'other.com'})); @@ -74,7 +74,7 @@ void main() { 'publisherId': 'other.com', 'members-count': 1, }); - final p2 = await publisherBackend.getPublisher('other.com'); + final p2 = await publisherBackend.lookupPublisher('other.com'); expect(p2, isNull); }); diff --git a/app/test/frontend/templates_test.dart b/app/test/frontend/templates_test.dart index f7f63ac80e..436cc37bde 100644 --- a/app/test/frontend/templates_test.dart +++ b/app/test/frontend/templates_test.dart @@ -545,7 +545,8 @@ void main() { processJobsWithFakeRunners: true, fn: () async { final searchForm = SearchForm(); - final publisher = (await publisherBackend.getPublisher('example.com'))!; + final publisher = + (await publisherBackend.lookupPublisher('example.com'))!; final neon = (await scoreCardBackend.getPackageView('neon'))!; final titanium = (await scoreCardBackend.getPackageView('flutter_titanium'))!; @@ -577,7 +578,8 @@ void main() { processJobsWithFakeRunners: true, fn: () async { final searchForm = SearchForm(); - final publisher = (await publisherBackend.getPublisher('example.com'))!; + final publisher = + (await publisherBackend.lookupPublisher('example.com'))!; final neon = (await scoreCardBackend.getPackageView('neon'))!; final titanium = (await scoreCardBackend.getPackageView('flutter_titanium'))!; @@ -609,7 +611,8 @@ void main() { 'publisher admin page', processJobsWithFakeRunners: true, fn: () async { - final publisher = (await publisherBackend.getPublisher('example.com'))!; + final publisher = + (await publisherBackend.lookupPublisher('example.com'))!; final members = await publisherBackend.listPublisherMembers('example.com'); final html = renderPublisherAdminPage( @@ -635,7 +638,8 @@ void main() { 'publisher activity log page', processJobsWithFakeRunners: true, fn: () async { - final publisher = (await publisherBackend.getPublisher('example.com'))!; + final publisher = + (await publisherBackend.lookupPublisher('example.com'))!; final activities = await auditBackend.listRecordsForPublisher('example.com'); expect(activities.records, isNotEmpty); diff --git a/app/test/tool/maintenance/migrate_isblocked_test.dart b/app/test/tool/maintenance/migrate_isblocked_test.dart index 0928704e62..98f4e6e37b 100644 --- a/app/test/tool/maintenance/migrate_isblocked_test.dart +++ b/app/test/tool/maintenance/migrate_isblocked_test.dart @@ -14,7 +14,7 @@ import '../../shared/test_services.dart'; void main() { group('Migrate isBlocked', () { testWithProfile('publisher', fn: () async { - final p1 = await publisherBackend.getPublisher('example.com'); + final p1 = await publisherBackend.lookupPublisher('example.com'); await dbService.commit(inserts: [p1!..isBlocked = true]); final members = await publisherBackend.listPublisherMembers('example.com'); @@ -26,7 +26,7 @@ void main() { await migrateIsBlocked(); - final p2 = await publisherBackend.getPublisher('example.com'); + final p2 = await publisherBackend.lookupPublisher('example.com'); expect(p2!.isModerated, true); }); From 1f768caef58d69f7da7eef8a4d758dc302c667cd Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Wed, 8 Jan 2025 10:13:30 +0100 Subject: [PATCH 2/3] Migrate the rest of the Publisher.isBlocked uses. --- app/lib/publisher/backend.dart | 3 +-- app/test/frontend/handlers/publisher_test.dart | 4 ++-- app/test/package/package_publisher_test.dart | 14 +++++++------- app/test/publisher/api_test.dart | 4 ++-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/lib/publisher/backend.dart b/app/lib/publisher/backend.dart index c167cf7227..b6d9e44381 100644 --- a/app/lib/publisher/backend.dart +++ b/app/lib/publisher/backend.dart @@ -117,7 +117,7 @@ class PublisherBackend { publishers.sort((a, b) => a.publisherId.compareTo(b.publisherId)); return PublisherPage( publishers: publishers - .where((p) => !p.isBlocked) + .where((p) => p.isVisible) .map((p) => PublisherSummary( publisherId: p.publisherId, created: p.created!, @@ -137,7 +137,6 @@ class PublisherBackend { /// Whether the User [userId] has admin permissions on the publisher. Future isMemberAdmin(Publisher publisher, String? userId) async { - if (publisher.isBlocked) return false; if (publisher.isModerated) return false; if (userId == null) return false; final member = await getPublisherMember(publisher, userId); diff --git a/app/test/frontend/handlers/publisher_test.dart b/app/test/frontend/handlers/publisher_test.dart index 3c48908f8b..46c770047b 100644 --- a/app/test/frontend/handlers/publisher_test.dart +++ b/app/test/frontend/handlers/publisher_test.dart @@ -37,10 +37,10 @@ void main() { ); }); - testWithProfile('publisher is blocked', fn: () async { + testWithProfile('publisher is moderated', fn: () async { final p = await dbService.lookupValue( dbService.emptyKey.append(Publisher, id: 'example.com')); - p.isBlocked = true; + p.updateIsModerated(isModerated: true); await dbService.commit(inserts: [p]); await expectHtmlResponse( await issueGet('/publishers/example.com/packages'), diff --git a/app/test/package/package_publisher_test.dart b/app/test/package/package_publisher_test.dart index 019be26370..6714ff0251 100644 --- a/app/test/package/package_publisher_test.dart +++ b/app/test/package/package_publisher_test.dart @@ -25,7 +25,7 @@ import 'backend_test_utils.dart'; void main() { group('Get publisher info', () { _testNoPackage((client) => client.getPackagePublisher('no_package')); - _testPublisherBlocked((client) => client.publisherInfo('example.com')); + _testPublisherModerated((client) => client.publisherInfo('example.com')); testWithProfile('traditional package, not authenticated user', fn: () async { @@ -46,7 +46,7 @@ void main() { PackagePublisherInfo(publisherId: 'no-domain.net'), )); - _testPublisherBlocked((client) => client.setPackagePublisher( + _testPublisherModerated((client) => client.setPackagePublisher( 'oxygen', PackagePublisherInfo(publisherId: 'example.com'), )); @@ -174,7 +174,7 @@ void main() { ); }); - _testPublisherBlocked( + _testPublisherModerated( (client) => client.setPackagePublisher( 'one', PackagePublisherInfo(publisherId: 'example.com'), @@ -183,7 +183,7 @@ void main() { publisherId: 'example.com', ); - _testPublisherBlocked( + _testPublisherModerated( (client) => client.setPackagePublisher( 'one', PackagePublisherInfo(publisherId: 'example.com'), @@ -316,7 +316,7 @@ void _testNoPublisher(Future Function(PubApiClient client) fn) { }); } -void _testPublisherBlocked( +void _testPublisherModerated( Future Function(PubApiClient client) fn, { String publisherId = 'example.com', TestProfile? testProfile, @@ -324,12 +324,12 @@ void _testPublisherBlocked( String code = 'NotFound', }) { testWithProfile( - 'Publisher $publisherId is blocked', + 'Publisher $publisherId is moderated', testProfile: testProfile, fn: () async { final p = await dbService.lookupValue( dbService.emptyKey.append(Publisher, id: publisherId)); - p.isBlocked = true; + p.updateIsModerated(isModerated: true); await dbService.commit(inserts: [p]); final client = diff --git a/app/test/publisher/api_test.dart b/app/test/publisher/api_test.dart index abb3d302fa..562b370f1a 100644 --- a/app/test/publisher/api_test.dart +++ b/app/test/publisher/api_test.dart @@ -799,10 +799,10 @@ void _testAdminAuthIssues(Future Function(PubApiClient client) fn) { await expectApiException(rs, status: 403, code: 'InsufficientPermissions'); }); - testWithProfile('Publisher is blocked / not visible', fn: () async { + testWithProfile('Publisher is not visible', fn: () async { final p = await dbService.lookupValue( dbService.emptyKey.append(Publisher, id: 'example.com')); - p.isBlocked = true; + p.updateIsModerated(isModerated: true); await dbService.commit(inserts: [p]); final client = await createFakeAuthPubApiClient(email: userAtPubDevEmail); From c8dcc8fa34942b39eab9cbe6700fe18474d178b2 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Wed, 8 Jan 2025 10:13:30 +0100 Subject: [PATCH 3/3] Remove Publisher.isBlock migratation code. --- app/lib/publisher/models.dart | 3 +-- .../tool/backfill/backfill_new_fields.dart | 18 ------------------ .../maintenance/migrate_isblocked_test.dart | 19 ------------------- 3 files changed, 1 insertion(+), 39 deletions(-) diff --git a/app/lib/publisher/models.dart b/app/lib/publisher/models.dart index 9fa8d8c7d3..44aa807331 100644 --- a/app/lib/publisher/models.dart +++ b/app/lib/publisher/models.dart @@ -89,7 +89,6 @@ class Publisher extends db.ExpandoModel { description = ''; websiteUrl = defaultPublisherWebsite(publisherId); isAbandoned = false; - isBlocked = false; isModerated = false; } @@ -100,7 +99,7 @@ class Publisher extends db.ExpandoModel { bool get hasContactEmail => contactEmail != null && contactEmail!.isNotEmpty; /// Whether we should not list the publisher page in sitemap or promote it in search engines. - bool get isUnlisted => isBlocked || isAbandoned || isModerated; + bool get isUnlisted => isAbandoned || isModerated; bool get isVisible => !isUnlisted; void updateIsModerated({required bool isModerated}) { diff --git a/app/lib/tool/backfill/backfill_new_fields.dart b/app/lib/tool/backfill/backfill_new_fields.dart index 286e7a245f..9a025ae243 100644 --- a/app/lib/tool/backfill/backfill_new_fields.dart +++ b/app/lib/tool/backfill/backfill_new_fields.dart @@ -7,7 +7,6 @@ import 'package:logging/logging.dart'; import 'package:meta/meta.dart'; import 'package:pub_dev/account/models.dart'; import 'package:pub_dev/package/models.dart'; -import 'package:pub_dev/publisher/models.dart'; import 'package:pub_dev/shared/datastore.dart'; final _logger = Logger('backfill_new_fields'); @@ -26,23 +25,6 @@ Future backfillNewFields() async { @visibleForTesting Future migrateIsBlocked() async { _logger.info('Migrating isBlocked...'); - final publisherQuery = dbService.query() - ..filter('isBlocked =', true); - await for (final entity in publisherQuery.run()) { - await withRetryTransaction(dbService, (tx) async { - final publisher = await tx.lookupValue(entity.key); - // sanity check - if (!publisher.isBlocked) { - return; - } - publisher - ..isModerated = true - ..moderatedAt = publisher.moderatedAt ?? clock.now() - ..isBlocked = false; - tx.insert(publisher); - }); - } - final userQuery = dbService.query()..filter('isBlocked =', true); await for (final entity in userQuery.run()) { await withRetryTransaction(dbService, (tx) async { diff --git a/app/test/tool/maintenance/migrate_isblocked_test.dart b/app/test/tool/maintenance/migrate_isblocked_test.dart index 98f4e6e37b..8abd9509af 100644 --- a/app/test/tool/maintenance/migrate_isblocked_test.dart +++ b/app/test/tool/maintenance/migrate_isblocked_test.dart @@ -3,8 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'package:pub_dev/account/backend.dart'; -import 'package:pub_dev/package/backend.dart'; -import 'package:pub_dev/publisher/backend.dart'; import 'package:pub_dev/shared/datastore.dart'; import 'package:pub_dev/tool/backfill/backfill_new_fields.dart'; import 'package:test/test.dart'; @@ -13,23 +11,6 @@ import '../../shared/test_services.dart'; void main() { group('Migrate isBlocked', () { - testWithProfile('publisher', fn: () async { - final p1 = await publisherBackend.lookupPublisher('example.com'); - await dbService.commit(inserts: [p1!..isBlocked = true]); - final members = - await publisherBackend.listPublisherMembers('example.com'); - for (final m in members) { - await accountBackend.updateBlockedFlag(m.userId, true); - } - final neon = await packageBackend.lookupPackage('neon'); - await dbService.commit(inserts: [neon!..isDiscontinued = true]); - - await migrateIsBlocked(); - - final p2 = await publisherBackend.lookupPublisher('example.com'); - expect(p2!.isModerated, true); - }); - testWithProfile('user', fn: () async { final u1 = await accountBackend.lookupUserByEmail('user@pub.dev'); await dbService.commit(inserts: [u1..isBlocked = true]);