class ProfilePrivacySettings { final String userId; final String profileVisibility; final String postsVisibility; final String savedVisibility; final String followRequestPolicy; final String defaultPostVisibility; final bool isPrivateProfile; const ProfilePrivacySettings({ required this.userId, required this.profileVisibility, required this.postsVisibility, required this.savedVisibility, required this.followRequestPolicy, required this.defaultPostVisibility, required this.isPrivateProfile, }); 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', defaultPostVisibility: json['default_post_visibility'] as String? ?? 'public', isPrivateProfile: json['is_private_profile'] as bool? ?? false, ); } Map toJson() { return { 'user_id': userId, 'profile_visibility': profileVisibility, 'posts_visibility': postsVisibility, 'saved_visibility': savedVisibility, 'follow_request_policy': followRequestPolicy, 'default_post_visibility': defaultPostVisibility, 'is_private_profile': isPrivateProfile, }; } ProfilePrivacySettings copyWith({ String? profileVisibility, String? postsVisibility, String? savedVisibility, String? followRequestPolicy, String? defaultPostVisibility, bool? isPrivateProfile, }) { return ProfilePrivacySettings( userId: userId, profileVisibility: profileVisibility ?? this.profileVisibility, postsVisibility: postsVisibility ?? this.postsVisibility, savedVisibility: savedVisibility ?? this.savedVisibility, followRequestPolicy: followRequestPolicy ?? this.followRequestPolicy, defaultPostVisibility: defaultPostVisibility ?? this.defaultPostVisibility, isPrivateProfile: isPrivateProfile ?? this.isPrivateProfile, ); } static ProfilePrivacySettings defaults(String userId) { return ProfilePrivacySettings( userId: userId, profileVisibility: 'public', postsVisibility: 'public', savedVisibility: 'private', followRequestPolicy: 'everyone', defaultPostVisibility: 'public', isPrivateProfile: false, ); } }