TF-4082 Setup text formatting menu state from user's preferences in composer
This commit is contained in:
@@ -2,6 +2,7 @@ import 'package:collection/collection.dart';
|
||||
import 'package:equatable/equatable.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';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/thread_detail_config.dart';
|
||||
|
||||
class PreferencesSetting with EquatableMixin {
|
||||
@@ -13,6 +14,7 @@ class PreferencesSetting with EquatableMixin {
|
||||
return PreferencesSetting([
|
||||
ThreadDetailConfig.initial(),
|
||||
SpamReportConfig.initial(),
|
||||
TextFormattingMenuConfig.initial(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -36,6 +38,16 @@ class PreferencesSetting with EquatableMixin {
|
||||
}
|
||||
}
|
||||
|
||||
TextFormattingMenuConfig get textFormattingMenuConfig {
|
||||
final formatConfig = configs
|
||||
.firstWhereOrNull((config) => config is TextFormattingMenuConfig);
|
||||
if (formatConfig != null) {
|
||||
return formatConfig as TextFormattingMenuConfig;
|
||||
} else {
|
||||
return TextFormattingMenuConfig.initial();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [configs];
|
||||
}
|
||||
|
||||
@@ -14,12 +14,7 @@ class SpamReportConfig extends PreferencesConfig {
|
||||
this.lastTimeDismissedMilliseconds = 0,
|
||||
});
|
||||
|
||||
factory SpamReportConfig.initial() {
|
||||
return SpamReportConfig(
|
||||
isEnabled: true,
|
||||
lastTimeDismissedMilliseconds: 0,
|
||||
);
|
||||
}
|
||||
factory SpamReportConfig.initial() => SpamReportConfig();
|
||||
|
||||
factory SpamReportConfig.fromJson(Map<String, dynamic> json) =>
|
||||
_$SpamReportConfigFromJson(json);
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/preferences_config.dart';
|
||||
|
||||
part 'text_formatting_menu_config.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class TextFormattingMenuConfig extends PreferencesConfig {
|
||||
final bool isDisplayed;
|
||||
|
||||
TextFormattingMenuConfig({this.isDisplayed = false});
|
||||
|
||||
factory TextFormattingMenuConfig.initial() => TextFormattingMenuConfig();
|
||||
|
||||
factory TextFormattingMenuConfig.fromJson(Map<String, dynamic> json) =>
|
||||
_$TextFormattingMenuConfigFromJson(json);
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() => _$TextFormattingMenuConfigToJson(this);
|
||||
|
||||
@override
|
||||
List<Object> get props => [isDisplayed];
|
||||
}
|
||||
|
||||
extension TextFormattingMenuConfigExtension on TextFormattingMenuConfig {
|
||||
TextFormattingMenuConfig copyWith({bool? isDisplayed}) {
|
||||
return TextFormattingMenuConfig(
|
||||
isDisplayed: isDisplayed ?? this.isDisplayed,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -9,11 +9,7 @@ class ThreadDetailConfig extends PreferencesConfig {
|
||||
|
||||
ThreadDetailConfig({this.isEnabled = false});
|
||||
|
||||
factory ThreadDetailConfig.initial() {
|
||||
return ThreadDetailConfig(
|
||||
isEnabled: false,
|
||||
);
|
||||
}
|
||||
factory ThreadDetailConfig.initial() => ThreadDetailConfig();
|
||||
|
||||
factory ThreadDetailConfig.fromJson(Map<String, dynamic> json) =>
|
||||
_$ThreadDetailConfigFromJson(json);
|
||||
|
||||
Reference in New Issue
Block a user