2024-05-08 05:03:49 -04:00
|
|
|
// a freezed class to store the settings of the app
|
|
|
|
|
|
|
|
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
|
|
|
|
|
|
part 'app_settings.freezed.dart';
|
|
|
|
|
part 'app_settings.g.dart';
|
|
|
|
|
|
|
|
|
|
/// stores the settings of the app
|
|
|
|
|
///
|
|
|
|
|
/// only the visual settings are stored here
|
|
|
|
|
@freezed
|
|
|
|
|
class AppSettings with _$AppSettings {
|
|
|
|
|
const factory AppSettings({
|
|
|
|
|
@Default(true) bool isDarkMode,
|
2024-05-11 04:06:25 -04:00
|
|
|
@Default(false) bool useMaterialThemeOnItemPage,
|
2024-05-17 11:04:20 -04:00
|
|
|
@Default(PlayerSettings()) PlayerSettings playerSettings,
|
2024-05-08 05:03:49 -04:00
|
|
|
}) = _AppSettings;
|
|
|
|
|
|
|
|
|
|
factory AppSettings.fromJson(Map<String, dynamic> json) =>
|
|
|
|
|
_$AppSettingsFromJson(json);
|
|
|
|
|
}
|
2024-05-17 11:04:20 -04:00
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
|
class PlayerSettings with _$PlayerSettings {
|
|
|
|
|
const factory PlayerSettings({
|
|
|
|
|
@Default(MinimizedPlayerSettings())
|
|
|
|
|
MinimizedPlayerSettings miniPlayerSettings,
|
2024-05-19 08:53:21 -04:00
|
|
|
@Default(ExpandedPlayerSettings())
|
|
|
|
|
ExpandedPlayerSettings expandedPlayerSettings,
|
|
|
|
|
@Default(1) double preferredVolume,
|
|
|
|
|
@Default(1) double preferredSpeed,
|
|
|
|
|
@Default(Duration(minutes: 15)) Duration sleepTimer,
|
2024-05-17 11:04:20 -04:00
|
|
|
}) = _PlayerSettings;
|
|
|
|
|
|
|
|
|
|
factory PlayerSettings.fromJson(Map<String, dynamic> json) =>
|
|
|
|
|
_$PlayerSettingsFromJson(json);
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-19 08:53:21 -04:00
|
|
|
@freezed
|
|
|
|
|
class ExpandedPlayerSettings with _$ExpandedPlayerSettings {
|
|
|
|
|
const factory ExpandedPlayerSettings({
|
|
|
|
|
@Default(false) bool showTotalProgress,
|
|
|
|
|
@Default(true) bool showChapterProgress,
|
|
|
|
|
}) = _ExpandedPlayerSettings;
|
|
|
|
|
|
|
|
|
|
factory ExpandedPlayerSettings.fromJson(Map<String, dynamic> json) =>
|
|
|
|
|
_$ExpandedPlayerSettingsFromJson(json);
|
|
|
|
|
}
|
2024-05-17 11:04:20 -04:00
|
|
|
@freezed
|
|
|
|
|
class MinimizedPlayerSettings with _$MinimizedPlayerSettings {
|
|
|
|
|
const factory MinimizedPlayerSettings({
|
|
|
|
|
@Default(false) bool useChapterInfo,
|
2024-05-19 08:53:21 -04:00
|
|
|
}) = _MinimizedPlayerSettings;
|
2024-05-17 11:04:20 -04:00
|
|
|
|
|
|
|
|
factory MinimizedPlayerSettings.fromJson(Map<String, dynamic> json) =>
|
|
|
|
|
_$MinimizedPlayerSettingsFromJson(json);
|
|
|
|
|
}
|