41 lines
1.2 KiB
Dart
41 lines
1.2 KiB
Dart
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
||
|
|
|
||
|
|
part 'user_settings.freezed.dart';
|
||
|
|
part 'user_settings.g.dart';
|
||
|
|
|
||
|
|
@freezed
|
||
|
|
sealed class UserSettings with _$UserSettings {
|
||
|
|
const factory UserSettings({
|
||
|
|
// Chat preferences
|
||
|
|
@Default(true) bool showReadReceipts,
|
||
|
|
@Default(true) bool enableNotifications,
|
||
|
|
@Default(false) bool enableSounds,
|
||
|
|
@Default('auto') String theme, // 'light', 'dark', 'auto'
|
||
|
|
// AI preferences
|
||
|
|
@Default(0.7) double temperature,
|
||
|
|
@Default(2048) int maxTokens,
|
||
|
|
@Default(false) bool streamResponses,
|
||
|
|
@Default(false) bool webSearchEnabled,
|
||
|
|
|
||
|
|
// Privacy settings
|
||
|
|
@Default(true) bool saveConversations,
|
||
|
|
@Default(false) bool shareUsageData,
|
||
|
|
|
||
|
|
// Interface preferences
|
||
|
|
@Default('comfortable')
|
||
|
|
String density, // 'compact', 'comfortable', 'spacious'
|
||
|
|
@Default(14.0) double fontSize,
|
||
|
|
@Default('en') String language,
|
||
|
|
|
||
|
|
// Accessibility settings
|
||
|
|
@Default(false) bool reduceMotion,
|
||
|
|
@Default(true) bool hapticFeedback,
|
||
|
|
|
||
|
|
// Advanced settings
|
||
|
|
@Default({}) Map<String, dynamic> customSettings,
|
||
|
|
}) = _UserSettings;
|
||
|
|
|
||
|
|
factory UserSettings.fromJson(Map<String, dynamic> json) =>
|
||
|
|
_$UserSettingsFromJson(json);
|
||
|
|
}
|