import 'package:copy_with_extension/copy_with_extension.dart'; import 'package:fast_equatable/fast_equatable.dart'; import 'package:flutter/material.dart'; import 'package:json_annotation/json_annotation.dart'; part 'general_settings.g.dart'; enum DeleteBrowsingDataType { tabs('Open tabs'), history('Browsing history'), cookies('Cookies and site data', 'You’ll be logged out of most sites'), cache('Cached images and files', 'Frees up storage space'), permissions('Site permissions'), downloads('Downloads'); final String title; final String? description; const DeleteBrowsingDataType(this.title, [this.description]); } @CopyWith() @JsonSerializable(includeIfNull: true, constructor: 'withDefaults') class GeneralSettings with FastEquatable { final ThemeMode themeMode; final bool enableReadability; final bool enforceReadability; final Set? deleteBrowsingDataOnQuit; final String defaultSearchProvider; GeneralSettings({ required this.themeMode, required this.enableReadability, required this.enforceReadability, required this.deleteBrowsingDataOnQuit, required this.defaultSearchProvider, }); GeneralSettings.withDefaults({ ThemeMode? themeMode, bool? enableReadability, bool? enforceReadability, this.deleteBrowsingDataOnQuit, String? defaultSearchProvider, }) : themeMode = themeMode ?? ThemeMode.dark, enableReadability = enableReadability ?? true, enforceReadability = enforceReadability ?? false, defaultSearchProvider = defaultSearchProvider ?? 'lais'; factory GeneralSettings.fromJson(Map json) => _$GeneralSettingsFromJson(json); Map toJson() => _$GeneralSettingsToJson(this); @override List get hashParameters => [ themeMode, enableReadability, enforceReadability, deleteBrowsingDataOnQuit, defaultSearchProvider, ]; }