diff --git a/lib/src/fixtures/interests.dart b/lib/src/fixtures/interests.dart index 13536a3..fb90b5d 100644 --- a/lib/src/fixtures/interests.dart +++ b/lib/src/fixtures/interests.dart @@ -12,7 +12,7 @@ final List interestsFixturesData = [ sources: [sourcesFixturesData[0]], // TechCrunch countries: const [], ), - isFeedFilter: true, + isPinnedFeedFilter: true, deliveryTypes: const { PushNotificationSubscriptionDeliveryType.breakingOnly, }, @@ -26,7 +26,7 @@ final List interestsFixturesData = [ sources: const [], countries: const [], ), - isFeedFilter: true, + isPinnedFeedFilter: true, deliveryTypes: const {}, ), Interest( @@ -38,7 +38,7 @@ final List interestsFixturesData = [ sources: [sourcesFixturesData[40]], // ESPN countries: const [], ), - isFeedFilter: true, + isPinnedFeedFilter: true, deliveryTypes: const {PushNotificationSubscriptionDeliveryType.dailyDigest}, ), Interest( @@ -50,7 +50,7 @@ final List interestsFixturesData = [ sources: const [], countries: const [], ), - isFeedFilter: true, + isPinnedFeedFilter: true, deliveryTypes: const {}, ), Interest( @@ -65,7 +65,7 @@ final List interestsFixturesData = [ ], countries: const [], ), - isFeedFilter: true, + isPinnedFeedFilter: true, deliveryTypes: const {}, ), Interest( @@ -77,7 +77,7 @@ final List interestsFixturesData = [ sources: [sourcesFixturesData[0]], // TechCrunch countries: const [], ), - isFeedFilter: true, + isPinnedFeedFilter: true, deliveryTypes: const {}, ), ]; diff --git a/lib/src/fixtures/remote_configs.dart b/lib/src/fixtures/remote_configs.dart index 9149d58..e696c78 100644 --- a/lib/src/fixtures/remote_configs.dart +++ b/lib/src/fixtures/remote_configs.dart @@ -27,7 +27,7 @@ final List remoteConfigsFixturesData = [ limits: { AppUserRole.guestUser: InterestLimits( total: 3, - feedFilters: 3, + pinnedFeedFilters: 3, notifications: { PushNotificationSubscriptionDeliveryType.breakingOnly: 1, PushNotificationSubscriptionDeliveryType.dailyDigest: 0, @@ -36,7 +36,7 @@ final List remoteConfigsFixturesData = [ ), AppUserRole.standardUser: InterestLimits( total: 10, - feedFilters: 5, + pinnedFeedFilters: 5, notifications: { PushNotificationSubscriptionDeliveryType.breakingOnly: 3, PushNotificationSubscriptionDeliveryType.dailyDigest: 2, @@ -45,7 +45,7 @@ final List remoteConfigsFixturesData = [ ), AppUserRole.premiumUser: InterestLimits( total: 25, - feedFilters: 10, + pinnedFeedFilters: 10, notifications: { PushNotificationSubscriptionDeliveryType.breakingOnly: 10, PushNotificationSubscriptionDeliveryType.dailyDigest: 10, diff --git a/lib/src/models/config/interest_limits.dart b/lib/src/models/config/interest_limits.dart index 53bd76d..b0b79c5 100644 --- a/lib/src/models/config/interest_limits.dart +++ b/lib/src/models/config/interest_limits.dart @@ -10,7 +10,7 @@ part 'interest_limits.g.dart'; /// feature. /// /// This includes the total number of interests a user can create, how many -/// can be used as feed filters, and the subscription limits for each +/// can be used as a pinned feed filters, and the subscription limits for each /// notification type. /// {@endtemplate} @immutable @@ -19,7 +19,7 @@ class InterestLimits extends Equatable { /// {@macro interest_limits} const InterestLimits({ required this.total, - required this.feedFilters, + required this.pinnedFeedFilters, required this.notifications, }); @@ -30,9 +30,9 @@ class InterestLimits extends Equatable { /// The total number of interests a user with this role can create. final int total; - /// The maximum number of interests that can be marked as a "feed filter" + /// The maximum number of interests that can be marked as a "pinned feed filter" /// by a user with this role. - final int feedFilters; + final int pinnedFeedFilters; /// A map defining the subscription limits for each notification type. /// @@ -45,18 +45,18 @@ class InterestLimits extends Equatable { Map toJson() => _$InterestLimitsToJson(this); @override - List get props => [total, feedFilters, notifications]; + List get props => [total, pinnedFeedFilters, notifications]; /// Creates a copy of this [InterestLimits] but with the given fields /// replaced with the new values. InterestLimits copyWith({ int? total, - int? feedFilters, + int? pinnedFeedFilters, Map? notifications, }) { return InterestLimits( total: total ?? this.total, - feedFilters: feedFilters ?? this.feedFilters, + pinnedFeedFilters: pinnedFeedFilters ?? this.pinnedFeedFilters, notifications: notifications ?? this.notifications, ); } diff --git a/lib/src/models/config/interest_limits.g.dart b/lib/src/models/config/interest_limits.g.dart index 5622e02..2644787 100644 --- a/lib/src/models/config/interest_limits.g.dart +++ b/lib/src/models/config/interest_limits.g.dart @@ -10,7 +10,10 @@ InterestLimits _$InterestLimitsFromJson(Map json) => $checkedCreate('InterestLimits', json, ($checkedConvert) { final val = InterestLimits( total: $checkedConvert('total', (v) => (v as num).toInt()), - feedFilters: $checkedConvert('feedFilters', (v) => (v as num).toInt()), + pinnedFeedFilters: $checkedConvert( + 'pinnedFeedFilters', + (v) => (v as num).toInt(), + ), notifications: $checkedConvert( 'notifications', (v) => (v as Map).map( @@ -27,7 +30,7 @@ InterestLimits _$InterestLimitsFromJson(Map json) => Map _$InterestLimitsToJson(InterestLimits instance) => { 'total': instance.total, - 'feedFilters': instance.feedFilters, + 'pinnedFeedFilters': instance.pinnedFeedFilters, 'notifications': instance.notifications.map( (k, e) => MapEntry(_$PushNotificationSubscriptionDeliveryTypeEnumMap[k]!, e), diff --git a/lib/src/models/interests/interest.dart b/lib/src/models/interests/interest.dart index 06d32ed..b70e641 100644 --- a/lib/src/models/interests/interest.dart +++ b/lib/src/models/interests/interest.dart @@ -8,11 +8,11 @@ part 'interest.g.dart'; /// {@template interest} /// Represents a user's saved set of content criteria, unifying the concepts -/// of a "Saved Filter" for on-demand feed filtering and a "Notification +/// of a saved "Feed Filter" for on-demand feed filtering and a "Notification /// Subscription" for push alerts. /// /// An Interest is a single entity that can be used for multiple purposes, -/// determined by the `isFeedFilter` flag and the `deliveryTypes` set. +/// determined by the `isPinnedFeedFilter` flag and the `deliveryTypes` set. /// {@endtemplate} @immutable @JsonSerializable(explicitToJson: true, includeIfNull: true, checked: true) @@ -23,7 +23,7 @@ class Interest extends Equatable { required this.userId, required this.name, required this.criteria, - required this.isFeedFilter, + required this.isPinnedFeedFilter, required this.deliveryTypes, }); @@ -45,8 +45,8 @@ class Interest extends Equatable { final InterestCriteria criteria; /// A flag indicating whether this interest should be available as a - /// one-click filter in the user's feed. - final bool isFeedFilter; + /// one-click pinned filter in the user's feed. + final bool isPinnedFeedFilter; /// The set of notification delivery types the user has opted into for this /// interest (e.g., `breakingOnly`, `dailyDigest`). @@ -64,7 +64,7 @@ class Interest extends Equatable { userId, name, criteria, - isFeedFilter, + isPinnedFeedFilter, deliveryTypes, ]; @@ -75,7 +75,7 @@ class Interest extends Equatable { String? userId, String? name, InterestCriteria? criteria, - bool? isFeedFilter, + bool? isPinnedFeedFilter, Set? deliveryTypes, }) { return Interest( @@ -83,7 +83,7 @@ class Interest extends Equatable { userId: userId ?? this.userId, name: name ?? this.name, criteria: criteria ?? this.criteria, - isFeedFilter: isFeedFilter ?? this.isFeedFilter, + isPinnedFeedFilter: isPinnedFeedFilter ?? this.isPinnedFeedFilter, deliveryTypes: deliveryTypes ?? this.deliveryTypes, ); } diff --git a/lib/src/models/interests/interest.g.dart b/lib/src/models/interests/interest.g.dart index d4ad157..0c1bb9d 100644 --- a/lib/src/models/interests/interest.g.dart +++ b/lib/src/models/interests/interest.g.dart @@ -6,41 +6,39 @@ part of 'interest.dart'; // JsonSerializableGenerator // ************************************************************************** -Interest _$InterestFromJson(Map json) => $checkedCreate( - 'Interest', - json, - ($checkedConvert) { - final val = Interest( - id: $checkedConvert('id', (v) => v as String), - userId: $checkedConvert('userId', (v) => v as String), - name: $checkedConvert('name', (v) => v as String), - criteria: $checkedConvert( - 'criteria', - (v) => InterestCriteria.fromJson(v as Map), - ), - isFeedFilter: $checkedConvert('isFeedFilter', (v) => v as bool), - deliveryTypes: $checkedConvert( - 'deliveryTypes', - (v) => (v as List) - .map( - (e) => $enumDecode( - _$PushNotificationSubscriptionDeliveryTypeEnumMap, - e, - ), - ) - .toSet(), - ), - ); - return val; - }, -); +Interest _$InterestFromJson( + Map json, +) => $checkedCreate('Interest', json, ($checkedConvert) { + final val = Interest( + id: $checkedConvert('id', (v) => v as String), + userId: $checkedConvert('userId', (v) => v as String), + name: $checkedConvert('name', (v) => v as String), + criteria: $checkedConvert( + 'criteria', + (v) => InterestCriteria.fromJson(v as Map), + ), + isPinnedFeedFilter: $checkedConvert('isPinnedFeedFilter', (v) => v as bool), + deliveryTypes: $checkedConvert( + 'deliveryTypes', + (v) => (v as List) + .map( + (e) => $enumDecode( + _$PushNotificationSubscriptionDeliveryTypeEnumMap, + e, + ), + ) + .toSet(), + ), + ); + return val; +}); Map _$InterestToJson(Interest instance) => { 'id': instance.id, 'userId': instance.userId, 'name': instance.name, 'criteria': instance.criteria.toJson(), - 'isFeedFilter': instance.isFeedFilter, + 'isPinnedFeedFilter': instance.isPinnedFeedFilter, 'deliveryTypes': instance.deliveryTypes .map((e) => _$PushNotificationSubscriptionDeliveryTypeEnumMap[e]!) .toList(), diff --git a/test/src/models/config/interest_limits_test.dart b/test/src/models/config/interest_limits_test.dart index 5cff80f..d9a8f0d 100644 --- a/test/src/models/config/interest_limits_test.dart +++ b/test/src/models/config/interest_limits_test.dart @@ -14,7 +14,7 @@ void main() { // Arrange: Create another instance with the same values. final anotherLimits = InterestLimits( total: interestLimitsFixture.total, - feedFilters: interestLimitsFixture.feedFilters, + pinnedFeedFilters: interestLimitsFixture.pinnedFeedFilters, notifications: interestLimitsFixture.notifications, ); @@ -28,7 +28,7 @@ void main() { interestLimitsFixture.props, equals([ interestLimitsFixture.total, - interestLimitsFixture.feedFilters, + interestLimitsFixture.pinnedFeedFilters, interestLimitsFixture.notifications, ]), ); @@ -58,12 +58,12 @@ void main() { // Act: Create a copy with the new values. final copiedLimits = interestLimitsFixture.copyWith( total: newTotal, - feedFilters: newFeedFilters, + pinnedFeedFilters: newFeedFilters, ); // Assert: The new instance should have the updated values. expect(copiedLimits.total, equals(newTotal)); - expect(copiedLimits.feedFilters, equals(newFeedFilters)); + expect(copiedLimits.pinnedFeedFilters, equals(newFeedFilters)); // Assert: Unchanged properties remain the same. expect( diff --git a/test/src/models/interests/interest_test.dart b/test/src/models/interests/interest_test.dart index 4ad36b5..65bc2e1 100644 --- a/test/src/models/interests/interest_test.dart +++ b/test/src/models/interests/interest_test.dart @@ -24,7 +24,7 @@ void main() { interestFixture.userId, interestFixture.name, interestFixture.criteria, - interestFixture.isFeedFilter, + interestFixture.isPinnedFeedFilter, interestFixture.deliveryTypes, ]), );