AIConfig model

This commit is contained in:
Dat H. Pham
2025-12-19 10:17:49 +07:00
committed by Dat H. Pham
parent 68e55a0e22
commit a915ec9881
3 changed files with 76 additions and 0 deletions
@@ -0,0 +1,34 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/preferences_config.dart';
part 'ai_scribe_config.g.dart';
@JsonSerializable()
class AIScribeConfig extends PreferencesConfig {
final bool isEnabled;
AIScribeConfig({
this.isEnabled = true,
});
factory AIScribeConfig.initial() => AIScribeConfig();
factory AIScribeConfig.fromJson(Map<String, dynamic> json) =>
_$AIScribeConfigFromJson(json);
@override
Map<String, dynamic> toJson() => _$AIScribeConfigToJson(this);
@override
List<Object> get props => [isEnabled];
}
extension AIScribeConfigExtension on AIScribeConfig {
AIScribeConfig copyWith({
bool? isEnabled,
}) {
return AIScribeConfig(
isEnabled: isEnabled ?? this.isEnabled,
);
}
}
@@ -1,5 +1,6 @@
import 'package:collection/collection.dart';
import 'package:equatable/equatable.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/ai_scribe_config.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/preferences_config.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/spam_report_config.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/text_formatting_menu_config.dart';
@@ -15,6 +16,7 @@ class PreferencesSetting with EquatableMixin {
ThreadDetailConfig.initial(),
SpamReportConfig.initial(),
TextFormattingMenuConfig.initial(),
AIScribeConfig.initial(),
]);
}
@@ -48,6 +50,16 @@ class PreferencesSetting with EquatableMixin {
}
}
AIScribeConfig get aiScribeConfig {
final aiConfig =
configs.firstWhereOrNull((config) => config is AIScribeConfig);
if (aiConfig != null) {
return aiConfig as AIScribeConfig;
} else {
return AIScribeConfig.initial();
}
}
@override
List<Object?> get props => [configs];
}