class ProfilePrivacySettings { final String userId; final String profileVisibility; final String postsVisibility; final String savedVisibility; final String followRequestPolicy; const ProfilePrivacySettings({ required this.userId, required this.profileVisibility, required this.postsVisibility, required this.savedVisibility, required this.followRequestPolicy, }); factory ProfilePrivacySettings.fromJson(Map json) { return ProfilePrivacySettings( userId: json['user_id'] as String, profileVisibility: json['profile_visibility'] as String? ?? 'public', postsVisibility: json['posts_visibility'] as String? ?? 'public', savedVisibility: json['saved_visibility'] as String? ?? 'private', followRequestPolicy: json['follow_request_policy'] as String? ?? 'everyone', ); } Map toJson() { return { 'user_id': userId, 'profile_visibility': profileVisibility, 'posts_visibility': postsVisibility, 'saved_visibility': savedVisibility, 'follow_request_policy': followRequestPolicy, }; } ProfilePrivacySettings copyWith({ String? profileVisibility, String? postsVisibility, String? savedVisibility, String? followRequestPolicy, }) { return ProfilePrivacySettings( userId: userId, profileVisibility: profileVisibility ?? this.profileVisibility, postsVisibility: postsVisibility ?? this.postsVisibility, savedVisibility: savedVisibility ?? this.savedVisibility, followRequestPolicy: followRequestPolicy ?? this.followRequestPolicy, ); } static ProfilePrivacySettings defaults(String userId) { return ProfilePrivacySettings( userId: userId, profileVisibility: 'public', postsVisibility: 'public', savedVisibility: 'private', followRequestPolicy: 'everyone', ); } }