11import 'package:equatable/equatable.dart' ;
22import 'package:ht_shared/src/models/user_settings/app_language.dart' ;
33import 'package:ht_shared/src/models/user_settings/display_settings.dart' ;
4+ import 'package:ht_shared/src/models/user_settings/feed_display_preferences.dart' ;
45import 'package:json_annotation/json_annotation.dart' ;
56
67part 'user_app_settings.g.dart' ;
78
89/// {@template user_app_settings}
910/// Represents a collection of user-specific application settings,
10- /// including display preferences and language selection.
11+ /// including display preferences, language selection, and feed display options .
1112///
1213/// This model unifies settings that are tied to a specific user,
1314/// making it suitable for management via a generic data client.
@@ -24,8 +25,10 @@ class UserAppSettings extends Equatable {
2425 required this .id,
2526 DisplaySettings ? displaySettings,
2627 AppLanguage ? language,
28+ FeedDisplayPreferences ? feedPreferences,
2729 }) : displaySettings = displaySettings ?? const DisplaySettings (),
28- language = language ?? 'en' ; // Default language is English
30+ language = language ?? 'en' , // Default language is English
31+ feedPreferences = feedPreferences ?? const FeedDisplayPreferences ();
2932
3033 /// Factory method to create a [UserAppSettings] instance from a JSON map.
3134 factory UserAppSettings .fromJson (Map <String , dynamic > json) =>
@@ -40,23 +43,28 @@ class UserAppSettings extends Equatable {
4043 /// The selected application language code (ISO 639-1).
4144 final AppLanguage language;
4245
46+ /// User-configurable settings for how content feeds are displayed.
47+ final FeedDisplayPreferences feedPreferences;
48+
4349 /// Converts this [UserAppSettings] instance to a JSON map.
4450 Map <String , dynamic > toJson () => _$UserAppSettingsToJson (this );
4551
4652 @override
47- List <Object ?> get props => [id, displaySettings, language];
53+ List <Object ?> get props => [id, displaySettings, language, feedPreferences ];
4854
4955 /// Creates a copy of this [UserAppSettings] but with the given fields
5056 /// replaced with the new values.
5157 UserAppSettings copyWith ({
5258 String ? id,
5359 DisplaySettings ? displaySettings,
5460 AppLanguage ? language,
61+ FeedDisplayPreferences ? feedPreferences,
5562 }) {
5663 return UserAppSettings (
5764 id: id ?? this .id,
5865 displaySettings: displaySettings ?? this .displaySettings,
5966 language: language ?? this .language,
67+ feedPreferences: feedPreferences ?? this .feedPreferences,
6068 );
6169 }
6270}
0 commit comments