diff --git a/android/app/build.gradle b/android/app/build.gradle index da765dd2..2f6efb67 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -52,7 +52,7 @@ android { applicationId "com.kodjodevf.mangayomi" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 21 + minSdkVersion flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName @@ -84,4 +84,4 @@ flutter { dependencies { implementation(name: 'libmtorrentserver', ext: 'aar') -} \ No newline at end of file +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 7e342774..1055afb4 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -36,6 +36,12 @@ + + + + + + (target as BaseRequest).finalized, }, ); - final responseBridgedClass = BridgedClassDefinition( + final responseBridgedClass = BridgedClass( nativeType: Response, name: 'Response', constructors: { @@ -120,7 +120,7 @@ class HttpBridge { 'request': (visitor, target) => (target as Response).request, }, ); - final streamedResponseBridgedClass = BridgedClassDefinition( + final streamedResponseBridgedClass = BridgedClass( nativeType: StreamedResponse, name: 'StreamedResponse', constructors: { @@ -144,7 +144,7 @@ class HttpBridge { 'request': (visitor, target) => (target as StreamedResponse).request, }, ); - final byteStreamBridgedClass = BridgedClassDefinition( + final byteStreamBridgedClass = BridgedClass( nativeType: ByteStream, name: 'ByteStream', constructors: { diff --git a/lib/eval/dart/bridge/m_chapter.dart b/lib/eval/dart/bridge/m_chapter.dart index c3160e7d..46dbb267 100644 --- a/lib/eval/dart/bridge/m_chapter.dart +++ b/lib/eval/dart/bridge/m_chapter.dart @@ -2,7 +2,7 @@ import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/eval/model/m_chapter.dart'; class MChapterBridge { - final mChapterBridgedClass = BridgedClassDefinition( + final mChapterBridgedClass = BridgedClass( nativeType: MChapter, name: 'MChapter', constructors: { @@ -12,6 +12,11 @@ class MChapterBridge { url: namedArgs.get('url'), dateUpload: namedArgs.get('dateUpload'), scanlator: namedArgs.get('scanlator'), + isFiller: namedArgs.get('isFiller'), + thumbnailUrl: namedArgs.get('scanlator'), + description: namedArgs.get('scanlator'), + downloadSize: namedArgs.get('scanlator'), + duration: namedArgs.get('scanlator'), ); }, }, @@ -20,6 +25,11 @@ class MChapterBridge { 'url': (visitor, target) => (target as MChapter).url, 'dateUpload': (visitor, target) => (target as MChapter).dateUpload, 'scanlator': (visitor, target) => (target as MChapter).scanlator, + 'isFiller': (visitor, target) => (target as MChapter).isFiller, + 'thumbnailUrl': (visitor, target) => (target as MChapter).thumbnailUrl, + 'description': (visitor, target) => (target as MChapter).description, + 'downloadSize': (visitor, target) => (target as MChapter).downloadSize, + 'duration': (visitor, target) => (target as MChapter).duration, }, setters: { 'name': (visitor, target, value) => @@ -30,6 +40,16 @@ class MChapterBridge { (target as MChapter).dateUpload = value as String?, 'scanlator': (visitor, target, value) => (target as MChapter).scanlator = value as String?, + 'isFiller': (visitor, target, value) => + (target as MChapter).isFiller = value as bool?, + 'thumbnailUrl': (visitor, target, value) => + (target as MChapter).thumbnailUrl = value as String?, + 'description': (visitor, target, value) => + (target as MChapter).description = value as String?, + 'downloadSize': (visitor, target, value) => + (target as MChapter).downloadSize = value as String?, + 'duration': (visitor, target, value) => + (target as MChapter).duration = value as String?, }, ); void registerBridgedClasses(D4rt interpreter) { diff --git a/lib/eval/dart/bridge/m_manga.dart b/lib/eval/dart/bridge/m_manga.dart index 94719ccf..bcd4945f 100644 --- a/lib/eval/dart/bridge/m_manga.dart +++ b/lib/eval/dart/bridge/m_manga.dart @@ -3,7 +3,7 @@ import 'package:mangayomi/eval/model/m_manga.dart'; import 'package:mangayomi/models/manga.dart'; class MMangaBridge { - final mMangaBridgedClass = BridgedClassDefinition( + final mMangaBridgedClass = BridgedClass( nativeType: MManga, name: 'MManga', constructors: { diff --git a/lib/eval/dart/bridge/m_pages.dart b/lib/eval/dart/bridge/m_pages.dart index 33e8605e..59c47dec 100644 --- a/lib/eval/dart/bridge/m_pages.dart +++ b/lib/eval/dart/bridge/m_pages.dart @@ -3,7 +3,7 @@ import 'package:mangayomi/eval/model/m_manga.dart'; import 'package:mangayomi/eval/model/m_pages.dart'; class MPagesBridge { - final mPageBridgedClass = BridgedClassDefinition( + final mPageBridgedClass = BridgedClass( nativeType: MPages, name: 'MPages', constructors: { diff --git a/lib/eval/dart/bridge/m_provider.dart b/lib/eval/dart/bridge/m_provider.dart index 13838e4f..33765e55 100644 --- a/lib/eval/dart/bridge/m_provider.dart +++ b/lib/eval/dart/bridge/m_provider.dart @@ -7,7 +7,7 @@ import 'package:mangayomi/modules/browse/extension/providers/extension_preferenc import 'package:mangayomi/utils/extensions/string_extensions.dart'; class MProviderBridged { - final mProviderBridged = BridgedClassDefinition( + final mProviderBridged = BridgedClass( nativeType: MProvider, name: 'MProvider', constructors: { diff --git a/lib/eval/dart/bridge/m_source.dart b/lib/eval/dart/bridge/m_source.dart index da7ad73a..d5f0831f 100644 --- a/lib/eval/dart/bridge/m_source.dart +++ b/lib/eval/dart/bridge/m_source.dart @@ -2,7 +2,7 @@ import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/eval/model/m_source.dart'; class MSourceBridge { - final mSourceBridgedClass = BridgedClassDefinition( + final mSourceBridgedClass = BridgedClass( nativeType: MSource, name: 'MSource', constructors: { diff --git a/lib/eval/dart/bridge/m_track.dart b/lib/eval/dart/bridge/m_track.dart index 405ee848..7dbf5d0f 100644 --- a/lib/eval/dart/bridge/m_track.dart +++ b/lib/eval/dart/bridge/m_track.dart @@ -2,7 +2,7 @@ import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/models/video.dart'; class MTrackBridge { - final mTrackBridgedClass = BridgedClassDefinition( + final mTrackBridgedClass = BridgedClass( nativeType: Track, name: 'MTrack', constructors: { diff --git a/lib/eval/dart/bridge/m_video.dart b/lib/eval/dart/bridge/m_video.dart index 17f6f86b..b6883c46 100644 --- a/lib/eval/dart/bridge/m_video.dart +++ b/lib/eval/dart/bridge/m_video.dart @@ -2,7 +2,7 @@ import 'package:d4rt/d4rt.dart'; import 'package:mangayomi/models/video.dart'; class MVideoBridge { - final mVideoBridgedClass = BridgedClassDefinition( + final mVideoBridgedClass = BridgedClass( nativeType: Video, name: 'MVideo', constructors: { diff --git a/lib/eval/dart/bridge/source_preference.dart b/lib/eval/dart/bridge/source_preference.dart index 82fcd579..0a715513 100644 --- a/lib/eval/dart/bridge/source_preference.dart +++ b/lib/eval/dart/bridge/source_preference.dart @@ -3,7 +3,7 @@ import 'package:mangayomi/eval/model/source_preference.dart'; // EditTextPreference class SourcePreferenceBridge { - final checkBoxPreferenceBridgedClass = BridgedClassDefinition( + final checkBoxPreferenceBridgedClass = BridgedClass( nativeType: CheckBoxPreference, name: 'CheckBoxPreference', constructors: { @@ -28,7 +28,7 @@ class SourcePreferenceBridge { (target as SourcePreference).checkBoxPreference?.value, }, ); - final switchPreferenceCompatBridgedClass = BridgedClassDefinition( + final switchPreferenceCompatBridgedClass = BridgedClass( nativeType: SwitchPreferenceCompat, name: 'SwitchPreferenceCompat', constructors: { @@ -53,7 +53,7 @@ class SourcePreferenceBridge { (target as SourcePreference).switchPreferenceCompat?.value, }, ); - final listPreferenceBridgedClass = BridgedClassDefinition( + final listPreferenceBridgedClass = BridgedClass( nativeType: ListPreference, name: 'ListPreference', constructors: { @@ -85,7 +85,7 @@ class SourcePreferenceBridge { }, ); - final multiSelectListPreferenceBridgedClass = BridgedClassDefinition( + final multiSelectListPreferenceBridgedClass = BridgedClass( nativeType: MultiSelectListPreference, name: 'MultiSelectListPreference', constructors: { @@ -116,7 +116,7 @@ class SourcePreferenceBridge { (target as SourcePreference).multiSelectListPreference?.entryValues, }, ); - final editTextPreferenceBridgedClass = BridgedClassDefinition( + final editTextPreferenceBridgedClass = BridgedClass( nativeType: EditTextPreference, name: 'EditTextPreference', constructors: { diff --git a/lib/eval/lib.dart b/lib/eval/lib.dart index e185a75d..e5842e93 100644 --- a/lib/eval/lib.dart +++ b/lib/eval/lib.dart @@ -3,10 +3,12 @@ import 'package:mangayomi/models/source.dart'; import 'dart/service.dart'; import 'javascript/service.dart'; +import 'mihon/service.dart'; -ExtensionService getExtensionService(Source source) { +ExtensionService getExtensionService(Source source, String androidProxyServer) { return switch (source.sourceCodeLanguage) { SourceCodeLanguage.dart => DartExtensionService(source), SourceCodeLanguage.javascript => JsExtensionService(source), + SourceCodeLanguage.mihon => MihonExtensionService(source, androidProxyServer), }; } diff --git a/lib/eval/mihon/models.dart b/lib/eval/mihon/models.dart new file mode 100644 index 00000000..ef629187 --- /dev/null +++ b/lib/eval/mihon/models.dart @@ -0,0 +1,85 @@ +import 'package:mangayomi/models/manga.dart'; + +class MangaPages { + List list; + bool hasNextPage; + MangaPages({required this.list, this.hasNextPage = false}); + + factory MangaPages.fromJson(Map json, ItemType itemType) { + final name = itemType == ItemType.anime ? "animes" : "mangas"; + return MangaPages( + list: json[name] != null + ? (json[name] as List).map((e) => SManga.fromJson(e)).toList() + : [], + hasNextPage: json['hasNextPage'], + ); + } + + Map toJson(ItemType itemType) => { + itemType == ItemType.anime ? "animes" : "mangas": list + .map((v) => v.toJson()) + .toList(), + 'hasNextPage': hasNextPage, + }; +} + +class SManga { + String? url; + + String? title; + + String? artist; + + String? author; + + String? description; + + List? genre; + + Status? status; + + String? thumbnailUrl; + + SManga({ + this.url, + this.title, + this.artist, + this.author, + this.description, + this.genre, + this.status = Status.unknown, + this.thumbnailUrl, + }); + + factory SManga.fromJson(Map json) { + return SManga( + url: json['url'], + title: json['title'], + artist: json['artist'], + author: json['author'], + description: json['description'], + genre: (json['genres'] as List?)?.map((e) => e.toString()).toList() ?? [], + status: switch (json['status'] as int?) { + 1 => Status.ongoing, + 2 => Status.completed, + 4 => Status.publishingFinished, + 5 => Status.canceled, + 6 => Status.onHiatus, + _ => Status.unknown, + }, + thumbnailUrl: json['thumbnail_url'], + ); + } + Map toJson() { + return { + 'url': url, + 'title': title, + 'artist': artist, + 'author': author, + 'description': description, + 'genre': genre?.join(", "), + 'status': status, + 'thumbnail_url': thumbnailUrl, + }; + } +} diff --git a/lib/eval/mihon/service.dart b/lib/eval/mihon/service.dart new file mode 100644 index 00000000..747b5c35 --- /dev/null +++ b/lib/eval/mihon/service.dart @@ -0,0 +1,339 @@ +import 'dart:convert'; +import 'dart:math'; +import 'package:http_interceptor/http_interceptor.dart'; +import 'package:mangayomi/eval/javascript/http.dart'; +import 'package:mangayomi/eval/model/filter.dart'; +import 'package:mangayomi/eval/model/m_chapter.dart'; +import 'package:mangayomi/eval/model/m_manga.dart'; +import 'package:mangayomi/eval/model/m_pages.dart'; +import 'package:mangayomi/eval/model/source_preference.dart'; +import 'package:mangayomi/models/page.dart'; +import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/models/video.dart'; +import 'package:mangayomi/services/http/m_client.dart'; + +import '../../models/manga.dart'; +import '../interface.dart'; +import 'models.dart'; + +class MihonExtensionService implements ExtensionService { + late String androidProxyServer; + @override + late Source source; + late InterceptedClient client; + + MihonExtensionService(this.source, this.androidProxyServer) { + client = MClient.init(); + } + + @override + Map getHeaders() { + return source.headers != null && source.headers!.isNotEmpty + ? (jsonDecode(source.headers!) as Map?)?.toMapStringString ?? {} + : {}; + } + + @override + bool get supportsLatest { + return source.supportLatest ?? false; + } + + @override + String get sourceBaseUrl { + return source.baseUrl!; + } + + @override + Future getPopular(int page) async { + final name = source.itemType == ItemType.anime ? "Anime" : "Manga"; + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": "getPopular$name", + "page": page + 1, + "search": "", + "preferences": getSourcePreferences(), + "data": source.sourceCode, + }), + ); + final data = jsonDecode(res.body) as Map; + final pages = MangaPages.fromJson(data, source.itemType); + return MPages( + list: pages.list + .map( + (e) => MManga( + name: e.title, + link: e.url, + artist: e.artist, + author: e.author, + description: e.description, + genre: e.genre, + status: e.status, + imageUrl: e.thumbnailUrl, + chapters: [], + ), + ) + .toList(), + hasNextPage: pages.hasNextPage, + ); + } + + @override + Future getLatestUpdates(int page) async { + final name = source.itemType == ItemType.anime ? "Anime" : "Manga"; + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": "getLatest$name", + "page": page + 1, + "search": "", + "preferences": getSourcePreferences(), + "data": source.sourceCode, + }), + ); + final data = jsonDecode(res.body) as Map; + final pages = MangaPages.fromJson(data, source.itemType); + return MPages( + list: pages.list + .map( + (e) => MManga( + name: e.title, + link: e.url, + artist: e.artist, + author: e.author, + description: e.description, + genre: e.genre, + status: e.status, + imageUrl: e.thumbnailUrl, + chapters: [], + ), + ) + .toList(), + hasNextPage: pages.hasNextPage, + ); + } + + @override + Future search(String query, int page, List filters) async { + final name = source.itemType == ItemType.anime ? "Anime" : "Manga"; + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": "getSearch$name", + "page": max(1, page), + "search": query, + "filterList": _convertFilters(filters), + "preferences": getSourcePreferences(), + "data": source.sourceCode, + }), + ); + final data = jsonDecode(res.body) as Map; + final pages = MangaPages.fromJson(data, source.itemType); + return MPages( + list: pages.list + .map( + (e) => MManga( + name: e.title, + link: e.url, + artist: e.artist, + author: e.author, + description: e.description, + genre: e.genre, + status: e.status, + imageUrl: e.thumbnailUrl, + chapters: [], + ), + ) + .toList(), + hasNextPage: pages.hasNextPage, + ); + } + + @override + Future getDetail(String url) async { + final name = source.itemType == ItemType.anime ? "Anime" : "Manga"; + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": "getDetails$name", + if (source.itemType == ItemType.manga) "mangaData": {"url": url}, + if (source.itemType == ItemType.anime) "animeData": {"url": url}, + "preferences": getSourcePreferences(), + "data": source.sourceCode, + }), + ); + final data = jsonDecode(res.body) as Map; + final chapters = await getChapterList(url); + return MManga( + name: data['title'], + link: data['url'], + artist: data['artist'], + author: data['author'], + description: data['description'], + genre: (data['genres'] as List?)?.map((e) => e.toString()).toList() ?? [], + status: switch (data['status'] as int?) { + 1 => Status.ongoing, + 2 => Status.completed, + 4 => Status.publishingFinished, + 5 => Status.canceled, + 6 => Status.onHiatus, + _ => Status.unknown, + }, + imageUrl: data['thumbnail_url'], + chapters: chapters, + ); + } + + Future> getChapterList(String url) async { + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": source.itemType == ItemType.anime + ? "getEpisodeList" + : "getChapterList", + if (source.itemType == ItemType.manga) "mangaData": {"url": url}, + if (source.itemType == ItemType.anime) "animeData": {"url": url}, + "preferences": getSourcePreferences(), + "data": source.sourceCode, + }), + ); + final data = jsonDecode(res.body) as List; + return data + .map( + (e) => MChapter( + name: e['name'], + url: e['url'], + dateUpload: + (e['date_upload'] as int?)?.toString() ?? + DateTime.now().millisecondsSinceEpoch.toString(), + scanlator: e['scanlator'], + ), + ) + .toList(); + } + + @override + Future> getPageList(String url) async { + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": "getPageList", + "chapterData": {"url": url}, + "preferences": getSourcePreferences(), + "data": source.sourceCode, + }), + ); + final data = jsonDecode(res.body) as List; + return data.map((e) => PageUrl(e['imageUrl'])).toList(); + } + + @override + Future> getVideoList(String url) async { + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": "getVideoList", + "episodeData": {"url": url}, + "preferences": getSourcePreferences(), + "data": source.sourceCode, + }), + ); + final data = jsonDecode(res.body) as List; + return data.map((e) { + final tempHeaders = + e['headers']?['namesAndValues\$okhttp'] as List?; + final Map headers = {}; + if (tempHeaders != null) { + for (var i = 0; i + 1 < tempHeaders.length; i += 2) { + headers[tempHeaders[i]] = tempHeaders[i + 1]; + } + } + return Video( + e['videoUrl'], + e['quality'], + e['url'], + headers: headers, + audios: + (e['audioTracks'] as List?) + ?.map( + (e) => Track( + file: e['file'] ?? e['url'], + label: e['label'] ?? e['lang'], + ), + ) + .toList() ?? + [], + subtitles: + (e['subtitleTracks'] as List?) + ?.map( + (e) => Track( + file: e['file'] ?? e['url'], + label: e['label'] ?? e['lang'], + ), + ) + .toList() ?? + [], + ); + }).toList(); + } + + @override + Future getHtmlContent(String name, String url) async { + return ""; + } + + @override + Future cleanHtmlContent(String html) async { + return html; + } + + @override + FilterList getFilterList() { + return source.getFilterList() ?? FilterList([]); + } + + @override + List getSourcePreferences() { + if (source.preferenceList == null) { + return []; + } + final data = jsonDecode(source.preferenceList!) as List; + return data.map((e) => SourcePreference.fromJson(e)).toList(); + } + + List _convertFilters(List filters) { + return filters.expand((e) sync* { + if (e is TextFilter) { + yield {"name": e.name, "stateString": e.state, "type": "TextFilter"}; + } else if (e is GroupFilter) { + yield { + "name": e.name, + "stateList": e.state.expand((e) sync* { + if (e is CheckBoxFilter) { + yield { + "name": e.name, + "stateBoolean": e.state, + "type": "CheckBoxFilter", + }; + } else if (e is TriStateFilter) { + yield { + "name": e.name, + "stateInt": e.state, + "type": "TriStateFilter", + }; + } + }).toList(), + "type": "GroupFilter", + }; + } else if (e is SelectFilter) { + yield {"name": e.name, "stateInt": e.state, "type": "SelectFilter"}; + } else if (e is SortFilter) { + yield { + "name": e.name, + "stateSort": {"ascending": e.state.ascending, "index": e.state.index}, + "type": "SortFilter", + }; + } + }).toList(); + } +} diff --git a/lib/eval/model/m_bridge.dart b/lib/eval/model/m_bridge.dart index 1338f2e8..c942940a 100644 --- a/lib/eval/model/m_bridge.dart +++ b/lib/eval/model/m_bridge.dart @@ -690,6 +690,7 @@ void Function() botToast( ], bool onlyOne = true, bool? themeDark, + bool showIcon = true, }) { final context = navigatorKey.currentState?.context; final assets = [ @@ -703,12 +704,14 @@ void Function() botToast( duration: Duration(seconds: second), animationDuration: Duration(milliseconds: animationDuration), animationReverseDuration: Duration(milliseconds: animationDuration), - leading: (_) => Image.asset( - (themeDark == null - ? (assets..shuffle()).first - : assets[themeDark ? 0 : 1]), - height: 25, - ), + leading: showIcon + ? (_) => Image.asset( + (themeDark == null + ? (assets..shuffle()).first + : assets[themeDark ? 0 : 1]), + height: 25, + ) + : null, title: (_) => Text(title, style: TextStyle(fontSize: fontSize)), trailing: hasCloudFlare ? (_) => OutlinedButton.icon( diff --git a/lib/eval/model/m_chapter.dart b/lib/eval/model/m_chapter.dart index 8a774db1..82fa94ef 100644 --- a/lib/eval/model/m_chapter.dart +++ b/lib/eval/model/m_chapter.dart @@ -6,13 +6,41 @@ class MChapter { String? dateUpload; String? scanlator; - MChapter({this.name, this.url, this.dateUpload, this.scanlator}); + + bool? isFiller; + + String? thumbnailUrl; + + String? description; + + /// video size + String? downloadSize; + + /// video duration + String? duration; + + MChapter({ + this.name, + this.url, + this.dateUpload, + this.scanlator, + this.isFiller = false, + this.thumbnailUrl, + this.description, + this.downloadSize, + this.duration, + }); factory MChapter.fromJson(Map json) { return MChapter( name: json['name'], url: json['url'], dateUpload: json['dateUpload'], scanlator: json['scanlator'], + isFiller: json['isFiller'] ?? false, + thumbnailUrl: json['thumbnailUrl'], + description: json['description'], + downloadSize: json['downloadSize'], + duration: json['duration'], ); } Map toJson() => { @@ -20,5 +48,10 @@ class MChapter { 'url': url, 'dateUpload': dateUpload, 'scanlator': scanlator, + 'isFiller': isFiller, + 'thumbnailUrl': thumbnailUrl, + 'description': description, + 'downloadSize': downloadSize, + 'duration': duration, }; } diff --git a/lib/eval/model/source_preference.dart b/lib/eval/model/source_preference.dart index 5f1270d4..ff94ef8f 100644 --- a/lib/eval/model/source_preference.dart +++ b/lib/eval/model/source_preference.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:isar/isar.dart'; part 'source_preference.g.dart'; @@ -139,7 +141,9 @@ class ListPreference { return ListPreference( title: json['title'], summary: json['summary'], - valueIndex: json['valueIndex'], + valueIndex: json['valueIndex'] != null + ? max(0, json['valueIndex']) + : null, entries: json['entries']?.cast(), entryValues: json['entryValues']?.cast(), ); diff --git a/lib/eval/model/source_preference.g.dart b/lib/eval/model/source_preference.g.dart index 7b70c866..0c891c46 100644 --- a/lib/eval/model/source_preference.g.dart +++ b/lib/eval/model/source_preference.g.dart @@ -21,43 +21,41 @@ const SourcePreferenceSchema = CollectionSchema( id: 0, name: r'checkBoxPreference', type: IsarType.object, + target: r'CheckBoxPreference', ), r'editTextPreference': PropertySchema( id: 1, name: r'editTextPreference', type: IsarType.object, + target: r'EditTextPreference', ), - r'key': PropertySchema( - id: 2, - name: r'key', - type: IsarType.string, - ), + r'key': PropertySchema(id: 2, name: r'key', type: IsarType.string), r'listPreference': PropertySchema( id: 3, name: r'listPreference', type: IsarType.object, + target: r'ListPreference', ), r'multiSelectListPreference': PropertySchema( id: 4, name: r'multiSelectListPreference', type: IsarType.object, + target: r'MultiSelectListPreference', ), - r'sourceId': PropertySchema( - id: 5, - name: r'sourceId', - type: IsarType.long, - ), + r'sourceId': PropertySchema(id: 5, name: r'sourceId', type: IsarType.long), r'switchPreferenceCompat': PropertySchema( id: 6, name: r'switchPreferenceCompat', type: IsarType.object, + target: r'SwitchPreferenceCompat', - ) + ), }, + estimateSize: _sourcePreferenceEstimateSize, serialize: _sourcePreferenceSerialize, deserialize: _sourcePreferenceDeserialize, @@ -70,8 +68,9 @@ const SourcePreferenceSchema = CollectionSchema( r'SwitchPreferenceCompat': SwitchPreferenceCompatSchema, r'ListPreference': ListPreferenceSchema, r'MultiSelectListPreference': MultiSelectListPreferenceSchema, - r'EditTextPreference': EditTextPreferenceSchema + r'EditTextPreference': EditTextPreferenceSchema, }, + getId: _sourcePreferenceGetId, getLinks: _sourcePreferenceGetLinks, attach: _sourcePreferenceAttach, @@ -87,17 +86,25 @@ int _sourcePreferenceEstimateSize( { final value = object.checkBoxPreference; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + CheckBoxPreferenceSchema.estimateSize( - value, allOffsets[CheckBoxPreference]!, allOffsets); + value, + allOffsets[CheckBoxPreference]!, + allOffsets, + ); } } { final value = object.editTextPreference; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + EditTextPreferenceSchema.estimateSize( - value, allOffsets[EditTextPreference]!, allOffsets); + value, + allOffsets[EditTextPreference]!, + allOffsets, + ); } } { @@ -109,25 +116,37 @@ int _sourcePreferenceEstimateSize( { final value = object.listPreference; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + ListPreferenceSchema.estimateSize( - value, allOffsets[ListPreference]!, allOffsets); + value, + allOffsets[ListPreference]!, + allOffsets, + ); } } { final value = object.multiSelectListPreference; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + MultiSelectListPreferenceSchema.estimateSize( - value, allOffsets[MultiSelectListPreference]!, allOffsets); + value, + allOffsets[MultiSelectListPreference]!, + allOffsets, + ); } } { final value = object.switchPreferenceCompat; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + SwitchPreferenceCompatSchema.estimateSize( - value, allOffsets[SwitchPreferenceCompat]!, allOffsets); + value, + allOffsets[SwitchPreferenceCompat]!, + allOffsets, + ); } } return bytesCount; @@ -197,12 +216,12 @@ SourcePreference _sourcePreferenceDeserialize( ListPreferenceSchema.deserialize, allOffsets, ), - multiSelectListPreference: - reader.readObjectOrNull( - offsets[4], - MultiSelectListPreferenceSchema.deserialize, - allOffsets, - ), + multiSelectListPreference: reader + .readObjectOrNull( + offsets[4], + MultiSelectListPreferenceSchema.deserialize, + allOffsets, + ), sourceId: reader.readLongOrNull(offsets[5]), switchPreferenceCompat: reader.readObjectOrNull( offsets[6], @@ -222,38 +241,43 @@ P _sourcePreferenceDeserializeProp

( switch (propertyId) { case 0: return (reader.readObjectOrNull( - offset, - CheckBoxPreferenceSchema.deserialize, - allOffsets, - )) as P; + offset, + CheckBoxPreferenceSchema.deserialize, + allOffsets, + )) + as P; case 1: return (reader.readObjectOrNull( - offset, - EditTextPreferenceSchema.deserialize, - allOffsets, - )) as P; + offset, + EditTextPreferenceSchema.deserialize, + allOffsets, + )) + as P; case 2: return (reader.readStringOrNull(offset)) as P; case 3: return (reader.readObjectOrNull( - offset, - ListPreferenceSchema.deserialize, - allOffsets, - )) as P; + offset, + ListPreferenceSchema.deserialize, + allOffsets, + )) + as P; case 4: return (reader.readObjectOrNull( - offset, - MultiSelectListPreferenceSchema.deserialize, - allOffsets, - )) as P; + offset, + MultiSelectListPreferenceSchema.deserialize, + allOffsets, + )) + as P; case 5: return (reader.readLongOrNull(offset)) as P; case 6: return (reader.readObjectOrNull( - offset, - SwitchPreferenceCompatSchema.deserialize, - allOffsets, - )) as P; + offset, + SwitchPreferenceCompatSchema.deserialize, + allOffsets, + )) + as P; default: throw IsarError('Unknown property with id $propertyId'); } @@ -268,7 +292,10 @@ List> _sourcePreferenceGetLinks(SourcePreference object) { } void _sourcePreferenceAttach( - IsarCollection col, Id id, SourcePreference object) { + IsarCollection col, + Id id, + SourcePreference object, +) { object.id = id; } @@ -284,17 +311,15 @@ extension SourcePreferenceQueryWhereSort extension SourcePreferenceQueryWhere on QueryBuilder { QueryBuilder idEqualTo( - Id id) { + Id id, + ) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } QueryBuilder - idNotEqualTo(Id id) { + idNotEqualTo(Id id) { return QueryBuilder.apply(this, (query) { if (query.whereSort == Sort.asc) { return query @@ -317,7 +342,7 @@ extension SourcePreferenceQueryWhere } QueryBuilder - idGreaterThan(Id id, {bool include = false}) { + idGreaterThan(Id id, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -326,7 +351,7 @@ extension SourcePreferenceQueryWhere } QueryBuilder - idLessThan(Id id, {bool include = false}) { + idLessThan(Id id, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -341,12 +366,14 @@ extension SourcePreferenceQueryWhere bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -354,181 +381,183 @@ extension SourcePreferenceQueryWhere extension SourcePreferenceQueryFilter on QueryBuilder { QueryBuilder - checkBoxPreferenceIsNull() { + checkBoxPreferenceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'checkBoxPreference', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'checkBoxPreference'), + ); }); } QueryBuilder - checkBoxPreferenceIsNotNull() { + checkBoxPreferenceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'checkBoxPreference', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'checkBoxPreference'), + ); }); } QueryBuilder - editTextPreferenceIsNull() { + editTextPreferenceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'editTextPreference', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'editTextPreference'), + ); }); } QueryBuilder - editTextPreferenceIsNotNull() { + editTextPreferenceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'editTextPreference', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'editTextPreference'), + ); }); } QueryBuilder - idIsNull() { + idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder - idIsNotNull() { + idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder - idEqualTo(Id? value) { + idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } QueryBuilder - idGreaterThan( - Id? value, { - bool include = false, - }) { + idGreaterThan(Id? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } QueryBuilder - idLessThan( - Id? value, { - bool include = false, - }) { + idLessThan(Id? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } QueryBuilder - idBetween( + idBetween( Id? lower, Id? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - keyIsNull() { + keyIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'key', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'key'), + ); }); } QueryBuilder - keyIsNotNull() { + keyIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'key', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'key'), + ); }); } QueryBuilder - keyEqualTo( - String? value, { - bool caseSensitive = true, - }) { + keyEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - keyGreaterThan( + keyGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - keyLessThan( + keyLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - keyBetween( + keyBetween( String? lower, String? upper, { bool includeLower = true, @@ -536,212 +565,213 @@ extension SourcePreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'key', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'key', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - keyStartsWith( - String value, { - bool caseSensitive = true, - }) { + keyStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - keyEndsWith( - String value, { - bool caseSensitive = true, - }) { + keyEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - keyContains(String value, {bool caseSensitive = true}) { + keyContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - keyMatches(String pattern, {bool caseSensitive = true}) { + keyMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'key', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'key', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - keyIsEmpty() { + keyIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'key', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'key', value: ''), + ); }); } QueryBuilder - keyIsNotEmpty() { + keyIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'key', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'key', value: ''), + ); }); } QueryBuilder - listPreferenceIsNull() { + listPreferenceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'listPreference', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'listPreference'), + ); }); } QueryBuilder - listPreferenceIsNotNull() { + listPreferenceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'listPreference', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'listPreference'), + ); }); } QueryBuilder - multiSelectListPreferenceIsNull() { + multiSelectListPreferenceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'multiSelectListPreference', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'multiSelectListPreference'), + ); }); } QueryBuilder - multiSelectListPreferenceIsNotNull() { + multiSelectListPreferenceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'multiSelectListPreference', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'multiSelectListPreference'), + ); }); } QueryBuilder - sourceIdIsNull() { + sourceIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sourceId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sourceId'), + ); }); } QueryBuilder - sourceIdIsNotNull() { + sourceIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sourceId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sourceId'), + ); }); } QueryBuilder - sourceIdEqualTo(int? value) { + sourceIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sourceId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'sourceId', value: value), + ); }); } QueryBuilder - sourceIdGreaterThan( - int? value, { - bool include = false, - }) { + sourceIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'sourceId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'sourceId', + value: value, + ), + ); }); } QueryBuilder - sourceIdLessThan( - int? value, { - bool include = false, - }) { + sourceIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'sourceId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'sourceId', + value: value, + ), + ); }); } QueryBuilder - sourceIdBetween( + sourceIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'sourceId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'sourceId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - switchPreferenceCompatIsNull() { + switchPreferenceCompatIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'switchPreferenceCompat', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'switchPreferenceCompat'), + ); }); } QueryBuilder - switchPreferenceCompatIsNotNull() { + switchPreferenceCompatIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'switchPreferenceCompat', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'switchPreferenceCompat'), + ); }); } } @@ -749,35 +779,35 @@ extension SourcePreferenceQueryFilter extension SourcePreferenceQueryObject on QueryBuilder { QueryBuilder - checkBoxPreference(FilterQuery q) { + checkBoxPreference(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'checkBoxPreference'); }); } QueryBuilder - editTextPreference(FilterQuery q) { + editTextPreference(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'editTextPreference'); }); } QueryBuilder - listPreference(FilterQuery q) { + listPreference(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'listPreference'); }); } QueryBuilder - multiSelectListPreference(FilterQuery q) { + multiSelectListPreference(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'multiSelectListPreference'); }); } QueryBuilder - switchPreferenceCompat(FilterQuery q) { + switchPreferenceCompat(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'switchPreferenceCompat'); }); @@ -796,21 +826,21 @@ extension SourcePreferenceQuerySortBy } QueryBuilder - sortByKeyDesc() { + sortByKeyDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'key', Sort.desc); }); } QueryBuilder - sortBySourceId() { + sortBySourceId() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceId', Sort.asc); }); } QueryBuilder - sortBySourceIdDesc() { + sortBySourceIdDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceId', Sort.desc); }); @@ -826,7 +856,7 @@ extension SourcePreferenceQuerySortThenBy } QueryBuilder - thenByIdDesc() { + thenByIdDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'id', Sort.desc); }); @@ -839,21 +869,21 @@ extension SourcePreferenceQuerySortThenBy } QueryBuilder - thenByKeyDesc() { + thenByKeyDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'key', Sort.desc); }); } QueryBuilder - thenBySourceId() { + thenBySourceId() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceId', Sort.asc); }); } QueryBuilder - thenBySourceIdDesc() { + thenBySourceIdDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceId', Sort.desc); }); @@ -862,15 +892,16 @@ extension SourcePreferenceQuerySortThenBy extension SourcePreferenceQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByKey( - {bool caseSensitive = true}) { + QueryBuilder distinctByKey({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'key', caseSensitive: caseSensitive); }); } QueryBuilder - distinctBySourceId() { + distinctBySourceId() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'sourceId'); }); @@ -886,14 +917,14 @@ extension SourcePreferenceQueryProperty } QueryBuilder - checkBoxPreferenceProperty() { + checkBoxPreferenceProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'checkBoxPreference'); }); } QueryBuilder - editTextPreferenceProperty() { + editTextPreferenceProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'editTextPreference'); }); @@ -906,14 +937,14 @@ extension SourcePreferenceQueryProperty } QueryBuilder - listPreferenceProperty() { + listPreferenceProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'listPreference'); }); } QueryBuilder - multiSelectListPreferenceProperty() { + multiSelectListPreferenceProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'multiSelectListPreference'); }); @@ -926,7 +957,7 @@ extension SourcePreferenceQueryProperty } QueryBuilder - switchPreferenceCompatProperty() { + switchPreferenceCompatProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'switchPreferenceCompat'); }); @@ -938,29 +969,18 @@ extension SourcePreferenceQueryProperty extension GetSourcePreferenceStringValueCollection on Isar { IsarCollection - get sourcePreferenceStringValues => this.collection(); + get sourcePreferenceStringValues => this.collection(); } const SourcePreferenceStringValueSchema = CollectionSchema( name: r'SourcePreferenceStringValue', id: 8063295595066322236, properties: { - r'key': PropertySchema( - id: 0, - name: r'key', - type: IsarType.string, - ), - r'sourceId': PropertySchema( - id: 1, - name: r'sourceId', - type: IsarType.long, - ), - r'value': PropertySchema( - id: 2, - name: r'value', - type: IsarType.string, - ) + r'key': PropertySchema(id: 0, name: r'key', type: IsarType.string), + r'sourceId': PropertySchema(id: 1, name: r'sourceId', type: IsarType.long), + r'value': PropertySchema(id: 2, name: r'value', type: IsarType.string), }, + estimateSize: _sourcePreferenceStringValueEstimateSize, serialize: _sourcePreferenceStringValueSerialize, deserialize: _sourcePreferenceStringValueDeserialize, @@ -969,6 +989,7 @@ const SourcePreferenceStringValueSchema = CollectionSchema( indexes: {}, links: {}, embeddedSchemas: {}, + getId: _sourcePreferenceStringValueGetId, getLinks: _sourcePreferenceStringValueGetLinks, attach: _sourcePreferenceStringValueAttach, @@ -1045,39 +1066,62 @@ Id _sourcePreferenceStringValueGetId(SourcePreferenceStringValue object) { } List> _sourcePreferenceStringValueGetLinks( - SourcePreferenceStringValue object) { + SourcePreferenceStringValue object, +) { return []; } void _sourcePreferenceStringValueAttach( - IsarCollection col, Id id, SourcePreferenceStringValue object) { + IsarCollection col, + Id id, + SourcePreferenceStringValue object, +) { object.id = id; } -extension SourcePreferenceStringValueQueryWhereSort on QueryBuilder< - SourcePreferenceStringValue, SourcePreferenceStringValue, QWhere> { - QueryBuilder anyId() { +extension SourcePreferenceStringValueQueryWhereSort + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QWhere + > { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterWhere + > + anyId() { return QueryBuilder.apply(this, (query) { return query.addWhereClause(const IdWhereClause.any()); }); } } -extension SourcePreferenceStringValueQueryWhere on QueryBuilder< - SourcePreferenceStringValue, SourcePreferenceStringValue, QWhereClause> { - QueryBuilder idEqualTo(Id id) { +extension SourcePreferenceStringValueQueryWhere + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QWhereClause + > { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterWhereClause + > + idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } - QueryBuilder idNotEqualTo(Id id) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterWhereClause + > + idNotEqualTo(Id id) { return QueryBuilder.apply(this, (query) { if (query.whereSort == Sort.asc) { return query @@ -1099,8 +1143,12 @@ extension SourcePreferenceStringValueQueryWhere on QueryBuilder< }); } - QueryBuilder idGreaterThan(Id id, {bool include = false}) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterWhereClause + > + idGreaterThan(Id id, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -1108,8 +1156,12 @@ extension SourcePreferenceStringValueQueryWhere on QueryBuilder< }); } - QueryBuilder idLessThan(Id id, {bool include = false}) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterWhereClause + > + idLessThan(Id id, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -1117,150 +1169,201 @@ extension SourcePreferenceStringValueQueryWhere on QueryBuilder< }); } - QueryBuilder idBetween( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterWhereClause + > + idBetween( Id lowerId, Id upperId, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } -extension SourcePreferenceStringValueQueryFilter on QueryBuilder< +extension SourcePreferenceStringValueQueryFilter + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QFilterCondition + > { + QueryBuilder< SourcePreferenceStringValue, SourcePreferenceStringValue, - QFilterCondition> { - QueryBuilder idEqualTo(Id value) { + QAfterFilterCondition + > + idEqualTo(Id value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } - QueryBuilder idGreaterThan( - Id value, { - bool include = false, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + idGreaterThan(Id value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } - QueryBuilder idLessThan( - Id value, { - bool include = false, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + idLessThan(Id value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } - QueryBuilder idBetween( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + idBetween( Id lower, Id upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder keyIsNull() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'key', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'key'), + ); }); } - QueryBuilder keyIsNotNull() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'key', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'key'), + ); }); } - QueryBuilder keyEqualTo( - String? value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder keyGreaterThan( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder keyLessThan( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder keyBetween( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyBetween( String? lower, String? upper, { bool includeLower = true, @@ -1268,229 +1371,303 @@ extension SourcePreferenceStringValueQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'key', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'key', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder keyStartsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder keyEndsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - keyContains(String value, {bool caseSensitive = true}) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'key', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'key', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - keyMatches(String pattern, {bool caseSensitive = true}) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'key', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'key', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder keyIsEmpty() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'key', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'key', value: ''), + ); }); } - QueryBuilder keyIsNotEmpty() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + keyIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'key', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'key', value: ''), + ); }); } - QueryBuilder sourceIdIsNull() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + sourceIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sourceId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sourceId'), + ); }); } - QueryBuilder sourceIdIsNotNull() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + sourceIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sourceId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sourceId'), + ); }); } - QueryBuilder sourceIdEqualTo(int? value) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + sourceIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sourceId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'sourceId', value: value), + ); }); } - QueryBuilder sourceIdGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + sourceIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'sourceId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'sourceId', + value: value, + ), + ); }); } - QueryBuilder sourceIdLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + sourceIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'sourceId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'sourceId', + value: value, + ), + ); }); } - QueryBuilder sourceIdBetween( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + sourceIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'sourceId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'sourceId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder valueIsNull() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'value', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'value'), + ); }); } - QueryBuilder valueIsNotNull() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'value', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'value'), + ); }); } - QueryBuilder valueEqualTo( - String? value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valueGreaterThan( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valueLessThan( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valueBetween( + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueBetween( String? lower, String? upper, { bool includeLower = true, @@ -1498,253 +1675,371 @@ extension SourcePreferenceStringValueQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'value', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'value', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valueStartsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valueEndsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - valueContains(String value, {bool caseSensitive = true}) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - valueMatches(String pattern, {bool caseSensitive = true}) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'value', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'value', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valueIsEmpty() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'value', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'value', value: ''), + ); }); } - QueryBuilder valueIsNotEmpty() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterFilterCondition + > + valueIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'value', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'value', value: ''), + ); }); } } -extension SourcePreferenceStringValueQueryObject on QueryBuilder< - SourcePreferenceStringValue, - SourcePreferenceStringValue, - QFilterCondition> {} +extension SourcePreferenceStringValueQueryObject + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QFilterCondition + > {} -extension SourcePreferenceStringValueQueryLinks on QueryBuilder< - SourcePreferenceStringValue, - SourcePreferenceStringValue, - QFilterCondition> {} +extension SourcePreferenceStringValueQueryLinks + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QFilterCondition + > {} -extension SourcePreferenceStringValueQuerySortBy on QueryBuilder< - SourcePreferenceStringValue, SourcePreferenceStringValue, QSortBy> { - QueryBuilder sortByKey() { +extension SourcePreferenceStringValueQuerySortBy + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QSortBy + > { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + sortByKey() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'key', Sort.asc); }); } - QueryBuilder sortByKeyDesc() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + sortByKeyDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'key', Sort.desc); }); } - QueryBuilder sortBySourceId() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + sortBySourceId() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceId', Sort.asc); }); } - QueryBuilder sortBySourceIdDesc() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + sortBySourceIdDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceId', Sort.desc); }); } - QueryBuilder sortByValue() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + sortByValue() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'value', Sort.asc); }); } - QueryBuilder sortByValueDesc() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + sortByValueDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'value', Sort.desc); }); } } -extension SourcePreferenceStringValueQuerySortThenBy on QueryBuilder< - SourcePreferenceStringValue, SourcePreferenceStringValue, QSortThenBy> { - QueryBuilder thenById() { +extension SourcePreferenceStringValueQuerySortThenBy + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QSortThenBy + > { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + thenById() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'id', Sort.asc); }); } - QueryBuilder thenByIdDesc() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + thenByIdDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'id', Sort.desc); }); } - QueryBuilder thenByKey() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + thenByKey() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'key', Sort.asc); }); } - QueryBuilder thenByKeyDesc() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + thenByKeyDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'key', Sort.desc); }); } - QueryBuilder thenBySourceId() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + thenBySourceId() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceId', Sort.asc); }); } - QueryBuilder thenBySourceIdDesc() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + thenBySourceIdDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceId', Sort.desc); }); } - QueryBuilder thenByValue() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + thenByValue() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'value', Sort.asc); }); } - QueryBuilder thenByValueDesc() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QAfterSortBy + > + thenByValueDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'value', Sort.desc); }); } } -extension SourcePreferenceStringValueQueryWhereDistinct on QueryBuilder< - SourcePreferenceStringValue, SourcePreferenceStringValue, QDistinct> { - QueryBuilder distinctByKey({bool caseSensitive = true}) { +extension SourcePreferenceStringValueQueryWhereDistinct + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QDistinct + > { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QDistinct + > + distinctByKey({bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'key', caseSensitive: caseSensitive); }); } - QueryBuilder distinctBySourceId() { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QDistinct + > + distinctBySourceId() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'sourceId'); }); } - QueryBuilder distinctByValue({bool caseSensitive = true}) { + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QDistinct + > + distinctByValue({bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'value', caseSensitive: caseSensitive); }); } } -extension SourcePreferenceStringValueQueryProperty on QueryBuilder< - SourcePreferenceStringValue, SourcePreferenceStringValue, QQueryProperty> { +extension SourcePreferenceStringValueQueryProperty + on + QueryBuilder< + SourcePreferenceStringValue, + SourcePreferenceStringValue, + QQueryProperty + > { QueryBuilder - idProperty() { + idProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'id'); }); } QueryBuilder - keyProperty() { + keyProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'key'); }); } QueryBuilder - sourceIdProperty() { + sourceIdProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'sourceId'); }); } QueryBuilder - valueProperty() { + valueProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'value'); }); @@ -1762,22 +2057,11 @@ const CheckBoxPreferenceSchema = Schema( name: r'CheckBoxPreference', id: -2147338366782458830, properties: { - r'summary': PropertySchema( - id: 0, - name: r'summary', - type: IsarType.string, - ), - r'title': PropertySchema( - id: 1, - name: r'title', - type: IsarType.string, - ), - r'value': PropertySchema( - id: 2, - name: r'value', - type: IsarType.bool, - ) + r'summary': PropertySchema(id: 0, name: r'summary', type: IsarType.string), + r'title': PropertySchema(id: 1, name: r'title', type: IsarType.string), + r'value': PropertySchema(id: 2, name: r'value', type: IsarType.bool), }, + estimateSize: _checkBoxPreferenceEstimateSize, serialize: _checkBoxPreferenceSerialize, deserialize: _checkBoxPreferenceDeserialize, @@ -1851,71 +2135,74 @@ P _checkBoxPreferenceDeserializeProp

( extension CheckBoxPreferenceQueryFilter on QueryBuilder { QueryBuilder - summaryIsNull() { + summaryIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'summary'), + ); }); } QueryBuilder - summaryIsNotNull() { + summaryIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'summary'), + ); }); } QueryBuilder - summaryEqualTo( - String? value, { - bool caseSensitive = true, - }) { + summaryEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryGreaterThan( + summaryGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryLessThan( + summaryLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryBetween( + summaryBetween( String? lower, String? upper, { bool includeLower = true, @@ -1923,153 +2210,158 @@ extension CheckBoxPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'summary', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'summary', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryStartsWith( - String value, { - bool caseSensitive = true, - }) { + summaryStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryEndsWith( - String value, { - bool caseSensitive = true, - }) { + summaryEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryContains(String value, {bool caseSensitive = true}) { + summaryContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryMatches(String pattern, {bool caseSensitive = true}) { + summaryMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'summary', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'summary', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryIsEmpty() { + summaryIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'summary', value: ''), + ); }); } QueryBuilder - summaryIsNotEmpty() { + summaryIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'summary', value: ''), + ); }); } QueryBuilder - titleIsNull() { + titleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'title'), + ); }); } QueryBuilder - titleIsNotNull() { + titleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'title'), + ); }); } QueryBuilder - titleEqualTo( - String? value, { - bool caseSensitive = true, - }) { + titleEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleGreaterThan( + titleGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleLessThan( + titleLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleBetween( + titleBetween( String? lower, String? upper, { bool includeLower = true, @@ -2077,112 +2369,113 @@ extension CheckBoxPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'title', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'title', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleStartsWith( - String value, { - bool caseSensitive = true, - }) { + titleStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleEndsWith( - String value, { - bool caseSensitive = true, - }) { + titleEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleContains(String value, {bool caseSensitive = true}) { + titleContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleMatches(String pattern, {bool caseSensitive = true}) { + titleMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'title', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'title', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleIsEmpty() { + titleIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'title', value: ''), + ); }); } QueryBuilder - titleIsNotEmpty() { + titleIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'title', value: ''), + ); }); } QueryBuilder - valueIsNull() { + valueIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'value', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'value'), + ); }); } QueryBuilder - valueIsNotNull() { + valueIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'value', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'value'), + ); }); } QueryBuilder - valueEqualTo(bool? value) { + valueEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'value', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'value', value: value), + ); }); } } @@ -2197,22 +2490,11 @@ const SwitchPreferenceCompatSchema = Schema( name: r'SwitchPreferenceCompat', id: 3452971972865195760, properties: { - r'summary': PropertySchema( - id: 0, - name: r'summary', - type: IsarType.string, - ), - r'title': PropertySchema( - id: 1, - name: r'title', - type: IsarType.string, - ), - r'value': PropertySchema( - id: 2, - name: r'value', - type: IsarType.bool, - ) + r'summary': PropertySchema(id: 0, name: r'summary', type: IsarType.string), + r'title': PropertySchema(id: 1, name: r'title', type: IsarType.string), + r'value': PropertySchema(id: 2, name: r'value', type: IsarType.bool), }, + estimateSize: _switchPreferenceCompatEstimateSize, serialize: _switchPreferenceCompatSerialize, deserialize: _switchPreferenceCompatDeserialize, @@ -2283,74 +2565,106 @@ P _switchPreferenceCompatDeserializeProp

( } } -extension SwitchPreferenceCompatQueryFilter on QueryBuilder< - SwitchPreferenceCompat, SwitchPreferenceCompat, QFilterCondition> { - QueryBuilder summaryIsNull() { +extension SwitchPreferenceCompatQueryFilter + on + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QFilterCondition + > { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'summary'), + ); }); } - QueryBuilder summaryIsNotNull() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'summary'), + ); }); } - QueryBuilder summaryEqualTo( - String? value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryGreaterThan( + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryLessThan( + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryBetween( + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryBetween( String? lower, String? upper, { bool includeLower = true, @@ -2358,155 +2672,206 @@ extension SwitchPreferenceCompatQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'summary', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'summary', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryStartsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryEndsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - summaryContains(String value, {bool caseSensitive = true}) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - summaryMatches(String pattern, {bool caseSensitive = true}) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'summary', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'summary', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryIsEmpty() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'summary', value: ''), + ); }); } - QueryBuilder summaryIsNotEmpty() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + summaryIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'summary', value: ''), + ); }); } - QueryBuilder titleIsNull() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'title'), + ); }); } - QueryBuilder titleIsNotNull() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'title'), + ); }); } - QueryBuilder titleEqualTo( - String? value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleGreaterThan( + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleLessThan( + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleBetween( + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleBetween( String? lower, String? upper, { bool includeLower = true, @@ -2514,120 +2879,160 @@ extension SwitchPreferenceCompatQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'title', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'title', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleStartsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleEndsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - titleContains(String value, {bool caseSensitive = true}) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - titleMatches(String pattern, {bool caseSensitive = true}) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'title', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'title', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleIsEmpty() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'title', value: ''), + ); }); } - QueryBuilder titleIsNotEmpty() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + titleIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'title', value: ''), + ); }); } - QueryBuilder valueIsNull() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + valueIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'value', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'value'), + ); }); } - QueryBuilder valueIsNotNull() { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + valueIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'value', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'value'), + ); }); } - QueryBuilder valueEqualTo(bool? value) { + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QAfterFilterCondition + > + valueEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'value', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'value', value: value), + ); }); } } -extension SwitchPreferenceCompatQueryObject on QueryBuilder< - SwitchPreferenceCompat, SwitchPreferenceCompat, QFilterCondition> {} +extension SwitchPreferenceCompatQueryObject + on + QueryBuilder< + SwitchPreferenceCompat, + SwitchPreferenceCompat, + QFilterCondition + > {} // coverage:ignore-file // ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types @@ -2646,22 +3051,15 @@ const ListPreferenceSchema = Schema( name: r'entryValues', type: IsarType.stringList, ), - r'summary': PropertySchema( - id: 2, - name: r'summary', - type: IsarType.string, - ), - r'title': PropertySchema( - id: 3, - name: r'title', - type: IsarType.string, - ), + r'summary': PropertySchema(id: 2, name: r'summary', type: IsarType.string), + r'title': PropertySchema(id: 3, name: r'title', type: IsarType.string), r'valueIndex': PropertySchema( id: 4, name: r'valueIndex', type: IsarType.long, - ) + ), }, + estimateSize: _listPreferenceEstimateSize, serialize: _listPreferenceSerialize, deserialize: _listPreferenceDeserialize, @@ -2767,71 +3165,74 @@ P _listPreferenceDeserializeProp

( extension ListPreferenceQueryFilter on QueryBuilder { QueryBuilder - entriesIsNull() { + entriesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'entries', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'entries'), + ); }); } QueryBuilder - entriesIsNotNull() { + entriesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'entries', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'entries'), + ); }); } QueryBuilder - entriesElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + entriesElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - entriesElementGreaterThan( + entriesElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - entriesElementLessThan( + entriesElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - entriesElementBetween( + entriesElementBetween( String lower, String upper, { bool includeLower = true, @@ -2839,160 +3240,126 @@ extension ListPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'entries', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entriesElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entriesElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entriesElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entriesElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'entries', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entriesElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'entries', - value: '', - )); - }); - } - - QueryBuilder - entriesElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'entries', - value: '', - )); - }); - } - - QueryBuilder - entriesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'entries', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entriesIsEmpty() { + entriesElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entriesIsNotEmpty() { + entriesElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entriesLengthLessThan( - int length, { - bool include = false, - }) { + entriesElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entriesLengthGreaterThan( - int length, { - bool include = false, - }) { + entriesElementMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - length, - include, - 999999, - true, + return query.addFilterCondition( + FilterCondition.matches( + property: r'entries', + wildcard: pattern, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entriesLengthBetween( + entriesElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'entries', value: ''), + ); + }); + } + + QueryBuilder + entriesElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'entries', value: ''), + ); + }); + } + + QueryBuilder + entriesLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', length, true, length, true); + }); + } + + QueryBuilder + entriesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', 0, true, 0, true); + }); + } + + QueryBuilder + entriesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', 0, false, 999999, true); + }); + } + + QueryBuilder + entriesLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', 0, true, length, include); + }); + } + + QueryBuilder + entriesLengthGreaterThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', length, include, 999999, true); + }); + } + + QueryBuilder + entriesLengthBetween( int lower, int upper, { bool includeLower = true, @@ -3010,71 +3377,74 @@ extension ListPreferenceQueryFilter } QueryBuilder - entryValuesIsNull() { + entryValuesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'entryValues', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'entryValues'), + ); }); } QueryBuilder - entryValuesIsNotNull() { + entryValuesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'entryValues', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'entryValues'), + ); }); } QueryBuilder - entryValuesElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + entryValuesElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - entryValuesElementGreaterThan( + entryValuesElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - entryValuesElementLessThan( + entryValuesElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - entryValuesElementBetween( + entryValuesElementBetween( String lower, String upper, { bool includeLower = true, @@ -3082,160 +3452,126 @@ extension ListPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'entryValues', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entryValuesElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entryValuesElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entryValuesElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entryValuesElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'entryValues', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entryValuesElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'entryValues', - value: '', - )); - }); - } - - QueryBuilder - entryValuesElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'entryValues', - value: '', - )); - }); - } - - QueryBuilder - entryValuesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'entryValues', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entryValuesIsEmpty() { + entryValuesElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entryValuesIsNotEmpty() { + entryValuesElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entryValuesLengthLessThan( - int length, { - bool include = false, - }) { + entryValuesElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entryValuesLengthGreaterThan( - int length, { - bool include = false, - }) { + entryValuesElementMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - length, - include, - 999999, - true, + return query.addFilterCondition( + FilterCondition.matches( + property: r'entryValues', + wildcard: pattern, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - entryValuesLengthBetween( + entryValuesElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'entryValues', value: ''), + ); + }); + } + + QueryBuilder + entryValuesElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'entryValues', value: ''), + ); + }); + } + + QueryBuilder + entryValuesLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', length, true, length, true); + }); + } + + QueryBuilder + entryValuesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', 0, true, 0, true); + }); + } + + QueryBuilder + entryValuesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', 0, false, 999999, true); + }); + } + + QueryBuilder + entryValuesLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', 0, true, length, include); + }); + } + + QueryBuilder + entryValuesLengthGreaterThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', length, include, 999999, true); + }); + } + + QueryBuilder + entryValuesLengthBetween( int lower, int upper, { bool includeLower = true, @@ -3253,71 +3589,74 @@ extension ListPreferenceQueryFilter } QueryBuilder - summaryIsNull() { + summaryIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'summary'), + ); }); } QueryBuilder - summaryIsNotNull() { + summaryIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'summary'), + ); }); } QueryBuilder - summaryEqualTo( - String? value, { - bool caseSensitive = true, - }) { + summaryEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryGreaterThan( + summaryGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryLessThan( + summaryLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryBetween( + summaryBetween( String? lower, String? upper, { bool includeLower = true, @@ -3325,153 +3664,158 @@ extension ListPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'summary', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'summary', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryStartsWith( - String value, { - bool caseSensitive = true, - }) { + summaryStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryEndsWith( - String value, { - bool caseSensitive = true, - }) { + summaryEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryContains(String value, {bool caseSensitive = true}) { + summaryContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryMatches(String pattern, {bool caseSensitive = true}) { + summaryMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'summary', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'summary', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryIsEmpty() { + summaryIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'summary', value: ''), + ); }); } QueryBuilder - summaryIsNotEmpty() { + summaryIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'summary', value: ''), + ); }); } QueryBuilder - titleIsNull() { + titleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'title'), + ); }); } QueryBuilder - titleIsNotNull() { + titleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'title'), + ); }); } QueryBuilder - titleEqualTo( - String? value, { - bool caseSensitive = true, - }) { + titleEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleGreaterThan( + titleGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleLessThan( + titleLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleBetween( + titleBetween( String? lower, String? upper, { bool includeLower = true, @@ -3479,158 +3823,159 @@ extension ListPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'title', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'title', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleStartsWith( - String value, { - bool caseSensitive = true, - }) { + titleStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleEndsWith( - String value, { - bool caseSensitive = true, - }) { + titleEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleContains(String value, {bool caseSensitive = true}) { + titleContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleMatches(String pattern, {bool caseSensitive = true}) { + titleMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'title', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'title', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleIsEmpty() { + titleIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'title', value: ''), + ); }); } QueryBuilder - titleIsNotEmpty() { + titleIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'title', value: ''), + ); }); } QueryBuilder - valueIndexIsNull() { + valueIndexIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'valueIndex', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'valueIndex'), + ); }); } QueryBuilder - valueIndexIsNotNull() { + valueIndexIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'valueIndex', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'valueIndex'), + ); }); } QueryBuilder - valueIndexEqualTo(int? value) { + valueIndexEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'valueIndex', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'valueIndex', value: value), + ); }); } QueryBuilder - valueIndexGreaterThan( - int? value, { - bool include = false, - }) { + valueIndexGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'valueIndex', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'valueIndex', + value: value, + ), + ); }); } QueryBuilder - valueIndexLessThan( - int? value, { - bool include = false, - }) { + valueIndexLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'valueIndex', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'valueIndex', + value: value, + ), + ); }); } QueryBuilder - valueIndexBetween( + valueIndexBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'valueIndex', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'valueIndex', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -3655,22 +4000,15 @@ const MultiSelectListPreferenceSchema = Schema( name: r'entryValues', type: IsarType.stringList, ), - r'summary': PropertySchema( - id: 2, - name: r'summary', - type: IsarType.string, - ), - r'title': PropertySchema( - id: 3, - name: r'title', - type: IsarType.string, - ), + r'summary': PropertySchema(id: 2, name: r'summary', type: IsarType.string), + r'title': PropertySchema(id: 3, name: r'title', type: IsarType.string), r'values': PropertySchema( id: 4, name: r'values', type: IsarType.stringList, - ) + ), }, + estimateSize: _multiSelectListPreferenceEstimateSize, serialize: _multiSelectListPreferenceSerialize, deserialize: _multiSelectListPreferenceDeserialize, @@ -3785,74 +4123,106 @@ P _multiSelectListPreferenceDeserializeProp

( } } -extension MultiSelectListPreferenceQueryFilter on QueryBuilder< - MultiSelectListPreference, MultiSelectListPreference, QFilterCondition> { - QueryBuilder entriesIsNull() { +extension MultiSelectListPreferenceQueryFilter + on + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QFilterCondition + > { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'entries', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'entries'), + ); }); } - QueryBuilder entriesIsNotNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'entries', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'entries'), + ); }); } - QueryBuilder entriesElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder entriesElementGreaterThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder entriesElementLessThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder entriesElementBetween( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementBetween( String lower, String upper, { bool includeLower = true, @@ -3860,162 +4230,174 @@ extension MultiSelectListPreferenceQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'entries', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder entriesElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder entriesElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entriesElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'entries', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entriesElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'entries', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder entriesElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'entries', - value: '', - )); - }); - } - - QueryBuilder entriesElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'entries', - value: '', - )); - }); - } - - QueryBuilder entriesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'entries', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entriesIsEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entriesIsNotEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entriesLengthLessThan( - int length, { - bool include = false, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'entries', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entriesLengthGreaterThan( - int length, { - bool include = false, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entries', - length, - include, - 999999, - true, + return query.addFilterCondition( + FilterCondition.matches( + property: r'entries', + wildcard: pattern, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entriesLengthBetween( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'entries', value: ''), + ); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'entries', value: ''), + ); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', length, true, length, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', 0, true, 0, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', 0, false, 999999, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', 0, true, length, include); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesLengthGreaterThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entries', length, include, 999999, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entriesLengthBetween( int lower, int upper, { bool includeLower = true, @@ -4032,72 +4414,99 @@ extension MultiSelectListPreferenceQueryFilter on QueryBuilder< }); } - QueryBuilder entryValuesIsNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'entryValues', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'entryValues'), + ); }); } - QueryBuilder entryValuesIsNotNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'entryValues', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'entryValues'), + ); }); } - QueryBuilder entryValuesElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder entryValuesElementGreaterThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder entryValuesElementLessThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder entryValuesElementBetween( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementBetween( String lower, String upper, { bool includeLower = true, @@ -4105,162 +4514,174 @@ extension MultiSelectListPreferenceQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'entryValues', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder entryValuesElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder entryValuesElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entryValuesElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'entryValues', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - entryValuesElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'entryValues', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder entryValuesElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'entryValues', - value: '', - )); - }); - } - - QueryBuilder entryValuesElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'entryValues', - value: '', - )); - }); - } - - QueryBuilder entryValuesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'entryValues', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entryValuesIsEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entryValuesIsNotEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entryValuesLengthLessThan( - int length, { - bool include = false, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'entryValues', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entryValuesLengthGreaterThan( - int length, { - bool include = false, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'entryValues', - length, - include, - 999999, - true, + return query.addFilterCondition( + FilterCondition.matches( + property: r'entryValues', + wildcard: pattern, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder entryValuesLengthBetween( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'entryValues', value: ''), + ); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'entryValues', value: ''), + ); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', length, true, length, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', 0, true, 0, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', 0, false, 999999, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', 0, true, length, include); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesLengthGreaterThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'entryValues', length, include, 999999, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + entryValuesLengthBetween( int lower, int upper, { bool includeLower = true, @@ -4277,72 +4698,99 @@ extension MultiSelectListPreferenceQueryFilter on QueryBuilder< }); } - QueryBuilder summaryIsNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'summary'), + ); }); } - QueryBuilder summaryIsNotNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'summary'), + ); }); } - QueryBuilder summaryEqualTo( - String? value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryGreaterThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryLessThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryBetween( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryBetween( String? lower, String? upper, { bool includeLower = true, @@ -4350,155 +4798,206 @@ extension MultiSelectListPreferenceQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'summary', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'summary', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryStartsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryEndsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - summaryContains(String value, {bool caseSensitive = true}) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - summaryMatches(String pattern, {bool caseSensitive = true}) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'summary', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'summary', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder summaryIsEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'summary', value: ''), + ); }); } - QueryBuilder summaryIsNotEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + summaryIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'summary', value: ''), + ); }); } - QueryBuilder titleIsNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'title'), + ); }); } - QueryBuilder titleIsNotNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'title'), + ); }); } - QueryBuilder titleEqualTo( - String? value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleGreaterThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleLessThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleBetween( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleBetween( String? lower, String? upper, { bool includeLower = true, @@ -4506,155 +5005,206 @@ extension MultiSelectListPreferenceQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'title', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'title', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleStartsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleEndsWith( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - titleContains(String value, {bool caseSensitive = true}) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder - titleMatches(String pattern, {bool caseSensitive = true}) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'title', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'title', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleIsEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'title', value: ''), + ); }); } - QueryBuilder titleIsNotEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + titleIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'title', value: ''), + ); }); } - QueryBuilder valuesIsNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'values', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'values'), + ); }); } - QueryBuilder valuesIsNotNull() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'values', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'values'), + ); }); } - QueryBuilder valuesElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'values', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'values', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valuesElementGreaterThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'values', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'values', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valuesElementLessThan( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'values', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'values', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder valuesElementBetween( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementBetween( String lower, String upper, { bool includeLower = true, @@ -4662,162 +5212,174 @@ extension MultiSelectListPreferenceQueryFilter on QueryBuilder< bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'values', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valuesElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'values', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valuesElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'values', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - valuesElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'values', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - valuesElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'values', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder valuesElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'values', - value: '', - )); - }); - } - - QueryBuilder valuesElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'values', - value: '', - )); - }); - } - - QueryBuilder valuesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'values', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'values', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder valuesIsEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'values', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'values', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder valuesIsNotEmpty() { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'values', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'values', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder valuesLengthLessThan( - int length, { - bool include = false, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'values', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'values', + value: value, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder valuesLengthGreaterThan( - int length, { - bool include = false, - }) { + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'values', - length, - include, - 999999, - true, + return query.addFilterCondition( + FilterCondition.matches( + property: r'values', + wildcard: pattern, + caseSensitive: caseSensitive, + ), ); }); } - QueryBuilder valuesLengthBetween( + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'values', value: ''), + ); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'values', value: ''), + ); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'values', length, true, length, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'values', 0, true, 0, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'values', 0, false, 999999, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'values', 0, true, length, include); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesLengthGreaterThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'values', length, include, 999999, true); + }); + } + + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QAfterFilterCondition + > + valuesLengthBetween( int lower, int upper, { bool includeLower = true, @@ -4835,8 +5397,13 @@ extension MultiSelectListPreferenceQueryFilter on QueryBuilder< } } -extension MultiSelectListPreferenceQueryObject on QueryBuilder< - MultiSelectListPreference, MultiSelectListPreference, QFilterCondition> {} +extension MultiSelectListPreferenceQueryObject + on + QueryBuilder< + MultiSelectListPreference, + MultiSelectListPreference, + QFilterCondition + > {} // coverage:ignore-file // ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types @@ -4855,27 +5422,12 @@ const EditTextPreferenceSchema = Schema( name: r'dialogTitle', type: IsarType.string, ), - r'summary': PropertySchema( - id: 2, - name: r'summary', - type: IsarType.string, - ), - r'text': PropertySchema( - id: 3, - name: r'text', - type: IsarType.string, - ), - r'title': PropertySchema( - id: 4, - name: r'title', - type: IsarType.string, - ), - r'value': PropertySchema( - id: 5, - name: r'value', - type: IsarType.string, - ) + r'summary': PropertySchema(id: 2, name: r'summary', type: IsarType.string), + r'text': PropertySchema(id: 3, name: r'text', type: IsarType.string), + r'title': PropertySchema(id: 4, name: r'title', type: IsarType.string), + r'value': PropertySchema(id: 5, name: r'value', type: IsarType.string), }, + estimateSize: _editTextPreferenceEstimateSize, serialize: _editTextPreferenceSerialize, deserialize: _editTextPreferenceDeserialize, @@ -4985,71 +5537,74 @@ P _editTextPreferenceDeserializeProp

( extension EditTextPreferenceQueryFilter on QueryBuilder { QueryBuilder - dialogMessageIsNull() { + dialogMessageIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'dialogMessage', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'dialogMessage'), + ); }); } QueryBuilder - dialogMessageIsNotNull() { + dialogMessageIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'dialogMessage', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'dialogMessage'), + ); }); } QueryBuilder - dialogMessageEqualTo( - String? value, { - bool caseSensitive = true, - }) { + dialogMessageEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dialogMessage', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'dialogMessage', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogMessageGreaterThan( + dialogMessageGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dialogMessage', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'dialogMessage', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogMessageLessThan( + dialogMessageLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dialogMessage', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'dialogMessage', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogMessageBetween( + dialogMessageBetween( String? lower, String? upper, { bool includeLower = true, @@ -5057,153 +5612,158 @@ extension EditTextPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'dialogMessage', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'dialogMessage', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogMessageStartsWith( - String value, { - bool caseSensitive = true, - }) { + dialogMessageStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'dialogMessage', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'dialogMessage', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogMessageEndsWith( - String value, { - bool caseSensitive = true, - }) { + dialogMessageEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'dialogMessage', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'dialogMessage', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogMessageContains(String value, {bool caseSensitive = true}) { + dialogMessageContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'dialogMessage', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'dialogMessage', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogMessageMatches(String pattern, {bool caseSensitive = true}) { + dialogMessageMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'dialogMessage', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'dialogMessage', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogMessageIsEmpty() { + dialogMessageIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dialogMessage', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'dialogMessage', value: ''), + ); }); } QueryBuilder - dialogMessageIsNotEmpty() { + dialogMessageIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'dialogMessage', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'dialogMessage', value: ''), + ); }); } QueryBuilder - dialogTitleIsNull() { + dialogTitleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'dialogTitle', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'dialogTitle'), + ); }); } QueryBuilder - dialogTitleIsNotNull() { + dialogTitleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'dialogTitle', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'dialogTitle'), + ); }); } QueryBuilder - dialogTitleEqualTo( - String? value, { - bool caseSensitive = true, - }) { + dialogTitleEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dialogTitle', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'dialogTitle', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogTitleGreaterThan( + dialogTitleGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dialogTitle', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'dialogTitle', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogTitleLessThan( + dialogTitleLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dialogTitle', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'dialogTitle', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogTitleBetween( + dialogTitleBetween( String? lower, String? upper, { bool includeLower = true, @@ -5211,153 +5771,158 @@ extension EditTextPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'dialogTitle', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'dialogTitle', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogTitleStartsWith( - String value, { - bool caseSensitive = true, - }) { + dialogTitleStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'dialogTitle', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'dialogTitle', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogTitleEndsWith( - String value, { - bool caseSensitive = true, - }) { + dialogTitleEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'dialogTitle', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'dialogTitle', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogTitleContains(String value, {bool caseSensitive = true}) { + dialogTitleContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'dialogTitle', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'dialogTitle', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogTitleMatches(String pattern, {bool caseSensitive = true}) { + dialogTitleMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'dialogTitle', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'dialogTitle', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dialogTitleIsEmpty() { + dialogTitleIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dialogTitle', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'dialogTitle', value: ''), + ); }); } QueryBuilder - dialogTitleIsNotEmpty() { + dialogTitleIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'dialogTitle', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'dialogTitle', value: ''), + ); }); } QueryBuilder - summaryIsNull() { + summaryIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'summary'), + ); }); } QueryBuilder - summaryIsNotNull() { + summaryIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'summary', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'summary'), + ); }); } QueryBuilder - summaryEqualTo( - String? value, { - bool caseSensitive = true, - }) { + summaryEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryGreaterThan( + summaryGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryLessThan( + summaryLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryBetween( + summaryBetween( String? lower, String? upper, { bool includeLower = true, @@ -5365,153 +5930,158 @@ extension EditTextPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'summary', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'summary', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryStartsWith( - String value, { - bool caseSensitive = true, - }) { + summaryStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryEndsWith( - String value, { - bool caseSensitive = true, - }) { + summaryEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryContains(String value, {bool caseSensitive = true}) { + summaryContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'summary', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'summary', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryMatches(String pattern, {bool caseSensitive = true}) { + summaryMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'summary', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'summary', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - summaryIsEmpty() { + summaryIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'summary', value: ''), + ); }); } QueryBuilder - summaryIsNotEmpty() { + summaryIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'summary', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'summary', value: ''), + ); }); } QueryBuilder - textIsNull() { + textIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'text', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'text'), + ); }); } QueryBuilder - textIsNotNull() { + textIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'text', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'text'), + ); }); } QueryBuilder - textEqualTo( - String? value, { - bool caseSensitive = true, - }) { + textEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'text', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'text', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - textGreaterThan( + textGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'text', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'text', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - textLessThan( + textLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'text', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'text', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - textBetween( + textBetween( String? lower, String? upper, { bool includeLower = true, @@ -5519,153 +6089,158 @@ extension EditTextPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'text', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'text', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - textStartsWith( - String value, { - bool caseSensitive = true, - }) { + textStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'text', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'text', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - textEndsWith( - String value, { - bool caseSensitive = true, - }) { + textEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'text', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'text', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - textContains(String value, {bool caseSensitive = true}) { + textContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'text', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'text', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - textMatches(String pattern, {bool caseSensitive = true}) { + textMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'text', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'text', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - textIsEmpty() { + textIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'text', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'text', value: ''), + ); }); } QueryBuilder - textIsNotEmpty() { + textIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'text', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'text', value: ''), + ); }); } QueryBuilder - titleIsNull() { + titleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'title'), + ); }); } QueryBuilder - titleIsNotNull() { + titleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'title'), + ); }); } QueryBuilder - titleEqualTo( - String? value, { - bool caseSensitive = true, - }) { + titleEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleGreaterThan( + titleGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleLessThan( + titleLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleBetween( + titleBetween( String? lower, String? upper, { bool includeLower = true, @@ -5673,153 +6248,158 @@ extension EditTextPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'title', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'title', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleStartsWith( - String value, { - bool caseSensitive = true, - }) { + titleStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleEndsWith( - String value, { - bool caseSensitive = true, - }) { + titleEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleContains(String value, {bool caseSensitive = true}) { + titleContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleMatches(String pattern, {bool caseSensitive = true}) { + titleMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'title', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'title', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - titleIsEmpty() { + titleIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'title', value: ''), + ); }); } QueryBuilder - titleIsNotEmpty() { + titleIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'title', value: ''), + ); }); } QueryBuilder - valueIsNull() { + valueIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'value', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'value'), + ); }); } QueryBuilder - valueIsNotNull() { + valueIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'value', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'value'), + ); }); } QueryBuilder - valueEqualTo( - String? value, { - bool caseSensitive = true, - }) { + valueEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - valueGreaterThan( + valueGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - valueLessThan( + valueLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - valueBetween( + valueBetween( String? lower, String? upper, { bool includeLower = true, @@ -5827,84 +6407,86 @@ extension EditTextPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'value', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'value', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - valueStartsWith( - String value, { - bool caseSensitive = true, - }) { + valueStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - valueEndsWith( - String value, { - bool caseSensitive = true, - }) { + valueEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - valueContains(String value, {bool caseSensitive = true}) { + valueContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'value', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'value', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - valueMatches(String pattern, {bool caseSensitive = true}) { + valueMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'value', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'value', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - valueIsEmpty() { + valueIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'value', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'value', value: ''), + ); }); } QueryBuilder - valueIsNotEmpty() { + valueIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'value', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'value', value: ''), + ); }); } } diff --git a/lib/l10n/app_as.arb b/lib/l10n/app_as.arb new file mode 100644 index 00000000..4e29a726 --- /dev/null +++ b/lib/l10n/app_as.arb @@ -0,0 +1,279 @@ +{ + "@@locale": "as", + "library": "পুথিভঁৰাল", + "updates": "আপডেট", + "history": "ইতিহাস", + "browse": "ব্ৰাউজ", + "more": "অধিক", + "open_random_entry": "যিকোনো এণ্ট্ৰি খোলক", + "import": "আমদানি", + "filter": "ফিল্টাৰ", + "downloaded": "ডাউনলোড কৰা", + "unread": "নপঢ়া", + "started": "আৰম্ভ কৰা", + "bookmarked": "বুকমাৰ্ক কৰা", + "sort": "শাৰী কৰক", + "alphabetically": "বৰ্ণানুক্ৰমে", + "last_read": "শেষত পঢ়া", + "last_update_check": "শেষ আপডেট পৰীক্ষা", + "unread_count": "নপঢ়াৰ সংখ্যা", + "latest_chapter": "শেষৰ অধ্যায়", + "date_added": "তাৰিখ যোগ কৰা", + "display": "প্ৰদৰ্শন", + "display_mode": "প্ৰদৰ্শন মোড", + "compact_grid": "সংক্ষিপ্ত গ্ৰিড", + "comfortable_grid": "আৰামদায়ক গ্ৰিড", + "cover_only_grid": "মাত্ৰ কভাৰৰ গ্ৰিড", + "list": "তালিকা", + "badges": "বেজ", + "downloaded_chapters": "ডাউনলোড কৰা অধ্যায়", + "language": "ভাষা", + "local_source": "স্থানীয় উৎস", + "tabs": "টেব", + "show_category_tabs": "শ্ৰেণীৰ টেব দেখুৱাওক", + "show_numbers_of_items": "বস্তুৰ সংখ্যা দেখুৱাওক", + "other": "অন্যান্য", + "show_continue_reading_buttons": "পঢ়া অব্যাহত ৰখাৰ বুটাম দেখুৱাওক", + "empty_library": "খালী পুথিভঁৰাল", + "search": "সন্ধান...", + "no_recent_updates": "শেহতীয়া আপডেট নাই", + "remove_everything": "সকলো আঁতৰাওক", + "remove_everything_msg": "আপুনি নিশ্চিত নে? সকলো ইতিহাস হেৰাই যাব", + "ok": "ঠিক আছে", + "cancel": "বাতিল", + "remove": "আঁতৰাওক", + "remove_history_msg": "ইয়ে এই অধ্যায়ৰ পঢ়া তাৰিখ আঁতৰাব। আপুনি নিশ্চিত নে?", + "last_used": "শেষবাৰ ব্যৱহৃত", + "pinned": "পিন কৰা", + "sources": "উৎস", + "install": "ইনষ্টল", + "update": "আপডেট", + "latest": "শেষৰ", + "extensions": "এক্সটেনশন", + "migrate": "স্থানান্তৰ", + "incognito_mode": "গোপন মোড", + "incognito_mode_description": "পঢ়াৰ ইতিহাস স্থগিত কৰে", + "download_queue": "ডাউনলোড শাৰী", + "categories": "শ্ৰেণী", + "settings": "ছেটিং", + "about": "বিষয়ে", + "help": "সহায়", + "no_downloads": "কোনো ডাউনলোড নাই", + "edit_categories": "শ্ৰেণী সম্পাদনা", + "edit_categories_description": "আপোনাৰ কোনো শ্ৰেণী নাই। পুথিভঁৰাল সংগঠিত কৰিবলৈ প্লাছ বুটামত টেপ কৰক", + "add": "যোগ কৰক", + "add_category": "শ্ৰেণী যোগ কৰক", + "name": "নাম", + "category_name_required": "*প্ৰয়োজনীয়", + "add_category_error_exist": "এই নামৰ শ্ৰেণী ইতিমধ্যে আছে!", + "delete_category": "শ্ৰেণী মচক", + "delete_category_msg": "আপুনি {name} শ্ৰেণী মচিব বিচাৰে নে?", + "rename_category": "শ্ৰেণীৰ নাম সলনি কৰক", + "general": "সাধাৰণ", + "general_subtitle": "এপৰ ভাষা", + "app_language": "এপৰ ভাষা", + "appearance": "চেহেৰা", + "appearance_subtitle": "থীম, তাৰিখ আৰু সময়ৰ ফৰ্মেট", + "theme": "থীম", + "dark_mode": "ডাৰ্ক মোড", + "on": "অন", + "off": "অফ", + "pure_black_dark_mode": "পিউৰ ব্লেক ডাৰ্ক মোড", + "timestamp": "টাইমষ্টেম্প", + "relative_timestamp": "আপেক্ষিক টাইমষ্টেম্প", + "relative_timestamp_short": "চমু (আজি, কালি)", + "relative_timestamp_long": "দীঘল (চমু+, n দিনৰ আগতে)", + "date_format": "তাৰিখৰ ফৰ্মেট", + "reader": "পাঠক", + "refresh": "ৰিফ্ৰেছ", + "reader_subtitle": "পঢ়াৰ মোড, প্ৰদৰ্শন, নেভিগেশন", + "default_reading_mode": "ডিফল্ট পঢ়াৰ মোড", + "reading_mode_vertical": "উলম্ব", + "reading_mode_horizontal": "অনুভূমিক", + "reading_mode_left_to_right": "বাওঁফালৰ পৰা সোঁফাললৈ", + "reading_mode_right_to_left": "সোঁফালৰ পৰা বাওঁফাললৈ", + "reading_mode_vertical_continuous": "উলম্ব অবিৰত", + "reading_mode_webtoon": "ৱেবটুন", + "double_tap_animation_speed": "ডাবল টেপ এনিমেশনৰ গতি", + "normal": "সাধাৰণ", + "fast": "দ্ৰুত", + "no_animation": "কোনো এনিমেশন নাই", + "animate_page_transitions": "পৃষ্ঠা স্থানান্তৰ এনিমেট কৰক", + "crop_borders": "সীমা কাটক", + "downloads": "ডাউনলোড", + "downloads_subtitle": "ডাউনলোড ছেটিং", + "download_location": "ডাউনলোডৰ স্থান", + "custom_location": "কাষ্টম স্থান", + "only_on_wifi": "কেৱল ৱাই-ফাইত", + "save_as_cbz_archive": "CBZ আৰ্কাইভ হিচাপে সাঁচক", + "browse_subtitle": "উৎস, গ্ল’বেল সন্ধান", + "only_include_pinned_sources": "কেৱল পিন কৰা উৎস অন্তৰ্ভুক্ত কৰক", + "nsfw_sources": "NSFW (+18) উৎস", + "nsfw_sources_show": "উৎস আৰু এক্সটেনশন তালিকাত দেখুৱাওক", + "nsfw_sources_info": "ইয়ে অফিচিয়েল নহোৱা বা সম্ভৱতঃ ভুলকৈ ফ্লেগ কৰা এক্সটেনশনৰ পৰা NSFW (18+) বিষয়বস্তু এপত দেখা দিয়াৰ পৰা ৰক্ষা নকৰে", + "version": "সংস্কৰণ", + "check_for_update": "আপডেটৰ বাবে পৰীক্ষা কৰক", + "n_days_ago": "{days} দিনৰ আগতে", + "today": "আজি", + "yesterday": "কালি", + "a_week_ago": "এসপ্তাহৰ আগতে", + "add_to_library": "পুথিভঁৰালত যোগ কৰক", + "completed": "সম্পূৰ্ণ", + "ongoing": "চলি আছে", + "on_hiatus": "বিৰতিত", + "canceled": "বাতিল কৰা", + "publishing_finished": "প্ৰকাশ সমাপ্ত", + "unknown": "অজ্ঞাত", + "set_categories": "শ্ৰেণী নিৰ্ধাৰণ কৰক", + "edit": "সম্পাদনা", + "in_library": "পুথিভঁৰালত", + "filter_scanlator_groups": "স্কেনলেটৰ গ্ৰুপ ফিল্টাৰ কৰক", + "reset": "ৰিছেট", + "by_source": "উৎস অনুসৰি", + "by_chapter_number": "অধ্যায়ৰ সংখ্যা অনুসৰি", + "by_upload_date": "আপলোডৰ তাৰিখ অনুসৰি", + "source_title": "উৎসৰ শিৰোনাম", + "chapter_number": "অধ্যায়ৰ সংখ্যা", + "share": "শ্বেয়াৰ", + "n_chapters": "{number} অধ্যায়", + "no_description": "কোনো বিৱৰণ নাই", + "resume": "পুনৰ আৰম্ভ", + "read": "পঢ়ক", + "popular": "জনপ্ৰিয়", + "open_in_browser": "ব্ৰাউজাৰত খোলক", + "clear_cookie": "কুকী আঁতৰাওক", + "show_page_number": "পৃষ্ঠাৰ সংখ্যা দেখুৱাওক", + "from_library": "পুথিভঁৰালৰ পৰা", + "downloaded_chapter": "ডাউনলোড কৰা অধ্যায়", + "page": "পৃষ্ঠা {page}", + "global_search": "গ্ল’বেল সন্ধান", + "color_blend_level": "ৰংৰ মিশ্ৰণ স্তৰ", + "current": "বৰ্তমান {char}", + "finished": "শেষ {char}", + "next": "পৰৱৰ্তী {char}", + "previous": "পূৰ্বৰ {char}", + "no_more_chapter": "আৰু কোনো অধ্যায় নাই", + "no_result": "কোনো ফলাফল নাই", + "send": "পঠিয়াওক", + "delete": "মচক", + "start_downloading": "এতিয়া ডাউনলোড আৰম্ভ কৰক", + "retry": "পুনৰ চেষ্টা কৰক", + "add_chapters": "অধ্যায় যোগ কৰক", + "delete_chapters": "অধ্যায় মচক?", + "default0": "ডিফল্ট", + "total_chapters": "মুঠ অধ্যায়", + "import_local_file": "স্থানীয় ফাইল আমদানি কৰক", + "import_files": "ফাইল", + "nothing_read_recently": "শেহতীয়াকৈ একো পঢ়া নাই", + "status": "স্থিতি", + "not_started": "আৰম্ভ হোৱা নাই", + "score": "স্ক’ৰ", + "start_date": "আৰম্ভৰ তাৰিখ", + "finish_date": "শেষৰ তাৰিখ", + "reading": "পঢ়ি আছে", + "on_hold": "ৰখা আছে", + "dropped": "বাদ দিয়া", + "plan_to_read": "পঢ়াৰ পৰিকল্পনা", + "re_reading": "পুনৰ পঢ়ি আছে", + "chapters": "অধ্যায়", + "add_tracker": "ট্ৰেকাৰ যোগ কৰক", + "one_tracker": "১ টা ট্ৰেকাৰ", + "n_tracker": "{n} টা ট্ৰেকাৰ", + "tracking": "ট্ৰেকিং", + "description": "বিৱৰণ", + "episode_progress": "প্ৰগতি: {n}", + "n_episodes": "{n} খণ্ড", + "manga_sources": "মাংগা উৎস", + "anime_sources": "এনিমে উৎস", + "anime_extensions": "এনিমে এক্সটেনশন", + "manga_extensions": "মাংগা এক্সটেনশন", + "anime": "এনিমে", + "manga": "মাংগা", + "library_no_category_exist": "আপোনাৰ এতিয়াও কোনো শ্ৰেণী নাই", + "watching": "চাই আছে", + "plan_to_watch": "চোৱাৰ পৰিকল্পনা", + "re_watching": "পুনৰ চাই আছে", + "episodes": "খণ্ড", + "download": "ডাউনলোড", + "new_update_available": "নতুন আপডেট উপলব্ধ", + "app_version": "এপৰ সংস্কৰণ: v{v}", + "searching_for_updates": "আপডেটৰ বাবে সন্ধান কৰি আছে...", + "no_new_updates_available": "কোনো নতুন আপডেট উপলব্ধ নাই", + "uninstall": "আনইনষ্টল", + "uninstall_extension": "{ext} এক্সটেনশন আনইনষ্টল কৰিব নে?", + "langauage": "ভাষা", + "extension_detail": "এক্সটেনশনৰ বিৱৰণ", + "scale_type": "স্কেলৰ ধৰণ", + "scale_type_fit_screen": "স্ক্ৰীণৰ সৈতে মিলাওক", + "scale_type_stretch": "প্ৰসাৰিত", + "scale_type_fit_width": "প্ৰস্থৰ সৈতে মিলাওক", + "scale_type_fit_height": "উচ্চতাৰ সৈতে মিলাওক", + "scale_type_original_size": "মূল আকাৰ", + "scale_type_smart_fit": "স্মাৰ্ট ফিট", + "page_preload_amount": "পৃষ্ঠা প্ৰিলোডৰ পৰিমাণ", + "page_preload_amount_subtitle": "পঢ়াৰ সময়ত প্ৰিলোড কৰিবলগীয়া পৃষ্ঠাৰ পৰিমাণ। অধিক মানে মসৃণ পঢ়াৰ অভিজ্ঞতা, কিন্তু কেশ্ব আৰু নেটৱৰ্কৰ ব্যৱহাৰ বেছি হ’ব।", + "image_loading_error": "এই ছবি লোড কৰিব পৰা নগ’ল", + "add_episodes": "খণ্ড যোগ কৰক", + "video_quality": "গুণ", + "video_subtitle": "উপশিৰোনাম", + "check_for_extension_updates": "এক্সটেনশন আপডেটৰ বাবে পৰীক্ষা কৰক", + "auto_extensions_updates": "স্বয়ংক্ৰিয় এক্সটেনশন আপডেট", + "auto_extensions_updates_subtitle": "নতুন সংস্কৰণ উপলব্ধ হ’লে এক্সটেনশন স্বয়ংক্ৰিয়ভাৱে আপডেট কৰিব।", + "reading_mode": "পঢ়াৰ মোড", + "custom_filter": "কাষ্টম ফিল্টাৰ", + "background_color": "পটভূমিৰ ৰং", + "white": "বগা", + "black": "ক’লা", + "grey": "ধূসৰ", + "automaic": "স্বয়ংক্ৰিয়", + "preferred_domain": "পছন্দৰ ড’মেইন", + "load_more": "অধিক লোড কৰক", + "cancel_all_for_this_series": "এই শৃংখলাৰ সকলো বাতিল কৰক", + "login": "লগইন", + "login_into": "{tracker} ত লগইন কৰক", + "email_adress": "ইমেইল ঠিকনা", + "password": "পাছৱৰ্ড", + "log_out_from": "{tracker} ৰ পৰা লগ আউট কৰিব নে?", + "log_out": "লগ আউট", + "update_pending": "আপডেট বাকী আছে", + "update_all": "সকলো আপডেট কৰক", + "backup_and_restore": "বেকআপ আৰু পুনৰুদ্ধাৰ", + "create_backup": "বেকআপ সৃষ্টি কৰক", + "create_backup_dialog_title": "আপুনি কি বেকআপ কৰিব বিচাৰে?", + "create_backup_subtitle": "বৰ্তমানৰ পুথিভঁৰাল পুনৰুদ্ধাৰৰ বাবে ব্যৱহাৰ কৰিব পাৰি", + "restore_backup": "বেকআপ পুনৰুদ্ধাৰ", + "restore_backup_subtitle": "বেকআপ ফাইলৰ পৰা পুথিভঁৰাল পুনৰুদ্ধাৰ কৰক", + "automatic_backups": "স্বয়ংক্ৰিয় বেকআপ", + "backup_frequency": "বেকআপৰ কম্পাঙ্ক", + "backup_location": "বেকআপৰ স্থান", + "backup_options": "বেকআপৰ বিকল্প", + "backup_options_dialog_title": "আপুনি কি বেকআপ কৰিব বিচাৰে?", + "backup_options_subtitle": "বেকআপ ফাইলত কি তথ্য অন্তৰ্ভুক্ত কৰিব", + "backup_and_restore_warning_info": "আপুনি বেকআপৰ কপি অন্য ঠাইতো ৰাখিব লাগে", + "library_entries": "পুথিভঁৰালৰ এণ্ট্ৰি", + "chapters_and_episode": "অধ্যায় আৰু খণ্ড", + "every_6_hours": "প্ৰতি ৬ ঘণ্টা", + "every_12_hours": "প্ৰতি ১২ ঘণ্টা", + "daily": "দৈনিক", + "every_2_days": "প্ৰতি ২ দিন", + "weekly": "সাপ্তাহিক", + "restore_backup_warning_title": "বেকআপ পুনৰুদ্ধাৰে সকলো বিদ্যমান তথ্য ওভাৰৰাইট কৰিব।\n\nপুনৰুদ্ধাৰ অব্যাহত ৰাখিব নে?", + "services": "সেৱা", + "tracking_warning_info": "ট্ৰেকিং সেৱাত অধ্যায়ৰ প্ৰগতি আপডেট কৰিবলৈ একমুখী ছিংক। পৃথক এণ্ট্ৰিৰ বাবে ট্ৰেকিং তেওঁলোকৰ ট্ৰেকিং বুটামৰ পৰা ছেট আপ কৰক।", + "use_page_tap_zones": "পৃষ্ঠা টেপ জ’ন ব্যৱহাৰ কৰক", + "manage_trackers": "ট্ৰেকাৰ পৰিচালনা কৰক", + "restore": "পুনৰুদ্ধাৰ", + "backups": "বেকআপ", + "by_scanlator": "স্কেনলেটৰ অনুসৰি", + "by_name": "নাম অনুসৰি", + "installed": "ইনষ্টল কৰা", + "auto_scroll": "স্বয়ংক্ৰিয় স্ক্ৰ’ল", + "video_audio": "অডিঅ’", + "player": "প্লেয়াৰ", + "markEpisodeAsSeenSetting": "খণ্ডটো কেতিয়া দেখা বুলি চিহ্নিত কৰিব", + "default_skip_intro_length": "ডিফল্ট ইনট্ৰ’ এৰি দিয়াৰ দৈৰ্ঘ্য", + "default_playback_speed_length": "ডিফল্ট প্লেবেক গতিৰ দৈৰ্ঘ্য", + "updateProgressAfterReading": "পঢ়াৰ পিছত প্ৰগতি আপডেট কৰক", + "no_sources_installed": "কোনো উৎস ইনষ্টল কৰা নাই!", + "show_extensions": "এক্সটেনশন দেখুৱাওক" +} diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 824fc2f4..dc994abe 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -77,6 +77,8 @@ "clean_database_desc": "This will remove all items that are not added to the library!", "incognito_mode": "Incognito Mode", "incognito_mode_description": "Pauses reading history", + "downloaded_only": "Downloaded only", + "downloaded_only_description": "Only show downloaded entries in your library", "download_queue": "Download Queue", "categories": "Categories", "statistics": "Statistics", @@ -141,10 +143,14 @@ "nsfw_sources_info": "This does not prevent unofficial or potentially incorrectly flagged extensions from surfacing NSFW (18+) content within the app", "version": "Version", "check_for_update": "Check for update", + "share_app_logs": "Share app logs", + "no_app_logs": "No log.txt available!", + "failed": "Failed!", "n_days_ago": "{days} days ago", "today": "Today", "yesterday": "Yesterday", "a_week_ago": "A week ago", + "next_week": "Next week", "add_to_library": "Add to library", "completed": "Completed", "ongoing": "Ongoing", @@ -225,6 +231,10 @@ "sync_finished": "Sync finished", "sync_failed": "Sync failed", "sync_button_sync": "Sync progress", + "sync_button_upload": "Upload only", + "sync_button_upload_info": "This operation will fully replace the remote data with local data!", + "sync_button_download": "Download only", + "sync_button_download_info": "This operation will fully replace the local data with remote data!", "sync_on": "Enable sync", "sync_auto": "Auto Sync", "sync_auto_warning": "Auto Sync is currently an experimental feature!", @@ -251,6 +261,7 @@ "anime_extensions": "Anime Extensions", "manga_extensions": "Manga Extensions", "novel_extensions": "Novel Extensions", + "extension_settings": "Extension settings", "anime": "Anime", "manga": "Manga", "novel": "Novel", @@ -335,6 +346,7 @@ "installed": "Installed", "auto_scroll": "Auto scroll", "video_audio": "Audio", + "video_audio_info": "Preferred languages, pitch correction, audio channels", "player": "Player", "markEpisodeAsSeenSetting": "At what point to mark the episode as seen", "default_skip_intro_length": "Default Skip intro length", @@ -406,6 +418,7 @@ "torrent_url": "Torrent url", "or": "OR", "advanced": "Advanced", + "advanced_info": "mpv config", "use_native_http_client": "Use native http client", "use_native_http_client_info": "it automatically supports platform features such VPNs, support more HTTP features such as HTTP/3 and custom redirect handling", "n_hour_ago": "{hour} hour ago", @@ -426,9 +439,19 @@ "include_sensitive_settings": "Include sensitive settings (e.g., tracker login tokens)", "create": "Create", "downloads_are_limited_to_wifi": "Downloads are limited to Wi-Fi only", + "recommendations": "Recommendations", + "recommendations_similar": "similar", + "recommendations_weights": "Recommendation Weights", + "recommendations_weights_genre": "Genre Similarity", + "recommendations_weights_setting": "Setting Similarity", + "recommendations_weights_synopsis": "Story Similarity", + "recommendations_weights_theme": "Theme Similarity", "manga_extensions_repo": "Manga extensions repo", "anime_extensions_repo": "Anime extensions repo", "novel_extensions_repo": "Novel extensions repo", + "custom_dns": "Custom DNS (leave blank to use system DNS)", + "android_proxy_server": "Android Proxy Server (ApkBridge)", + "get_apk_bridge": "Get ApkBridge", "undefined": "undefined", "empty_extensions_repo": "You don't have any repository urls here. Click on the plus button to add one!", "add_extensions_repo": "Add repo URL", @@ -449,6 +472,7 @@ "genre_search_source": "Browse in source", "source_not_added": "Source is not installed!", "load_own_subtitles": "Load your own subtitles...", + "search_subtitles": "Search subtitles online...", "extension_notes": "Notes: {notes}", "unsupported_repo": "You've tried to add an unsupported repository. Please check the discord server for support!", "end_of_chapter": "End of chapter", @@ -458,6 +482,9 @@ "you_have_finished_reading": "You have finished reading", "return_to_the_list_of_chapters": "Return to the list of chapters", "hwdec": "Hardware Decoder", + "enable_hardware_accel": "Hardware Acceleration", + "enable_hardware_accel_info": "Turn it on/off if you are experiencing bugs or crashes", + "track_library_navigate": "Go to existing local entry", "track_library_add": "Add to local library", "track_library_add_confirm": "Add tracked item to local library", "track_library_not_logged": "Login to the corresponding tracker to use this feature!", @@ -471,5 +498,53 @@ "rpc_show_cover_image": "Show current cover image in Discord", "sync_enable_histories": "Sync history data", "sync_enable_updates": "Sync update data", - "sync_enable_settings": "Sync settings" + "sync_enable_settings": "Sync settings", + "enable_mpv": "Enable mpv shaders / scripts", + "mpv_info": "Supports .js scripts under mpv/scripts/", + "mpv_redownload": "Redownload mpv config files", + "mpv_redownload_info": "Replaces old config files with new one!", + "mpv_download": "MPV config files are required!\nDownload now?", + "custom_buttons": "Custom buttons", + "custom_buttons_info": "Execute lua code with custom buttons", + "custom_buttons_edit": "Edit custom buttons", + "custom_buttons_add": "Add custom button", + "custom_buttons_added": "Custom button added!", + "custom_buttons_delete": "Delete custom button", + "custom_buttons_text": "Button text", + "custom_buttons_text_req": "Button text required", + "custom_buttons_js_code": "lua code", + "custom_buttons_js_code_req": "lua code required", + "custom_buttons_js_code_long": "lua code (on long press)", + "custom_buttons_startup": "lua code (on startup)", + "n_days": "{n} days", + "decoder": "Decoder", + "decoder_info": "Hardware decoding, pixel format, debanding", + "enable_gpu_next": "Enable gpu-next (Android only)", + "enable_gpu_next_info": "A new video rendering backend", + "debanding": "Debanding", + "use_yuv420p": "Use YUV420P pixel format", + "use_yuv420p_info": "May fix black screens on some video codecs, can also improve performance at the cost of quality", + "audio_preferred_languages": "Preferred langauages", + "audio_preferred_languages_info": "Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.", + "enable_audio_pitch_correction": "Enable audio pitch correction", + "enable_audio_pitch_correction_info": "Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds", + "audio_channels": "Audio channels", + "volume_boost_cap": "Volume boost cap", + "internal_player": "Internal player", + "internal_player_info": "Progress, controls, orientation", + "subtitle_delay_text": "Subtitle delay", + "subtitle_delay": "Delay (ms)", + "subtitle_speed": "Speed", + "calendar": "Calendar", + "calendar_no_data": "No data yet.", + "calendar_info": "The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!", + "in_n_day": "in {days} day", + "in_n_days": "in {days} days", + "clear_library": "Clear library", + "clear_library_desc": "Choose to clear all manga, anime and/or novel entries", + "clear_library_input": "Type 'manga', 'anime' and/or 'novel' (separated by a comma) to remove all related entries", + "watch_order": "Watch order", + "sequels": "Sequels", + "recommendations": "Recommendations", + "recommendations_similarity": "Similarity:" } diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb new file mode 100644 index 00000000..9c9f4638 --- /dev/null +++ b/lib/l10n/app_hi.arb @@ -0,0 +1,279 @@ +{ + "@@locale": "hi", + "library": "पुस्तकालय", + "updates": "अपडेट", + "history": "इतिहास", + "browse": "ब्राउज़", + "more": "और", + "open_random_entry": "कोई भी प्रविष्टि खोलें", + "import": "आयात", + "filter": "फ़िल्टर", + "downloaded": "डाउनलोड किया गया", + "unread": "अपठित", + "started": "शुरू किया", + "bookmarked": "बुकमार्क किया", + "sort": "छाँटें", + "alphabetically": "वर्णानुक्रम", + "last_read": "आखिरी बार पढ़ा", + "last_update_check": "आखिरी अपडेट जांच", + "unread_count": "अपठित गिनती", + "latest_chapter": "नवीनतम अध्याय", + "date_added": "जोड़ा गया तारीख", + "display": "प्रदर्शन", + "display_mode": "प्रदर्शन मोड", + "compact_grid": "संक्षिप्त ग्रिड", + "comfortable_grid": "आरामदायक ग्रिड", + "cover_only_grid": "केवल कवर ग्रिड", + "list": "सूची", + "badges": "बैज", + "downloaded_chapters": "डाउनलोड किए गए अध्याय", + "language": "भाषा", + "local_source": "स्थानीय स्रोत", + "tabs": "टैब", + "show_category_tabs": "श्रेणी टैब दिखाएँ", + "show_numbers_of_items": "आइटम की संख्या दिखाएँ", + "other": "अन्य", + "show_continue_reading_buttons": "पढ़ना जारी रखें बटन दिखाएँ", + "empty_library": "खाली पुस्तकालय", + "search": "खोजें...", + "no_recent_updates": "कोई हालिया अपडेट नहीं", + "remove_everything": "सब कुछ हटाएँ", + "remove_everything_msg": "क्या आप निश्चित हैं? सारा इतिहास खो जाएगा", + "ok": "ठीक है", + "cancel": "रद्द करें", + "remove": "हटाएँ", + "remove_history_msg": "यह इस अध्याय की पढ़ने की तारीख को हटा देगा। क्या आप निश्चित हैं?", + "last_used": "आखिरी बार उपयोग", + "pinned": "पिन किया गया", + "sources": "स्रोत", + "install": "स्थापित करें", + "update": "अपडेट करें", + "latest": "नवीनतम", + "extensions": "एक्सटेंशन", + "migrate": "स्थानांतरण", + "incognito_mode": "गुप्त मोड", + "incognito_mode_description": "पढ़ने का इतिहास रोकता है", + "download_queue": "डाउनलोड कतार", + "categories": "श्रेणियाँ", + "settings": "सेटिंग्स", + "about": "के बारे में", + "help": "मदद", + "no_downloads": "कोई डाउनलोड नहीं", + "edit_categories": "श्रेणियाँ संपादित करें", + "edit_categories_description": "आपके पास कोई श्रेणी नहीं है। अपनी लाइब्रेरी को व्यवस्थित करने के लिए प्लस बटन दबाएँ", + "add": "जोड़ें", + "add_category": "श्रेणी जोड़ें", + "name": "नाम", + "category_name_required": "*आवश्यक", + "add_category_error_exist": "इस नाम की श्रेणी पहले से मौजूद है!", + "delete_category": "श्रेणी हटाएँ", + "delete_category_msg": "क्या आप श्रेणी {name} को हटाना चाहते हैं?", + "rename_category": "श्रेणी का नाम बदलें", + "general": "सामान्य", + "general_subtitle": "ऐप की भाषा", + "app_language": "ऐप की भाषा", + "appearance": "दिखावट", + "appearance_subtitle": "थीम, तारीख और समय प्रारूप", + "theme": "थीम", + "dark_mode": "डार्क मोड", + "on": "चालू", + "off": "बंद", + "pure_black_dark_mode": "पूर्ण काला डार्क मोड", + "timestamp": "समय चिह्न", + "relative_timestamp": "सापेक्ष समय चिह्न", + "relative_timestamp_short": "संक्षिप्त (आज, कल)", + "relative_timestamp_long": "लंबा (संक्षिप्त+, n दिन पहले)", + "date_format": "तारीख प्रारूप", + "reader": "पढ़ने वाला", + "refresh": "ताज़ा करें", + "reader_subtitle": "पढ़ने का मोड, प्रदर्शन, नेविगेशन", + "default_reading_mode": "डिफ़ॉल्ट पढ़ने का मोड", + "reading_mode_vertical": "लंबवत", + "reading_mode_horizontal": "क्षैतिज", + "reading_mode_left_to_right": "बाएँ से दाएँ", + "reading_mode_right_to_left": "दाएँ से बाएँ", + "reading_mode_vertical_continuous": "लंबवत निरंतर", + "reading_mode_webtoon": "वेबटून", + "double_tap_animation_speed": "डबल टैप एनिमेशन गति", + "normal": "सामान्य", + "fast": "तेज़", + "no_animation": "कोई एनिमेशन नहीं", + "animate_page_transitions": "पेज ट्रांज़िशन को एनिमेट करें", + "crop_borders": "किनारों को काटें", + "downloads": "डाउनलोड", + "downloads_subtitle": "डाउनलोड सेटिंग्स", + "download_location": "डाउनलोड स्थान", + "custom_location": "कस्टम स्थान", + "only_on_wifi": "केवल वाईफाई पर", + "save_as_cbz_archive": "सीबीजेड आर्काइव के रूप में सहेजें", + "browse_subtitle": "स्रोत, वैश्विक खोज", + "only_include_pinned_sources": "केवल पिन किए गए स्रोत शामिल करें", + "nsfw_sources": "एनएसएफडब्ल्यू (+18) स्रोत", + "nsfw_sources_show": "स्रोत और एक्सटेंशन सूची में दिखाएँ", + "nsfw_sources_info": "यह अनौपचारिक या संभावित रूप से गलत तरीके से चिह्नित एक्सटेंशन को ऐप के भीतर एनएसएफडब्ल्यू (18+) सामग्री को सामने लाने से नहीं रोकता", + "version": "संस्करण", + "check_for_update": "अपडेट के लिए जांचें", + "n_days_ago": "{days} दिन पहले", + "today": "आज", + "yesterday": "कल", + "a_week_ago": "एक सप्ताह पहले", + "add_to_library": "पुस्तकालय में जोड़ें", + "completed": "पूरा हुआ", + "ongoing": "चल रहा है", + "on_hiatus": "विराम पर", + "canceled": "रद्द", + "publishing_finished": "प्रकाशन समाप्त", + "unknown": "अज्ञात", + "set_categories": "श्रेणियाँ सेट करें", + "edit": "संपादित करें", + "in_library": "पुस्तकालय में", + "filter_scanlator_groups": "स्कैनलेटर समूहों को फ़िल्टर करें", + "reset": "रीसेट", + "by_source": "स्रोत के अनुसार", + "by_chapter_number": "अध्याय संख्या के अनुसार", + "by_upload_date": "अपलोड तारीख के अनुसार", + "source_title": "स्रोत शीर्षक", + "chapter_number": "अध्याय संख्या", + "share": "साझा करें", + "n_chapters": "{number} अध्याय", + "no_description": "कोई विवरण नहीं", + "resume": "जारी रखें", + "read": "पढ़ें", + "popular": "लोकप्रिय", + "open_in_browser": "ब्राउज़र में खोलें", + "clear_cookie": "कुकी साफ़ करें", + "show_page_number": "पेज नंबर दिखाएँ", + "from_library": "पुस्तकालय से", + "downloaded_chapter": "डाउनलोड किया गया अध्याय", + "page": "पेज {page}", + "global_search": "वैश्विक खोज", + "color_blend_level": "रंग मिश्रण स्तर", + "current": "वर्तमान {char}", + "finished": "समाप्त {char}", + "next": "अगला {char}", + "previous": "पिछला {char}", + "no_more_chapter": "कोई और अध्याय नहीं है", + "no_result": "कोई परिणाम नहीं", + "send": "भेजें", + "delete": "हटाएँ", + "start_downloading": "अब डाउनलोड शुरू करें", + "retry": "पुनः प्रयास करें", + "add_chapters": "अध्याय जोड़ें", + "delete_chapters": "अध्याय हटाएँ?", + "default0": "डिफ़ॉल्ट", + "total_chapters": "कुल अध्याय", + "import_local_file": "स्थानीय फ़ाइल आयात करें", + "import_files": "फ़ाइलें", + "nothing_read_recently": "हाल ही में कुछ भी नहीं पढ़ा", + "status": "स्थिति", + "not_started": "शुरू नहीं हुआ", + "score": "स्कोर", + "start_date": "शुरू की तारीख", + "finish_date": "समाप्ति की तारीख", + "reading": "पढ़ रहा है", + "on_hold": "रोक पर", + "dropped": "छोड़ दिया", + "plan_to_read": "पढ़ने की योजना", + "re_reading": "पुनः पढ़ रहा है", + "chapters": "अध्याय", + "add_tracker": "ट्रैकर जोड़ें", + "one_tracker": "1 ट्रैकर", + "n_tracker": "{n} ट्रैकर", + "tracking": "ट्रैकिंग", + "description": "विवरण", + "episode_progress": "प्रगति: {n}", + "n_episodes": "{n} एपिसोड", + "manga_sources": "मंगा स्रोत", + "anime_sources": "एनीमे स्रोत", + "anime_extensions": "एनीमे एक्सटेंशन", + "manga_extensions": "मंगा एक्सटेंशन", + "anime": "एनीमे", + "manga": "मंगा", + "library_no_category_exist": "आपके पास अभी कोई श्रेणी नहीं है", + "watching": "देख रहा है", + "plan_to_watch": "देखने की योजना", + "re_watching": "पुनः देख रहा है", + "episodes": "एपिसोड", + "download": "डाउनलोड", + "new_update_available": "नया अपडेट उपलब्ध", + "app_version": "ऐप संस्करण: v{v}", + "searching_for_updates": "अपडेट की खोज हो रही है...", + "no_new_updates_available": "कोई नया अपडेट उपलब्ध नहीं", + "uninstall": "हटाएँ", + "uninstall_extension": "{ext} एक्सटेंशन हटाएँ?", + "langauage": "भाषा", + "extension_detail": "एक्सटेंशन विवरण", + "scale_type": "स्केल प्रकार", + "scale_type_fit_screen": "स्क्रीन पर फिट", + "scale_type_stretch": "खींचें", + "scale_type_fit_width": "चौड़ाई पर फिट", + "scale_type_fit_height": "ऊँचाई पर फिट", + "scale_type_original_size": "मूल आकार", + "scale_type_smart_fit": "स्मार्ट फिट", + "page_preload_amount": "पेज प्रीलोड मात्रा", + "page_preload_amount_subtitle": "पढ़ते समय प्रीलोड करने वाले पेजों की मात्रा। उच्च मानों से पढ़ने का अनुभव बेहतर होगा, लेकिन कैश और नेटवर्क उपयोग अधिक होगा।", + "image_loading_error": "यह छवि लोड नहीं हो सकी", + "add_episodes": "एपिसोड जोड़ें", + "video_quality": "गुणवत्ता", + "video_subtitle": "उपशीर्षक", + "check_for_extension_updates": "एक्सटेंशन अपडेट की जाँच करें", + "auto_extensions_updates": "स्वचालित एक्सटेंशन अपडेट", + "auto_extensions_updates_subtitle": "जब नया संस्करण उपलब्ध होगा तो एक्सटेंशन स्वचालित रूप से अपडेट हो जाएगा।", + "reading_mode": "पढ़ने का मोड", + "custom_filter": "कस्टम फ़िल्टर", + "background_color": "पृष्ठभूमि रंग", + "white": "सफेद", + "black": "काला", + "grey": "ग्रे", + "automaic": "स्वचालित", + "preferred_domain": "पसंदीदा डोमेन", + "load_more": "और लोड करें", + "cancel_all_for_this_series": "इस सीरीज़ के लिए सभी रद्द करें", + "login": "लॉगिन", + "login_into": "{tracker} में लॉगिन करें", + "email_adress": "ईमेल पता", + "password": "पासवर्ड", + "log_out_from": "{tracker} से लॉग आउट करें?", + "log_out": "लॉग आउट", + "update_pending": "अपडेट लंबित", + "update_all": "सभी अपडेट करें", + "backup_and_restore": "बैकअप और पुनर्स्थापना", + "create_backup": "बैकअप बनाएँ", + "create_backup_dialog_title": "आप क्या बैकअप करना चाहते हैं?", + "create_backup_subtitle": "वर्तमान पुस्तकालय को पुनर्स्थापित करने के लिए उपयोग किया जा सकता है", + "restore_backup": "बैकअप पुनर्स्थापित करें", + "restore_backup_subtitle": "बैकअप फ़ाइल से पुस्तकालय पुनर्स्थापित करें", + "automatic_backups": "स्वचालित बैकअप", + "backup_frequency": "बैकअप आवृत्ति", + "backup_location": "बैकअप स्थान", + "backup_options": "बैकअप विकल्प", + "backup_options_dialog_title": "आप क्या बैकअप करना चाहते हैं?", + "backup_options_subtitle": "बैकअप फ़ाइल में क्या जानकारी शामिल करनी है", + "backup_and_restore_warning_info": "आपको बैकअप की प्रतियां अन्य स्थानों पर भी रखनी चाहिए", + "library_entries": "पुस्तकालय प्रविष्टियाँ", + "chapters_and_episode": "अध्याय और एपिसोड", + "every_6_hours": "हर 6 घंटे", + "every_12_hours": "हर 12 घंटे", + "daily": "दैनिक", + "every_2_days": "हर 2 दिन", + "weekly": "साप्ताहिक", + "restore_backup_warning_title": "बैकअप पुनर्स्थापित करने से सभी मौजूदा डेटा अधिलेखित हो जाएगा।\n\nपुनर्स्थापना जारी रखें?", + "services": "सेवाएँ", + "tracking_warning_info": "ट्रैकिंग सेवाओं में अध्याय प्रगति को अपडेट करने के लिए एकतरफा समन्वय। व्यक्तिगत प्रविष्टियों के लिए ट्रैकिंग सेट करें।", + "use_page_tap_zones": "पेज टैप ज़ोन का उपयोग करें", + "manage_trackers": "ट्रैकर्स प्रबंधित करें", + "restore": "पुनर्स्थापित करें", + "backups": "बैकअप", + "by_scanlator": "स्कैनलेटर के अनुसार", + "by_name": "नाम के अनुसार", + "installed": "स्थापित", + "auto_scroll": "स्वचालित स्क्रॉल", + "video_audio": "ऑडियो", + "player": "प्लेयर", + "markEpisodeAsSeenSetting": "एपिसोड को कब देखा गया के रूप में चिह्नित करना है", + "default_skip_intro_length": "डिफ़ॉल्ट परिचय छोड़ने की अवधि", + "default_playback_speed_length": "डिफ़ॉल्ट प्लेबैक गति अवधि", + "updateProgressAfterReading": "पढ़ने के बाद प्रगति अपडेट करें", + "no_sources_installed": "कोई स्रोत स्थापित नहीं है!", + "show_extensions": "एक्सटेंशन दिखाएँ" +} diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index 5f9e105c..f2bac5ba 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -6,10 +6,12 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:intl/intl.dart' as intl; import 'app_localizations_ar.dart'; +import 'app_localizations_as.dart'; import 'app_localizations_de.dart'; import 'app_localizations_en.dart'; import 'app_localizations_es.dart'; import 'app_localizations_fr.dart'; +import 'app_localizations_hi.dart'; import 'app_localizations_id.dart'; import 'app_localizations_it.dart'; import 'app_localizations_pt.dart'; @@ -105,11 +107,13 @@ abstract class AppLocalizations { /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ Locale('ar'), + Locale('as'), Locale('de'), Locale('en'), Locale('es'), Locale('es', '419'), Locale('fr'), + Locale('hi'), Locale('id'), Locale('it'), Locale('pt'), @@ -533,6 +537,18 @@ abstract class AppLocalizations { /// **'Pauses reading history'** String get incognito_mode_description; + /// No description provided for @downloaded_only. + /// + /// In en, this message translates to: + /// **'Downloaded only'** + String get downloaded_only; + + /// No description provided for @downloaded_only_description. + /// + /// In en, this message translates to: + /// **'Only show downloaded entries in your library'** + String get downloaded_only_description; + /// No description provided for @download_queue. /// /// In en, this message translates to: @@ -917,6 +933,24 @@ abstract class AppLocalizations { /// **'Check for update'** String get check_for_update; + /// No description provided for @share_app_logs. + /// + /// In en, this message translates to: + /// **'Share app logs'** + String get share_app_logs; + + /// No description provided for @no_app_logs. + /// + /// In en, this message translates to: + /// **'No log.txt available!'** + String get no_app_logs; + + /// No description provided for @failed. + /// + /// In en, this message translates to: + /// **'Failed!'** + String get failed; + /// No description provided for @n_days_ago. /// /// In en, this message translates to: @@ -941,6 +975,12 @@ abstract class AppLocalizations { /// **'A week ago'** String get a_week_ago; + /// No description provided for @next_week. + /// + /// In en, this message translates to: + /// **'Next week'** + String get next_week; + /// No description provided for @add_to_library. /// /// In en, this message translates to: @@ -1421,6 +1461,30 @@ abstract class AppLocalizations { /// **'Sync progress'** String get sync_button_sync; + /// No description provided for @sync_button_upload. + /// + /// In en, this message translates to: + /// **'Upload only'** + String get sync_button_upload; + + /// No description provided for @sync_button_upload_info. + /// + /// In en, this message translates to: + /// **'This operation will fully replace the remote data with local data!'** + String get sync_button_upload_info; + + /// No description provided for @sync_button_download. + /// + /// In en, this message translates to: + /// **'Download only'** + String get sync_button_download; + + /// No description provided for @sync_button_download_info. + /// + /// In en, this message translates to: + /// **'This operation will fully replace the local data with remote data!'** + String get sync_button_download_info; + /// No description provided for @sync_on. /// /// In en, this message translates to: @@ -1577,6 +1641,12 @@ abstract class AppLocalizations { /// **'Novel Extensions'** String get novel_extensions; + /// No description provided for @extension_settings. + /// + /// In en, this message translates to: + /// **'Extension settings'** + String get extension_settings; + /// No description provided for @anime. /// /// In en, this message translates to: @@ -2081,6 +2151,12 @@ abstract class AppLocalizations { /// **'Audio'** String get video_audio; + /// No description provided for @video_audio_info. + /// + /// In en, this message translates to: + /// **'Preferred languages, pitch correction, audio channels'** + String get video_audio_info; + /// No description provided for @player. /// /// In en, this message translates to: @@ -2507,6 +2583,12 @@ abstract class AppLocalizations { /// **'Advanced'** String get advanced; + /// No description provided for @advanced_info. + /// + /// In en, this message translates to: + /// **'mpv config'** + String get advanced_info; + /// No description provided for @use_native_http_client. /// /// In en, this message translates to: @@ -2627,6 +2709,48 @@ abstract class AppLocalizations { /// **'Downloads are limited to Wi-Fi only'** String get downloads_are_limited_to_wifi; + /// No description provided for @recommendations. + /// + /// In en, this message translates to: + /// **'Recommendations'** + String get recommendations; + + /// No description provided for @recommendations_similar. + /// + /// In en, this message translates to: + /// **'similar'** + String get recommendations_similar; + + /// No description provided for @recommendations_weights. + /// + /// In en, this message translates to: + /// **'Recommendation Weights'** + String get recommendations_weights; + + /// No description provided for @recommendations_weights_genre. + /// + /// In en, this message translates to: + /// **'Genre Similarity'** + String get recommendations_weights_genre; + + /// No description provided for @recommendations_weights_setting. + /// + /// In en, this message translates to: + /// **'Setting Similarity'** + String get recommendations_weights_setting; + + /// No description provided for @recommendations_weights_synopsis. + /// + /// In en, this message translates to: + /// **'Story Similarity'** + String get recommendations_weights_synopsis; + + /// No description provided for @recommendations_weights_theme. + /// + /// In en, this message translates to: + /// **'Theme Similarity'** + String get recommendations_weights_theme; + /// No description provided for @manga_extensions_repo. /// /// In en, this message translates to: @@ -2645,6 +2769,24 @@ abstract class AppLocalizations { /// **'Novel extensions repo'** String get novel_extensions_repo; + /// No description provided for @custom_dns. + /// + /// In en, this message translates to: + /// **'Custom DNS (leave blank to use system DNS)'** + String get custom_dns; + + /// No description provided for @android_proxy_server. + /// + /// In en, this message translates to: + /// **'Android Proxy Server (ApkBridge)'** + String get android_proxy_server; + + /// No description provided for @get_apk_bridge. + /// + /// In en, this message translates to: + /// **'Get ApkBridge'** + String get get_apk_bridge; + /// No description provided for @undefined. /// /// In en, this message translates to: @@ -2765,6 +2907,12 @@ abstract class AppLocalizations { /// **'Load your own subtitles...'** String get load_own_subtitles; + /// No description provided for @search_subtitles. + /// + /// In en, this message translates to: + /// **'Search subtitles online...'** + String get search_subtitles; + /// No description provided for @extension_notes. /// /// In en, this message translates to: @@ -2819,6 +2967,24 @@ abstract class AppLocalizations { /// **'Hardware Decoder'** String get hwdec; + /// No description provided for @enable_hardware_accel. + /// + /// In en, this message translates to: + /// **'Hardware Acceleration'** + String get enable_hardware_accel; + + /// No description provided for @enable_hardware_accel_info. + /// + /// In en, this message translates to: + /// **'Turn it on/off if you are experiencing bugs or crashes'** + String get enable_hardware_accel_info; + + /// No description provided for @track_library_navigate. + /// + /// In en, this message translates to: + /// **'Go to existing local entry'** + String get track_library_navigate; + /// No description provided for @track_library_add. /// /// In en, this message translates to: @@ -2902,6 +3068,288 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Sync settings'** String get sync_enable_settings; + + /// No description provided for @enable_mpv. + /// + /// In en, this message translates to: + /// **'Enable mpv shaders / scripts'** + String get enable_mpv; + + /// No description provided for @mpv_info. + /// + /// In en, this message translates to: + /// **'Supports .js scripts under mpv/scripts/'** + String get mpv_info; + + /// No description provided for @mpv_redownload. + /// + /// In en, this message translates to: + /// **'Redownload mpv config files'** + String get mpv_redownload; + + /// No description provided for @mpv_redownload_info. + /// + /// In en, this message translates to: + /// **'Replaces old config files with new one!'** + String get mpv_redownload_info; + + /// No description provided for @mpv_download. + /// + /// In en, this message translates to: + /// **'MPV config files are required!\nDownload now?'** + String get mpv_download; + + /// No description provided for @custom_buttons. + /// + /// In en, this message translates to: + /// **'Custom buttons'** + String get custom_buttons; + + /// No description provided for @custom_buttons_info. + /// + /// In en, this message translates to: + /// **'Execute lua code with custom buttons'** + String get custom_buttons_info; + + /// No description provided for @custom_buttons_edit. + /// + /// In en, this message translates to: + /// **'Edit custom buttons'** + String get custom_buttons_edit; + + /// No description provided for @custom_buttons_add. + /// + /// In en, this message translates to: + /// **'Add custom button'** + String get custom_buttons_add; + + /// No description provided for @custom_buttons_added. + /// + /// In en, this message translates to: + /// **'Custom button added!'** + String get custom_buttons_added; + + /// No description provided for @custom_buttons_delete. + /// + /// In en, this message translates to: + /// **'Delete custom button'** + String get custom_buttons_delete; + + /// No description provided for @custom_buttons_text. + /// + /// In en, this message translates to: + /// **'Button text'** + String get custom_buttons_text; + + /// No description provided for @custom_buttons_text_req. + /// + /// In en, this message translates to: + /// **'Button text required'** + String get custom_buttons_text_req; + + /// No description provided for @custom_buttons_js_code. + /// + /// In en, this message translates to: + /// **'lua code'** + String get custom_buttons_js_code; + + /// No description provided for @custom_buttons_js_code_req. + /// + /// In en, this message translates to: + /// **'lua code required'** + String get custom_buttons_js_code_req; + + /// No description provided for @custom_buttons_js_code_long. + /// + /// In en, this message translates to: + /// **'lua code (on long press)'** + String get custom_buttons_js_code_long; + + /// No description provided for @custom_buttons_startup. + /// + /// In en, this message translates to: + /// **'lua code (on startup)'** + String get custom_buttons_startup; + + /// No description provided for @n_days. + /// + /// In en, this message translates to: + /// **'{n} days'** + String n_days(Object n); + + /// No description provided for @decoder. + /// + /// In en, this message translates to: + /// **'Decoder'** + String get decoder; + + /// No description provided for @decoder_info. + /// + /// In en, this message translates to: + /// **'Hardware decoding, pixel format, debanding'** + String get decoder_info; + + /// No description provided for @enable_gpu_next. + /// + /// In en, this message translates to: + /// **'Enable gpu-next (Android only)'** + String get enable_gpu_next; + + /// No description provided for @enable_gpu_next_info. + /// + /// In en, this message translates to: + /// **'A new video rendering backend'** + String get enable_gpu_next_info; + + /// No description provided for @debanding. + /// + /// In en, this message translates to: + /// **'Debanding'** + String get debanding; + + /// No description provided for @use_yuv420p. + /// + /// In en, this message translates to: + /// **'Use YUV420P pixel format'** + String get use_yuv420p; + + /// No description provided for @use_yuv420p_info. + /// + /// In en, this message translates to: + /// **'May fix black screens on some video codecs, can also improve performance at the cost of quality'** + String get use_yuv420p_info; + + /// No description provided for @audio_preferred_languages. + /// + /// In en, this message translates to: + /// **'Preferred langauages'** + String get audio_preferred_languages; + + /// No description provided for @audio_preferred_languages_info. + /// + /// In en, this message translates to: + /// **'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'** + String get audio_preferred_languages_info; + + /// No description provided for @enable_audio_pitch_correction. + /// + /// In en, this message translates to: + /// **'Enable audio pitch correction'** + String get enable_audio_pitch_correction; + + /// No description provided for @enable_audio_pitch_correction_info. + /// + /// In en, this message translates to: + /// **'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'** + String get enable_audio_pitch_correction_info; + + /// No description provided for @audio_channels. + /// + /// In en, this message translates to: + /// **'Audio channels'** + String get audio_channels; + + /// No description provided for @volume_boost_cap. + /// + /// In en, this message translates to: + /// **'Volume boost cap'** + String get volume_boost_cap; + + /// No description provided for @internal_player. + /// + /// In en, this message translates to: + /// **'Internal player'** + String get internal_player; + + /// No description provided for @internal_player_info. + /// + /// In en, this message translates to: + /// **'Progress, controls, orientation'** + String get internal_player_info; + + /// No description provided for @subtitle_delay_text. + /// + /// In en, this message translates to: + /// **'Subtitle delay'** + String get subtitle_delay_text; + + /// No description provided for @subtitle_delay. + /// + /// In en, this message translates to: + /// **'Delay (ms)'** + String get subtitle_delay; + + /// No description provided for @subtitle_speed. + /// + /// In en, this message translates to: + /// **'Speed'** + String get subtitle_speed; + + /// No description provided for @calendar. + /// + /// In en, this message translates to: + /// **'Calendar'** + String get calendar; + + /// No description provided for @calendar_no_data. + /// + /// In en, this message translates to: + /// **'No data yet.'** + String get calendar_no_data; + + /// No description provided for @calendar_info. + /// + /// In en, this message translates to: + /// **'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'** + String get calendar_info; + + /// No description provided for @in_n_day. + /// + /// In en, this message translates to: + /// **'in {days} day'** + String in_n_day(Object days); + + /// No description provided for @in_n_days. + /// + /// In en, this message translates to: + /// **'in {days} days'** + String in_n_days(Object days); + + /// No description provided for @clear_library. + /// + /// In en, this message translates to: + /// **'Clear library'** + String get clear_library; + + /// No description provided for @clear_library_desc. + /// + /// In en, this message translates to: + /// **'Choose to clear all manga, anime and/or novel entries'** + String get clear_library_desc; + + /// No description provided for @clear_library_input. + /// + /// In en, this message translates to: + /// **'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'** + String get clear_library_input; + + /// No description provided for @watch_order. + /// + /// In en, this message translates to: + /// **'Watch order'** + String get watch_order; + + /// No description provided for @sequels. + /// + /// In en, this message translates to: + /// **'Sequels'** + String get sequels; + + /// No description provided for @recommendations_similarity. + /// + /// In en, this message translates to: + /// **'Similarity:'** + String get recommendations_similarity; } class _AppLocalizationsDelegate @@ -2916,10 +3364,12 @@ class _AppLocalizationsDelegate @override bool isSupported(Locale locale) => [ 'ar', + 'as', 'de', 'en', 'es', 'fr', + 'hi', 'id', 'it', 'pt', @@ -2958,6 +3408,8 @@ AppLocalizations lookupAppLocalizations(Locale locale) { switch (locale.languageCode) { case 'ar': return AppLocalizationsAr(); + case 'as': + return AppLocalizationsAs(); case 'de': return AppLocalizationsDe(); case 'en': @@ -2966,6 +3418,8 @@ AppLocalizations lookupAppLocalizations(Locale locale) { return AppLocalizationsEs(); case 'fr': return AppLocalizationsFr(); + case 'hi': + return AppLocalizationsHi(); case 'id': return AppLocalizationsId(); case 'it': diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart index 2cd15f8d..46519ef1 100644 --- a/lib/l10n/generated/app_localizations_ar.dart +++ b/lib/l10n/generated/app_localizations_ar.dart @@ -231,6 +231,13 @@ class AppLocalizationsAr extends AppLocalizations { @override String get incognito_mode_description => 'يوقف سجل القراءة'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'قائمة الانتظار للتحميل'; @@ -427,6 +434,15 @@ class AppLocalizationsAr extends AppLocalizations { @override String get check_for_update => 'التحقق من التحديثات'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return 'منذ $days أيام'; @@ -441,6 +457,9 @@ class AppLocalizationsAr extends AppLocalizations { @override String get a_week_ago => 'منذ أسبوع'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'إضافة إلى المكتبة'; @@ -696,6 +715,20 @@ class AppLocalizationsAr extends AppLocalizations { @override String get sync_button_sync => 'مزامنة التقدم'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'تمكين المزامنة'; @@ -780,6 +813,9 @@ class AppLocalizationsAr extends AppLocalizations { @override String get novel_extensions => 'إضافات الروايات'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'أنمي'; @@ -1050,6 +1086,10 @@ class AppLocalizationsAr extends AppLocalizations { @override String get video_audio => 'الصوت'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'لاعب'; @@ -1272,6 +1312,9 @@ class AppLocalizationsAr extends AppLocalizations { @override String get advanced => 'متقدم'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'استخدام عميل HTTP الأصلي'; @@ -1348,6 +1391,27 @@ class AppLocalizationsAr extends AppLocalizations { @override String get downloads_are_limited_to_wifi => 'التنزيلات مقتصرة على Wi-Fi فقط'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'مستودع إضافات المانجا'; @@ -1357,6 +1421,15 @@ class AppLocalizationsAr extends AppLocalizations { @override String get novel_extensions_repo => 'مستودع إضافات الروايات'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'غير محدد'; @@ -1419,6 +1492,9 @@ class AppLocalizationsAr extends AppLocalizations { @override String get load_own_subtitles => 'تحميل الترجمة الخاصة بك...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1450,6 +1526,16 @@ class AppLocalizationsAr extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1494,4 +1580,157 @@ class AppLocalizationsAr extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_as.dart b/lib/l10n/generated/app_localizations_as.dart new file mode 100644 index 00000000..f4f2b754 --- /dev/null +++ b/lib/l10n/generated/app_localizations_as.dart @@ -0,0 +1,1738 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'app_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for Assamese (`as`). +class AppLocalizationsAs extends AppLocalizations { + AppLocalizationsAs([String locale = 'as']) : super(locale); + + @override + String get library => 'পুথিভঁৰাল'; + + @override + String get updates => 'আপডেট'; + + @override + String get history => 'ইতিহাস'; + + @override + String get browse => 'ব্ৰাউজ'; + + @override + String get more => 'অধিক'; + + @override + String get open_random_entry => 'যিকোনো এণ্ট্ৰি খোলক'; + + @override + String get import => 'আমদানি'; + + @override + String get filter => 'ফিল্টাৰ'; + + @override + String get ignore_filters => 'Ignore Filters'; + + @override + String get downloaded => 'ডাউনলোড কৰা'; + + @override + String get unread => 'নপঢ়া'; + + @override + String get unwatched => 'Unwatched'; + + @override + String get started => 'আৰম্ভ কৰা'; + + @override + String get bookmarked => 'বুকমাৰ্ক কৰা'; + + @override + String get sort => 'শাৰী কৰক'; + + @override + String get alphabetically => 'বৰ্ণানুক্ৰমে'; + + @override + String get last_read => 'শেষত পঢ়া'; + + @override + String get last_watched => 'Last watched'; + + @override + String get last_update_check => 'শেষ আপডেট পৰীক্ষা'; + + @override + String last_entry_delete_warning( + num count, + Object entryType, + Object entryTypePlural, + Object mediaType, + ) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: + 'You are deleting all $count $entryTypePlural of this $mediaType from the library.', + one: + 'You are deleting the only $entryType of this $mediaType from the library.', + ); + return '$_temp0\nThis will also remove the whole $mediaType from your library.\n\nNote: The files themselves will not be deleted.'; + } + + @override + String get chapter => 'chapter'; + + @override + String get episode => 'episode'; + + @override + String get unread_count => 'নপঢ়াৰ সংখ্যা'; + + @override + String get unwatched_count => 'Unwatched count'; + + @override + String get latest_chapter => 'শেষৰ অধ্যায়'; + + @override + String get latest_episode => 'Latest episode'; + + @override + String get date_added => 'তাৰিখ যোগ কৰা'; + + @override + String get display => 'প্ৰদৰ্শন'; + + @override + String get display_mode => 'প্ৰদৰ্শন মোড'; + + @override + String get compact_grid => 'সংক্ষিপ্ত গ্ৰিড'; + + @override + String get comfortable_grid => 'আৰামদায়ক গ্ৰিড'; + + @override + String get cover_only_grid => 'মাত্ৰ কভাৰৰ গ্ৰিড'; + + @override + String get list => 'তালিকা'; + + @override + String get badges => 'বেজ'; + + @override + String get downloaded_chapters => 'ডাউনলোড কৰা অধ্যায়'; + + @override + String get downloaded_episodes => 'Downloaded episodes'; + + @override + String get language => 'ভাষা'; + + @override + String get local_source => 'স্থানীয় উৎস'; + + @override + String get tabs => 'টেব'; + + @override + String get show_category_tabs => 'শ্ৰেণীৰ টেব দেখুৱাওক'; + + @override + String get show_numbers_of_items => 'বস্তুৰ সংখ্যা দেখুৱাওক'; + + @override + String get other => 'অন্যান্য'; + + @override + String get show_continue_reading_buttons => + 'পঢ়া অব্যাহত ৰখাৰ বুটাম দেখুৱাওক'; + + @override + String get show_continue_watching_buttons => 'Show continue watching buttons'; + + @override + String get empty_library => 'খালী পুথিভঁৰাল'; + + @override + String get search => 'সন্ধান...'; + + @override + String get no_recent_updates => 'শেহতীয়া আপডেট নাই'; + + @override + String get remove_everything => 'সকলো আঁতৰাওক'; + + @override + String get remove_everything_msg => 'আপুনি নিশ্চিত নে? সকলো ইতিহাস হেৰাই যাব'; + + @override + String get remove_all_update_msg => + 'Are you sure? The whole update will be cleared'; + + @override + String get ok => 'ঠিক আছে'; + + @override + String get cancel => 'বাতিল'; + + @override + String get remove => 'আঁতৰাওক'; + + @override + String get remove_history_msg => + 'ইয়ে এই অধ্যায়ৰ পঢ়া তাৰিখ আঁতৰাব। আপুনি নিশ্চিত নে?'; + + @override + String get last_used => 'শেষবাৰ ব্যৱহৃত'; + + @override + String get pinned => 'পিন কৰা'; + + @override + String get sources => 'উৎস'; + + @override + String get install => 'ইনষ্টল'; + + @override + String get update => 'আপডেট'; + + @override + String get latest => 'শেষৰ'; + + @override + String get extensions => 'এক্সটেনশন'; + + @override + String get migrate => 'স্থানান্তৰ'; + + @override + String get migrate_confirm => 'Migrate to another source'; + + @override + String get clean_database => 'Clean database'; + + @override + String cleaned_database(Object x) { + return 'Database cleaned! $x entries removed'; + } + + @override + String get clean_database_desc => + 'This will remove all items that are not added to the library!'; + + @override + String get incognito_mode => 'গোপন মোড'; + + @override + String get incognito_mode_description => 'পঢ়াৰ ইতিহাস স্থগিত কৰে'; + + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + + @override + String get download_queue => 'ডাউনলোড শাৰী'; + + @override + String get categories => 'শ্ৰেণী'; + + @override + String get statistics => 'Statistics'; + + @override + String get settings => 'ছেটিং'; + + @override + String get about => 'বিষয়ে'; + + @override + String get help => 'সহায়'; + + @override + String get no_downloads => 'কোনো ডাউনলোড নাই'; + + @override + String get edit_categories => 'শ্ৰেণী সম্পাদনা'; + + @override + String get edit_categories_description => + 'আপোনাৰ কোনো শ্ৰেণী নাই। পুথিভঁৰাল সংগঠিত কৰিবলৈ প্লাছ বুটামত টেপ কৰক'; + + @override + String get add => 'যোগ কৰক'; + + @override + String get add_category => 'শ্ৰেণী যোগ কৰক'; + + @override + String get name => 'নাম'; + + @override + String get category_name_required => '*প্ৰয়োজনীয়'; + + @override + String get add_category_error_exist => 'এই নামৰ শ্ৰেণী ইতিমধ্যে আছে!'; + + @override + String get delete_category => 'শ্ৰেণী মচক'; + + @override + String delete_category_msg(Object name) { + return 'আপুনি $name শ্ৰেণী মচিব বিচাৰে নে?'; + } + + @override + String get rename_category => 'শ্ৰেণীৰ নাম সলনি কৰক'; + + @override + String get general => 'সাধাৰণ'; + + @override + String get general_subtitle => 'এপৰ ভাষা'; + + @override + String get app_language => 'এপৰ ভাষা'; + + @override + String get default_subtitle_language => 'Default subtitle language'; + + @override + String get appearance => 'চেহেৰা'; + + @override + String get appearance_subtitle => 'থীম, তাৰিখ আৰু সময়ৰ ফৰ্মেট'; + + @override + String get theme => 'থীম'; + + @override + String get dark_mode => 'ডাৰ্ক মোড'; + + @override + String get follow_system_theme => 'Follow system theme'; + + @override + String get on => 'অন'; + + @override + String get off => 'অফ'; + + @override + String get pure_black_dark_mode => 'পিউৰ ব্লেক ডাৰ্ক মোড'; + + @override + String get timestamp => 'টাইমষ্টেম্প'; + + @override + String get relative_timestamp => 'আপেক্ষিক টাইমষ্টেম্প'; + + @override + String get relative_timestamp_short => 'চমু (আজি, কালি)'; + + @override + String get relative_timestamp_long => 'দীঘল (চমু+, n দিনৰ আগতে)'; + + @override + String get date_format => 'তাৰিখৰ ফৰ্মেট'; + + @override + String get reader => 'পাঠক'; + + @override + String get refresh => 'ৰিফ্ৰেছ'; + + @override + String get reader_subtitle => 'পঢ়াৰ মোড, প্ৰদৰ্শন, নেভিগেশন'; + + @override + String get default_reading_mode => 'ডিফল্ট পঢ়াৰ মোড'; + + @override + String get reading_mode_vertical => 'উলম্ব'; + + @override + String get reading_mode_horizontal => 'অনুভূমিক'; + + @override + String get reading_mode_left_to_right => 'বাওঁফালৰ পৰা সোঁফাললৈ'; + + @override + String get reading_mode_right_to_left => 'সোঁফালৰ পৰা বাওঁফাললৈ'; + + @override + String get reading_mode_vertical_continuous => 'উলম্ব অবিৰত'; + + @override + String get reading_mode_webtoon => 'ৱেবটুন'; + + @override + String get double_tap_animation_speed => 'ডাবল টেপ এনিমেশনৰ গতি'; + + @override + String get normal => 'সাধাৰণ'; + + @override + String get fast => 'দ্ৰুত'; + + @override + String get no_animation => 'কোনো এনিমেশন নাই'; + + @override + String get animate_page_transitions => 'পৃষ্ঠা স্থানান্তৰ এনিমেট কৰক'; + + @override + String get crop_borders => 'সীমা কাটক'; + + @override + String get downloads => 'ডাউনলোড'; + + @override + String get downloads_subtitle => 'ডাউনলোড ছেটিং'; + + @override + String get download_location => 'ডাউনলোডৰ স্থান'; + + @override + String get custom_location => 'কাষ্টম স্থান'; + + @override + String get only_on_wifi => 'কেৱল ৱাই-ফাইত'; + + @override + String get save_as_cbz_archive => 'CBZ আৰ্কাইভ হিচাপে সাঁচক'; + + @override + String get concurrent_downloads => 'Concurrent downloads'; + + @override + String get browse_subtitle => 'উৎস, গ্ল’বেল সন্ধান'; + + @override + String get only_include_pinned_sources => 'কেৱল পিন কৰা উৎস অন্তৰ্ভুক্ত কৰক'; + + @override + String get nsfw_sources => 'NSFW (+18) উৎস'; + + @override + String get nsfw_sources_show => 'উৎস আৰু এক্সটেনশন তালিকাত দেখুৱাওক'; + + @override + String get nsfw_sources_info => + 'ইয়ে অফিচিয়েল নহোৱা বা সম্ভৱতঃ ভুলকৈ ফ্লেগ কৰা এক্সটেনশনৰ পৰা NSFW (18+) বিষয়বস্তু এপত দেখা দিয়াৰ পৰা ৰক্ষা নকৰে'; + + @override + String get version => 'সংস্কৰণ'; + + @override + String get check_for_update => 'আপডেটৰ বাবে পৰীক্ষা কৰক'; + + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + + @override + String n_days_ago(Object days) { + return '$days দিনৰ আগতে'; + } + + @override + String get today => 'আজি'; + + @override + String get yesterday => 'কালি'; + + @override + String get a_week_ago => 'এসপ্তাহৰ আগতে'; + + @override + String get next_week => 'Next week'; + + @override + String get add_to_library => 'পুথিভঁৰালত যোগ কৰক'; + + @override + String get completed => 'সম্পূৰ্ণ'; + + @override + String get ongoing => 'চলি আছে'; + + @override + String get on_hiatus => 'বিৰতিত'; + + @override + String get canceled => 'বাতিল কৰা'; + + @override + String get publishing_finished => 'প্ৰকাশ সমাপ্ত'; + + @override + String get unknown => 'অজ্ঞাত'; + + @override + String get set_categories => 'শ্ৰেণী নিৰ্ধাৰণ কৰক'; + + @override + String get edit => 'সম্পাদনা'; + + @override + String get in_library => 'পুথিভঁৰালত'; + + @override + String get filter_scanlator_groups => 'স্কেনলেটৰ গ্ৰুপ ফিল্টাৰ কৰক'; + + @override + String get reset => 'ৰিছেট'; + + @override + String get by_source => 'উৎস অনুসৰি'; + + @override + String get by_chapter_number => 'অধ্যায়ৰ সংখ্যা অনুসৰি'; + + @override + String get by_episode_number => 'By episode number'; + + @override + String get by_upload_date => 'আপলোডৰ তাৰিখ অনুসৰি'; + + @override + String get source_title => 'উৎসৰ শিৰোনাম'; + + @override + String get chapter_number => 'অধ্যায়ৰ সংখ্যা'; + + @override + String get episode_number => 'Episode number'; + + @override + String get share => 'শ্বেয়াৰ'; + + @override + String n_chapters(Object number) { + return '$number অধ্যায়'; + } + + @override + String get no_description => 'কোনো বিৱৰণ নাই'; + + @override + String get resume => 'পুনৰ আৰম্ভ'; + + @override + String get read => 'পঢ়ক'; + + @override + String get watch => 'Watch'; + + @override + String get popular => 'জনপ্ৰিয়'; + + @override + String get open_in_browser => 'ব্ৰাউজাৰত খোলক'; + + @override + String get clear_cookie => 'কুকী আঁতৰাওক'; + + @override + String get show_page_number => 'পৃষ্ঠাৰ সংখ্যা দেখুৱাওক'; + + @override + String get from_library => 'পুথিভঁৰালৰ পৰা'; + + @override + String get downloaded_chapter => 'ডাউনলোড কৰা অধ্যায়'; + + @override + String page(Object page) { + return 'পৃষ্ঠা $page'; + } + + @override + String get global_search => 'গ্ল’বেল সন্ধান'; + + @override + String get color_blend_level => 'ৰংৰ মিশ্ৰণ স্তৰ'; + + @override + String current(Object char) { + return 'বৰ্তমান $char'; + } + + @override + String finished(Object char) { + return 'শেষ $char'; + } + + @override + String next(Object char) { + return 'পৰৱৰ্তী $char'; + } + + @override + String previous(Object char) { + return 'পূৰ্বৰ $char'; + } + + @override + String get no_more_chapter => 'আৰু কোনো অধ্যায় নাই'; + + @override + String get no_result => 'কোনো ফলাফল নাই'; + + @override + String get send => 'পঠিয়াওক'; + + @override + String get delete => 'মচক'; + + @override + String get start_downloading => 'এতিয়া ডাউনলোড আৰম্ভ কৰক'; + + @override + String get retry => 'পুনৰ চেষ্টা কৰক'; + + @override + String get add_chapters => 'অধ্যায় যোগ কৰক'; + + @override + String get delete_chapters => 'অধ্যায় মচক?'; + + @override + String get default0 => 'ডিফল্ট'; + + @override + String get total_chapters => 'মুঠ অধ্যায়'; + + @override + String get total_episodes => 'Total episodes'; + + @override + String get import_local_file => 'স্থানীয় ফাইল আমদানি কৰক'; + + @override + String get import_files => 'ফাইল'; + + @override + String get nothing_read_recently => 'শেহতীয়াকৈ একো পঢ়া নাই'; + + @override + String get status => 'স্থিতি'; + + @override + String get not_started => 'আৰম্ভ হোৱা নাই'; + + @override + String get score => 'স্ক’ৰ'; + + @override + String get start_date => 'আৰম্ভৰ তাৰিখ'; + + @override + String get finish_date => 'শেষৰ তাৰিখ'; + + @override + String get reading => 'পঢ়ি আছে'; + + @override + String get on_hold => 'ৰখা আছে'; + + @override + String get dropped => 'বাদ দিয়া'; + + @override + String get plan_to_read => 'পঢ়াৰ পৰিকল্পনা'; + + @override + String get re_reading => 'পুনৰ পঢ়ি আছে'; + + @override + String get chapters => 'অধ্যায়'; + + @override + String get add_tracker => 'ট্ৰেকাৰ যোগ কৰক'; + + @override + String get one_tracker => '১ টা ট্ৰেকাৰ'; + + @override + String n_tracker(Object n) { + return '$n টা ট্ৰেকাৰ'; + } + + @override + String get tracking => 'ট্ৰেকিং'; + + @override + String get syncing => 'Sync'; + + @override + String get sync_password => 'Password (at least 8 characters)'; + + @override + String get sync_logged => 'Login successful'; + + @override + String get syncing_subtitle => + 'Sync your progress across multiple devices via a self-hosted \nserver. Check out our discord server for more info!'; + + @override + String get last_sync_manga => 'Last manga sync at: '; + + @override + String get last_sync_history => 'Last history sync at: '; + + @override + String get last_sync_update => 'Last update sync at: '; + + @override + String get sync_server => 'Sync Server Address'; + + @override + String get sync_login_invalid_creds => 'Invalid email or password'; + + @override + String get sync_starting => 'Starting sync...'; + + @override + String get sync_finished => 'Sync finished'; + + @override + String get sync_failed => 'Sync failed'; + + @override + String get sync_button_sync => 'Sync progress'; + + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + + @override + String get sync_on => 'Enable sync'; + + @override + String get sync_auto => 'Auto Sync'; + + @override + String get sync_auto_warning => + 'Auto Sync is currently an experimental feature!'; + + @override + String get sync_auto_off => 'Off'; + + @override + String get sync_auto_5_minutes => 'Every 5 minutes'; + + @override + String get sync_auto_10_minutes => 'Every 10 minutes'; + + @override + String get sync_auto_30_minutes => 'Every 30 minutes'; + + @override + String get sync_auto_1_hour => 'Every 1 hour'; + + @override + String get sync_auto_3_hours => 'Every 3 hours'; + + @override + String get sync_auto_6_hours => 'Every 6 hours'; + + @override + String get sync_auto_12_hours => 'Every 12 hours'; + + @override + String get server_error => 'Server error!'; + + @override + String get dialog_confirm => 'Confirm'; + + @override + String get description => 'বিৱৰণ'; + + @override + String get reorder_navigation => 'Customize navigation'; + + @override + String get reorder_navigation_description => + 'Reorder and toggle each navigation to your needs.'; + + @override + String get full_screen_player => 'Use Fullscreen'; + + @override + String get full_screen_player_info => + 'Automatically use fullscreen when playing a video.'; + + @override + String episode_progress(Object n) { + return 'প্ৰগতি: $n'; + } + + @override + String n_episodes(Object n) { + return '$n খণ্ড'; + } + + @override + String get manga_sources => 'মাংগা উৎস'; + + @override + String get anime_sources => 'এনিমে উৎস'; + + @override + String get novel_sources => 'Novel Sources'; + + @override + String get anime_extensions => 'এনিমে এক্সটেনশন'; + + @override + String get manga_extensions => 'মাংগা এক্সটেনশন'; + + @override + String get novel_extensions => 'Novel Extensions'; + + @override + String get extension_settings => 'Extension settings'; + + @override + String get anime => 'এনিমে'; + + @override + String get manga => 'মাংগা'; + + @override + String get novel => 'Novel'; + + @override + String get library_no_category_exist => 'আপোনাৰ এতিয়াও কোনো শ্ৰেণী নাই'; + + @override + String get watching => 'চাই আছে'; + + @override + String get plan_to_watch => 'চোৱাৰ পৰিকল্পনা'; + + @override + String get re_watching => 'পুনৰ চাই আছে'; + + @override + String get episodes => 'খণ্ড'; + + @override + String get download => 'ডাউনলোড'; + + @override + String get new_update_available => 'নতুন আপডেট উপলব্ধ'; + + @override + String app_version(Object v) { + return 'এপৰ সংস্কৰণ: v$v'; + } + + @override + String get searching_for_updates => 'আপডেটৰ বাবে সন্ধান কৰি আছে...'; + + @override + String get no_new_updates_available => 'কোনো নতুন আপডেট উপলব্ধ নাই'; + + @override + String get uninstall => 'আনইনষ্টল'; + + @override + String uninstall_extension(Object ext) { + return '$ext এক্সটেনশন আনইনষ্টল কৰিব নে?'; + } + + @override + String get langauage => 'ভাষা'; + + @override + String get extension_detail => 'এক্সটেনশনৰ বিৱৰণ'; + + @override + String get scale_type => 'স্কেলৰ ধৰণ'; + + @override + String get scale_type_fit_screen => 'স্ক্ৰীণৰ সৈতে মিলাওক'; + + @override + String get scale_type_stretch => 'প্ৰসাৰিত'; + + @override + String get scale_type_fit_width => 'প্ৰস্থৰ সৈতে মিলাওক'; + + @override + String get scale_type_fit_height => 'উচ্চতাৰ সৈতে মিলাওক'; + + @override + String get scale_type_original_size => 'মূল আকাৰ'; + + @override + String get scale_type_smart_fit => 'স্মাৰ্ট ফিট'; + + @override + String get page_preload_amount => 'পৃষ্ঠা প্ৰিলোডৰ পৰিমাণ'; + + @override + String get page_preload_amount_subtitle => + 'পঢ়াৰ সময়ত প্ৰিলোড কৰিবলগীয়া পৃষ্ঠাৰ পৰিমাণ। অধিক মানে মসৃণ পঢ়াৰ অভিজ্ঞতা, কিন্তু কেশ্ব আৰু নেটৱৰ্কৰ ব্যৱহাৰ বেছি হ’ব।'; + + @override + String get image_loading_error => 'এই ছবি লোড কৰিব পৰা নগ’ল'; + + @override + String get add_episodes => 'খণ্ড যোগ কৰক'; + + @override + String get video_quality => 'গুণ'; + + @override + String get video_subtitle => 'উপশিৰোনাম'; + + @override + String get check_for_extension_updates => 'এক্সটেনশন আপডেটৰ বাবে পৰীক্ষা কৰক'; + + @override + String get auto_extensions_updates => 'স্বয়ংক্ৰিয় এক্সটেনশন আপডেট'; + + @override + String get auto_extensions_updates_subtitle => + 'নতুন সংস্কৰণ উপলব্ধ হ’লে এক্সটেনশন স্বয়ংক্ৰিয়ভাৱে আপডেট কৰিব।'; + + @override + String get check_for_app_updates => 'Check for app updates on startup'; + + @override + String get reading_mode => 'পঢ়াৰ মোড'; + + @override + String get custom_filter => 'কাষ্টম ফিল্টাৰ'; + + @override + String get background_color => 'পটভূমিৰ ৰং'; + + @override + String get white => 'বগা'; + + @override + String get black => 'ক’লা'; + + @override + String get grey => 'ধূসৰ'; + + @override + String get automaic => 'স্বয়ংক্ৰিয়'; + + @override + String get preferred_domain => 'পছন্দৰ ড’মেইন'; + + @override + String get load_more => 'অধিক লোড কৰক'; + + @override + String get cancel_all_for_this_series => 'এই শৃংখলাৰ সকলো বাতিল কৰক'; + + @override + String get login => 'লগইন'; + + @override + String login_into(Object tracker) { + return '$tracker ত লগইন কৰক'; + } + + @override + String get email_adress => 'ইমেইল ঠিকনা'; + + @override + String get password => 'পাছৱৰ্ড'; + + @override + String log_out_from(Object tracker) { + return '$tracker ৰ পৰা লগ আউট কৰিব নে?'; + } + + @override + String get log_out => 'লগ আউট'; + + @override + String get update_pending => 'আপডেট বাকী আছে'; + + @override + String get update_all => 'সকলো আপডেট কৰক'; + + @override + String get backup_and_restore => 'বেকআপ আৰু পুনৰুদ্ধাৰ'; + + @override + String get create_backup => 'বেকআপ সৃষ্টি কৰক'; + + @override + String get create_backup_dialog_title => 'আপুনি কি বেকআপ কৰিব বিচাৰে?'; + + @override + String get create_backup_subtitle => + 'বৰ্তমানৰ পুথিভঁৰাল পুনৰুদ্ধাৰৰ বাবে ব্যৱহাৰ কৰিব পাৰি'; + + @override + String get restore_backup => 'বেকআপ পুনৰুদ্ধাৰ'; + + @override + String get restore_backup_subtitle => + 'বেকআপ ফাইলৰ পৰা পুথিভঁৰাল পুনৰুদ্ধাৰ কৰক'; + + @override + String get automatic_backups => 'স্বয়ংক্ৰিয় বেকআপ'; + + @override + String get backup_frequency => 'বেকআপৰ কম্পাঙ্ক'; + + @override + String get backup_location => 'বেকআপৰ স্থান'; + + @override + String get backup_options => 'বেকআপৰ বিকল্প'; + + @override + String get backup_options_dialog_title => 'আপুনি কি বেকআপ কৰিব বিচাৰে?'; + + @override + String get backup_options_subtitle => 'বেকআপ ফাইলত কি তথ্য অন্তৰ্ভুক্ত কৰিব'; + + @override + String get backup_and_restore_warning_info => + 'আপুনি বেকআপৰ কপি অন্য ঠাইতো ৰাখিব লাগে'; + + @override + String get library_entries => 'পুথিভঁৰালৰ এণ্ট্ৰি'; + + @override + String get chapters_and_episode => 'অধ্যায় আৰু খণ্ড'; + + @override + String get every_6_hours => 'প্ৰতি ৬ ঘণ্টা'; + + @override + String get every_12_hours => 'প্ৰতি ১২ ঘণ্টা'; + + @override + String get daily => 'দৈনিক'; + + @override + String get every_2_days => 'প্ৰতি ২ দিন'; + + @override + String get weekly => 'সাপ্তাহিক'; + + @override + String get restore_backup_warning_title => + 'বেকআপ পুনৰুদ্ধাৰে সকলো বিদ্যমান তথ্য ওভাৰৰাইট কৰিব।\n\nপুনৰুদ্ধাৰ অব্যাহত ৰাখিব নে?'; + + @override + String get services => 'সেৱা'; + + @override + String get tracking_warning_info => + 'ট্ৰেকিং সেৱাত অধ্যায়ৰ প্ৰগতি আপডেট কৰিবলৈ একমুখী ছিংক। পৃথক এণ্ট্ৰিৰ বাবে ট্ৰেকিং তেওঁলোকৰ ট্ৰেকিং বুটামৰ পৰা ছেট আপ কৰক।'; + + @override + String get use_page_tap_zones => 'পৃষ্ঠা টেপ জ’ন ব্যৱহাৰ কৰক'; + + @override + String get manage_trackers => 'ট্ৰেকাৰ পৰিচালনা কৰক'; + + @override + String get restore => 'পুনৰুদ্ধাৰ'; + + @override + String get backups => 'বেকআপ'; + + @override + String get by_scanlator => 'স্কেনলেটৰ অনুসৰি'; + + @override + String get by_name => 'নাম অনুসৰি'; + + @override + String get installed => 'ইনষ্টল কৰা'; + + @override + String get auto_scroll => 'স্বয়ংক্ৰিয় স্ক্ৰ’ল'; + + @override + String get video_audio => 'অডিঅ’'; + + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + + @override + String get player => 'প্লেয়াৰ'; + + @override + String get markEpisodeAsSeenSetting => + 'খণ্ডটো কেতিয়া দেখা বুলি চিহ্নিত কৰিব'; + + @override + String get default_skip_intro_length => 'ডিফল্ট ইনট্ৰ’ এৰি দিয়াৰ দৈৰ্ঘ্য'; + + @override + String get default_playback_speed_length => 'ডিফল্ট প্লেবেক গতিৰ দৈৰ্ঘ্য'; + + @override + String get updateProgressAfterReading => 'পঢ়াৰ পিছত প্ৰগতি আপডেট কৰক'; + + @override + String get no_sources_installed => 'কোনো উৎস ইনষ্টল কৰা নাই!'; + + @override + String get show_extensions => 'এক্সটেনশন দেখুৱাওক'; + + @override + String get default_skip_forward_skip_length => + 'Default skip forward skip length'; + + @override + String get aniskip_requires_info => + 'AniSkip requires the anime to be tracked with MAL or Anilist to work.'; + + @override + String get enable_aniskip => 'Enable AniSkip'; + + @override + String get enable_auto_skip => 'Enable auto skip'; + + @override + String get aniskip_button_timeout => 'Button timeout'; + + @override + String get skip_opening => 'Skip opening'; + + @override + String get skip_ending => 'Skip ending'; + + @override + String get fullscreen => 'Fullscreen'; + + @override + String get update_library => 'Update library'; + + @override + String updating_library(Object cur, Object failed, Object max) { + return 'Updating library ($cur / $max) - Failed: $failed'; + } + + @override + String get next_chapter => 'Next chapter'; + + @override + String get next_5_chapters => 'Next 5 chapters'; + + @override + String get next_10_chapters => 'Next 10 chapters'; + + @override + String get next_25_chapters => 'Next 25 chapters'; + + @override + String get all_chapters => 'All chapters'; + + @override + String get next_episode => 'Next episode'; + + @override + String get next_5_episodes => 'Next 5 episodes'; + + @override + String get next_10_episodes => 'Next 10 episodes'; + + @override + String get next_25_episodes => 'Next 25 episodes'; + + @override + String get all_episodes => 'All episodes'; + + @override + String get cover_saved => 'Cover saved'; + + @override + String get set_as_cover => 'Set as cover'; + + @override + String get use_this_as_cover_art => 'Use this as cover art?'; + + @override + String get save => 'Save'; + + @override + String get picture_saved => 'Picture saved'; + + @override + String get cover_updated => 'Cover updated'; + + @override + String get include_subtitles => 'Include subtitles'; + + @override + String get blend_mode_default => 'Default'; + + @override + String get blend_mode_multiply => 'Multiply'; + + @override + String get blend_mode_screen => 'Screen'; + + @override + String get blend_mode_overlay => 'Overlay'; + + @override + String get blend_mode_colorDodge => 'ColorDodge'; + + @override + String get blend_mode_lighten => 'Lighten'; + + @override + String get blend_mode_colorBurn => 'ColorBurn'; + + @override + String get blend_mode_darken => 'Darken'; + + @override + String get blend_mode_difference => 'Difference'; + + @override + String get blend_mode_saturation => 'Saturation'; + + @override + String get blend_mode_softLight => 'SoftLight'; + + @override + String get blend_mode_plus => 'Plus'; + + @override + String get blend_mode_exclusion => 'Exclusion'; + + @override + String get custom_color_filter => 'Custom color filter'; + + @override + String get color_filter_blend_mode => 'Color filter blend mode'; + + @override + String get enable_all => 'Enable all'; + + @override + String get disable_all => 'Disable all'; + + @override + String get font => 'Font'; + + @override + String get color => 'Color'; + + @override + String get font_size => 'Font size'; + + @override + String get text => 'Text'; + + @override + String get border => 'Border'; + + @override + String get background => 'Background'; + + @override + String get no_subtite_warning_message => + 'Has no effect because there aren\'t any subtitle tracks in this video'; + + @override + String get grid_size => 'Grid size'; + + @override + String n_per_row(Object n) { + return '$n per row'; + } + + @override + String get horizontal_continious => 'Horizontal continuous'; + + @override + String get edit_code => 'Edit code'; + + @override + String get use_libass => 'Enable libass'; + + @override + String get use_libass_info => + 'Use libass based subtitle rendering for native backend.'; + + @override + String get libass_not_disable_message => + 'Disable `use libass` in player settings to be able to customize the subtitles.'; + + @override + String get torrent_stream => 'Torrent Stream'; + + @override + String get add_torrent => 'Add torrent'; + + @override + String get enter_torrent_hint_text => 'Enter magnet or torrent file url'; + + @override + String get torrent_url => 'Torrent url'; + + @override + String get or => 'OR'; + + @override + String get advanced => 'Advanced'; + + @override + String get advanced_info => 'mpv config'; + + @override + String get use_native_http_client => 'Use native http client'; + + @override + String get use_native_http_client_info => + 'it automatically supports platform features such VPNs, support more HTTP features such as HTTP/3 and custom redirect handling'; + + @override + String n_hour_ago(Object hour) { + return '$hour hour ago'; + } + + @override + String n_hours_ago(Object hours) { + return '$hours hours ago'; + } + + @override + String n_minute_ago(Object minute) { + return '$minute minute ago'; + } + + @override + String n_minutes_ago(Object minutes) { + return '$minutes minutes ago'; + } + + @override + String n_day_ago(Object day) { + return '$day day ago'; + } + + @override + String get now => 'now'; + + @override + String library_last_updated(Object lastUpdated) { + return 'Library last updated: $lastUpdated'; + } + + @override + String get data_and_storage => 'Data and storage'; + + @override + String get download_location_info => 'Used for chapter downloads'; + + @override + String get storage => 'Storage'; + + @override + String get clear_chapter_and_episode_cache => + 'Clear chapter and episode cache'; + + @override + String get cache_cleared => 'Cache cleared'; + + @override + String get clear_chapter_or_episode_cache_on_app_launch => + 'Clear chapter/episode cache on app launch'; + + @override + String get app_settings => 'App settings'; + + @override + String get sources_settings => 'Sources settings'; + + @override + String get include_sensitive_settings => + 'Include sensitive settings (e.g., tracker login tokens)'; + + @override + String get create => 'Create'; + + @override + String get downloads_are_limited_to_wifi => + 'Downloads are limited to Wi-Fi only'; + + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + + @override + String get manga_extensions_repo => 'Manga extensions repo'; + + @override + String get anime_extensions_repo => 'Anime extensions repo'; + + @override + String get novel_extensions_repo => 'Novel extensions repo'; + + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + + @override + String get undefined => 'undefined'; + + @override + String get empty_extensions_repo => + 'You don\'t have any repository urls here. Click on the plus button to add one!'; + + @override + String get add_extensions_repo => 'Add repo URL'; + + @override + String get remove_extensions_repo => 'Remove repo URL'; + + @override + String get manage_manga_repo_urls => 'Manage Manga Repo URLs'; + + @override + String get manage_anime_repo_urls => 'Manage Anime Repo URLs'; + + @override + String get manage_novel_repo_urls => 'Manage Novel Repo URLs'; + + @override + String get url_cannot_be_empty => 'URL cannot be empty'; + + @override + String get url_must_end_with_dot_json => 'URL must end with .json'; + + @override + String get repo_url => 'Repo URL'; + + @override + String get invalid_url_format => 'Invalid URL format'; + + @override + String get clear_all_sources => 'Clear all sources'; + + @override + String get clear_all_sources_msg => + 'This will completely erase all sources of the application. Are you sure you want to continue?'; + + @override + String get sources_cleared => 'Sources cleared!!!'; + + @override + String get repo_added => 'Source repository added!'; + + @override + String get add_repo => 'Add Repository?'; + + @override + String get genre_search_library => 'Search genre in library'; + + @override + String get genre_search_source => 'Browse in source'; + + @override + String get source_not_added => 'Source is not installed!'; + + @override + String get load_own_subtitles => 'Load your own subtitles...'; + + @override + String get search_subtitles => 'Search subtitles online...'; + + @override + String extension_notes(Object notes) { + return 'Notes: $notes'; + } + + @override + String get unsupported_repo => + 'You\'ve tried to add an unsupported repository. Please check the discord server for support!'; + + @override + String get end_of_chapter => 'End of chapter'; + + @override + String get chapter_completed => 'Chapter completed'; + + @override + String get continue_to_next_chapter => + 'Continue scrolling to read the next chapter'; + + @override + String get no_next_chapter => 'No next chapter'; + + @override + String get you_have_finished_reading => 'You have finished reading'; + + @override + String get return_to_the_list_of_chapters => 'Return to the list of chapters'; + + @override + String get hwdec => 'Hardware Decoder'; + + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + + @override + String get track_library_add => 'Add to local library'; + + @override + String get track_library_add_confirm => 'Add tracked item to local library'; + + @override + String get track_library_not_logged => + 'Login to the corresponding tracker to use this feature!'; + + @override + String get track_library_switch => 'Switch to another tracker'; + + @override + String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; + + @override + String get enable_discord_rpc => 'Enable Discord RPC'; + + @override + String get hide_discord_rpc_incognito => + 'Hide Discord RPC while in Incognito'; + + @override + String get rpc_show_reading_watching_progress => + 'Show current chapter in Discord (requires a restart)'; + + @override + String get rpc_show_title => 'Show current title in Discord'; + + @override + String get rpc_show_cover_image => 'Show current cover image in Discord'; + + @override + String get sync_enable_histories => 'Sync history data'; + + @override + String get sync_enable_updates => 'Sync update data'; + + @override + String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; +} diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 37a2cbca..47ca0ac9 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -233,6 +233,13 @@ class AppLocalizationsDe extends AppLocalizations { @override String get incognito_mode_description => 'Pausiert den Leseverlauf'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'Download-Warteschlange'; @@ -431,6 +438,15 @@ class AppLocalizationsDe extends AppLocalizations { @override String get check_for_update => 'Auf Aktualisierung prüfen'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return 'Vor $days Tagen'; @@ -445,6 +461,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get a_week_ago => 'Vor einer Woche'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Zur Bibliothek hinzufügen'; @@ -700,6 +719,20 @@ class AppLocalizationsDe extends AppLocalizations { @override String get sync_button_sync => 'Jetzt synchronisieren'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Sync aktivieren'; @@ -785,6 +818,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get novel_extensions => 'Novel-Erweiterungen'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Anime'; @@ -1055,6 +1091,10 @@ class AppLocalizationsDe extends AppLocalizations { @override String get video_audio => 'Audio'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Player'; @@ -1282,6 +1322,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get advanced => 'Erweitert'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Nativen HTTP-Client verwenden'; @@ -1359,6 +1402,27 @@ class AppLocalizationsDe extends AppLocalizations { String get downloads_are_limited_to_wifi => 'Downloads sind nur über WLAN verfügbar'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Manga-Erweiterungs-Repository'; @@ -1368,6 +1432,15 @@ class AppLocalizationsDe extends AppLocalizations { @override String get novel_extensions_repo => 'Roman-Erweiterungs-Repository'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'Nicht definiert'; @@ -1430,6 +1503,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get load_own_subtitles => 'Deine eigene Untertiteln laden...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Hinweis: $notes'; @@ -1462,6 +1538,16 @@ class AppLocalizationsDe extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Zur lokalen Bibliothek hinzufügen'; @@ -1507,4 +1593,157 @@ class AppLocalizationsDe extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index b155ade0..e1ef0c97 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -232,6 +232,13 @@ class AppLocalizationsEn extends AppLocalizations { @override String get incognito_mode_description => 'Pauses reading history'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'Download Queue'; @@ -429,6 +436,15 @@ class AppLocalizationsEn extends AppLocalizations { @override String get check_for_update => 'Check for update'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return '$days days ago'; @@ -443,6 +459,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get a_week_ago => 'A week ago'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Add to library'; @@ -698,6 +717,20 @@ class AppLocalizationsEn extends AppLocalizations { @override String get sync_button_sync => 'Sync progress'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Enable sync'; @@ -783,6 +816,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get novel_extensions => 'Novel Extensions'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Anime'; @@ -1049,6 +1085,10 @@ class AppLocalizationsEn extends AppLocalizations { @override String get video_audio => 'Audio'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Player'; @@ -1272,6 +1312,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get advanced => 'Advanced'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Use native http client'; @@ -1349,6 +1392,27 @@ class AppLocalizationsEn extends AppLocalizations { String get downloads_are_limited_to_wifi => 'Downloads are limited to Wi-Fi only'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Manga extensions repo'; @@ -1358,6 +1422,15 @@ class AppLocalizationsEn extends AppLocalizations { @override String get novel_extensions_repo => 'Novel extensions repo'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'undefined'; @@ -1420,6 +1493,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get load_own_subtitles => 'Load your own subtitles...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1451,6 +1527,16 @@ class AppLocalizationsEn extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1495,4 +1581,157 @@ class AppLocalizationsEn extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart index 02baacb3..43b7b9fb 100644 --- a/lib/l10n/generated/app_localizations_es.dart +++ b/lib/l10n/generated/app_localizations_es.dart @@ -235,6 +235,13 @@ class AppLocalizationsEs extends AppLocalizations { @override String get incognito_mode_description => 'Pausa el historial de lectura'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'Cola de descarga'; @@ -433,6 +440,15 @@ class AppLocalizationsEs extends AppLocalizations { @override String get check_for_update => 'Buscar actualizaciones'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return 'hace $days días'; @@ -447,6 +463,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get a_week_ago => 'Hace una semana'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Agregar a la biblioteca'; @@ -702,6 +721,20 @@ class AppLocalizationsEs extends AppLocalizations { @override String get sync_button_sync => 'Sincronizar progreso'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Habilitar sincronización'; @@ -787,6 +820,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get novel_extensions => 'Extensiones de novelas'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Anime'; @@ -1059,6 +1095,10 @@ class AppLocalizationsEs extends AppLocalizations { @override String get video_audio => 'Audio'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Jugador'; @@ -1286,6 +1326,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get advanced => 'Avanzado'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Utilizar cliente HTTP nativo'; @@ -1363,6 +1406,27 @@ class AppLocalizationsEs extends AppLocalizations { String get downloads_are_limited_to_wifi => 'Las descargas están limitadas solo a Wi-Fi'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Repositorio de extensiones de manga'; @@ -1372,6 +1436,15 @@ class AppLocalizationsEs extends AppLocalizations { @override String get novel_extensions_repo => 'Repositorio de extensiones de novelas'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'Indefinido'; @@ -1437,6 +1510,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get load_own_subtitles => 'Cargar tus propios subtítulos...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1468,6 +1544,16 @@ class AppLocalizationsEs extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1512,6 +1598,159 @@ class AppLocalizationsEs extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } /// The translations for Spanish Castilian, as used in Latin America and the Caribbean (`es_419`). diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index 34c81a28..1c60fd87 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -235,6 +235,13 @@ class AppLocalizationsFr extends AppLocalizations { @override String get incognito_mode_description => 'Suspend l\'historique de lecture'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'File de téléchargement'; @@ -435,6 +442,15 @@ class AppLocalizationsFr extends AppLocalizations { @override String get check_for_update => 'Rechercher des mises à jour'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return 'Il y a $days jours'; @@ -449,6 +465,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get a_week_ago => 'Il y a une semaine'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Ajouter à la bibliothèque'; @@ -705,6 +724,20 @@ class AppLocalizationsFr extends AppLocalizations { @override String get sync_button_sync => 'Synchroniser les progrès'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Activer la synchronisation'; @@ -790,6 +823,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get novel_extensions => 'Extensions de romans'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Animé'; @@ -1061,6 +1097,10 @@ class AppLocalizationsFr extends AppLocalizations { @override String get video_audio => 'Audio'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Lecteur'; @@ -1288,6 +1328,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get advanced => 'Avancé'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Utiliser le client HTTP natif'; @@ -1366,6 +1409,27 @@ class AppLocalizationsFr extends AppLocalizations { String get downloads_are_limited_to_wifi => 'Les téléchargements sont limités au Wi-Fi uniquement'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Dépôt d\'extensions de mangas'; @@ -1375,6 +1439,15 @@ class AppLocalizationsFr extends AppLocalizations { @override String get novel_extensions_repo => 'Dépôt d\'extensions de romans'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'Indéfini'; @@ -1437,6 +1510,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get load_own_subtitles => 'Charger vos propres sous-titres...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1469,6 +1545,16 @@ class AppLocalizationsFr extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1513,4 +1599,157 @@ class AppLocalizationsFr extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_hi.dart b/lib/l10n/generated/app_localizations_hi.dart new file mode 100644 index 00000000..501978dd --- /dev/null +++ b/lib/l10n/generated/app_localizations_hi.dart @@ -0,0 +1,1739 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'app_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for Hindi (`hi`). +class AppLocalizationsHi extends AppLocalizations { + AppLocalizationsHi([String locale = 'hi']) : super(locale); + + @override + String get library => 'पुस्तकालय'; + + @override + String get updates => 'अपडेट'; + + @override + String get history => 'इतिहास'; + + @override + String get browse => 'ब्राउज़'; + + @override + String get more => 'और'; + + @override + String get open_random_entry => 'कोई भी प्रविष्टि खोलें'; + + @override + String get import => 'आयात'; + + @override + String get filter => 'फ़िल्टर'; + + @override + String get ignore_filters => 'Ignore Filters'; + + @override + String get downloaded => 'डाउनलोड किया गया'; + + @override + String get unread => 'अपठित'; + + @override + String get unwatched => 'Unwatched'; + + @override + String get started => 'शुरू किया'; + + @override + String get bookmarked => 'बुकमार्क किया'; + + @override + String get sort => 'छाँटें'; + + @override + String get alphabetically => 'वर्णानुक्रम'; + + @override + String get last_read => 'आखिरी बार पढ़ा'; + + @override + String get last_watched => 'Last watched'; + + @override + String get last_update_check => 'आखिरी अपडेट जांच'; + + @override + String last_entry_delete_warning( + num count, + Object entryType, + Object entryTypePlural, + Object mediaType, + ) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: + 'You are deleting all $count $entryTypePlural of this $mediaType from the library.', + one: + 'You are deleting the only $entryType of this $mediaType from the library.', + ); + return '$_temp0\nThis will also remove the whole $mediaType from your library.\n\nNote: The files themselves will not be deleted.'; + } + + @override + String get chapter => 'chapter'; + + @override + String get episode => 'episode'; + + @override + String get unread_count => 'अपठित गिनती'; + + @override + String get unwatched_count => 'Unwatched count'; + + @override + String get latest_chapter => 'नवीनतम अध्याय'; + + @override + String get latest_episode => 'Latest episode'; + + @override + String get date_added => 'जोड़ा गया तारीख'; + + @override + String get display => 'प्रदर्शन'; + + @override + String get display_mode => 'प्रदर्शन मोड'; + + @override + String get compact_grid => 'संक्षिप्त ग्रिड'; + + @override + String get comfortable_grid => 'आरामदायक ग्रिड'; + + @override + String get cover_only_grid => 'केवल कवर ग्रिड'; + + @override + String get list => 'सूची'; + + @override + String get badges => 'बैज'; + + @override + String get downloaded_chapters => 'डाउनलोड किए गए अध्याय'; + + @override + String get downloaded_episodes => 'Downloaded episodes'; + + @override + String get language => 'भाषा'; + + @override + String get local_source => 'स्थानीय स्रोत'; + + @override + String get tabs => 'टैब'; + + @override + String get show_category_tabs => 'श्रेणी टैब दिखाएँ'; + + @override + String get show_numbers_of_items => 'आइटम की संख्या दिखाएँ'; + + @override + String get other => 'अन्य'; + + @override + String get show_continue_reading_buttons => 'पढ़ना जारी रखें बटन दिखाएँ'; + + @override + String get show_continue_watching_buttons => 'Show continue watching buttons'; + + @override + String get empty_library => 'खाली पुस्तकालय'; + + @override + String get search => 'खोजें...'; + + @override + String get no_recent_updates => 'कोई हालिया अपडेट नहीं'; + + @override + String get remove_everything => 'सब कुछ हटाएँ'; + + @override + String get remove_everything_msg => + 'क्या आप निश्चित हैं? सारा इतिहास खो जाएगा'; + + @override + String get remove_all_update_msg => + 'Are you sure? The whole update will be cleared'; + + @override + String get ok => 'ठीक है'; + + @override + String get cancel => 'रद्द करें'; + + @override + String get remove => 'हटाएँ'; + + @override + String get remove_history_msg => + 'यह इस अध्याय की पढ़ने की तारीख को हटा देगा। क्या आप निश्चित हैं?'; + + @override + String get last_used => 'आखिरी बार उपयोग'; + + @override + String get pinned => 'पिन किया गया'; + + @override + String get sources => 'स्रोत'; + + @override + String get install => 'स्थापित करें'; + + @override + String get update => 'अपडेट करें'; + + @override + String get latest => 'नवीनतम'; + + @override + String get extensions => 'एक्सटेंशन'; + + @override + String get migrate => 'स्थानांतरण'; + + @override + String get migrate_confirm => 'Migrate to another source'; + + @override + String get clean_database => 'Clean database'; + + @override + String cleaned_database(Object x) { + return 'Database cleaned! $x entries removed'; + } + + @override + String get clean_database_desc => + 'This will remove all items that are not added to the library!'; + + @override + String get incognito_mode => 'गुप्त मोड'; + + @override + String get incognito_mode_description => 'पढ़ने का इतिहास रोकता है'; + + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + + @override + String get download_queue => 'डाउनलोड कतार'; + + @override + String get categories => 'श्रेणियाँ'; + + @override + String get statistics => 'Statistics'; + + @override + String get settings => 'सेटिंग्स'; + + @override + String get about => 'के बारे में'; + + @override + String get help => 'मदद'; + + @override + String get no_downloads => 'कोई डाउनलोड नहीं'; + + @override + String get edit_categories => 'श्रेणियाँ संपादित करें'; + + @override + String get edit_categories_description => + 'आपके पास कोई श्रेणी नहीं है। अपनी लाइब्रेरी को व्यवस्थित करने के लिए प्लस बटन दबाएँ'; + + @override + String get add => 'जोड़ें'; + + @override + String get add_category => 'श्रेणी जोड़ें'; + + @override + String get name => 'नाम'; + + @override + String get category_name_required => '*आवश्यक'; + + @override + String get add_category_error_exist => 'इस नाम की श्रेणी पहले से मौजूद है!'; + + @override + String get delete_category => 'श्रेणी हटाएँ'; + + @override + String delete_category_msg(Object name) { + return 'क्या आप श्रेणी $name को हटाना चाहते हैं?'; + } + + @override + String get rename_category => 'श्रेणी का नाम बदलें'; + + @override + String get general => 'सामान्य'; + + @override + String get general_subtitle => 'ऐप की भाषा'; + + @override + String get app_language => 'ऐप की भाषा'; + + @override + String get default_subtitle_language => 'Default subtitle language'; + + @override + String get appearance => 'दिखावट'; + + @override + String get appearance_subtitle => 'थीम, तारीख और समय प्रारूप'; + + @override + String get theme => 'थीम'; + + @override + String get dark_mode => 'डार्क मोड'; + + @override + String get follow_system_theme => 'Follow system theme'; + + @override + String get on => 'चालू'; + + @override + String get off => 'बंद'; + + @override + String get pure_black_dark_mode => 'पूर्ण काला डार्क मोड'; + + @override + String get timestamp => 'समय चिह्न'; + + @override + String get relative_timestamp => 'सापेक्ष समय चिह्न'; + + @override + String get relative_timestamp_short => 'संक्षिप्त (आज, कल)'; + + @override + String get relative_timestamp_long => 'लंबा (संक्षिप्त+, n दिन पहले)'; + + @override + String get date_format => 'तारीख प्रारूप'; + + @override + String get reader => 'पढ़ने वाला'; + + @override + String get refresh => 'ताज़ा करें'; + + @override + String get reader_subtitle => 'पढ़ने का मोड, प्रदर्शन, नेविगेशन'; + + @override + String get default_reading_mode => 'डिफ़ॉल्ट पढ़ने का मोड'; + + @override + String get reading_mode_vertical => 'लंबवत'; + + @override + String get reading_mode_horizontal => 'क्षैतिज'; + + @override + String get reading_mode_left_to_right => 'बाएँ से दाएँ'; + + @override + String get reading_mode_right_to_left => 'दाएँ से बाएँ'; + + @override + String get reading_mode_vertical_continuous => 'लंबवत निरंतर'; + + @override + String get reading_mode_webtoon => 'वेबटून'; + + @override + String get double_tap_animation_speed => 'डबल टैप एनिमेशन गति'; + + @override + String get normal => 'सामान्य'; + + @override + String get fast => 'तेज़'; + + @override + String get no_animation => 'कोई एनिमेशन नहीं'; + + @override + String get animate_page_transitions => 'पेज ट्रांज़िशन को एनिमेट करें'; + + @override + String get crop_borders => 'किनारों को काटें'; + + @override + String get downloads => 'डाउनलोड'; + + @override + String get downloads_subtitle => 'डाउनलोड सेटिंग्स'; + + @override + String get download_location => 'डाउनलोड स्थान'; + + @override + String get custom_location => 'कस्टम स्थान'; + + @override + String get only_on_wifi => 'केवल वाईफाई पर'; + + @override + String get save_as_cbz_archive => 'सीबीजेड आर्काइव के रूप में सहेजें'; + + @override + String get concurrent_downloads => 'Concurrent downloads'; + + @override + String get browse_subtitle => 'स्रोत, वैश्विक खोज'; + + @override + String get only_include_pinned_sources => 'केवल पिन किए गए स्रोत शामिल करें'; + + @override + String get nsfw_sources => 'एनएसएफडब्ल्यू (+18) स्रोत'; + + @override + String get nsfw_sources_show => 'स्रोत और एक्सटेंशन सूची में दिखाएँ'; + + @override + String get nsfw_sources_info => + 'यह अनौपचारिक या संभावित रूप से गलत तरीके से चिह्नित एक्सटेंशन को ऐप के भीतर एनएसएफडब्ल्यू (18+) सामग्री को सामने लाने से नहीं रोकता'; + + @override + String get version => 'संस्करण'; + + @override + String get check_for_update => 'अपडेट के लिए जांचें'; + + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + + @override + String n_days_ago(Object days) { + return '$days दिन पहले'; + } + + @override + String get today => 'आज'; + + @override + String get yesterday => 'कल'; + + @override + String get a_week_ago => 'एक सप्ताह पहले'; + + @override + String get next_week => 'Next week'; + + @override + String get add_to_library => 'पुस्तकालय में जोड़ें'; + + @override + String get completed => 'पूरा हुआ'; + + @override + String get ongoing => 'चल रहा है'; + + @override + String get on_hiatus => 'विराम पर'; + + @override + String get canceled => 'रद्द'; + + @override + String get publishing_finished => 'प्रकाशन समाप्त'; + + @override + String get unknown => 'अज्ञात'; + + @override + String get set_categories => 'श्रेणियाँ सेट करें'; + + @override + String get edit => 'संपादित करें'; + + @override + String get in_library => 'पुस्तकालय में'; + + @override + String get filter_scanlator_groups => 'स्कैनलेटर समूहों को फ़िल्टर करें'; + + @override + String get reset => 'रीसेट'; + + @override + String get by_source => 'स्रोत के अनुसार'; + + @override + String get by_chapter_number => 'अध्याय संख्या के अनुसार'; + + @override + String get by_episode_number => 'By episode number'; + + @override + String get by_upload_date => 'अपलोड तारीख के अनुसार'; + + @override + String get source_title => 'स्रोत शीर्षक'; + + @override + String get chapter_number => 'अध्याय संख्या'; + + @override + String get episode_number => 'Episode number'; + + @override + String get share => 'साझा करें'; + + @override + String n_chapters(Object number) { + return '$number अध्याय'; + } + + @override + String get no_description => 'कोई विवरण नहीं'; + + @override + String get resume => 'जारी रखें'; + + @override + String get read => 'पढ़ें'; + + @override + String get watch => 'Watch'; + + @override + String get popular => 'लोकप्रिय'; + + @override + String get open_in_browser => 'ब्राउज़र में खोलें'; + + @override + String get clear_cookie => 'कुकी साफ़ करें'; + + @override + String get show_page_number => 'पेज नंबर दिखाएँ'; + + @override + String get from_library => 'पुस्तकालय से'; + + @override + String get downloaded_chapter => 'डाउनलोड किया गया अध्याय'; + + @override + String page(Object page) { + return 'पेज $page'; + } + + @override + String get global_search => 'वैश्विक खोज'; + + @override + String get color_blend_level => 'रंग मिश्रण स्तर'; + + @override + String current(Object char) { + return 'वर्तमान $char'; + } + + @override + String finished(Object char) { + return 'समाप्त $char'; + } + + @override + String next(Object char) { + return 'अगला $char'; + } + + @override + String previous(Object char) { + return 'पिछला $char'; + } + + @override + String get no_more_chapter => 'कोई और अध्याय नहीं है'; + + @override + String get no_result => 'कोई परिणाम नहीं'; + + @override + String get send => 'भेजें'; + + @override + String get delete => 'हटाएँ'; + + @override + String get start_downloading => 'अब डाउनलोड शुरू करें'; + + @override + String get retry => 'पुनः प्रयास करें'; + + @override + String get add_chapters => 'अध्याय जोड़ें'; + + @override + String get delete_chapters => 'अध्याय हटाएँ?'; + + @override + String get default0 => 'डिफ़ॉल्ट'; + + @override + String get total_chapters => 'कुल अध्याय'; + + @override + String get total_episodes => 'Total episodes'; + + @override + String get import_local_file => 'स्थानीय फ़ाइल आयात करें'; + + @override + String get import_files => 'फ़ाइलें'; + + @override + String get nothing_read_recently => 'हाल ही में कुछ भी नहीं पढ़ा'; + + @override + String get status => 'स्थिति'; + + @override + String get not_started => 'शुरू नहीं हुआ'; + + @override + String get score => 'स्कोर'; + + @override + String get start_date => 'शुरू की तारीख'; + + @override + String get finish_date => 'समाप्ति की तारीख'; + + @override + String get reading => 'पढ़ रहा है'; + + @override + String get on_hold => 'रोक पर'; + + @override + String get dropped => 'छोड़ दिया'; + + @override + String get plan_to_read => 'पढ़ने की योजना'; + + @override + String get re_reading => 'पुनः पढ़ रहा है'; + + @override + String get chapters => 'अध्याय'; + + @override + String get add_tracker => 'ट्रैकर जोड़ें'; + + @override + String get one_tracker => '1 ट्रैकर'; + + @override + String n_tracker(Object n) { + return '$n ट्रैकर'; + } + + @override + String get tracking => 'ट्रैकिंग'; + + @override + String get syncing => 'Sync'; + + @override + String get sync_password => 'Password (at least 8 characters)'; + + @override + String get sync_logged => 'Login successful'; + + @override + String get syncing_subtitle => + 'Sync your progress across multiple devices via a self-hosted \nserver. Check out our discord server for more info!'; + + @override + String get last_sync_manga => 'Last manga sync at: '; + + @override + String get last_sync_history => 'Last history sync at: '; + + @override + String get last_sync_update => 'Last update sync at: '; + + @override + String get sync_server => 'Sync Server Address'; + + @override + String get sync_login_invalid_creds => 'Invalid email or password'; + + @override + String get sync_starting => 'Starting sync...'; + + @override + String get sync_finished => 'Sync finished'; + + @override + String get sync_failed => 'Sync failed'; + + @override + String get sync_button_sync => 'Sync progress'; + + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + + @override + String get sync_on => 'Enable sync'; + + @override + String get sync_auto => 'Auto Sync'; + + @override + String get sync_auto_warning => + 'Auto Sync is currently an experimental feature!'; + + @override + String get sync_auto_off => 'Off'; + + @override + String get sync_auto_5_minutes => 'Every 5 minutes'; + + @override + String get sync_auto_10_minutes => 'Every 10 minutes'; + + @override + String get sync_auto_30_minutes => 'Every 30 minutes'; + + @override + String get sync_auto_1_hour => 'Every 1 hour'; + + @override + String get sync_auto_3_hours => 'Every 3 hours'; + + @override + String get sync_auto_6_hours => 'Every 6 hours'; + + @override + String get sync_auto_12_hours => 'Every 12 hours'; + + @override + String get server_error => 'Server error!'; + + @override + String get dialog_confirm => 'Confirm'; + + @override + String get description => 'विवरण'; + + @override + String get reorder_navigation => 'Customize navigation'; + + @override + String get reorder_navigation_description => + 'Reorder and toggle each navigation to your needs.'; + + @override + String get full_screen_player => 'Use Fullscreen'; + + @override + String get full_screen_player_info => + 'Automatically use fullscreen when playing a video.'; + + @override + String episode_progress(Object n) { + return 'प्रगति: $n'; + } + + @override + String n_episodes(Object n) { + return '$n एपिसोड'; + } + + @override + String get manga_sources => 'मंगा स्रोत'; + + @override + String get anime_sources => 'एनीमे स्रोत'; + + @override + String get novel_sources => 'Novel Sources'; + + @override + String get anime_extensions => 'एनीमे एक्सटेंशन'; + + @override + String get manga_extensions => 'मंगा एक्सटेंशन'; + + @override + String get novel_extensions => 'Novel Extensions'; + + @override + String get extension_settings => 'Extension settings'; + + @override + String get anime => 'एनीमे'; + + @override + String get manga => 'मंगा'; + + @override + String get novel => 'Novel'; + + @override + String get library_no_category_exist => 'आपके पास अभी कोई श्रेणी नहीं है'; + + @override + String get watching => 'देख रहा है'; + + @override + String get plan_to_watch => 'देखने की योजना'; + + @override + String get re_watching => 'पुनः देख रहा है'; + + @override + String get episodes => 'एपिसोड'; + + @override + String get download => 'डाउनलोड'; + + @override + String get new_update_available => 'नया अपडेट उपलब्ध'; + + @override + String app_version(Object v) { + return 'ऐप संस्करण: v$v'; + } + + @override + String get searching_for_updates => 'अपडेट की खोज हो रही है...'; + + @override + String get no_new_updates_available => 'कोई नया अपडेट उपलब्ध नहीं'; + + @override + String get uninstall => 'हटाएँ'; + + @override + String uninstall_extension(Object ext) { + return '$ext एक्सटेंशन हटाएँ?'; + } + + @override + String get langauage => 'भाषा'; + + @override + String get extension_detail => 'एक्सटेंशन विवरण'; + + @override + String get scale_type => 'स्केल प्रकार'; + + @override + String get scale_type_fit_screen => 'स्क्रीन पर फिट'; + + @override + String get scale_type_stretch => 'खींचें'; + + @override + String get scale_type_fit_width => 'चौड़ाई पर फिट'; + + @override + String get scale_type_fit_height => 'ऊँचाई पर फिट'; + + @override + String get scale_type_original_size => 'मूल आकार'; + + @override + String get scale_type_smart_fit => 'स्मार्ट फिट'; + + @override + String get page_preload_amount => 'पेज प्रीलोड मात्रा'; + + @override + String get page_preload_amount_subtitle => + 'पढ़ते समय प्रीलोड करने वाले पेजों की मात्रा। उच्च मानों से पढ़ने का अनुभव बेहतर होगा, लेकिन कैश और नेटवर्क उपयोग अधिक होगा।'; + + @override + String get image_loading_error => 'यह छवि लोड नहीं हो सकी'; + + @override + String get add_episodes => 'एपिसोड जोड़ें'; + + @override + String get video_quality => 'गुणवत्ता'; + + @override + String get video_subtitle => 'उपशीर्षक'; + + @override + String get check_for_extension_updates => 'एक्सटेंशन अपडेट की जाँच करें'; + + @override + String get auto_extensions_updates => 'स्वचालित एक्सटेंशन अपडेट'; + + @override + String get auto_extensions_updates_subtitle => + 'जब नया संस्करण उपलब्ध होगा तो एक्सटेंशन स्वचालित रूप से अपडेट हो जाएगा।'; + + @override + String get check_for_app_updates => 'Check for app updates on startup'; + + @override + String get reading_mode => 'पढ़ने का मोड'; + + @override + String get custom_filter => 'कस्टम फ़िल्टर'; + + @override + String get background_color => 'पृष्ठभूमि रंग'; + + @override + String get white => 'सफेद'; + + @override + String get black => 'काला'; + + @override + String get grey => 'ग्रे'; + + @override + String get automaic => 'स्वचालित'; + + @override + String get preferred_domain => 'पसंदीदा डोमेन'; + + @override + String get load_more => 'और लोड करें'; + + @override + String get cancel_all_for_this_series => 'इस सीरीज़ के लिए सभी रद्द करें'; + + @override + String get login => 'लॉगिन'; + + @override + String login_into(Object tracker) { + return '$tracker में लॉगिन करें'; + } + + @override + String get email_adress => 'ईमेल पता'; + + @override + String get password => 'पासवर्ड'; + + @override + String log_out_from(Object tracker) { + return '$tracker से लॉग आउट करें?'; + } + + @override + String get log_out => 'लॉग आउट'; + + @override + String get update_pending => 'अपडेट लंबित'; + + @override + String get update_all => 'सभी अपडेट करें'; + + @override + String get backup_and_restore => 'बैकअप और पुनर्स्थापना'; + + @override + String get create_backup => 'बैकअप बनाएँ'; + + @override + String get create_backup_dialog_title => 'आप क्या बैकअप करना चाहते हैं?'; + + @override + String get create_backup_subtitle => + 'वर्तमान पुस्तकालय को पुनर्स्थापित करने के लिए उपयोग किया जा सकता है'; + + @override + String get restore_backup => 'बैकअप पुनर्स्थापित करें'; + + @override + String get restore_backup_subtitle => + 'बैकअप फ़ाइल से पुस्तकालय पुनर्स्थापित करें'; + + @override + String get automatic_backups => 'स्वचालित बैकअप'; + + @override + String get backup_frequency => 'बैकअप आवृत्ति'; + + @override + String get backup_location => 'बैकअप स्थान'; + + @override + String get backup_options => 'बैकअप विकल्प'; + + @override + String get backup_options_dialog_title => 'आप क्या बैकअप करना चाहते हैं?'; + + @override + String get backup_options_subtitle => + 'बैकअप फ़ाइल में क्या जानकारी शामिल करनी है'; + + @override + String get backup_and_restore_warning_info => + 'आपको बैकअप की प्रतियां अन्य स्थानों पर भी रखनी चाहिए'; + + @override + String get library_entries => 'पुस्तकालय प्रविष्टियाँ'; + + @override + String get chapters_and_episode => 'अध्याय और एपिसोड'; + + @override + String get every_6_hours => 'हर 6 घंटे'; + + @override + String get every_12_hours => 'हर 12 घंटे'; + + @override + String get daily => 'दैनिक'; + + @override + String get every_2_days => 'हर 2 दिन'; + + @override + String get weekly => 'साप्ताहिक'; + + @override + String get restore_backup_warning_title => + 'बैकअप पुनर्स्थापित करने से सभी मौजूदा डेटा अधिलेखित हो जाएगा।\n\nपुनर्स्थापना जारी रखें?'; + + @override + String get services => 'सेवाएँ'; + + @override + String get tracking_warning_info => + 'ट्रैकिंग सेवाओं में अध्याय प्रगति को अपडेट करने के लिए एकतरफा समन्वय। व्यक्तिगत प्रविष्टियों के लिए ट्रैकिंग सेट करें।'; + + @override + String get use_page_tap_zones => 'पेज टैप ज़ोन का उपयोग करें'; + + @override + String get manage_trackers => 'ट्रैकर्स प्रबंधित करें'; + + @override + String get restore => 'पुनर्स्थापित करें'; + + @override + String get backups => 'बैकअप'; + + @override + String get by_scanlator => 'स्कैनलेटर के अनुसार'; + + @override + String get by_name => 'नाम के अनुसार'; + + @override + String get installed => 'स्थापित'; + + @override + String get auto_scroll => 'स्वचालित स्क्रॉल'; + + @override + String get video_audio => 'ऑडियो'; + + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + + @override + String get player => 'प्लेयर'; + + @override + String get markEpisodeAsSeenSetting => + 'एपिसोड को कब देखा गया के रूप में चिह्नित करना है'; + + @override + String get default_skip_intro_length => 'डिफ़ॉल्ट परिचय छोड़ने की अवधि'; + + @override + String get default_playback_speed_length => 'डिफ़ॉल्ट प्लेबैक गति अवधि'; + + @override + String get updateProgressAfterReading => 'पढ़ने के बाद प्रगति अपडेट करें'; + + @override + String get no_sources_installed => 'कोई स्रोत स्थापित नहीं है!'; + + @override + String get show_extensions => 'एक्सटेंशन दिखाएँ'; + + @override + String get default_skip_forward_skip_length => + 'Default skip forward skip length'; + + @override + String get aniskip_requires_info => + 'AniSkip requires the anime to be tracked with MAL or Anilist to work.'; + + @override + String get enable_aniskip => 'Enable AniSkip'; + + @override + String get enable_auto_skip => 'Enable auto skip'; + + @override + String get aniskip_button_timeout => 'Button timeout'; + + @override + String get skip_opening => 'Skip opening'; + + @override + String get skip_ending => 'Skip ending'; + + @override + String get fullscreen => 'Fullscreen'; + + @override + String get update_library => 'Update library'; + + @override + String updating_library(Object cur, Object failed, Object max) { + return 'Updating library ($cur / $max) - Failed: $failed'; + } + + @override + String get next_chapter => 'Next chapter'; + + @override + String get next_5_chapters => 'Next 5 chapters'; + + @override + String get next_10_chapters => 'Next 10 chapters'; + + @override + String get next_25_chapters => 'Next 25 chapters'; + + @override + String get all_chapters => 'All chapters'; + + @override + String get next_episode => 'Next episode'; + + @override + String get next_5_episodes => 'Next 5 episodes'; + + @override + String get next_10_episodes => 'Next 10 episodes'; + + @override + String get next_25_episodes => 'Next 25 episodes'; + + @override + String get all_episodes => 'All episodes'; + + @override + String get cover_saved => 'Cover saved'; + + @override + String get set_as_cover => 'Set as cover'; + + @override + String get use_this_as_cover_art => 'Use this as cover art?'; + + @override + String get save => 'Save'; + + @override + String get picture_saved => 'Picture saved'; + + @override + String get cover_updated => 'Cover updated'; + + @override + String get include_subtitles => 'Include subtitles'; + + @override + String get blend_mode_default => 'Default'; + + @override + String get blend_mode_multiply => 'Multiply'; + + @override + String get blend_mode_screen => 'Screen'; + + @override + String get blend_mode_overlay => 'Overlay'; + + @override + String get blend_mode_colorDodge => 'ColorDodge'; + + @override + String get blend_mode_lighten => 'Lighten'; + + @override + String get blend_mode_colorBurn => 'ColorBurn'; + + @override + String get blend_mode_darken => 'Darken'; + + @override + String get blend_mode_difference => 'Difference'; + + @override + String get blend_mode_saturation => 'Saturation'; + + @override + String get blend_mode_softLight => 'SoftLight'; + + @override + String get blend_mode_plus => 'Plus'; + + @override + String get blend_mode_exclusion => 'Exclusion'; + + @override + String get custom_color_filter => 'Custom color filter'; + + @override + String get color_filter_blend_mode => 'Color filter blend mode'; + + @override + String get enable_all => 'Enable all'; + + @override + String get disable_all => 'Disable all'; + + @override + String get font => 'Font'; + + @override + String get color => 'Color'; + + @override + String get font_size => 'Font size'; + + @override + String get text => 'Text'; + + @override + String get border => 'Border'; + + @override + String get background => 'Background'; + + @override + String get no_subtite_warning_message => + 'Has no effect because there aren\'t any subtitle tracks in this video'; + + @override + String get grid_size => 'Grid size'; + + @override + String n_per_row(Object n) { + return '$n per row'; + } + + @override + String get horizontal_continious => 'Horizontal continuous'; + + @override + String get edit_code => 'Edit code'; + + @override + String get use_libass => 'Enable libass'; + + @override + String get use_libass_info => + 'Use libass based subtitle rendering for native backend.'; + + @override + String get libass_not_disable_message => + 'Disable `use libass` in player settings to be able to customize the subtitles.'; + + @override + String get torrent_stream => 'Torrent Stream'; + + @override + String get add_torrent => 'Add torrent'; + + @override + String get enter_torrent_hint_text => 'Enter magnet or torrent file url'; + + @override + String get torrent_url => 'Torrent url'; + + @override + String get or => 'OR'; + + @override + String get advanced => 'Advanced'; + + @override + String get advanced_info => 'mpv config'; + + @override + String get use_native_http_client => 'Use native http client'; + + @override + String get use_native_http_client_info => + 'it automatically supports platform features such VPNs, support more HTTP features such as HTTP/3 and custom redirect handling'; + + @override + String n_hour_ago(Object hour) { + return '$hour hour ago'; + } + + @override + String n_hours_ago(Object hours) { + return '$hours hours ago'; + } + + @override + String n_minute_ago(Object minute) { + return '$minute minute ago'; + } + + @override + String n_minutes_ago(Object minutes) { + return '$minutes minutes ago'; + } + + @override + String n_day_ago(Object day) { + return '$day day ago'; + } + + @override + String get now => 'now'; + + @override + String library_last_updated(Object lastUpdated) { + return 'Library last updated: $lastUpdated'; + } + + @override + String get data_and_storage => 'Data and storage'; + + @override + String get download_location_info => 'Used for chapter downloads'; + + @override + String get storage => 'Storage'; + + @override + String get clear_chapter_and_episode_cache => + 'Clear chapter and episode cache'; + + @override + String get cache_cleared => 'Cache cleared'; + + @override + String get clear_chapter_or_episode_cache_on_app_launch => + 'Clear chapter/episode cache on app launch'; + + @override + String get app_settings => 'App settings'; + + @override + String get sources_settings => 'Sources settings'; + + @override + String get include_sensitive_settings => + 'Include sensitive settings (e.g., tracker login tokens)'; + + @override + String get create => 'Create'; + + @override + String get downloads_are_limited_to_wifi => + 'Downloads are limited to Wi-Fi only'; + + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + + @override + String get manga_extensions_repo => 'Manga extensions repo'; + + @override + String get anime_extensions_repo => 'Anime extensions repo'; + + @override + String get novel_extensions_repo => 'Novel extensions repo'; + + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + + @override + String get undefined => 'undefined'; + + @override + String get empty_extensions_repo => + 'You don\'t have any repository urls here. Click on the plus button to add one!'; + + @override + String get add_extensions_repo => 'Add repo URL'; + + @override + String get remove_extensions_repo => 'Remove repo URL'; + + @override + String get manage_manga_repo_urls => 'Manage Manga Repo URLs'; + + @override + String get manage_anime_repo_urls => 'Manage Anime Repo URLs'; + + @override + String get manage_novel_repo_urls => 'Manage Novel Repo URLs'; + + @override + String get url_cannot_be_empty => 'URL cannot be empty'; + + @override + String get url_must_end_with_dot_json => 'URL must end with .json'; + + @override + String get repo_url => 'Repo URL'; + + @override + String get invalid_url_format => 'Invalid URL format'; + + @override + String get clear_all_sources => 'Clear all sources'; + + @override + String get clear_all_sources_msg => + 'This will completely erase all sources of the application. Are you sure you want to continue?'; + + @override + String get sources_cleared => 'Sources cleared!!!'; + + @override + String get repo_added => 'Source repository added!'; + + @override + String get add_repo => 'Add Repository?'; + + @override + String get genre_search_library => 'Search genre in library'; + + @override + String get genre_search_source => 'Browse in source'; + + @override + String get source_not_added => 'Source is not installed!'; + + @override + String get load_own_subtitles => 'Load your own subtitles...'; + + @override + String get search_subtitles => 'Search subtitles online...'; + + @override + String extension_notes(Object notes) { + return 'Notes: $notes'; + } + + @override + String get unsupported_repo => + 'You\'ve tried to add an unsupported repository. Please check the discord server for support!'; + + @override + String get end_of_chapter => 'End of chapter'; + + @override + String get chapter_completed => 'Chapter completed'; + + @override + String get continue_to_next_chapter => + 'Continue scrolling to read the next chapter'; + + @override + String get no_next_chapter => 'No next chapter'; + + @override + String get you_have_finished_reading => 'You have finished reading'; + + @override + String get return_to_the_list_of_chapters => 'Return to the list of chapters'; + + @override + String get hwdec => 'Hardware Decoder'; + + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + + @override + String get track_library_add => 'Add to local library'; + + @override + String get track_library_add_confirm => 'Add tracked item to local library'; + + @override + String get track_library_not_logged => + 'Login to the corresponding tracker to use this feature!'; + + @override + String get track_library_switch => 'Switch to another tracker'; + + @override + String get go_back => 'Go back'; + + @override + String get merge_library_nav_mobile => 'Merge library navigation on mobile'; + + @override + String get enable_discord_rpc => 'Enable Discord RPC'; + + @override + String get hide_discord_rpc_incognito => + 'Hide Discord RPC while in Incognito'; + + @override + String get rpc_show_reading_watching_progress => + 'Show current chapter in Discord (requires a restart)'; + + @override + String get rpc_show_title => 'Show current title in Discord'; + + @override + String get rpc_show_cover_image => 'Show current cover image in Discord'; + + @override + String get sync_enable_histories => 'Sync history data'; + + @override + String get sync_enable_updates => 'Sync update data'; + + @override + String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; +} diff --git a/lib/l10n/generated/app_localizations_id.dart b/lib/l10n/generated/app_localizations_id.dart index 71a677f8..537bb42f 100644 --- a/lib/l10n/generated/app_localizations_id.dart +++ b/lib/l10n/generated/app_localizations_id.dart @@ -235,6 +235,13 @@ class AppLocalizationsId extends AppLocalizations { @override String get incognito_mode_description => 'Menghentikan catatan bacaan'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'Antrian Unduhan'; @@ -433,6 +440,15 @@ class AppLocalizationsId extends AppLocalizations { @override String get check_for_update => 'Periksa Pembaruan'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return '$days Hari yang Lalu'; @@ -447,6 +463,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get a_week_ago => 'Seminggu yang Lalu'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Tambahkan ke Perpustakaan'; @@ -702,6 +721,20 @@ class AppLocalizationsId extends AppLocalizations { @override String get sync_button_sync => 'Sinkronkan progres'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Aktifkan sinkronisasi'; @@ -787,6 +820,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get novel_extensions => 'Ekstensi Novel'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Anime'; @@ -1055,6 +1091,10 @@ class AppLocalizationsId extends AppLocalizations { @override String get video_audio => 'Audio'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Pemain'; @@ -1279,6 +1319,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get advanced => 'Lanjutan'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Gunakan klien http asli'; @@ -1355,6 +1398,27 @@ class AppLocalizationsId extends AppLocalizations { String get downloads_are_limited_to_wifi => 'Unduhan dibatasi hanya untuk Wi-Fi'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Repositori ekstensi manga'; @@ -1364,6 +1428,15 @@ class AppLocalizationsId extends AppLocalizations { @override String get novel_extensions_repo => 'Repositori ekstensi novel'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'Tidak terdefinisi'; @@ -1426,6 +1499,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get load_own_subtitles => 'Muat subtitle Anda sendiri...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1457,6 +1533,16 @@ class AppLocalizationsId extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1501,4 +1587,157 @@ class AppLocalizationsId extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart index f49ea921..d10131a8 100644 --- a/lib/l10n/generated/app_localizations_it.dart +++ b/lib/l10n/generated/app_localizations_it.dart @@ -235,6 +235,13 @@ class AppLocalizationsIt extends AppLocalizations { @override String get incognito_mode_description => 'Sospende la cronologia di lettura'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'Coda di download'; @@ -433,6 +440,15 @@ class AppLocalizationsIt extends AppLocalizations { @override String get check_for_update => 'Controlla aggiornamenti'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return '$days giorni fa'; @@ -447,6 +463,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get a_week_ago => 'Una settimana fa'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Aggiungi alla biblioteca'; @@ -702,6 +721,20 @@ class AppLocalizationsIt extends AppLocalizations { @override String get sync_button_sync => 'Sincronizza progressi'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Abilita sincronizzazione'; @@ -787,6 +820,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get novel_extensions => 'Estensioni romanzo'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Anime'; @@ -1058,6 +1094,10 @@ class AppLocalizationsIt extends AppLocalizations { @override String get video_audio => 'Audio'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Giocatore'; @@ -1286,6 +1326,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get advanced => 'Avanzate'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Usa il client HTTP nativo'; @@ -1363,6 +1406,27 @@ class AppLocalizationsIt extends AppLocalizations { String get downloads_are_limited_to_wifi => 'I download sono limitati solo al Wi-Fi'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Repository delle estensioni manga'; @@ -1372,6 +1436,15 @@ class AppLocalizationsIt extends AppLocalizations { @override String get novel_extensions_repo => 'Repository delle estensioni romanzi'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'Non definito'; @@ -1435,6 +1508,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get load_own_subtitles => 'Carica i tuoi sottotitoli...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1466,6 +1542,16 @@ class AppLocalizationsIt extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1510,4 +1596,157 @@ class AppLocalizationsIt extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index f84131f6..2c0ac04f 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -235,6 +235,13 @@ class AppLocalizationsPt extends AppLocalizations { @override String get incognito_mode_description => 'Pausa o histórico de leitura'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'Fila de download'; @@ -433,6 +440,15 @@ class AppLocalizationsPt extends AppLocalizations { @override String get check_for_update => 'Verificar atualização'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return '$days dias atrás'; @@ -447,6 +463,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get a_week_ago => 'Uma semana atrás'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Adicionar à biblioteca'; @@ -702,6 +721,20 @@ class AppLocalizationsPt extends AppLocalizations { @override String get sync_button_sync => 'Sincronizar progresso'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Ativar sincronização'; @@ -787,6 +820,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get novel_extensions => 'Extensões de novels'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Anime'; @@ -1057,6 +1093,10 @@ class AppLocalizationsPt extends AppLocalizations { @override String get video_audio => 'Áudio'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Jogador'; @@ -1283,6 +1323,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get advanced => 'Avançado'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Usar cliente HTTP nativo'; @@ -1360,6 +1403,27 @@ class AppLocalizationsPt extends AppLocalizations { String get downloads_are_limited_to_wifi => 'Os downloads estão limitados apenas ao Wi-Fi'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Repositório de extensões de mangás'; @@ -1369,6 +1433,15 @@ class AppLocalizationsPt extends AppLocalizations { @override String get novel_extensions_repo => 'Repositório de extensões de romances'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'Indefinido'; @@ -1434,6 +1507,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get load_own_subtitles => 'Carregar suas próprias legendas...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1465,6 +1541,16 @@ class AppLocalizationsPt extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1509,6 +1595,159 @@ class AppLocalizationsPt extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } /// The translations for Portuguese, as used in Brazil (`pt_BR`). diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart index ea8db99d..41ae4fe1 100644 --- a/lib/l10n/generated/app_localizations_ru.dart +++ b/lib/l10n/generated/app_localizations_ru.dart @@ -234,6 +234,13 @@ class AppLocalizationsRu extends AppLocalizations { @override String get incognito_mode_description => 'Пауза в истории чтения'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'Очередь загрузки'; @@ -434,6 +441,15 @@ class AppLocalizationsRu extends AppLocalizations { @override String get check_for_update => 'Проверить обновления'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return '$days дней назад'; @@ -448,6 +464,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get a_week_ago => 'Неделю назад'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Добавить в библиотеку'; @@ -704,6 +723,20 @@ class AppLocalizationsRu extends AppLocalizations { @override String get sync_button_sync => 'Синхронизировать прогресс'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Включить синхронизацию'; @@ -789,6 +822,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get novel_extensions => 'Расширения для романов'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Аниме'; @@ -1060,6 +1096,10 @@ class AppLocalizationsRu extends AppLocalizations { @override String get video_audio => 'Аудио'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Игрок'; @@ -1286,6 +1326,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get advanced => 'Продвинутые'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Использовать нативный HTTP-клиент'; @@ -1362,6 +1405,27 @@ class AppLocalizationsRu extends AppLocalizations { String get downloads_are_limited_to_wifi => 'Загрузки ограничены только Wi-Fi'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Репозиторий расширений манги'; @@ -1371,6 +1435,15 @@ class AppLocalizationsRu extends AppLocalizations { @override String get novel_extensions_repo => 'Репозиторий расширений новелл'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'Не определено'; @@ -1436,6 +1509,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get load_own_subtitles => 'Загрузить свои собственные субтитры...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1467,6 +1543,16 @@ class AppLocalizationsRu extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1511,4 +1597,157 @@ class AppLocalizationsRu extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_th.dart b/lib/l10n/generated/app_localizations_th.dart index 48797005..8a36aef0 100644 --- a/lib/l10n/generated/app_localizations_th.dart +++ b/lib/l10n/generated/app_localizations_th.dart @@ -232,6 +232,13 @@ class AppLocalizationsTh extends AppLocalizations { @override String get incognito_mode_description => 'หยุดประวัติการอ่านชั่วคราว'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'คิวดาวน์โหลด'; @@ -429,6 +436,15 @@ class AppLocalizationsTh extends AppLocalizations { @override String get check_for_update => 'ตรวจสอบการอัพเดท'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return '$days วันที่แล้ว'; @@ -443,6 +459,9 @@ class AppLocalizationsTh extends AppLocalizations { @override String get a_week_ago => 'สัปดาห์ที่แล้ว'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'เพิ่มไปที่ชั้นหนังสือ'; @@ -698,6 +717,20 @@ class AppLocalizationsTh extends AppLocalizations { @override String get sync_button_sync => 'ซิงค์ความคืบหน้า'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'เปิดการซิงค์'; @@ -782,6 +815,9 @@ class AppLocalizationsTh extends AppLocalizations { @override String get novel_extensions => 'ส่วนขยายของนวนิยาย'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'อนิเมะ'; @@ -1049,6 +1085,10 @@ class AppLocalizationsTh extends AppLocalizations { @override String get video_audio => 'เสียง'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'ตัวเล่น'; @@ -1273,6 +1313,9 @@ class AppLocalizationsTh extends AppLocalizations { @override String get advanced => 'ขั้นสูง'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'ใช้ไคลเอนต์ HTTP พื้นเมือง'; @@ -1349,6 +1392,27 @@ class AppLocalizationsTh extends AppLocalizations { String get downloads_are_limited_to_wifi => 'การดาวน์โหลดจำกัดเฉพาะ Wi-Fi เท่านั้น'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'ที่เก็บส่วนขยายมังงะ'; @@ -1358,6 +1422,15 @@ class AppLocalizationsTh extends AppLocalizations { @override String get novel_extensions_repo => 'ที่เก็บส่วนขยายโนเวล'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'ไม่ได้กำหนด'; @@ -1420,6 +1493,9 @@ class AppLocalizationsTh extends AppLocalizations { @override String get load_own_subtitles => 'โหลดคำบรรยายของคุณเอง...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1451,6 +1527,16 @@ class AppLocalizationsTh extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1495,4 +1581,157 @@ class AppLocalizationsTh extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart index ec9837cd..d9e39b71 100644 --- a/lib/l10n/generated/app_localizations_tr.dart +++ b/lib/l10n/generated/app_localizations_tr.dart @@ -232,6 +232,13 @@ class AppLocalizationsTr extends AppLocalizations { @override String get incognito_mode_description => 'Okuma geçmişini duraklatır'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => 'İndirme Kuyruğu'; @@ -429,6 +436,15 @@ class AppLocalizationsTr extends AppLocalizations { @override String get check_for_update => 'Güncelleme Kontrol Et'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return '$days gün önce'; @@ -443,6 +459,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get a_week_ago => 'Bir Hafta Önce'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => 'Kütüphaneye Ekle'; @@ -698,6 +717,20 @@ class AppLocalizationsTr extends AppLocalizations { @override String get sync_button_sync => 'İlerlemeyi senkronize et'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => 'Senkronizasyonu etkinleştir'; @@ -783,6 +816,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get novel_extensions => 'Hikaye Uzantıları'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => 'Anime'; @@ -1053,6 +1089,10 @@ class AppLocalizationsTr extends AppLocalizations { @override String get video_audio => 'Ses'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => 'Oyuncu'; @@ -1278,6 +1318,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get advanced => 'Gelişmiş'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => 'Yerel http istemcisini kullan'; @@ -1355,6 +1398,27 @@ class AppLocalizationsTr extends AppLocalizations { String get downloads_are_limited_to_wifi => 'İndirmeler yalnızca Wi-Fi ile sınırlıdır'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => 'Manga uzantıları deposu'; @@ -1364,6 +1428,15 @@ class AppLocalizationsTr extends AppLocalizations { @override String get novel_extensions_repo => 'Roman uzantıları deposu'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => 'Tanımsız'; @@ -1426,6 +1499,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get load_own_subtitles => 'Kendi altyazılarınızı yükleyin...'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1457,6 +1533,16 @@ class AppLocalizationsTr extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1501,4 +1587,157 @@ class AppLocalizationsTr extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart index c76e32b9..50c31ae2 100644 --- a/lib/l10n/generated/app_localizations_zh.dart +++ b/lib/l10n/generated/app_localizations_zh.dart @@ -227,6 +227,13 @@ class AppLocalizationsZh extends AppLocalizations { @override String get incognito_mode_description => '暂停阅读历史'; + @override + String get downloaded_only => 'Downloaded only'; + + @override + String get downloaded_only_description => + 'Only show downloaded entries in your library'; + @override String get download_queue => '下载队列'; @@ -421,6 +428,15 @@ class AppLocalizationsZh extends AppLocalizations { @override String get check_for_update => '检查更新'; + @override + String get share_app_logs => 'Share app logs'; + + @override + String get no_app_logs => 'No log.txt available!'; + + @override + String get failed => 'Failed!'; + @override String n_days_ago(Object days) { return '$days天前'; @@ -435,6 +451,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get a_week_ago => '一周前'; + @override + String get next_week => 'Next week'; + @override String get add_to_library => '添加到图书馆'; @@ -690,6 +709,20 @@ class AppLocalizationsZh extends AppLocalizations { @override String get sync_button_sync => '同步进度'; + @override + String get sync_button_upload => 'Upload only'; + + @override + String get sync_button_upload_info => + 'This operation will fully replace the remote data with local data!'; + + @override + String get sync_button_download => 'Download only'; + + @override + String get sync_button_download_info => + 'This operation will fully replace the local data with remote data!'; + @override String get sync_on => '启用同步'; @@ -772,6 +805,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get novel_extensions => '小说扩展'; + @override + String get extension_settings => 'Extension settings'; + @override String get anime => '动画'; @@ -1033,6 +1069,10 @@ class AppLocalizationsZh extends AppLocalizations { @override String get video_audio => '音频'; + @override + String get video_audio_info => + 'Preferred languages, pitch correction, audio channels'; + @override String get player => '播放器'; @@ -1250,6 +1290,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get advanced => '高级'; + @override + String get advanced_info => 'mpv config'; + @override String get use_native_http_client => '使用本地 HTTP 客户端'; @@ -1323,6 +1366,27 @@ class AppLocalizationsZh extends AppLocalizations { @override String get downloads_are_limited_to_wifi => '下载仅限于WiFi'; + @override + String get recommendations => 'Recommendations'; + + @override + String get recommendations_similar => 'similar'; + + @override + String get recommendations_weights => 'Recommendation Weights'; + + @override + String get recommendations_weights_genre => 'Genre Similarity'; + + @override + String get recommendations_weights_setting => 'Setting Similarity'; + + @override + String get recommendations_weights_synopsis => 'Story Similarity'; + + @override + String get recommendations_weights_theme => 'Theme Similarity'; + @override String get manga_extensions_repo => '漫画扩展库'; @@ -1332,6 +1396,15 @@ class AppLocalizationsZh extends AppLocalizations { @override String get novel_extensions_repo => '小说扩展库'; + @override + String get custom_dns => 'Custom DNS (leave blank to use system DNS)'; + + @override + String get android_proxy_server => 'Android Proxy Server (ApkBridge)'; + + @override + String get get_apk_bridge => 'Get ApkBridge'; + @override String get undefined => '未定义'; @@ -1392,6 +1465,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get load_own_subtitles => '加载自定义字幕'; + @override + String get search_subtitles => 'Search subtitles online...'; + @override String extension_notes(Object notes) { return 'Notes: $notes'; @@ -1422,6 +1498,16 @@ class AppLocalizationsZh extends AppLocalizations { @override String get hwdec => 'Hardware Decoder'; + @override + String get enable_hardware_accel => 'Hardware Acceleration'; + + @override + String get enable_hardware_accel_info => + 'Turn it on/off if you are experiencing bugs or crashes'; + + @override + String get track_library_navigate => 'Go to existing local entry'; + @override String get track_library_add => 'Add to local library'; @@ -1466,4 +1552,157 @@ class AppLocalizationsZh extends AppLocalizations { @override String get sync_enable_settings => 'Sync settings'; + + @override + String get enable_mpv => 'Enable mpv shaders / scripts'; + + @override + String get mpv_info => 'Supports .js scripts under mpv/scripts/'; + + @override + String get mpv_redownload => 'Redownload mpv config files'; + + @override + String get mpv_redownload_info => 'Replaces old config files with new one!'; + + @override + String get mpv_download => 'MPV config files are required!\nDownload now?'; + + @override + String get custom_buttons => 'Custom buttons'; + + @override + String get custom_buttons_info => 'Execute lua code with custom buttons'; + + @override + String get custom_buttons_edit => 'Edit custom buttons'; + + @override + String get custom_buttons_add => 'Add custom button'; + + @override + String get custom_buttons_added => 'Custom button added!'; + + @override + String get custom_buttons_delete => 'Delete custom button'; + + @override + String get custom_buttons_text => 'Button text'; + + @override + String get custom_buttons_text_req => 'Button text required'; + + @override + String get custom_buttons_js_code => 'lua code'; + + @override + String get custom_buttons_js_code_req => 'lua code required'; + + @override + String get custom_buttons_js_code_long => 'lua code (on long press)'; + + @override + String get custom_buttons_startup => 'lua code (on startup)'; + + @override + String n_days(Object n) { + return '$n days'; + } + + @override + String get decoder => 'Decoder'; + + @override + String get decoder_info => 'Hardware decoding, pixel format, debanding'; + + @override + String get enable_gpu_next => 'Enable gpu-next (Android only)'; + + @override + String get enable_gpu_next_info => 'A new video rendering backend'; + + @override + String get debanding => 'Debanding'; + + @override + String get use_yuv420p => 'Use YUV420P pixel format'; + + @override + String get use_yuv420p_info => + 'May fix black screens on some video codecs, can also improve performance at the cost of quality'; + + @override + String get audio_preferred_languages => 'Preferred langauages'; + + @override + String get audio_preferred_languages_info => + 'Audio langauage(s) to be selected by default on a video with multiple audio streams, 2/3-letter languages codes (e.g.: en, de, fr) work. Multiple values can be delimited by a comma.'; + + @override + String get enable_audio_pitch_correction => 'Enable audio pitch correction'; + + @override + String get enable_audio_pitch_correction_info => + 'Prevents the audio from becoming high-pitched at faster speeds and low-pitched at slower speeds'; + + @override + String get audio_channels => 'Audio channels'; + + @override + String get volume_boost_cap => 'Volume boost cap'; + + @override + String get internal_player => 'Internal player'; + + @override + String get internal_player_info => 'Progress, controls, orientation'; + + @override + String get subtitle_delay_text => 'Subtitle delay'; + + @override + String get subtitle_delay => 'Delay (ms)'; + + @override + String get subtitle_speed => 'Speed'; + + @override + String get calendar => 'Calendar'; + + @override + String get calendar_no_data => 'No data yet.'; + + @override + String get calendar_info => + 'The calendar is only able to predict the next chapter upload based on the older uploads. Some data might not be 100% accurate!'; + + @override + String in_n_day(Object days) { + return 'in $days day'; + } + + @override + String in_n_days(Object days) { + return 'in $days days'; + } + + @override + String get clear_library => 'Clear library'; + + @override + String get clear_library_desc => + 'Choose to clear all manga, anime and/or novel entries'; + + @override + String get clear_library_input => + 'Type \'manga\', \'anime\' and/or \'novel\' (separated by a comma) to remove all related entries'; + + @override + String get watch_order => 'Watch order'; + + @override + String get sequels => 'Sequels'; + + @override + String get recommendations_similarity => 'Similarity:'; } diff --git a/lib/main.dart b/lib/main.dart index abe838f4..4ad862f4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:app_links/app_links.dart'; +import 'package:archive/archive.dart'; import 'package:bot_toast/bot_toast.dart'; import 'package:desktop_webview_window/desktop_webview_window.dart'; import 'package:flutter/foundation.dart'; @@ -13,12 +14,17 @@ import 'package:hive_flutter/adapters.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:isar/isar.dart'; import 'package:mangayomi/eval/model/m_bridge.dart'; +import 'package:mangayomi/models/custom_button.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/models/track.dart' as track; +import 'package:mangayomi/models/track_preference.dart'; import 'package:mangayomi/models/track_search.dart'; +import 'package:mangayomi/modules/manga/detail/providers/track_state_providers.dart'; import 'package:mangayomi/modules/more/data_and_storage/providers/storage_usage.dart'; import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; +import 'package:mangayomi/modules/more/settings/general/providers/general_state_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/router/router.dart'; @@ -27,6 +33,7 @@ import 'package:mangayomi/l10n/generated/app_localizations.dart'; import 'package:mangayomi/services/http/m_client.dart'; import 'package:mangayomi/src/rust/frb_generated.dart'; import 'package:mangayomi/utils/discord_rpc.dart'; +import 'package:mangayomi/utils/log/logger.dart'; import 'package:mangayomi/utils/url_protocol/api.dart'; import 'package:mangayomi/modules/more/settings/appearance/providers/theme_provider.dart'; import 'package:mangayomi/modules/library/providers/file_scanner.dart'; @@ -34,10 +41,12 @@ import 'package:media_kit/media_kit.dart'; import 'package:path_provider/path_provider.dart'; import 'package:window_manager/window_manager.dart'; import 'package:path/path.dart' as p; +import 'package:flutter/services.dart' show rootBundle; late Isar isar; DiscordRPC? discordRpc; WebViewEnvironment? webViewEnvironment; +String? customDns; void main(List args) async { WidgetsFlutterBinding.ensureInitialized(); if (Platform.isLinux && runWebViewTitleBarWidget(args)) return; @@ -69,6 +78,7 @@ void main(List args) async { } Future _postLaunchInit(StorageProvider storage) async { + await AppLogger.init(); final hivePath = (Platform.isIOS || Platform.isMacOS) ? "databases" : p.join("Mangayomi", "databases"); @@ -141,7 +151,10 @@ class _MyAppState extends ConsumerState { void initState() { super.initState(); initializeDateFormatting(); + customDns = ref.read(customDnsStateProvider); + _checkTrackerRefresh(); _initDeepLinks(); + _setupMpvConfig(); unawaited(ref.read(scanLocalLibraryProvider.future)); WidgetsBinding.instance.addPostFrameCallback((_) { @@ -184,12 +197,13 @@ class _MyAppState extends ConsumerState { void dispose() { _linkSubscription?.cancel(); discordRpc?.destroy(); + AppLogger.dispose(); super.dispose(); } Future _initDeepLinks() async { _appLinks = AppLinks(); - _linkSubscription = _appLinks.uriLinkStream.listen((uri) { + _linkSubscription = _appLinks.uriLinkStream.listen((uri) async { if (uri == lastUri) return; // Debouncing Deep Links lastUri = uri; switch (uri.host) { @@ -268,6 +282,62 @@ class _MyAppState extends ConsumerState { }, ); break; + case "add-button": + final buttonDataRaw = uri.queryParametersAll["button"]; + final context = navigatorKey.currentContext; + if (context == null || !context.mounted || buttonDataRaw == null) { + return; + } + final l10n = context.l10n; + for (final buttonRaw in buttonDataRaw) { + final buttonData = jsonDecode( + utf8.decode(base64.decode(buttonRaw)), + ); + if (buttonData is Map) { + final customButton = CustomButton.fromJson(buttonData); + await showDialog( + context: navigatorKey.currentContext!, + builder: (BuildContext context) { + return AlertDialog( + title: Text(l10n.custom_buttons_add), + content: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "${l10n.name}: ${customButton.title ?? 'Unknown'}", + ), + ], + ), + actions: [ + TextButton( + child: Text(l10n.cancel), + onPressed: () => Navigator.of(context).pop(), + ), + FilledButton( + child: Text(l10n.add), + onPressed: () async { + if (context.mounted) Navigator.of(context).pop(); + await isar.writeTxn(() async { + await isar.customButtons.put( + customButton + ..pos = await isar.customButtons.count() + ..isFavourite = false + ..id = null + ..updatedAt = + DateTime.now().millisecondsSinceEpoch, + ); + }); + botToast(l10n.custom_buttons_added); + }, + ), + ], + ); + }, + ); + } + } + break; default: } }); @@ -290,6 +360,54 @@ class _MyAppState extends ConsumerState { } return true; } + + Future _setupMpvConfig() async { + final provider = StorageProvider(); + final dir = await provider.getMpvDirectory(); + final mpvFile = File('${dir!.path}/mpv.conf'); + final inputFile = File('${dir.path}/input.conf'); + final filesMissing = + !(await mpvFile.exists()) && !(await inputFile.exists()); + if (filesMissing) { + final bytes = await rootBundle.load("assets/mangayomi_mpv.zip"); + final archive = ZipDecoder().decodeBytes(bytes.buffer.asUint8List()); + String shadersDir = p.join(dir.path, 'shaders'); + await Directory(shadersDir).create(recursive: true); + String scriptsDir = p.join(dir.path, 'scripts'); + await Directory(scriptsDir).create(recursive: true); + for (final file in archive.files) { + if (file.name == "mpv.conf") { + await mpvFile.writeAsBytes(file.content); + } else if (file.name == "input.conf") { + await inputFile.writeAsBytes(file.content); + } else if (file.name.startsWith("shaders/") && + file.name.endsWith(".glsl")) { + final shaderFile = File('$shadersDir/${file.name.split("/").last}'); + await shaderFile.writeAsBytes(file.content); + } else if (file.name.startsWith("scripts/") && + (file.name.endsWith(".js") || file.name.endsWith(".lua"))) { + final scriptFile = File('$scriptsDir/${file.name.split("/").last}'); + await scriptFile.writeAsBytes(file.content); + } + } + } + } + + Future _checkTrackerRefresh() async { + final prefs = await isar.trackPreferences + .filter() + .syncIdIsNotNull() + .findAll(); + for (final pref in prefs) { + final temp = track.Track( + syncId: pref.syncId, + status: track.TrackStatus.completed, + ); + ref + .read(trackStateProvider(track: temp, itemType: null).notifier) + .checkRefresh(); + } + } } class AllowScrollBehavior extends MaterialScrollBehavior { diff --git a/lib/models/category.g.dart b/lib/models/category.g.dart index e026164c..05aa7bc3 100644 --- a/lib/models/category.g.dart +++ b/lib/models/category.g.dart @@ -23,32 +23,17 @@ const CategorySchema = CollectionSchema( type: IsarType.byte, enumMap: _CategoryforItemTypeEnumValueMap, ), - r'forManga': PropertySchema( - id: 1, - name: r'forManga', - type: IsarType.bool, - ), - r'hide': PropertySchema( - id: 2, - name: r'hide', - type: IsarType.bool, - ), - r'name': PropertySchema( - id: 3, - name: r'name', - type: IsarType.string, - ), - r'pos': PropertySchema( - id: 4, - name: r'pos', - type: IsarType.long, - ), + r'forManga': PropertySchema(id: 1, name: r'forManga', type: IsarType.bool), + r'hide': PropertySchema(id: 2, name: r'hide', type: IsarType.bool), + r'name': PropertySchema(id: 3, name: r'name', type: IsarType.string), + r'pos': PropertySchema(id: 4, name: r'pos', type: IsarType.long), r'updatedAt': PropertySchema( id: 5, name: r'updatedAt', type: IsarType.long, - ) + ), }, + estimateSize: _categoryEstimateSize, serialize: _categorySerialize, deserialize: _categoryDeserialize, @@ -57,6 +42,7 @@ const CategorySchema = CollectionSchema( indexes: {}, links: {}, embeddedSchemas: {}, + getId: _categoryGetId, getLinks: _categoryGetLinks, attach: _categoryAttach, @@ -101,7 +87,7 @@ Category _categoryDeserialize( final object = Category( forItemType: _CategoryforItemTypeValueEnumMap[reader.readByteOrNull(offsets[0])] ?? - ItemType.manga, + ItemType.manga, hide: reader.readBoolOrNull(offsets[2]), id: id, name: reader.readStringOrNull(offsets[3]), @@ -121,7 +107,8 @@ P _categoryDeserializeProp

( switch (propertyId) { case 0: return (_CategoryforItemTypeValueEnumMap[reader.readByteOrNull(offset)] ?? - ItemType.manga) as P; + ItemType.manga) + as P; case 1: return (reader.readBoolOrNull(offset)) as P; case 2: @@ -137,11 +124,7 @@ P _categoryDeserializeProp

( } } -const _CategoryforItemTypeEnumValueMap = { - 'manga': 0, - 'anime': 1, - 'novel': 2, -}; +const _CategoryforItemTypeEnumValueMap = {'manga': 0, 'anime': 1, 'novel': 2}; const _CategoryforItemTypeValueEnumMap = { 0: ItemType.manga, 1: ItemType.anime, @@ -171,10 +154,7 @@ extension CategoryQueryWhereSort on QueryBuilder { extension CategoryQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -200,8 +180,10 @@ extension CategoryQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -209,8 +191,10 @@ extension CategoryQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -225,12 +209,14 @@ extension CategoryQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -238,26 +224,25 @@ extension CategoryQueryWhere on QueryBuilder { extension CategoryQueryFilter on QueryBuilder { QueryBuilder forItemTypeEqualTo( - ItemType value) { + ItemType value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'forItemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'forItemType', value: value), + ); }); } QueryBuilder - forItemTypeGreaterThan( - ItemType value, { - bool include = false, - }) { + forItemTypeGreaterThan(ItemType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'forItemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'forItemType', + value: value, + ), + ); }); } @@ -266,11 +251,13 @@ extension CategoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'forItemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'forItemType', + value: value, + ), + ); }); } @@ -281,90 +268,91 @@ extension CategoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'forItemType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'forItemType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder forMangaIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'forManga', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'forManga'), + ); }); } QueryBuilder forMangaIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'forManga', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'forManga'), + ); }); } QueryBuilder forMangaEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'forManga', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'forManga', value: value), + ); }); } QueryBuilder hideIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'hide', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'hide'), + ); }); } QueryBuilder hideIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'hide', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'hide'), + ); }); } QueryBuilder hideEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'hide', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'hide', value: value), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -373,11 +361,13 @@ extension CategoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -386,11 +376,13 @@ extension CategoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -401,29 +393,31 @@ extension CategoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder nameIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'name'), + ); }); } QueryBuilder nameIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'name'), + ); }); } @@ -432,11 +426,13 @@ extension CategoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -446,12 +442,14 @@ extension CategoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -461,12 +459,14 @@ extension CategoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -478,14 +478,16 @@ extension CategoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'name', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -494,11 +496,13 @@ extension CategoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -507,79 +511,85 @@ extension CategoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'name', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'name', value: ''), + ); }); } QueryBuilder nameIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'name', value: ''), + ); }); } QueryBuilder posIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'pos', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'pos'), + ); }); } QueryBuilder posIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'pos', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'pos'), + ); }); } QueryBuilder posEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'pos', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'pos', value: value), + ); }); } @@ -588,11 +598,13 @@ extension CategoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'pos', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'pos', + value: value, + ), + ); }); } @@ -601,11 +613,13 @@ extension CategoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'pos', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'pos', + value: value, + ), + ); }); } @@ -616,39 +630,41 @@ extension CategoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'pos', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'pos', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder updatedAtIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); }); } @@ -657,11 +673,13 @@ extension CategoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -670,11 +688,13 @@ extension CategoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -685,13 +705,15 @@ extension CategoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'updatedAt', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -883,8 +905,9 @@ extension CategoryQueryWhereDistinct }); } - QueryBuilder distinctByName( - {bool caseSensitive = true}) { + QueryBuilder distinctByName({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'name', caseSensitive: caseSensitive); }); diff --git a/lib/models/changed.g.dart b/lib/models/changed.g.dart index 9bd4fe39..1b2e17ea 100644 --- a/lib/models/changed.g.dart +++ b/lib/models/changed.g.dart @@ -28,17 +28,10 @@ const ChangedPartSchema = CollectionSchema( name: r'clientDate', type: IsarType.long, ), - r'data': PropertySchema( - id: 2, - name: r'data', - type: IsarType.string, - ), - r'isarId': PropertySchema( - id: 3, - name: r'isarId', - type: IsarType.long, - ) + r'data': PropertySchema(id: 2, name: r'data', type: IsarType.string), + r'isarId': PropertySchema(id: 3, name: r'isarId', type: IsarType.long), }, + estimateSize: _changedPartEstimateSize, serialize: _changedPartSerialize, deserialize: _changedPartDeserialize, @@ -47,6 +40,7 @@ const ChangedPartSchema = CollectionSchema( indexes: {}, links: {}, embeddedSchemas: {}, + getId: _changedPartGetId, getLinks: _changedPartGetLinks, attach: _changedPartAttach, @@ -84,7 +78,7 @@ ChangedPart _changedPartDeserialize( final object = ChangedPart( actionType: _ChangedPartactionTypeValueEnumMap[reader.readByteOrNull(offsets[0])] ?? - ActionType.removeItem, + ActionType.removeItem, clientDate: reader.readLong(offsets[1]), data: reader.readString(offsets[2]), id: id, @@ -101,9 +95,11 @@ P _changedPartDeserializeProp

( ) { switch (propertyId) { case 0: - return (_ChangedPartactionTypeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - ActionType.removeItem) as P; + return (_ChangedPartactionTypeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + ActionType.removeItem) + as P; case 1: return (reader.readLong(offset)) as P; case 2: @@ -143,7 +139,10 @@ List> _changedPartGetLinks(ChangedPart object) { } void _changedPartAttach( - IsarCollection col, Id id, ChangedPart object) { + IsarCollection col, + Id id, + ChangedPart object, +) { object.id = id; } @@ -160,15 +159,13 @@ extension ChangedPartQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } QueryBuilder idNotEqualTo( - Id id) { + Id id, + ) { return QueryBuilder.apply(this, (query) { if (query.whereSort == Sort.asc) { return query @@ -190,8 +187,10 @@ extension ChangedPartQueryWhere }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -199,8 +198,10 @@ extension ChangedPartQueryWhere }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -215,12 +216,14 @@ extension ChangedPartQueryWhere bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -228,114 +231,112 @@ extension ChangedPartQueryWhere extension ChangedPartQueryFilter on QueryBuilder { QueryBuilder - actionTypeEqualTo(ActionType value) { + actionTypeEqualTo(ActionType value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'actionType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'actionType', value: value), + ); }); } QueryBuilder - actionTypeGreaterThan( - ActionType value, { - bool include = false, - }) { + actionTypeGreaterThan(ActionType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'actionType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'actionType', + value: value, + ), + ); }); } QueryBuilder - actionTypeLessThan( - ActionType value, { - bool include = false, - }) { + actionTypeLessThan(ActionType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'actionType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'actionType', + value: value, + ), + ); }); } QueryBuilder - actionTypeBetween( + actionTypeBetween( ActionType lower, ActionType upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'actionType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'actionType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - clientDateEqualTo(int value) { + clientDateEqualTo(int value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'clientDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'clientDate', value: value), + ); }); } QueryBuilder - clientDateGreaterThan( - int value, { - bool include = false, - }) { + clientDateGreaterThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'clientDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'clientDate', + value: value, + ), + ); }); } QueryBuilder - clientDateLessThan( - int value, { - bool include = false, - }) { + clientDateLessThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'clientDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'clientDate', + value: value, + ), + ); }); } QueryBuilder - clientDateBetween( + clientDateBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'clientDate', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'clientDate', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } @@ -344,11 +345,13 @@ extension ChangedPartQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'data', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'data', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -358,12 +361,14 @@ extension ChangedPartQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'data', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'data', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -373,12 +378,14 @@ extension ChangedPartQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'data', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'data', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -390,14 +397,16 @@ extension ChangedPartQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'data', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'data', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -406,11 +415,13 @@ extension ChangedPartQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'data', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'data', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -419,80 +430,86 @@ extension ChangedPartQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'data', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'data', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dataContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'data', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'data', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dataMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'data', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'data', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dataIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'data', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'data', value: ''), + ); }); } QueryBuilder - dataIsNotEmpty() { + dataIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'data', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'data', value: ''), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo( - Id? value) { + Id? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -501,11 +518,13 @@ extension ChangedPartQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -514,11 +533,13 @@ extension ChangedPartQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -529,54 +550,55 @@ extension ChangedPartQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder isarIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isarId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isarId'), + ); }); } QueryBuilder - isarIdIsNotNull() { + isarIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isarId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isarId'), + ); }); } QueryBuilder isarIdEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isarId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isarId', value: value), + ); }); } QueryBuilder - isarIdGreaterThan( - int? value, { - bool include = false, - }) { + isarIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'isarId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'isarId', + value: value, + ), + ); }); } @@ -585,11 +607,13 @@ extension ChangedPartQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'isarId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'isarId', + value: value, + ), + ); }); } @@ -600,13 +624,15 @@ extension ChangedPartQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'isarId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'isarId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -745,8 +771,9 @@ extension ChangedPartQueryWhereDistinct }); } - QueryBuilder distinctByData( - {bool caseSensitive = true}) { + QueryBuilder distinctByData({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'data', caseSensitive: caseSensitive); }); diff --git a/lib/models/chapter.dart b/lib/models/chapter.dart index a09cb415..d2d2c0e7 100644 --- a/lib/models/chapter.dart +++ b/lib/models/chapter.dart @@ -26,6 +26,18 @@ class Chapter { ///Only for local archive Comic String? archivePath; + bool? isFiller; + + String? thumbnailUrl; + + String? description; + + /// video size + String? downloadSize; + + /// video duration + String? duration; + int? updatedAt; final manga = IsarLink(); @@ -41,6 +53,11 @@ class Chapter { this.isRead = false, this.lastPageRead = '', this.archivePath = '', + this.isFiller = false, + this.thumbnailUrl, + this.description, + this.downloadSize, + this.duration, this.updatedAt = 0, }); @@ -55,6 +72,11 @@ class Chapter { name = json['name']; scanlator = json['scanlator']; url = json['url']; + isFiller = json['isFiller'] ?? false; + thumbnailUrl = json['thumbnailUrl']; + description = json['description']; + downloadSize = json['downloadSize']; + duration = json['duration']; updatedAt = json['updatedAt']; } @@ -69,6 +91,11 @@ class Chapter { 'name': name, 'scanlator': scanlator, 'url': url, + 'isFiller': isFiller, + 'thumbnailUrl': thumbnailUrl, + 'description': description, + 'downloadSize': downloadSize, + 'duration': duration, 'updatedAt': updatedAt ?? 0, }; } diff --git a/lib/models/chapter.g.dart b/lib/models/chapter.g.dart index 9bebb94f..4fae9ea1 100644 --- a/lib/models/chapter.g.dart +++ b/lib/models/chapter.g.dart @@ -27,47 +27,53 @@ const ChapterSchema = CollectionSchema( name: r'dateUpload', type: IsarType.string, ), - r'isBookmarked': PropertySchema( + r'description': PropertySchema( id: 2, + name: r'description', + type: IsarType.string, + ), + r'downloadSize': PropertySchema( + id: 3, + name: r'downloadSize', + type: IsarType.string, + ), + r'duration': PropertySchema( + id: 4, + name: r'duration', + type: IsarType.string, + ), + r'isBookmarked': PropertySchema( + id: 5, name: r'isBookmarked', type: IsarType.bool, ), - r'isRead': PropertySchema( - id: 3, - name: r'isRead', - type: IsarType.bool, - ), + r'isFiller': PropertySchema(id: 6, name: r'isFiller', type: IsarType.bool), + r'isRead': PropertySchema(id: 7, name: r'isRead', type: IsarType.bool), r'lastPageRead': PropertySchema( - id: 4, + id: 8, name: r'lastPageRead', type: IsarType.string, ), - r'mangaId': PropertySchema( - id: 5, - name: r'mangaId', - type: IsarType.long, - ), - r'name': PropertySchema( - id: 6, - name: r'name', - type: IsarType.string, - ), + r'mangaId': PropertySchema(id: 9, name: r'mangaId', type: IsarType.long), + r'name': PropertySchema(id: 10, name: r'name', type: IsarType.string), r'scanlator': PropertySchema( - id: 7, + id: 11, name: r'scanlator', type: IsarType.string, ), + r'thumbnailUrl': PropertySchema( + id: 12, + name: r'thumbnailUrl', + type: IsarType.string, + ), r'updatedAt': PropertySchema( - id: 8, + id: 13, name: r'updatedAt', type: IsarType.long, ), - r'url': PropertySchema( - id: 9, - name: r'url', - type: IsarType.string, - ) + r'url': PropertySchema(id: 14, name: r'url', type: IsarType.string), }, + estimateSize: _chapterEstimateSize, serialize: _chapterSerialize, deserialize: _chapterDeserialize, @@ -80,9 +86,10 @@ const ChapterSchema = CollectionSchema( name: r'manga', target: r'Manga', single: true, - ) + ), }, embeddedSchemas: {}, + getId: _chapterGetId, getLinks: _chapterGetLinks, attach: _chapterAttach, @@ -107,6 +114,24 @@ int _chapterEstimateSize( bytesCount += 3 + value.length * 3; } } + { + final value = object.description; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.downloadSize; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.duration; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } { final value = object.lastPageRead; if (value != null) { @@ -125,6 +150,12 @@ int _chapterEstimateSize( bytesCount += 3 + value.length * 3; } } + { + final value = object.thumbnailUrl; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } { final value = object.url; if (value != null) { @@ -142,14 +173,19 @@ void _chapterSerialize( ) { writer.writeString(offsets[0], object.archivePath); writer.writeString(offsets[1], object.dateUpload); - writer.writeBool(offsets[2], object.isBookmarked); - writer.writeBool(offsets[3], object.isRead); - writer.writeString(offsets[4], object.lastPageRead); - writer.writeLong(offsets[5], object.mangaId); - writer.writeString(offsets[6], object.name); - writer.writeString(offsets[7], object.scanlator); - writer.writeLong(offsets[8], object.updatedAt); - writer.writeString(offsets[9], object.url); + writer.writeString(offsets[2], object.description); + writer.writeString(offsets[3], object.downloadSize); + writer.writeString(offsets[4], object.duration); + writer.writeBool(offsets[5], object.isBookmarked); + writer.writeBool(offsets[6], object.isFiller); + writer.writeBool(offsets[7], object.isRead); + writer.writeString(offsets[8], object.lastPageRead); + writer.writeLong(offsets[9], object.mangaId); + writer.writeString(offsets[10], object.name); + writer.writeString(offsets[11], object.scanlator); + writer.writeString(offsets[12], object.thumbnailUrl); + writer.writeLong(offsets[13], object.updatedAt); + writer.writeString(offsets[14], object.url); } Chapter _chapterDeserialize( @@ -161,15 +197,20 @@ Chapter _chapterDeserialize( final object = Chapter( archivePath: reader.readStringOrNull(offsets[0]), dateUpload: reader.readStringOrNull(offsets[1]), + description: reader.readStringOrNull(offsets[2]), + downloadSize: reader.readStringOrNull(offsets[3]), + duration: reader.readStringOrNull(offsets[4]), id: id, - isBookmarked: reader.readBoolOrNull(offsets[2]), - isRead: reader.readBoolOrNull(offsets[3]), - lastPageRead: reader.readStringOrNull(offsets[4]), - mangaId: reader.readLongOrNull(offsets[5]), - name: reader.readStringOrNull(offsets[6]), - scanlator: reader.readStringOrNull(offsets[7]), - updatedAt: reader.readLongOrNull(offsets[8]), - url: reader.readStringOrNull(offsets[9]), + isBookmarked: reader.readBoolOrNull(offsets[5]), + isFiller: reader.readBoolOrNull(offsets[6]), + isRead: reader.readBoolOrNull(offsets[7]), + lastPageRead: reader.readStringOrNull(offsets[8]), + mangaId: reader.readLongOrNull(offsets[9]), + name: reader.readStringOrNull(offsets[10]), + scanlator: reader.readStringOrNull(offsets[11]), + thumbnailUrl: reader.readStringOrNull(offsets[12]), + updatedAt: reader.readLongOrNull(offsets[13]), + url: reader.readStringOrNull(offsets[14]), ); return object; } @@ -186,20 +227,30 @@ P _chapterDeserializeProp

( case 1: return (reader.readStringOrNull(offset)) as P; case 2: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 3: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 4: return (reader.readStringOrNull(offset)) as P; case 5: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 6: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 7: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 8: - return (reader.readLongOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 9: + return (reader.readLongOrNull(offset)) as P; + case 10: + return (reader.readStringOrNull(offset)) as P; + case 11: + return (reader.readStringOrNull(offset)) as P; + case 12: + return (reader.readStringOrNull(offset)) as P; + case 13: + return (reader.readLongOrNull(offset)) as P; + case 14: return (reader.readStringOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); @@ -230,10 +281,7 @@ extension ChapterQueryWhereSort on QueryBuilder { extension ChapterQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -259,8 +307,10 @@ extension ChapterQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -268,8 +318,10 @@ extension ChapterQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -284,12 +336,14 @@ extension ChapterQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -298,17 +352,17 @@ extension ChapterQueryFilter on QueryBuilder { QueryBuilder archivePathIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'archivePath', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'archivePath'), + ); }); } QueryBuilder archivePathIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'archivePath', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'archivePath'), + ); }); } @@ -317,11 +371,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'archivePath', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'archivePath', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -331,12 +387,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'archivePath', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'archivePath', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -346,12 +404,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'archivePath', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'archivePath', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -363,14 +423,16 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'archivePath', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'archivePath', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -379,11 +441,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'archivePath', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'archivePath', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -392,70 +456,76 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'archivePath', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'archivePath', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder archivePathContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'archivePath', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'archivePath', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder archivePathMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'archivePath', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'archivePath', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder archivePathIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'archivePath', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'archivePath', value: ''), + ); }); } QueryBuilder - archivePathIsNotEmpty() { + archivePathIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'archivePath', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'archivePath', value: ''), + ); }); } QueryBuilder dateUploadIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'dateUpload', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'dateUpload'), + ); }); } QueryBuilder dateUploadIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'dateUpload', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'dateUpload'), + ); }); } @@ -464,11 +534,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateUpload', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -478,12 +550,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dateUpload', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -493,12 +567,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dateUpload', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -510,14 +586,16 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'dateUpload', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'dateUpload', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -526,11 +604,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'dateUpload', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -539,78 +619,572 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'dateUpload', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateUploadContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'dateUpload', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'dateUpload', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateUploadMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'dateUpload', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'dateUpload', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateUploadIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateUpload', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'dateUpload', value: ''), + ); }); } QueryBuilder dateUploadIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'dateUpload', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'dateUpload', value: ''), + ); + }); + } + + QueryBuilder descriptionIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'description'), + ); + }); + } + + QueryBuilder descriptionIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'description'), + ); + }); + } + + QueryBuilder descriptionEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder descriptionGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder descriptionLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder descriptionBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'description', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder descriptionStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder descriptionEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder descriptionContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder descriptionMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'description', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder descriptionIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'description', value: ''), + ); + }); + } + + QueryBuilder + descriptionIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'description', value: ''), + ); + }); + } + + QueryBuilder downloadSizeIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'downloadSize'), + ); + }); + } + + QueryBuilder + downloadSizeIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'downloadSize'), + ); + }); + } + + QueryBuilder downloadSizeEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'downloadSize', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder downloadSizeGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'downloadSize', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder downloadSizeLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'downloadSize', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder downloadSizeBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'downloadSize', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder downloadSizeStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'downloadSize', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder downloadSizeEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'downloadSize', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder downloadSizeContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'downloadSize', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder downloadSizeMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'downloadSize', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder downloadSizeIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'downloadSize', value: ''), + ); + }); + } + + QueryBuilder + downloadSizeIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'downloadSize', value: ''), + ); + }); + } + + QueryBuilder durationIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'duration'), + ); + }); + } + + QueryBuilder durationIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'duration'), + ); + }); + } + + QueryBuilder durationEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'duration', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder durationGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'duration', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder durationLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'duration', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder durationBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'duration', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder durationStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'duration', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder durationEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'duration', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder durationContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'duration', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder durationMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'duration', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder durationIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'duration', value: ''), + ); + }); + } + + QueryBuilder durationIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'duration', value: ''), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -619,11 +1193,13 @@ extension ChapterQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -632,11 +1208,13 @@ extension ChapterQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -647,83 +1225,111 @@ extension ChapterQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder isBookmarkedIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isBookmarked', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isBookmarked'), + ); }); } QueryBuilder - isBookmarkedIsNotNull() { + isBookmarkedIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isBookmarked', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isBookmarked'), + ); }); } QueryBuilder isBookmarkedEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isBookmarked', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isBookmarked', value: value), + ); + }); + } + + QueryBuilder isFillerIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isFiller'), + ); + }); + } + + QueryBuilder isFillerIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isFiller'), + ); + }); + } + + QueryBuilder isFillerEqualTo( + bool? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isFiller', value: value), + ); }); } QueryBuilder isReadIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isRead', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isRead'), + ); }); } QueryBuilder isReadIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isRead', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isRead'), + ); }); } QueryBuilder isReadEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isRead', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isRead', value: value), + ); }); } QueryBuilder lastPageReadIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastPageRead', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastPageRead'), + ); }); } QueryBuilder - lastPageReadIsNotNull() { + lastPageReadIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastPageRead', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lastPageRead'), + ); }); } @@ -732,11 +1338,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -746,12 +1354,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -761,12 +1371,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -778,14 +1390,16 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lastPageRead', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lastPageRead', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -794,11 +1408,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -807,80 +1423,86 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder lastPageReadContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'lastPageRead', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder lastPageReadMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'lastPageRead', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'lastPageRead', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder lastPageReadIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastPageRead', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lastPageRead', value: ''), + ); }); } QueryBuilder - lastPageReadIsNotEmpty() { + lastPageReadIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'lastPageRead', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'lastPageRead', value: ''), + ); }); } QueryBuilder mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } @@ -889,11 +1511,13 @@ extension ChapterQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -902,11 +1526,13 @@ extension ChapterQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -917,29 +1543,31 @@ extension ChapterQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder nameIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'name'), + ); }); } QueryBuilder nameIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'name'), + ); }); } @@ -948,11 +1576,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -962,12 +1592,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -977,12 +1609,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -994,14 +1628,16 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'name', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1010,11 +1646,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1023,69 +1661,75 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'name', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'name', value: ''), + ); }); } QueryBuilder nameIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'name', value: ''), + ); }); } QueryBuilder scanlatorIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'scanlator', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'scanlator'), + ); }); } QueryBuilder scanlatorIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'scanlator', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'scanlator'), + ); }); } @@ -1094,11 +1738,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'scanlator', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1108,12 +1754,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'scanlator', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1123,12 +1771,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'scanlator', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1140,14 +1790,16 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'scanlator', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'scanlator', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1156,11 +1808,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'scanlator', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1169,79 +1823,249 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'scanlator', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder scanlatorContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'scanlator', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'scanlator', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder scanlatorMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'scanlator', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'scanlator', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder scanlatorIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'scanlator', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'scanlator', value: ''), + ); }); } QueryBuilder scanlatorIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'scanlator', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'scanlator', value: ''), + ); + }); + } + + QueryBuilder thumbnailUrlIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'thumbnailUrl'), + ); + }); + } + + QueryBuilder + thumbnailUrlIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'thumbnailUrl'), + ); + }); + } + + QueryBuilder thumbnailUrlEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'thumbnailUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder thumbnailUrlGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'thumbnailUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder thumbnailUrlLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'thumbnailUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder thumbnailUrlBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'thumbnailUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder thumbnailUrlStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'thumbnailUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder thumbnailUrlEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'thumbnailUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder thumbnailUrlContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'thumbnailUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder thumbnailUrlMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'thumbnailUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder thumbnailUrlIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'thumbnailUrl', value: ''), + ); + }); + } + + QueryBuilder + thumbnailUrlIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'thumbnailUrl', value: ''), + ); }); } QueryBuilder updatedAtIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); }); } @@ -1250,11 +2074,13 @@ extension ChapterQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -1263,11 +2089,13 @@ extension ChapterQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -1278,29 +2106,31 @@ extension ChapterQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'updatedAt', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder urlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'url', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'url'), + ); }); } QueryBuilder urlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'url', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'url'), + ); }); } @@ -1309,11 +2139,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'url', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'url', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1323,12 +2155,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'url', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'url', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1338,12 +2172,14 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'url', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'url', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1355,14 +2191,16 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'url', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'url', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1371,11 +2209,13 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'url', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'url', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1384,53 +2224,59 @@ extension ChapterQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'url', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'url', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder urlContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'url', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'url', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder urlMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'url', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'url', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder urlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'url', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'url', value: ''), + ); }); } QueryBuilder urlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'url', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'url', value: ''), + ); }); } } @@ -1441,7 +2287,8 @@ extension ChapterQueryObject extension ChapterQueryLinks on QueryBuilder { QueryBuilder manga( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.link(q, r'manga'); }); @@ -1479,6 +2326,42 @@ extension ChapterQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByDescription() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.asc); + }); + } + + QueryBuilder sortByDescriptionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.desc); + }); + } + + QueryBuilder sortByDownloadSize() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'downloadSize', Sort.asc); + }); + } + + QueryBuilder sortByDownloadSizeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'downloadSize', Sort.desc); + }); + } + + QueryBuilder sortByDuration() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'duration', Sort.asc); + }); + } + + QueryBuilder sortByDurationDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'duration', Sort.desc); + }); + } + QueryBuilder sortByIsBookmarked() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'isBookmarked', Sort.asc); @@ -1491,6 +2374,18 @@ extension ChapterQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByIsFiller() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isFiller', Sort.asc); + }); + } + + QueryBuilder sortByIsFillerDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isFiller', Sort.desc); + }); + } + QueryBuilder sortByIsRead() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'isRead', Sort.asc); @@ -1551,6 +2446,18 @@ extension ChapterQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByThumbnailUrl() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'thumbnailUrl', Sort.asc); + }); + } + + QueryBuilder sortByThumbnailUrlDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'thumbnailUrl', Sort.desc); + }); + } + QueryBuilder sortByUpdatedAt() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'updatedAt', Sort.asc); @@ -1602,6 +2509,42 @@ extension ChapterQuerySortThenBy }); } + QueryBuilder thenByDescription() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.asc); + }); + } + + QueryBuilder thenByDescriptionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'description', Sort.desc); + }); + } + + QueryBuilder thenByDownloadSize() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'downloadSize', Sort.asc); + }); + } + + QueryBuilder thenByDownloadSizeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'downloadSize', Sort.desc); + }); + } + + QueryBuilder thenByDuration() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'duration', Sort.asc); + }); + } + + QueryBuilder thenByDurationDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'duration', Sort.desc); + }); + } + QueryBuilder thenById() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'id', Sort.asc); @@ -1626,6 +2569,18 @@ extension ChapterQuerySortThenBy }); } + QueryBuilder thenByIsFiller() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isFiller', Sort.asc); + }); + } + + QueryBuilder thenByIsFillerDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isFiller', Sort.desc); + }); + } + QueryBuilder thenByIsRead() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'isRead', Sort.asc); @@ -1686,6 +2641,18 @@ extension ChapterQuerySortThenBy }); } + QueryBuilder thenByThumbnailUrl() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'thumbnailUrl', Sort.asc); + }); + } + + QueryBuilder thenByThumbnailUrlDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'thumbnailUrl', Sort.desc); + }); + } + QueryBuilder thenByUpdatedAt() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'updatedAt', Sort.asc); @@ -1713,34 +2680,67 @@ extension ChapterQuerySortThenBy extension ChapterQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByArchivePath( - {bool caseSensitive = true}) { + QueryBuilder distinctByArchivePath({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'archivePath', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByDateUpload( - {bool caseSensitive = true}) { + QueryBuilder distinctByDateUpload({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'dateUpload', caseSensitive: caseSensitive); }); } + QueryBuilder distinctByDescription({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'description', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByDownloadSize({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'downloadSize', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByDuration({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'duration', caseSensitive: caseSensitive); + }); + } + QueryBuilder distinctByIsBookmarked() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'isBookmarked'); }); } + QueryBuilder distinctByIsFiller() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'isFiller'); + }); + } + QueryBuilder distinctByIsRead() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'isRead'); }); } - QueryBuilder distinctByLastPageRead( - {bool caseSensitive = true}) { + QueryBuilder distinctByLastPageRead({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'lastPageRead', caseSensitive: caseSensitive); }); @@ -1752,28 +2752,39 @@ extension ChapterQueryWhereDistinct }); } - QueryBuilder distinctByName( - {bool caseSensitive = true}) { + QueryBuilder distinctByName({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'name', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByScanlator( - {bool caseSensitive = true}) { + QueryBuilder distinctByScanlator({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'scanlator', caseSensitive: caseSensitive); }); } + QueryBuilder distinctByThumbnailUrl({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'thumbnailUrl', caseSensitive: caseSensitive); + }); + } + QueryBuilder distinctByUpdatedAt() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'updatedAt'); }); } - QueryBuilder distinctByUrl( - {bool caseSensitive = true}) { + QueryBuilder distinctByUrl({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'url', caseSensitive: caseSensitive); }); @@ -1800,12 +2811,36 @@ extension ChapterQueryProperty }); } + QueryBuilder descriptionProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'description'); + }); + } + + QueryBuilder downloadSizeProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'downloadSize'); + }); + } + + QueryBuilder durationProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'duration'); + }); + } + QueryBuilder isBookmarkedProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'isBookmarked'); }); } + QueryBuilder isFillerProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'isFiller'); + }); + } + QueryBuilder isReadProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'isRead'); @@ -1836,6 +2871,12 @@ extension ChapterQueryProperty }); } + QueryBuilder thumbnailUrlProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'thumbnailUrl'); + }); + } + QueryBuilder updatedAtProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'updatedAt'); diff --git a/lib/models/custom_button.dart b/lib/models/custom_button.dart new file mode 100644 index 00000000..b0bd3873 --- /dev/null +++ b/lib/models/custom_button.dart @@ -0,0 +1,95 @@ +import 'package:isar/isar.dart'; +part 'custom_button.g.dart'; + +@collection +@Name("CustomButton") +class CustomButton { + Id? id; + + String? title; + + String? codePress; + + String? codeLongPress; + + String? codeStartup; + + bool? isFavourite; + + int? pos; + + int? updatedAt; + + CustomButton({ + this.id = Isar.autoIncrement, + required this.title, + required this.codePress, + this.codeLongPress = "", + this.codeStartup = "", + this.isFavourite = false, + required this.pos, + this.updatedAt = 0, + }); + + String getButtonStartup(int primaryId) { + final isPrimary = primaryId == id ? "true" : "false"; + return codeStartup + ?.replaceAll("\$id", "$id") + .replaceAll("\$isPrimary", isPrimary) ?? + ""; + } + + String getButtonPress(int primaryId) { + final isPrimary = primaryId == id ? "true" : "false"; + return codePress + ?.replaceAll("\$id", "$id") + .replaceAll("\$isPrimary", isPrimary) ?? + ""; + } + + String getButtonLongPress(int primaryId) { + final isPrimary = primaryId == id ? "true" : "false"; + return codeLongPress + ?.replaceAll("\$id", "$id") + .replaceAll("\$isPrimary", isPrimary) ?? + ""; + } + + CustomButton.fromJson(Map json) { + id = json['id']; + title = json['title']; + codePress = json['codePress']; + codeLongPress = json['codeLongPress']; + codeStartup = json['codeStartup']; + isFavourite = json['isFavourite']; + pos = json['pos']; + updatedAt = json['updatedAt']; + } + + Map toJson() => { + 'id': id, + 'title': title, + 'codePress': codePress, + 'codeLongPress': codeLongPress, + 'codeStartup': codeStartup, + 'isFavourite': isFavourite, + 'pos': pos, + 'updatedAt': updatedAt ?? 0, + }; +} + +class ActiveCustomButton { + String currentTitle; + bool visible; + CustomButton button; + Function() onPress; + Function() onLongPress; + + ActiveCustomButton({ + required this.currentTitle, + required this.visible, + required this.button, + required this.onPress, + required this.onLongPress, + }); +} diff --git a/lib/models/custom_button.g.dart b/lib/models/custom_button.g.dart new file mode 100644 index 00000000..37b81a20 --- /dev/null +++ b/lib/models/custom_button.g.dart @@ -0,0 +1,1454 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'custom_button.dart'; + +// ************************************************************************** +// IsarCollectionGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +extension GetCustomButtonCollection on Isar { + IsarCollection get customButtons => this.collection(); +} + +const CustomButtonSchema = CollectionSchema( + name: r'CustomButton', + id: 3146166780828864477, + properties: { + r'codeLongPress': PropertySchema( + id: 0, + name: r'codeLongPress', + type: IsarType.string, + ), + r'codePress': PropertySchema( + id: 1, + name: r'codePress', + type: IsarType.string, + ), + r'codeStartup': PropertySchema( + id: 2, + name: r'codeStartup', + type: IsarType.string, + ), + r'isFavourite': PropertySchema( + id: 3, + name: r'isFavourite', + type: IsarType.bool, + ), + r'pos': PropertySchema(id: 4, name: r'pos', type: IsarType.long), + r'title': PropertySchema(id: 5, name: r'title', type: IsarType.string), + r'updatedAt': PropertySchema( + id: 6, + name: r'updatedAt', + type: IsarType.long, + ), + }, + + estimateSize: _customButtonEstimateSize, + serialize: _customButtonSerialize, + deserialize: _customButtonDeserialize, + deserializeProp: _customButtonDeserializeProp, + idName: r'id', + indexes: {}, + links: {}, + embeddedSchemas: {}, + + getId: _customButtonGetId, + getLinks: _customButtonGetLinks, + attach: _customButtonAttach, + version: '3.1.0+1', +); + +int _customButtonEstimateSize( + CustomButton object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.codeLongPress; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.codePress; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.codeStartup; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + { + final value = object.title; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + return bytesCount; +} + +void _customButtonSerialize( + CustomButton object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeString(offsets[0], object.codeLongPress); + writer.writeString(offsets[1], object.codePress); + writer.writeString(offsets[2], object.codeStartup); + writer.writeBool(offsets[3], object.isFavourite); + writer.writeLong(offsets[4], object.pos); + writer.writeString(offsets[5], object.title); + writer.writeLong(offsets[6], object.updatedAt); +} + +CustomButton _customButtonDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = CustomButton( + codeLongPress: reader.readStringOrNull(offsets[0]), + codePress: reader.readStringOrNull(offsets[1]), + codeStartup: reader.readStringOrNull(offsets[2]), + id: id, + isFavourite: reader.readBoolOrNull(offsets[3]), + pos: reader.readLongOrNull(offsets[4]), + title: reader.readStringOrNull(offsets[5]), + updatedAt: reader.readLongOrNull(offsets[6]), + ); + return object; +} + +P _customButtonDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readStringOrNull(offset)) as P; + case 1: + return (reader.readStringOrNull(offset)) as P; + case 2: + return (reader.readStringOrNull(offset)) as P; + case 3: + return (reader.readBoolOrNull(offset)) as P; + case 4: + return (reader.readLongOrNull(offset)) as P; + case 5: + return (reader.readStringOrNull(offset)) as P; + case 6: + return (reader.readLongOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _customButtonGetId(CustomButton object) { + return object.id ?? Isar.autoIncrement; +} + +List> _customButtonGetLinks(CustomButton object) { + return []; +} + +void _customButtonAttach( + IsarCollection col, + Id id, + CustomButton object, +) { + object.id = id; +} + +extension CustomButtonQueryWhereSort + on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension CustomButtonQueryWhere + on QueryBuilder { + QueryBuilder idEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); + }); + } + + QueryBuilder idNotEqualTo( + Id id, + ) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); + } + + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder idBetween( + Id lowerId, + Id upperId, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); + }); + } +} + +extension CustomButtonQueryFilter + on QueryBuilder { + QueryBuilder + codeLongPressIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'codeLongPress'), + ); + }); + } + + QueryBuilder + codeLongPressIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'codeLongPress'), + ); + }); + } + + QueryBuilder + codeLongPressEqualTo(String? value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'codeLongPress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeLongPressGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'codeLongPress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeLongPressLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'codeLongPress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeLongPressBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'codeLongPress', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeLongPressStartsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'codeLongPress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeLongPressEndsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'codeLongPress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeLongPressContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'codeLongPress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeLongPressMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'codeLongPress', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeLongPressIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'codeLongPress', value: ''), + ); + }); + } + + QueryBuilder + codeLongPressIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'codeLongPress', value: ''), + ); + }); + } + + QueryBuilder + codePressIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'codePress'), + ); + }); + } + + QueryBuilder + codePressIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'codePress'), + ); + }); + } + + QueryBuilder + codePressEqualTo(String? value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'codePress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codePressGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'codePress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codePressLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'codePress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codePressBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'codePress', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codePressStartsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'codePress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codePressEndsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'codePress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codePressContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'codePress', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codePressMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'codePress', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codePressIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'codePress', value: ''), + ); + }); + } + + QueryBuilder + codePressIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'codePress', value: ''), + ); + }); + } + + QueryBuilder + codeStartupIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'codeStartup'), + ); + }); + } + + QueryBuilder + codeStartupIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'codeStartup'), + ); + }); + } + + QueryBuilder + codeStartupEqualTo(String? value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'codeStartup', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeStartupGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'codeStartup', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeStartupLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'codeStartup', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeStartupBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'codeStartup', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeStartupStartsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'codeStartup', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeStartupEndsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'codeStartup', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeStartupContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'codeStartup', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeStartupMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'codeStartup', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + codeStartupIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'codeStartup', value: ''), + ); + }); + } + + QueryBuilder + codeStartupIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'codeStartup', value: ''), + ); + }); + } + + QueryBuilder idIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); + }); + } + + QueryBuilder + idIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); + }); + } + + QueryBuilder idEqualTo( + Id? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); + }); + } + + QueryBuilder idGreaterThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); + }); + } + + QueryBuilder idLessThan( + Id? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); + }); + } + + QueryBuilder idBetween( + Id? lower, + Id? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } + + QueryBuilder + isFavouriteIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isFavourite'), + ); + }); + } + + QueryBuilder + isFavouriteIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isFavourite'), + ); + }); + } + + QueryBuilder + isFavouriteEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isFavourite', value: value), + ); + }); + } + + QueryBuilder posIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'pos'), + ); + }); + } + + QueryBuilder + posIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'pos'), + ); + }); + } + + QueryBuilder posEqualTo( + int? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'pos', value: value), + ); + }); + } + + QueryBuilder + posGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'pos', + value: value, + ), + ); + }); + } + + QueryBuilder posLessThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'pos', + value: value, + ), + ); + }); + } + + QueryBuilder posBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'pos', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } + + QueryBuilder + titleIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'title'), + ); + }); + } + + QueryBuilder + titleIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'title'), + ); + }); + } + + QueryBuilder titleEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + titleGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder titleLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder titleBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'title', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + titleStartsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder titleEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder titleContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder titleMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'title', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + titleIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'title', value: ''), + ); + }); + } + + QueryBuilder + titleIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'title', value: ''), + ); + }); + } + + QueryBuilder + updatedAtIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); + }); + } + + QueryBuilder + updatedAtIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); + }); + } + + QueryBuilder + updatedAtEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); + }); + } + + QueryBuilder + updatedAtGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); + }); + } + + QueryBuilder + updatedAtLessThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); + }); + } + + QueryBuilder + updatedAtBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } +} + +extension CustomButtonQueryObject + on QueryBuilder {} + +extension CustomButtonQueryLinks + on QueryBuilder {} + +extension CustomButtonQuerySortBy + on QueryBuilder { + QueryBuilder sortByCodeLongPress() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codeLongPress', Sort.asc); + }); + } + + QueryBuilder + sortByCodeLongPressDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codeLongPress', Sort.desc); + }); + } + + QueryBuilder sortByCodePress() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codePress', Sort.asc); + }); + } + + QueryBuilder sortByCodePressDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codePress', Sort.desc); + }); + } + + QueryBuilder sortByCodeStartup() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codeStartup', Sort.asc); + }); + } + + QueryBuilder + sortByCodeStartupDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codeStartup', Sort.desc); + }); + } + + QueryBuilder sortByIsFavourite() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isFavourite', Sort.asc); + }); + } + + QueryBuilder + sortByIsFavouriteDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isFavourite', Sort.desc); + }); + } + + QueryBuilder sortByPos() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'pos', Sort.asc); + }); + } + + QueryBuilder sortByPosDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'pos', Sort.desc); + }); + } + + QueryBuilder sortByTitle() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'title', Sort.asc); + }); + } + + QueryBuilder sortByTitleDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'title', Sort.desc); + }); + } + + QueryBuilder sortByUpdatedAt() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'updatedAt', Sort.asc); + }); + } + + QueryBuilder sortByUpdatedAtDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'updatedAt', Sort.desc); + }); + } +} + +extension CustomButtonQuerySortThenBy + on QueryBuilder { + QueryBuilder thenByCodeLongPress() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codeLongPress', Sort.asc); + }); + } + + QueryBuilder + thenByCodeLongPressDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codeLongPress', Sort.desc); + }); + } + + QueryBuilder thenByCodePress() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codePress', Sort.asc); + }); + } + + QueryBuilder thenByCodePressDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codePress', Sort.desc); + }); + } + + QueryBuilder thenByCodeStartup() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codeStartup', Sort.asc); + }); + } + + QueryBuilder + thenByCodeStartupDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'codeStartup', Sort.desc); + }); + } + + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder thenByIsFavourite() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isFavourite', Sort.asc); + }); + } + + QueryBuilder + thenByIsFavouriteDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'isFavourite', Sort.desc); + }); + } + + QueryBuilder thenByPos() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'pos', Sort.asc); + }); + } + + QueryBuilder thenByPosDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'pos', Sort.desc); + }); + } + + QueryBuilder thenByTitle() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'title', Sort.asc); + }); + } + + QueryBuilder thenByTitleDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'title', Sort.desc); + }); + } + + QueryBuilder thenByUpdatedAt() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'updatedAt', Sort.asc); + }); + } + + QueryBuilder thenByUpdatedAtDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'updatedAt', Sort.desc); + }); + } +} + +extension CustomButtonQueryWhereDistinct + on QueryBuilder { + QueryBuilder distinctByCodeLongPress({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy( + r'codeLongPress', + caseSensitive: caseSensitive, + ); + }); + } + + QueryBuilder distinctByCodePress({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'codePress', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByCodeStartup({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'codeStartup', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByIsFavourite() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'isFavourite'); + }); + } + + QueryBuilder distinctByPos() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'pos'); + }); + } + + QueryBuilder distinctByTitle({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'title', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByUpdatedAt() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'updatedAt'); + }); + } +} + +extension CustomButtonQueryProperty + on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder + codeLongPressProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'codeLongPress'); + }); + } + + QueryBuilder codePressProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'codePress'); + }); + } + + QueryBuilder codeStartupProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'codeStartup'); + }); + } + + QueryBuilder isFavouriteProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'isFavourite'); + }); + } + + QueryBuilder posProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'pos'); + }); + } + + QueryBuilder titleProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'title'); + }); + } + + QueryBuilder updatedAtProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'updatedAt'); + }); + } +} diff --git a/lib/models/download.g.dart b/lib/models/download.g.dart index 1ad51ed3..376e2df3 100644 --- a/lib/models/download.g.dart +++ b/lib/models/download.g.dart @@ -17,11 +17,7 @@ const DownloadSchema = CollectionSchema( name: r'Download', id: 5905484153212786579, properties: { - r'failed': PropertySchema( - id: 0, - name: r'failed', - type: IsarType.long, - ), + r'failed': PropertySchema(id: 0, name: r'failed', type: IsarType.long), r'isDownload': PropertySchema( id: 1, name: r'isDownload', @@ -37,12 +33,9 @@ const DownloadSchema = CollectionSchema( name: r'succeeded', type: IsarType.long, ), - r'total': PropertySchema( - id: 4, - name: r'total', - type: IsarType.long, - ) + r'total': PropertySchema(id: 4, name: r'total', type: IsarType.long), }, + estimateSize: _downloadEstimateSize, serialize: _downloadSerialize, deserialize: _downloadDeserialize, @@ -55,9 +48,10 @@ const DownloadSchema = CollectionSchema( name: r'chapter', target: r'Chapter', single: true, - ) + ), }, embeddedSchemas: {}, + getId: _downloadGetId, getLinks: _downloadGetLinks, attach: _downloadAttach, @@ -149,10 +143,7 @@ extension DownloadQueryWhereSort on QueryBuilder { extension DownloadQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -178,8 +169,10 @@ extension DownloadQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -187,8 +180,10 @@ extension DownloadQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -203,12 +198,14 @@ extension DownloadQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -217,27 +214,27 @@ extension DownloadQueryFilter on QueryBuilder { QueryBuilder failedIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'failed', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'failed'), + ); }); } QueryBuilder failedIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'failed', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'failed'), + ); }); } QueryBuilder failedEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'failed', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'failed', value: value), + ); }); } @@ -246,11 +243,13 @@ extension DownloadQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'failed', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'failed', + value: value, + ), + ); }); } @@ -259,11 +258,13 @@ extension DownloadQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'failed', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'failed', + value: value, + ), + ); }); } @@ -274,38 +275,39 @@ extension DownloadQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'failed', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'failed', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -314,11 +316,13 @@ extension DownloadQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -327,11 +331,13 @@ extension DownloadQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -342,94 +348,95 @@ extension DownloadQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder isDownloadIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isDownload', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isDownload'), + ); }); } QueryBuilder - isDownloadIsNotNull() { + isDownloadIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isDownload', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isDownload'), + ); }); } QueryBuilder isDownloadEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isDownload', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isDownload', value: value), + ); }); } QueryBuilder - isStartDownloadIsNull() { + isStartDownloadIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isStartDownload', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isStartDownload'), + ); }); } QueryBuilder - isStartDownloadIsNotNull() { + isStartDownloadIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isStartDownload', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isStartDownload'), + ); }); } QueryBuilder - isStartDownloadEqualTo(bool? value) { + isStartDownloadEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isStartDownload', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isStartDownload', value: value), + ); }); } QueryBuilder succeededIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'succeeded', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'succeeded'), + ); }); } QueryBuilder succeededIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'succeeded', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'succeeded'), + ); }); } QueryBuilder succeededEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'succeeded', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'succeeded', value: value), + ); }); } @@ -438,11 +445,13 @@ extension DownloadQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'succeeded', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'succeeded', + value: value, + ), + ); }); } @@ -451,11 +460,13 @@ extension DownloadQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'succeeded', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'succeeded', + value: value, + ), + ); }); } @@ -466,39 +477,41 @@ extension DownloadQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'succeeded', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'succeeded', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder totalIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'total', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'total'), + ); }); } QueryBuilder totalIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'total', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'total'), + ); }); } QueryBuilder totalEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'total', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'total', value: value), + ); }); } @@ -507,11 +520,13 @@ extension DownloadQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'total', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'total', + value: value, + ), + ); }); } @@ -520,11 +535,13 @@ extension DownloadQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'total', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'total', + value: value, + ), + ); }); } @@ -535,13 +552,15 @@ extension DownloadQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'total', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'total', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -552,7 +571,8 @@ extension DownloadQueryObject extension DownloadQueryLinks on QueryBuilder { QueryBuilder chapter( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.link(q, r'chapter'); }); diff --git a/lib/models/history.g.dart b/lib/models/history.g.dart index 1ac47242..2fde9356 100644 --- a/lib/models/history.g.dart +++ b/lib/models/history.g.dart @@ -22,33 +22,22 @@ const HistorySchema = CollectionSchema( name: r'chapterId', type: IsarType.long, ), - r'date': PropertySchema( - id: 1, - name: r'date', - type: IsarType.string, - ), - r'isManga': PropertySchema( - id: 2, - name: r'isManga', - type: IsarType.bool, - ), + r'date': PropertySchema(id: 1, name: r'date', type: IsarType.string), + r'isManga': PropertySchema(id: 2, name: r'isManga', type: IsarType.bool), r'itemType': PropertySchema( id: 3, name: r'itemType', type: IsarType.byte, enumMap: _HistoryitemTypeEnumValueMap, ), - r'mangaId': PropertySchema( - id: 4, - name: r'mangaId', - type: IsarType.long, - ), + r'mangaId': PropertySchema(id: 4, name: r'mangaId', type: IsarType.long), r'updatedAt': PropertySchema( id: 5, name: r'updatedAt', type: IsarType.long, - ) + ), }, + estimateSize: _historyEstimateSize, serialize: _historySerialize, deserialize: _historyDeserialize, @@ -61,9 +50,10 @@ const HistorySchema = CollectionSchema( name: r'chapter', target: r'Chapter', single: true, - ) + ), }, embeddedSchemas: {}, + getId: _historyGetId, getLinks: _historyGetLinks, attach: _historyAttach, @@ -110,7 +100,8 @@ History _historyDeserialize( date: reader.readStringOrNull(offsets[1]), id: id, isManga: reader.readBoolOrNull(offsets[2]), - itemType: _HistoryitemTypeValueEnumMap[reader.readByteOrNull(offsets[3])] ?? + itemType: + _HistoryitemTypeValueEnumMap[reader.readByteOrNull(offsets[3])] ?? ItemType.manga, mangaId: reader.readLongOrNull(offsets[4]), updatedAt: reader.readLongOrNull(offsets[5]), @@ -133,7 +124,8 @@ P _historyDeserializeProp

( return (reader.readBoolOrNull(offset)) as P; case 3: return (_HistoryitemTypeValueEnumMap[reader.readByteOrNull(offset)] ?? - ItemType.manga) as P; + ItemType.manga) + as P; case 4: return (reader.readLongOrNull(offset)) as P; case 5: @@ -143,11 +135,7 @@ P _historyDeserializeProp

( } } -const _HistoryitemTypeEnumValueMap = { - 'manga': 0, - 'anime': 1, - 'novel': 2, -}; +const _HistoryitemTypeEnumValueMap = {'manga': 0, 'anime': 1, 'novel': 2}; const _HistoryitemTypeValueEnumMap = { 0: ItemType.manga, 1: ItemType.anime, @@ -178,10 +166,7 @@ extension HistoryQueryWhereSort on QueryBuilder { extension HistoryQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -207,8 +192,10 @@ extension HistoryQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -216,8 +203,10 @@ extension HistoryQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -232,12 +221,14 @@ extension HistoryQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -246,27 +237,27 @@ extension HistoryQueryFilter on QueryBuilder { QueryBuilder chapterIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterId'), + ); }); } QueryBuilder chapterIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'chapterId'), + ); }); } QueryBuilder chapterIdEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'chapterId', value: value), + ); }); } @@ -275,11 +266,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'chapterId', + value: value, + ), + ); }); } @@ -288,11 +281,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'chapterId', + value: value, + ), + ); }); } @@ -303,29 +298,31 @@ extension HistoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'chapterId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'chapterId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder dateIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'date', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'date'), + ); }); } QueryBuilder dateIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'date', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'date'), + ); }); } @@ -334,11 +331,13 @@ extension HistoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -348,12 +347,14 @@ extension HistoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -363,12 +364,14 @@ extension HistoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -380,14 +383,16 @@ extension HistoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'date', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'date', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -396,11 +401,13 @@ extension HistoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -409,78 +416,83 @@ extension HistoryQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'date', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'date', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'date', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'date', value: ''), + ); }); } QueryBuilder dateIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'date', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'date', value: ''), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -489,11 +501,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -502,11 +516,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -517,49 +533,51 @@ extension HistoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder isMangaIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isManga', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isManga'), + ); }); } QueryBuilder isMangaIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isManga', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isManga'), + ); }); } QueryBuilder isMangaEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isManga', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isManga', value: value), + ); }); } QueryBuilder itemTypeEqualTo( - ItemType value) { + ItemType value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'itemType', value: value), + ); }); } @@ -568,11 +586,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'itemType', + value: value, + ), + ); }); } @@ -581,11 +601,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'itemType', + value: value, + ), + ); }); } @@ -596,39 +618,41 @@ extension HistoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'itemType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'itemType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } @@ -637,11 +661,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -650,11 +676,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -665,39 +693,41 @@ extension HistoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder updatedAtIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); }); } @@ -706,11 +736,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -719,11 +751,13 @@ extension HistoryQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -734,13 +768,15 @@ extension HistoryQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'updatedAt', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -751,7 +787,8 @@ extension HistoryQueryObject extension HistoryQueryLinks on QueryBuilder { QueryBuilder chapter( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.link(q, r'chapter'); }); @@ -933,8 +970,9 @@ extension HistoryQueryWhereDistinct }); } - QueryBuilder distinctByDate( - {bool caseSensitive = true}) { + QueryBuilder distinctByDate({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'date', caseSensitive: caseSensitive); }); diff --git a/lib/models/manga.dart b/lib/models/manga.dart index 922000b9..2ba33566 100644 --- a/lib/models/manga.dart +++ b/lib/models/manga.dart @@ -49,8 +49,13 @@ class Manga { String? customCoverFromTracker; + /// only update X days after `lastUpdate` + int? smartUpdateDays; + int? updatedAt; + int? sourceId; + @Backlink(to: "manga") final chapters = IsarLinks(); @@ -67,6 +72,7 @@ class Manga { required this.name, required this.status, required this.description, + required this.sourceId, this.isManga, this.itemType = ItemType.manga, this.dateAdded, @@ -76,6 +82,7 @@ class Manga { this.isLocalArchive = false, this.customCoverImage, this.customCoverFromTracker, + this.smartUpdateDays, this.updatedAt = 0, }); @@ -101,7 +108,9 @@ class Manga { source = json['source']; status = Status.values[json['status']]; customCoverFromTracker = json['customCoverFromTracker']; + smartUpdateDays = json['smartUpdateDays']; updatedAt = json['updatedAt']; + sourceId = json['sourceId']; } Map toJson() => { @@ -125,7 +134,9 @@ class Manga { 'source': source, 'status': status.index, 'customCoverFromTracker': customCoverFromTracker, + 'smartUpdateDays': smartUpdateDays, 'updatedAt': updatedAt ?? 0, + 'sourceId': sourceId, }; } diff --git a/lib/models/manga.g.dart b/lib/models/manga.g.dart index 5f9fad4f..c8d0ce3c 100644 --- a/lib/models/manga.g.dart +++ b/lib/models/manga.g.dart @@ -17,16 +17,8 @@ const MangaSchema = CollectionSchema( name: r'Manga', id: -5643034226035087553, properties: { - r'artist': PropertySchema( - id: 0, - name: r'artist', - type: IsarType.string, - ), - r'author': PropertySchema( - id: 1, - name: r'author', - type: IsarType.string, - ), + r'artist': PropertySchema(id: 0, name: r'artist', type: IsarType.string), + r'author': PropertySchema(id: 1, name: r'author', type: IsarType.string), r'categories': PropertySchema( id: 2, name: r'categories', @@ -52,16 +44,8 @@ const MangaSchema = CollectionSchema( name: r'description', type: IsarType.string, ), - r'favorite': PropertySchema( - id: 7, - name: r'favorite', - type: IsarType.bool, - ), - r'genre': PropertySchema( - id: 8, - name: r'genre', - type: IsarType.stringList, - ), + r'favorite': PropertySchema(id: 7, name: r'favorite', type: IsarType.bool), + r'genre': PropertySchema(id: 8, name: r'genre', type: IsarType.stringList), r'imageUrl': PropertySchema( id: 9, name: r'imageUrl', @@ -72,59 +56,42 @@ const MangaSchema = CollectionSchema( name: r'isLocalArchive', type: IsarType.bool, ), - r'isManga': PropertySchema( - id: 11, - name: r'isManga', - type: IsarType.bool, - ), + r'isManga': PropertySchema(id: 11, name: r'isManga', type: IsarType.bool), r'itemType': PropertySchema( id: 12, name: r'itemType', type: IsarType.byte, enumMap: _MangaitemTypeEnumValueMap, ), - r'lang': PropertySchema( - id: 13, - name: r'lang', - type: IsarType.string, - ), - r'lastRead': PropertySchema( - id: 14, - name: r'lastRead', - type: IsarType.long, - ), + r'lang': PropertySchema(id: 13, name: r'lang', type: IsarType.string), + r'lastRead': PropertySchema(id: 14, name: r'lastRead', type: IsarType.long), r'lastUpdate': PropertySchema( id: 15, name: r'lastUpdate', type: IsarType.long, ), - r'link': PropertySchema( - id: 16, - name: r'link', - type: IsarType.string, - ), - r'name': PropertySchema( - id: 17, - name: r'name', - type: IsarType.string, - ), - r'source': PropertySchema( + r'link': PropertySchema(id: 16, name: r'link', type: IsarType.string), + r'name': PropertySchema(id: 17, name: r'name', type: IsarType.string), + r'smartUpdateDays': PropertySchema( id: 18, - name: r'source', - type: IsarType.string, + name: r'smartUpdateDays', + type: IsarType.long, ), + r'source': PropertySchema(id: 19, name: r'source', type: IsarType.string), + r'sourceId': PropertySchema(id: 20, name: r'sourceId', type: IsarType.long), r'status': PropertySchema( - id: 19, + id: 21, name: r'status', type: IsarType.byte, enumMap: _MangastatusEnumValueMap, ), r'updatedAt': PropertySchema( - id: 20, + id: 22, name: r'updatedAt', type: IsarType.long, - ) + ), }, + estimateSize: _mangaEstimateSize, serialize: _mangaSerialize, deserialize: _mangaDeserialize, @@ -138,9 +105,10 @@ const MangaSchema = CollectionSchema( target: r'Chapter', single: false, linkName: r'manga', - ) + ), }, embeddedSchemas: {}, + getId: _mangaGetId, getLinks: _mangaGetLinks, attach: _mangaAttach, @@ -258,9 +226,11 @@ void _mangaSerialize( writer.writeLong(offsets[15], object.lastUpdate); writer.writeString(offsets[16], object.link); writer.writeString(offsets[17], object.name); - writer.writeString(offsets[18], object.source); - writer.writeByte(offsets[19], object.status.index); - writer.writeLong(offsets[20], object.updatedAt); + writer.writeLong(offsets[18], object.smartUpdateDays); + writer.writeString(offsets[19], object.source); + writer.writeLong(offsets[20], object.sourceId); + writer.writeByte(offsets[21], object.status.index); + writer.writeLong(offsets[22], object.updatedAt); } Manga _mangaDeserialize( @@ -283,17 +253,21 @@ Manga _mangaDeserialize( imageUrl: reader.readStringOrNull(offsets[9]), isLocalArchive: reader.readBoolOrNull(offsets[10]), isManga: reader.readBoolOrNull(offsets[11]), - itemType: _MangaitemTypeValueEnumMap[reader.readByteOrNull(offsets[12])] ?? + itemType: + _MangaitemTypeValueEnumMap[reader.readByteOrNull(offsets[12])] ?? ItemType.manga, lang: reader.readStringOrNull(offsets[13]), lastRead: reader.readLongOrNull(offsets[14]), lastUpdate: reader.readLongOrNull(offsets[15]), link: reader.readStringOrNull(offsets[16]), name: reader.readStringOrNull(offsets[17]), - source: reader.readStringOrNull(offsets[18]), - status: _MangastatusValueEnumMap[reader.readByteOrNull(offsets[19])] ?? + smartUpdateDays: reader.readLongOrNull(offsets[18]), + source: reader.readStringOrNull(offsets[19]), + sourceId: reader.readLongOrNull(offsets[20]), + status: + _MangastatusValueEnumMap[reader.readByteOrNull(offsets[21])] ?? Status.ongoing, - updatedAt: reader.readLongOrNull(offsets[20]), + updatedAt: reader.readLongOrNull(offsets[22]), ); return object; } @@ -331,7 +305,8 @@ P _mangaDeserializeProp

( return (reader.readBoolOrNull(offset)) as P; case 12: return (_MangaitemTypeValueEnumMap[reader.readByteOrNull(offset)] ?? - ItemType.manga) as P; + ItemType.manga) + as P; case 13: return (reader.readStringOrNull(offset)) as P; case 14: @@ -343,22 +318,23 @@ P _mangaDeserializeProp

( case 17: return (reader.readStringOrNull(offset)) as P; case 18: - return (reader.readStringOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 19: - return (_MangastatusValueEnumMap[reader.readByteOrNull(offset)] ?? - Status.ongoing) as P; + return (reader.readStringOrNull(offset)) as P; case 20: return (reader.readLongOrNull(offset)) as P; + case 21: + return (_MangastatusValueEnumMap[reader.readByteOrNull(offset)] ?? + Status.ongoing) + as P; + case 22: + return (reader.readLongOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); } } -const _MangaitemTypeEnumValueMap = { - 'manga': 0, - 'anime': 1, - 'novel': 2, -}; +const _MangaitemTypeEnumValueMap = {'manga': 0, 'anime': 1, 'novel': 2}; const _MangaitemTypeValueEnumMap = { 0: ItemType.manga, 1: ItemType.anime, @@ -405,10 +381,7 @@ extension MangaQueryWhereSort on QueryBuilder { extension MangaQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -434,8 +407,10 @@ extension MangaQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -443,8 +418,10 @@ extension MangaQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -459,12 +436,14 @@ extension MangaQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -472,17 +451,17 @@ extension MangaQueryWhere on QueryBuilder { extension MangaQueryFilter on QueryBuilder { QueryBuilder artistIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'artist', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'artist'), + ); }); } QueryBuilder artistIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'artist', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'artist'), + ); }); } @@ -491,11 +470,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'artist', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'artist', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -505,12 +486,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'artist', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'artist', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -520,12 +503,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'artist', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'artist', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -537,14 +522,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'artist', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'artist', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -553,11 +540,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'artist', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'artist', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -566,68 +555,75 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'artist', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'artist', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder artistContains(String value, - {bool caseSensitive = true}) { + QueryBuilder artistContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'artist', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'artist', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder artistMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'artist', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'artist', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder artistIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'artist', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'artist', value: ''), + ); }); } QueryBuilder artistIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'artist', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'artist', value: ''), + ); }); } QueryBuilder authorIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'author', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'author'), + ); }); } QueryBuilder authorIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'author', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'author'), + ); }); } @@ -636,11 +632,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'author', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'author', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -650,12 +648,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'author', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'author', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -665,12 +665,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'author', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'author', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -682,14 +684,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'author', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'author', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -698,11 +702,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'author', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'author', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -711,92 +717,98 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'author', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'author', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder authorContains(String value, - {bool caseSensitive = true}) { + QueryBuilder authorContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'author', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'author', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder authorMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'author', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'author', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder authorIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'author', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'author', value: ''), + ); }); } QueryBuilder authorIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'author', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'author', value: ''), + ); }); } QueryBuilder categoriesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'categories', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'categories'), + ); }); } QueryBuilder categoriesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'categories', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'categories'), + ); }); } QueryBuilder categoriesElementEqualTo( - int value) { + int value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'categories', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'categories', value: value), + ); }); } QueryBuilder - categoriesElementGreaterThan( - int value, { - bool include = false, - }) { + categoriesElementGreaterThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'categories', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'categories', + value: value, + ), + ); }); } @@ -805,11 +817,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'categories', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'categories', + value: value, + ), + ); }); } @@ -820,50 +834,35 @@ extension MangaQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'categories', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'categories', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder categoriesLengthEqualTo( - int length) { + int length, + ) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'categories', - length, - true, - length, - true, - ); + return query.listLength(r'categories', length, true, length, true); }); } QueryBuilder categoriesIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'categories', - 0, - true, - 0, - true, - ); + return query.listLength(r'categories', 0, true, 0, true); }); } QueryBuilder categoriesIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'categories', - 0, - false, - 999999, - true, - ); + return query.listLength(r'categories', 0, false, 999999, true); }); } @@ -872,13 +871,7 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'categories', - 0, - true, - length, - include, - ); + return query.listLength(r'categories', 0, true, length, include); }); } @@ -887,13 +880,7 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'categories', - length, - include, - 999999, - true, - ); + return query.listLength(r'categories', length, include, 999999, true); }); } @@ -915,71 +902,74 @@ extension MangaQueryFilter on QueryBuilder { } QueryBuilder - customCoverFromTrackerIsNull() { + customCoverFromTrackerIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'customCoverFromTracker', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'customCoverFromTracker'), + ); }); } QueryBuilder - customCoverFromTrackerIsNotNull() { + customCoverFromTrackerIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'customCoverFromTracker', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'customCoverFromTracker'), + ); }); } QueryBuilder - customCoverFromTrackerEqualTo( - String? value, { - bool caseSensitive = true, - }) { + customCoverFromTrackerEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'customCoverFromTracker', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'customCoverFromTracker', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - customCoverFromTrackerGreaterThan( + customCoverFromTrackerGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'customCoverFromTracker', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'customCoverFromTracker', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - customCoverFromTrackerLessThan( + customCoverFromTrackerLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'customCoverFromTracker', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'customCoverFromTracker', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - customCoverFromTrackerBetween( + customCoverFromTrackerBetween( String? lower, String? upper, { bool includeLower = true, @@ -987,221 +977,193 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'customCoverFromTracker', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'customCoverFromTracker', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - customCoverFromTrackerStartsWith( - String value, { - bool caseSensitive = true, - }) { + customCoverFromTrackerStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'customCoverFromTracker', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'customCoverFromTracker', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - customCoverFromTrackerEndsWith( - String value, { - bool caseSensitive = true, - }) { + customCoverFromTrackerEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'customCoverFromTracker', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'customCoverFromTracker', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - customCoverFromTrackerContains(String value, - {bool caseSensitive = true}) { + customCoverFromTrackerContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'customCoverFromTracker', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'customCoverFromTracker', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - customCoverFromTrackerMatches(String pattern, - {bool caseSensitive = true}) { + customCoverFromTrackerMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'customCoverFromTracker', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'customCoverFromTracker', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - customCoverFromTrackerIsEmpty() { + customCoverFromTrackerIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'customCoverFromTracker', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'customCoverFromTracker', value: ''), + ); }); } QueryBuilder - customCoverFromTrackerIsNotEmpty() { + customCoverFromTrackerIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'customCoverFromTracker', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + property: r'customCoverFromTracker', + value: '', + ), + ); }); } QueryBuilder customCoverImageIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'customCoverImage', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'customCoverImage'), + ); }); } QueryBuilder - customCoverImageIsNotNull() { + customCoverImageIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'customCoverImage', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'customCoverImage'), + ); }); } QueryBuilder - customCoverImageElementEqualTo(int value) { + customCoverImageElementEqualTo(int value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'customCoverImage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'customCoverImage', value: value), + ); }); } QueryBuilder - customCoverImageElementGreaterThan( - int value, { - bool include = false, - }) { + customCoverImageElementGreaterThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'customCoverImage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'customCoverImage', + value: value, + ), + ); }); } QueryBuilder - customCoverImageElementLessThan( - int value, { - bool include = false, - }) { + customCoverImageElementLessThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'customCoverImage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'customCoverImage', + value: value, + ), + ); }); } QueryBuilder - customCoverImageElementBetween( + customCoverImageElementBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'customCoverImage', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'customCoverImage', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - customCoverImageLengthEqualTo(int length) { + customCoverImageLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'customCoverImage', - length, - true, - length, - true, - ); + return query.listLength(r'customCoverImage', length, true, length, true); }); } QueryBuilder customCoverImageIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'customCoverImage', - 0, - true, - 0, - true, - ); + return query.listLength(r'customCoverImage', 0, true, 0, true); }); } QueryBuilder - customCoverImageIsNotEmpty() { + customCoverImageIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'customCoverImage', - 0, - false, - 999999, - true, - ); + return query.listLength(r'customCoverImage', 0, false, 999999, true); }); } QueryBuilder - customCoverImageLengthLessThan( - int length, { - bool include = false, - }) { + customCoverImageLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'customCoverImage', - 0, - true, - length, - include, - ); + return query.listLength(r'customCoverImage', 0, true, length, include); }); } QueryBuilder - customCoverImageLengthGreaterThan( - int length, { - bool include = false, - }) { + customCoverImageLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'customCoverImage', @@ -1214,7 +1176,7 @@ extension MangaQueryFilter on QueryBuilder { } QueryBuilder - customCoverImageLengthBetween( + customCoverImageLengthBetween( int lower, int upper, { bool includeLower = true, @@ -1233,27 +1195,27 @@ extension MangaQueryFilter on QueryBuilder { QueryBuilder dateAddedIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'dateAdded', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'dateAdded'), + ); }); } QueryBuilder dateAddedIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'dateAdded', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'dateAdded'), + ); }); } QueryBuilder dateAddedEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateAdded', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'dateAdded', value: value), + ); }); } @@ -1262,11 +1224,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dateAdded', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'dateAdded', + value: value, + ), + ); }); } @@ -1275,11 +1239,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dateAdded', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'dateAdded', + value: value, + ), + ); }); } @@ -1290,29 +1256,31 @@ extension MangaQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'dateAdded', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'dateAdded', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder descriptionIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'description', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'description'), + ); }); } QueryBuilder descriptionIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'description', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'description'), + ); }); } @@ -1321,11 +1289,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'description', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1335,12 +1305,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'description', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1350,12 +1322,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'description', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1367,14 +1341,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'description', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'description', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1383,11 +1359,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'description', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1396,95 +1374,101 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'description', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder descriptionContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'description', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'description', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder descriptionMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'description', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'description', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder descriptionIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'description', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'description', value: ''), + ); }); } QueryBuilder descriptionIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'description', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'description', value: ''), + ); }); } QueryBuilder favoriteIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'favorite', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'favorite'), + ); }); } QueryBuilder favoriteIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'favorite', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'favorite'), + ); }); } QueryBuilder favoriteEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'favorite', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'favorite', value: value), + ); }); } QueryBuilder genreIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'genre', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'genre'), + ); }); } QueryBuilder genreIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'genre', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'genre'), + ); }); } @@ -1493,11 +1477,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'genre', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'genre', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1507,12 +1493,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'genre', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'genre', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1522,12 +1510,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'genre', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'genre', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1539,14 +1529,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'genre', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'genre', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1555,11 +1547,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'genre', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'genre', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1568,90 +1562,79 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'genre', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'genre', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder genreElementContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'genre', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'genre', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder genreElementMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'genre', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'genre', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder genreElementIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'genre', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'genre', value: ''), + ); }); } QueryBuilder genreElementIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'genre', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'genre', value: ''), + ); }); } QueryBuilder genreLengthEqualTo( - int length) { + int length, + ) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'genre', - length, - true, - length, - true, - ); + return query.listLength(r'genre', length, true, length, true); }); } QueryBuilder genreIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'genre', - 0, - true, - 0, - true, - ); + return query.listLength(r'genre', 0, true, 0, true); }); } QueryBuilder genreIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'genre', - 0, - false, - 999999, - true, - ); + return query.listLength(r'genre', 0, false, 999999, true); }); } @@ -1660,13 +1643,7 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'genre', - 0, - true, - length, - include, - ); + return query.listLength(r'genre', 0, true, length, include); }); } @@ -1675,13 +1652,7 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'genre', - length, - include, - 999999, - true, - ); + return query.listLength(r'genre', length, include, 999999, true); }); } @@ -1704,26 +1675,25 @@ extension MangaQueryFilter on QueryBuilder { QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -1732,11 +1702,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -1745,11 +1717,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -1760,29 +1734,31 @@ extension MangaQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder imageUrlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'imageUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'imageUrl'), + ); }); } QueryBuilder imageUrlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'imageUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'imageUrl'), + ); }); } @@ -1791,11 +1767,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'imageUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1805,12 +1783,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'imageUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1820,12 +1800,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'imageUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1837,14 +1819,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'imageUrl', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'imageUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1853,11 +1837,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'imageUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1866,115 +1852,121 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'imageUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder imageUrlContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'imageUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'imageUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder imageUrlMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'imageUrl', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'imageUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder imageUrlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'imageUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'imageUrl', value: ''), + ); }); } QueryBuilder imageUrlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'imageUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'imageUrl', value: ''), + ); }); } QueryBuilder isLocalArchiveIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isLocalArchive', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isLocalArchive'), + ); }); } QueryBuilder isLocalArchiveIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isLocalArchive', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isLocalArchive'), + ); }); } QueryBuilder isLocalArchiveEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isLocalArchive', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isLocalArchive', value: value), + ); }); } QueryBuilder isMangaIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isManga', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isManga'), + ); }); } QueryBuilder isMangaIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isManga', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isManga'), + ); }); } QueryBuilder isMangaEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isManga', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isManga', value: value), + ); }); } QueryBuilder itemTypeEqualTo( - ItemType value) { + ItemType value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'itemType', value: value), + ); }); } @@ -1983,11 +1975,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'itemType', + value: value, + ), + ); }); } @@ -1996,11 +1990,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'itemType', + value: value, + ), + ); }); } @@ -2011,29 +2007,31 @@ extension MangaQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'itemType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'itemType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder langIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lang', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lang'), + ); }); } QueryBuilder langIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lang', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lang'), + ); }); } @@ -2042,11 +2040,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2056,12 +2056,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2071,12 +2073,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2088,14 +2092,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lang', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lang', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2104,11 +2110,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2117,77 +2125,85 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder langContains(String value, - {bool caseSensitive = true}) { + QueryBuilder langContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder langMatches(String pattern, - {bool caseSensitive = true}) { + QueryBuilder langMatches( + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'lang', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'lang', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder langIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lang', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lang', value: ''), + ); }); } QueryBuilder langIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'lang', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'lang', value: ''), + ); }); } QueryBuilder lastReadIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastRead', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastRead'), + ); }); } QueryBuilder lastReadIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastRead', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lastRead'), + ); }); } QueryBuilder lastReadEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastRead', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lastRead', value: value), + ); }); } @@ -2196,11 +2212,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastRead', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lastRead', + value: value, + ), + ); }); } @@ -2209,11 +2227,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastRead', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lastRead', + value: value, + ), + ); }); } @@ -2224,39 +2244,41 @@ extension MangaQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lastRead', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lastRead', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder lastUpdateIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastUpdate', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastUpdate'), + ); }); } QueryBuilder lastUpdateIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastUpdate', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lastUpdate'), + ); }); } QueryBuilder lastUpdateEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastUpdate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lastUpdate', value: value), + ); }); } @@ -2265,11 +2287,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastUpdate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lastUpdate', + value: value, + ), + ); }); } @@ -2278,11 +2302,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastUpdate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lastUpdate', + value: value, + ), + ); }); } @@ -2293,29 +2319,31 @@ extension MangaQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lastUpdate', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lastUpdate', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder linkIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'link', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'link'), + ); }); } QueryBuilder linkIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'link', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'link'), + ); }); } @@ -2324,11 +2352,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'link', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'link', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2338,12 +2368,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'link', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'link', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2353,12 +2385,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'link', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'link', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2370,14 +2404,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'link', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'link', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2386,11 +2422,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'link', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'link', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2399,67 +2437,75 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'link', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'link', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder linkContains(String value, - {bool caseSensitive = true}) { + QueryBuilder linkContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'link', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'link', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder linkMatches(String pattern, - {bool caseSensitive = true}) { + QueryBuilder linkMatches( + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'link', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'link', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder linkIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'link', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'link', value: ''), + ); }); } QueryBuilder linkIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'link', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'link', value: ''), + ); }); } QueryBuilder nameIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'name'), + ); }); } QueryBuilder nameIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'name'), + ); }); } @@ -2468,11 +2514,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2482,12 +2530,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2497,12 +2547,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2514,14 +2566,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'name', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2530,11 +2584,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2543,67 +2599,150 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder nameContains(String value, - {bool caseSensitive = true}) { + QueryBuilder nameContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder nameMatches(String pattern, - {bool caseSensitive = true}) { + QueryBuilder nameMatches( + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'name', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'name', value: ''), + ); }); } QueryBuilder nameIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'name', value: ''), + ); + }); + } + + QueryBuilder smartUpdateDaysIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'smartUpdateDays'), + ); + }); + } + + QueryBuilder smartUpdateDaysIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'smartUpdateDays'), + ); + }); + } + + QueryBuilder smartUpdateDaysEqualTo( + int? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'smartUpdateDays', value: value), + ); + }); + } + + QueryBuilder smartUpdateDaysGreaterThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'smartUpdateDays', + value: value, + ), + ); + }); + } + + QueryBuilder smartUpdateDaysLessThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'smartUpdateDays', + value: value, + ), + ); + }); + } + + QueryBuilder smartUpdateDaysBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'smartUpdateDays', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder sourceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'source', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'source'), + ); }); } QueryBuilder sourceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'source', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'source'), + ); }); } @@ -2612,11 +2751,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'source', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'source', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2626,12 +2767,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'source', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'source', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2641,12 +2784,14 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'source', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'source', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2658,14 +2803,16 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'source', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'source', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2674,11 +2821,13 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'source', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'source', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2687,62 +2836,144 @@ extension MangaQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'source', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'source', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder sourceContains(String value, - {bool caseSensitive = true}) { + QueryBuilder sourceContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'source', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'source', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder sourceMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'source', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'source', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder sourceIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'source', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'source', value: ''), + ); }); } QueryBuilder sourceIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'source', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'source', value: ''), + ); + }); + } + + QueryBuilder sourceIdIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sourceId'), + ); + }); + } + + QueryBuilder sourceIdIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sourceId'), + ); + }); + } + + QueryBuilder sourceIdEqualTo( + int? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'sourceId', value: value), + ); + }); + } + + QueryBuilder sourceIdGreaterThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'sourceId', + value: value, + ), + ); + }); + } + + QueryBuilder sourceIdLessThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'sourceId', + value: value, + ), + ); + }); + } + + QueryBuilder sourceIdBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'sourceId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder statusEqualTo( - Status value) { + Status value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'status', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'status', value: value), + ); }); } @@ -2751,11 +2982,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'status', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'status', + value: value, + ), + ); }); } @@ -2764,11 +2997,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'status', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'status', + value: value, + ), + ); }); } @@ -2779,39 +3014,41 @@ extension MangaQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'status', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'status', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder updatedAtIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); }); } @@ -2820,11 +3057,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -2833,11 +3072,13 @@ extension MangaQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -2848,13 +3089,15 @@ extension MangaQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'updatedAt', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -2863,14 +3106,16 @@ extension MangaQueryObject on QueryBuilder {} extension MangaQueryLinks on QueryBuilder { QueryBuilder chapters( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.link(q, r'chapters'); }); } QueryBuilder chaptersLengthEqualTo( - int length) { + int length, + ) { return QueryBuilder.apply(this, (query) { return query.linkLength(r'chapters', length, true, length, true); }); @@ -2914,7 +3159,12 @@ extension MangaQueryLinks on QueryBuilder { }) { return QueryBuilder.apply(this, (query) { return query.linkLength( - r'chapters', lower, includeLower, upper, includeUpper); + r'chapters', + lower, + includeLower, + upper, + includeUpper, + ); }); } } @@ -3100,6 +3350,18 @@ extension MangaQuerySortBy on QueryBuilder { }); } + QueryBuilder sortBySmartUpdateDays() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'smartUpdateDays', Sort.asc); + }); + } + + QueryBuilder sortBySmartUpdateDaysDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'smartUpdateDays', Sort.desc); + }); + } + QueryBuilder sortBySource() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'source', Sort.asc); @@ -3112,6 +3374,18 @@ extension MangaQuerySortBy on QueryBuilder { }); } + QueryBuilder sortBySourceId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'sourceId', Sort.asc); + }); + } + + QueryBuilder sortBySourceIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'sourceId', Sort.desc); + }); + } + QueryBuilder sortByStatus() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'status', Sort.asc); @@ -3330,6 +3604,18 @@ extension MangaQuerySortThenBy on QueryBuilder { }); } + QueryBuilder thenBySmartUpdateDays() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'smartUpdateDays', Sort.asc); + }); + } + + QueryBuilder thenBySmartUpdateDaysDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'smartUpdateDays', Sort.desc); + }); + } + QueryBuilder thenBySource() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'source', Sort.asc); @@ -3342,6 +3628,18 @@ extension MangaQuerySortThenBy on QueryBuilder { }); } + QueryBuilder thenBySourceId() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'sourceId', Sort.asc); + }); + } + + QueryBuilder thenBySourceIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'sourceId', Sort.desc); + }); + } + QueryBuilder thenByStatus() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'status', Sort.asc); @@ -3368,15 +3666,17 @@ extension MangaQuerySortThenBy on QueryBuilder { } extension MangaQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByArtist( - {bool caseSensitive = true}) { + QueryBuilder distinctByArtist({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'artist', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByAuthor( - {bool caseSensitive = true}) { + QueryBuilder distinctByAuthor({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'author', caseSensitive: caseSensitive); }); @@ -3388,11 +3688,14 @@ extension MangaQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByCustomCoverFromTracker( - {bool caseSensitive = true}) { + QueryBuilder distinctByCustomCoverFromTracker({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'customCoverFromTracker', - caseSensitive: caseSensitive); + return query.addDistinctBy( + r'customCoverFromTracker', + caseSensitive: caseSensitive, + ); }); } @@ -3408,8 +3711,9 @@ extension MangaQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByDescription( - {bool caseSensitive = true}) { + QueryBuilder distinctByDescription({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'description', caseSensitive: caseSensitive); }); @@ -3427,8 +3731,9 @@ extension MangaQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByImageUrl( - {bool caseSensitive = true}) { + QueryBuilder distinctByImageUrl({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'imageUrl', caseSensitive: caseSensitive); }); @@ -3452,8 +3757,9 @@ extension MangaQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByLang( - {bool caseSensitive = true}) { + QueryBuilder distinctByLang({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'lang', caseSensitive: caseSensitive); }); @@ -3471,27 +3777,42 @@ extension MangaQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByLink( - {bool caseSensitive = true}) { + QueryBuilder distinctByLink({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'link', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByName( - {bool caseSensitive = true}) { + QueryBuilder distinctByName({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'name', caseSensitive: caseSensitive); }); } - QueryBuilder distinctBySource( - {bool caseSensitive = true}) { + QueryBuilder distinctBySmartUpdateDays() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'smartUpdateDays'); + }); + } + + QueryBuilder distinctBySource({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'source', caseSensitive: caseSensitive); }); } + QueryBuilder distinctBySourceId() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'sourceId'); + }); + } + QueryBuilder distinctByStatus() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'status'); @@ -3531,7 +3852,7 @@ extension MangaQueryProperty on QueryBuilder { } QueryBuilder - customCoverFromTrackerProperty() { + customCoverFromTrackerProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'customCoverFromTracker'); }); @@ -3621,12 +3942,24 @@ extension MangaQueryProperty on QueryBuilder { }); } + QueryBuilder smartUpdateDaysProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'smartUpdateDays'); + }); + } + QueryBuilder sourceProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'source'); }); } + QueryBuilder sourceIdProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'sourceId'); + }); + } + QueryBuilder statusProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'status'); diff --git a/lib/models/settings.dart b/lib/models/settings.dart index bfd4a2ac..09c74177 100644 --- a/lib/models/settings.dart +++ b/lib/models/settings.dart @@ -169,6 +169,8 @@ class Settings { int? aniSkipTimeoutLength; + String? customDns; + String? btServerAddress; int? btServerPort; @@ -201,6 +203,8 @@ class Settings { List? novelExtensionsRepo; + String? androidProxyServer; + @enumerated late SectionType disableSectionType; @@ -208,6 +212,8 @@ class Settings { String? hwdecMode; + bool? enableHardwareAcceleration; + int? libraryFilterNovelDownloadType; int? libraryFilterNovelUnreadType; @@ -258,6 +264,28 @@ class Settings { bool? rpcShowCoverImage; + bool? useMpvConfig; + + @enumerated + late DebandingType debandingType; + + bool? enableGpuNext; + + bool? useYUV420P; + + String? audioPreferredLanguages; + + bool? enableAudioPitchCorrection; + + @enumerated + late AudioChannel audioChannels; + + int? volumeBoostCap; + + bool? downloadedOnlyMode; + + late AlgorithmWeights? algorithmWeights; + Settings({ this.id = 227, this.updatedAt = 0, @@ -332,6 +360,7 @@ class Settings { this.enableAniSkip, this.enableAutoSkip, this.aniSkipTimeoutLength, + this.customDns = "", this.btServerAddress = "127.0.0.1", this.btServerPort, this.fullScreenReader = true, @@ -346,6 +375,7 @@ class Settings { this.disableSectionType = SectionType.all, this.useLibass = true, this.hwdecMode = "auto", + this.enableHardwareAcceleration, this.libraryFilterNovelDownloadType = 0, this.libraryFilterNovelUnreadType = 0, this.libraryFilterNovelStartedType = 0, @@ -366,6 +396,7 @@ class Settings { this.mangaExtensionsRepo, this.animeExtensionsRepo, this.novelExtensionsRepo, + this.androidProxyServer, this.lastTrackerLibraryLocation, this.mergeLibraryNavMobile = false, this.enableDiscordRpc = true, @@ -373,6 +404,16 @@ class Settings { this.rpcShowReadingWatchingProgress = true, this.rpcShowTitle = true, this.rpcShowCoverImage = true, + this.useMpvConfig = true, + this.debandingType = DebandingType.none, + this.enableGpuNext = false, + this.useYUV420P = false, + this.audioPreferredLanguages, + this.enableAudioPitchCorrection, + this.audioChannels = AudioChannel.autoSafe, + this.volumeBoostCap, + this.downloadedOnlyMode = false, + this.algorithmWeights, }); Settings.fromJson(Map json) { @@ -516,6 +557,7 @@ class Settings { enableAniSkip = json['enableAniSkip']; enableAutoSkip = json['enableAutoSkip']; aniSkipTimeoutLength = json['aniSkipTimeoutLength']; + customDns = json['customDns']; btServerAddress = json['btServerAddress']; btServerPort = json['btServerPort']; customColorFilter = json['customColorFilter'] != null @@ -538,6 +580,7 @@ class Settings { SectionType.values[json['disableSectionType'] ?? SectionType.all.index]; useLibass = json['useLibass']; hwdecMode = json['hwdecMode']; + enableHardwareAcceleration = json['enableHardwareAcceleration']; libraryFilterNovelBookMarkedType = json['libraryFilterNovelBookMarkedType']; libraryFilterNovelDownloadType = json['libraryFilterNovelDownloadType']; libraryFilterNovelStartedType = json['libraryFilterNovelStartedType']; @@ -587,6 +630,7 @@ class Settings { .map((e) => Repo.fromJson(e)) .toList(); } + androidProxyServer = json['androidProxyServer']; lastTrackerLibraryLocation = json['lastTrackerLibraryLocation']; mergeLibraryNavMobile = json['mergeLibraryNavMobile']; enableDiscordRpc = json['enableDiscordRpc']; @@ -594,6 +638,20 @@ class Settings { rpcShowReadingWatchingProgress = json['rpcShowReadingWatchingProgress']; rpcShowTitle = json['rpcShowTitle']; rpcShowCoverImage = json['rpcShowCoverImage']; + useMpvConfig = json['useMpvConfig']; + debandingType = + DebandingType.values[json['debandingType'] ?? DebandingType.none.index]; + enableGpuNext = json['enableGpuNext']; + useYUV420P = json['useYUV420P']; + audioPreferredLanguages = json['audioPreferredLanguages']; + enableAudioPitchCorrection = json['enableAudioPitchCorrection']; + audioChannels = AudioChannel + .values[json['audioChannels'] ?? AudioChannel.autoSafe.index]; + volumeBoostCap = json['volumeBoostCap']; + downloadedOnlyMode = json['downloadedOnlyMode']; + algorithmWeights = json['algorithmWeights'] != null + ? AlgorithmWeights.fromJson(json['algorithmWeights']) + : null; } Map toJson() => { @@ -688,6 +746,7 @@ class Settings { 'enableAniSkip': enableAniSkip, 'enableAutoSkip': enableAutoSkip, 'aniSkipTimeoutLength': aniSkipTimeoutLength, + 'customDns': customDns, 'btServerAddress': btServerAddress, 'btServerPort': btServerPort, 'fullScreenReader': fullScreenReader, @@ -704,6 +763,7 @@ class Settings { 'disableSectionType': disableSectionType.index, 'useLibass': useLibass, 'hwdecMode': hwdecMode, + 'enableHardwareAcceleration': enableHardwareAcceleration, 'libraryFilterNovelBookMarkedType': libraryFilterNovelBookMarkedType, 'libraryFilterNovelDownloadType': libraryFilterNovelDownloadType, 'libraryFilterNovelStartedType': libraryFilterNovelStartedType, @@ -725,6 +785,7 @@ class Settings { 'mangaExtensionsRepo': mangaExtensionsRepo?.map((e) => e.toJson()).toList(), 'animeExtensionsRepo': animeExtensionsRepo?.map((e) => e.toJson()).toList(), 'novelExtensionsRepo': novelExtensionsRepo?.map((e) => e.toJson()).toList(), + 'androidProxyServer': androidProxyServer, 'lastTrackerLibraryLocation': lastTrackerLibraryLocation, 'mergeLibraryNavMobile': mergeLibraryNavMobile, 'enableDiscordRpc': enableDiscordRpc, @@ -732,9 +793,34 @@ class Settings { 'rpcShowReadingWatchingProgress': rpcShowReadingWatchingProgress, 'rpcShowTitle': rpcShowTitle, 'rpcShowCoverImage': rpcShowCoverImage, + 'useMpvConfig': useMpvConfig, + 'debandingType': debandingType.index, + 'enableGpuNext': enableGpuNext, + 'useYUV420P': useYUV420P, + 'audioPreferredLanguages': audioPreferredLanguages, + 'enableAudioPitchCorrection': enableAudioPitchCorrection, + 'audioChannels': audioChannels.index, + 'volumeBoostCap': volumeBoostCap, + 'downloadedOnlyMode': downloadedOnlyMode, + if (algorithmWeights != null) + 'algorithmWeights': algorithmWeights!.toJson(), }; } +enum DebandingType { none, cpu, gpu } + +enum AudioChannel { + auto(mpvName: "auto"), + autoSafe(mpvName: "auto-safe"), + mono(mpvName: "mono"), + stereo(mpvName: "stereo"), + reverseStereo(mpvName: "pan=[stereo|c0=c1|c1=c0]"); + + final String mpvName; + + const AudioChannel({required this.mpvName}); +} + enum SectionType { all, anime, manga } enum DisplayType { compactGrid, comfortableGrid, coverOnlyGrid, list } @@ -918,20 +1004,34 @@ class Repo { String? name; String? website; String? jsonUrl; + bool? hidden; - Repo({this.name, this.website, this.jsonUrl}); + Repo({this.name, this.website, this.jsonUrl, this.hidden}); Repo.fromJson(Map json) { - name = json['name']; - website = json['website']; + name = json['meta']?['name'] ?? json['name']; + website = json['meta']?['website'] ?? json['website']; jsonUrl = json['jsonUrl']; + hidden = json['hidden']; } Map toJson() => { 'name': name, 'website': website, 'jsonUrl': jsonUrl, + 'hidden': hidden, }; + + @override + bool operator ==(Object other) { + return other is Repo && + name == other.name && + website == other.website && + jsonUrl == other.jsonUrl; + } + + @override + int get hashCode => Object.hash(name, website, jsonUrl); } @embedded @@ -1088,6 +1188,35 @@ class PlayerSubtitleSettings { }; } +@embedded +class AlgorithmWeights { + int? genre; + int? setting; + int? synopsis; + int? theme; + + AlgorithmWeights({ + this.genre = 30, + this.setting = 15, + this.synopsis = 40, + this.theme = 20, + }); + + AlgorithmWeights.fromJson(Map json) { + genre = json['genre']; + setting = json['setting']; + synopsis = json['synopsis']; + theme = json['theme']; + } + + Map toJson() => { + 'genre': genre, + 'setting': setting, + 'synopsis': synopsis, + 'theme': theme, + }; +} + enum ColorFilterBlendMode { none, multiply, diff --git a/lib/models/settings.g.dart b/lib/models/settings.g.dart index 28101798..7959c230 100644 --- a/lib/models/settings.g.dart +++ b/lib/models/settings.g.dart @@ -17,633 +17,724 @@ const SettingsSchema = CollectionSchema( name: r'Settings', id: -8656046621518759136, properties: { - r'aniSkipTimeoutLength': PropertySchema( + r'algorithmWeights': PropertySchema( id: 0, + name: r'algorithmWeights', + type: IsarType.object, + + target: r'AlgorithmWeights', + ), + r'androidProxyServer': PropertySchema( + id: 1, + name: r'androidProxyServer', + type: IsarType.string, + ), + r'aniSkipTimeoutLength': PropertySchema( + id: 2, name: r'aniSkipTimeoutLength', type: IsarType.long, ), r'animatePageTransitions': PropertySchema( - id: 1, + id: 3, name: r'animatePageTransitions', type: IsarType.bool, ), r'animeDisplayType': PropertySchema( - id: 2, + id: 4, name: r'animeDisplayType', type: IsarType.byte, enumMap: _SettingsanimeDisplayTypeEnumValueMap, ), r'animeExtensionsRepo': PropertySchema( - id: 3, + id: 5, name: r'animeExtensionsRepo', type: IsarType.objectList, + target: r'Repo', ), r'animeGridSize': PropertySchema( - id: 4, + id: 6, name: r'animeGridSize', type: IsarType.long, ), r'animeLibraryDownloadedChapters': PropertySchema( - id: 5, + id: 7, name: r'animeLibraryDownloadedChapters', type: IsarType.bool, ), r'animeLibraryLocalSource': PropertySchema( - id: 6, + id: 8, name: r'animeLibraryLocalSource', type: IsarType.bool, ), r'animeLibraryShowCategoryTabs': PropertySchema( - id: 7, + id: 9, name: r'animeLibraryShowCategoryTabs', type: IsarType.bool, ), r'animeLibraryShowContinueReadingButton': PropertySchema( - id: 8, + id: 10, name: r'animeLibraryShowContinueReadingButton', type: IsarType.bool, ), r'animeLibraryShowLanguage': PropertySchema( - id: 9, + id: 11, name: r'animeLibraryShowLanguage', type: IsarType.bool, ), r'animeLibraryShowNumbersOfItems': PropertySchema( - id: 10, + id: 12, name: r'animeLibraryShowNumbersOfItems', type: IsarType.bool, ), r'appFontFamily': PropertySchema( - id: 11, + id: 13, name: r'appFontFamily', type: IsarType.string, ), + r'audioChannels': PropertySchema( + id: 14, + name: r'audioChannels', + type: IsarType.byte, + enumMap: _SettingsaudioChannelsEnumValueMap, + ), + r'audioPreferredLanguages': PropertySchema( + id: 15, + name: r'audioPreferredLanguages', + type: IsarType.string, + ), r'autoBackupLocation': PropertySchema( - id: 12, + id: 16, name: r'autoBackupLocation', type: IsarType.string, ), r'autoExtensionsUpdates': PropertySchema( - id: 13, + id: 17, name: r'autoExtensionsUpdates', type: IsarType.bool, ), r'autoScrollPages': PropertySchema( - id: 14, + id: 18, name: r'autoScrollPages', type: IsarType.objectList, + target: r'AutoScrollPages', ), r'backgroundColor': PropertySchema( - id: 15, + id: 19, name: r'backgroundColor', type: IsarType.byte, enumMap: _SettingsbackgroundColorEnumValueMap, ), r'backupFrequency': PropertySchema( - id: 16, + id: 20, name: r'backupFrequency', type: IsarType.long, ), r'backupListOptions': PropertySchema( - id: 17, + id: 21, name: r'backupListOptions', type: IsarType.longList, ), r'btServerAddress': PropertySchema( - id: 18, + id: 22, name: r'btServerAddress', type: IsarType.string, ), r'btServerPort': PropertySchema( - id: 19, + id: 23, name: r'btServerPort', type: IsarType.long, ), r'chapterFilterBookmarkedList': PropertySchema( - id: 20, + id: 24, name: r'chapterFilterBookmarkedList', type: IsarType.objectList, + target: r'ChapterFilterBookmarked', ), r'chapterFilterDownloadedList': PropertySchema( - id: 21, + id: 25, name: r'chapterFilterDownloadedList', type: IsarType.objectList, + target: r'ChapterFilterDownloaded', ), r'chapterFilterUnreadList': PropertySchema( - id: 22, + id: 26, name: r'chapterFilterUnreadList', type: IsarType.objectList, + target: r'ChapterFilterUnread', ), r'chapterPageIndexList': PropertySchema( - id: 23, + id: 27, name: r'chapterPageIndexList', type: IsarType.objectList, + target: r'ChapterPageIndex', ), r'chapterPageUrlsList': PropertySchema( - id: 24, + id: 28, name: r'chapterPageUrlsList', type: IsarType.objectList, + target: r'ChapterPageurls', ), r'checkForAppUpdates': PropertySchema( - id: 25, + id: 29, name: r'checkForAppUpdates', type: IsarType.bool, ), r'checkForExtensionUpdates': PropertySchema( - id: 26, + id: 30, name: r'checkForExtensionUpdates', type: IsarType.bool, ), r'clearChapterCacheOnAppLaunch': PropertySchema( - id: 27, + id: 31, name: r'clearChapterCacheOnAppLaunch', type: IsarType.bool, ), r'colorFilterBlendMode': PropertySchema( - id: 28, + id: 32, name: r'colorFilterBlendMode', type: IsarType.byte, enumMap: _SettingscolorFilterBlendModeEnumValueMap, ), r'concurrentDownloads': PropertySchema( - id: 29, + id: 33, name: r'concurrentDownloads', type: IsarType.long, ), r'cookiesList': PropertySchema( - id: 30, + id: 34, name: r'cookiesList', type: IsarType.objectList, + target: r'MCookie', ), r'cropBorders': PropertySchema( - id: 31, + id: 35, name: r'cropBorders', type: IsarType.bool, ), r'customColorFilter': PropertySchema( - id: 32, + id: 36, name: r'customColorFilter', type: IsarType.object, + target: r'CustomColorFilter', ), + r'customDns': PropertySchema( + id: 37, + name: r'customDns', + type: IsarType.string, + ), r'dateFormat': PropertySchema( - id: 33, + id: 38, name: r'dateFormat', type: IsarType.string, ), + r'debandingType': PropertySchema( + id: 39, + name: r'debandingType', + type: IsarType.byte, + enumMap: _SettingsdebandingTypeEnumValueMap, + ), r'defaultDoubleTapToSkipLength': PropertySchema( - id: 34, + id: 40, name: r'defaultDoubleTapToSkipLength', type: IsarType.long, ), r'defaultPlayBackSpeed': PropertySchema( - id: 35, + id: 41, name: r'defaultPlayBackSpeed', type: IsarType.double, ), r'defaultReaderMode': PropertySchema( - id: 36, + id: 42, name: r'defaultReaderMode', type: IsarType.byte, enumMap: _SettingsdefaultReaderModeEnumValueMap, ), r'defaultSkipIntroLength': PropertySchema( - id: 37, + id: 43, name: r'defaultSkipIntroLength', type: IsarType.long, ), r'defaultSubtitleLang': PropertySchema( - id: 38, + id: 44, name: r'defaultSubtitleLang', type: IsarType.object, + target: r'L10nLocale', ), r'disableSectionType': PropertySchema( - id: 39, + id: 45, name: r'disableSectionType', type: IsarType.byte, enumMap: _SettingsdisableSectionTypeEnumValueMap, ), r'displayType': PropertySchema( - id: 40, + id: 46, name: r'displayType', type: IsarType.byte, enumMap: _SettingsdisplayTypeEnumValueMap, ), r'doubleTapAnimationSpeed': PropertySchema( - id: 41, + id: 47, name: r'doubleTapAnimationSpeed', type: IsarType.long, ), r'downloadLocation': PropertySchema( - id: 42, + id: 48, name: r'downloadLocation', type: IsarType.string, ), r'downloadOnlyOnWifi': PropertySchema( - id: 43, + id: 49, name: r'downloadOnlyOnWifi', type: IsarType.bool, ), + r'downloadedOnlyMode': PropertySchema( + id: 50, + name: r'downloadedOnlyMode', + type: IsarType.bool, + ), r'enableAniSkip': PropertySchema( - id: 44, + id: 51, name: r'enableAniSkip', type: IsarType.bool, ), + r'enableAudioPitchCorrection': PropertySchema( + id: 52, + name: r'enableAudioPitchCorrection', + type: IsarType.bool, + ), r'enableAutoSkip': PropertySchema( - id: 45, + id: 53, name: r'enableAutoSkip', type: IsarType.bool, ), r'enableCustomColorFilter': PropertySchema( - id: 46, + id: 54, name: r'enableCustomColorFilter', type: IsarType.bool, ), r'enableDiscordRpc': PropertySchema( - id: 47, + id: 55, name: r'enableDiscordRpc', type: IsarType.bool, ), + r'enableGpuNext': PropertySchema( + id: 56, + name: r'enableGpuNext', + type: IsarType.bool, + ), + r'enableHardwareAcceleration': PropertySchema( + id: 57, + name: r'enableHardwareAcceleration', + type: IsarType.bool, + ), r'filterScanlatorList': PropertySchema( - id: 48, + id: 58, name: r'filterScanlatorList', type: IsarType.objectList, + target: r'FilterScanlator', ), r'flexColorSchemeBlendLevel': PropertySchema( - id: 49, + id: 59, name: r'flexColorSchemeBlendLevel', type: IsarType.double, ), r'flexSchemeColorIndex': PropertySchema( - id: 50, + id: 60, name: r'flexSchemeColorIndex', type: IsarType.long, ), r'followSystemTheme': PropertySchema( - id: 51, + id: 61, name: r'followSystemTheme', type: IsarType.bool, ), r'fullScreenPlayer': PropertySchema( - id: 52, + id: 62, name: r'fullScreenPlayer', type: IsarType.bool, ), r'fullScreenReader': PropertySchema( - id: 53, + id: 63, name: r'fullScreenReader', type: IsarType.bool, ), r'hideDiscordRpcInIncognito': PropertySchema( - id: 54, + id: 64, name: r'hideDiscordRpcInIncognito', type: IsarType.bool, ), r'hideItems': PropertySchema( - id: 55, + id: 65, name: r'hideItems', type: IsarType.stringList, ), r'hwdecMode': PropertySchema( - id: 56, + id: 66, name: r'hwdecMode', type: IsarType.string, ), r'incognitoMode': PropertySchema( - id: 57, + id: 67, name: r'incognitoMode', type: IsarType.bool, ), r'lastTrackerLibraryLocation': PropertySchema( - id: 58, + id: 68, name: r'lastTrackerLibraryLocation', type: IsarType.string, ), r'libraryDownloadedChapters': PropertySchema( - id: 59, + id: 69, name: r'libraryDownloadedChapters', type: IsarType.bool, ), r'libraryFilterAnimeBookMarkedType': PropertySchema( - id: 60, + id: 70, name: r'libraryFilterAnimeBookMarkedType', type: IsarType.long, ), r'libraryFilterAnimeDownloadType': PropertySchema( - id: 61, + id: 71, name: r'libraryFilterAnimeDownloadType', type: IsarType.long, ), r'libraryFilterAnimeStartedType': PropertySchema( - id: 62, + id: 72, name: r'libraryFilterAnimeStartedType', type: IsarType.long, ), r'libraryFilterAnimeUnreadType': PropertySchema( - id: 63, + id: 73, name: r'libraryFilterAnimeUnreadType', type: IsarType.long, ), r'libraryFilterMangasBookMarkedType': PropertySchema( - id: 64, + id: 74, name: r'libraryFilterMangasBookMarkedType', type: IsarType.long, ), r'libraryFilterMangasDownloadType': PropertySchema( - id: 65, + id: 75, name: r'libraryFilterMangasDownloadType', type: IsarType.long, ), r'libraryFilterMangasStartedType': PropertySchema( - id: 66, + id: 76, name: r'libraryFilterMangasStartedType', type: IsarType.long, ), r'libraryFilterMangasUnreadType': PropertySchema( - id: 67, + id: 77, name: r'libraryFilterMangasUnreadType', type: IsarType.long, ), r'libraryFilterNovelBookMarkedType': PropertySchema( - id: 68, + id: 78, name: r'libraryFilterNovelBookMarkedType', type: IsarType.long, ), r'libraryFilterNovelDownloadType': PropertySchema( - id: 69, + id: 79, name: r'libraryFilterNovelDownloadType', type: IsarType.long, ), r'libraryFilterNovelStartedType': PropertySchema( - id: 70, + id: 80, name: r'libraryFilterNovelStartedType', type: IsarType.long, ), r'libraryFilterNovelUnreadType': PropertySchema( - id: 71, + id: 81, name: r'libraryFilterNovelUnreadType', type: IsarType.long, ), r'libraryLocalSource': PropertySchema( - id: 72, + id: 82, name: r'libraryLocalSource', type: IsarType.bool, ), r'libraryShowCategoryTabs': PropertySchema( - id: 73, + id: 83, name: r'libraryShowCategoryTabs', type: IsarType.bool, ), r'libraryShowContinueReadingButton': PropertySchema( - id: 74, + id: 84, name: r'libraryShowContinueReadingButton', type: IsarType.bool, ), r'libraryShowLanguage': PropertySchema( - id: 75, + id: 85, name: r'libraryShowLanguage', type: IsarType.bool, ), r'libraryShowNumbersOfItems': PropertySchema( - id: 76, + id: 86, name: r'libraryShowNumbersOfItems', type: IsarType.bool, ), r'locale': PropertySchema( - id: 77, + id: 87, name: r'locale', type: IsarType.object, + target: r'L10nLocale', ), r'mangaExtensionsRepo': PropertySchema( - id: 78, + id: 88, name: r'mangaExtensionsRepo', type: IsarType.objectList, + target: r'Repo', ), r'mangaGridSize': PropertySchema( - id: 79, + id: 89, name: r'mangaGridSize', type: IsarType.long, ), r'mangaHomeDisplayType': PropertySchema( - id: 80, + id: 90, name: r'mangaHomeDisplayType', type: IsarType.byte, enumMap: _SettingsmangaHomeDisplayTypeEnumValueMap, ), r'markEpisodeAsSeenType': PropertySchema( - id: 81, + id: 91, name: r'markEpisodeAsSeenType', type: IsarType.long, ), r'mergeLibraryNavMobile': PropertySchema( - id: 82, + id: 92, name: r'mergeLibraryNavMobile', type: IsarType.bool, ), r'navigationOrder': PropertySchema( - id: 83, + id: 93, name: r'navigationOrder', type: IsarType.stringList, ), r'novelDisplayType': PropertySchema( - id: 84, + id: 94, name: r'novelDisplayType', type: IsarType.byte, enumMap: _SettingsnovelDisplayTypeEnumValueMap, ), r'novelExtensionsRepo': PropertySchema( - id: 85, + id: 95, name: r'novelExtensionsRepo', type: IsarType.objectList, + target: r'Repo', ), r'novelFontSize': PropertySchema( - id: 86, + id: 96, name: r'novelFontSize', type: IsarType.long, ), r'novelGridSize': PropertySchema( - id: 87, + id: 97, name: r'novelGridSize', type: IsarType.long, ), r'novelLibraryDownloadedChapters': PropertySchema( - id: 88, + id: 98, name: r'novelLibraryDownloadedChapters', type: IsarType.bool, ), r'novelLibraryLocalSource': PropertySchema( - id: 89, + id: 99, name: r'novelLibraryLocalSource', type: IsarType.bool, ), r'novelLibraryShowCategoryTabs': PropertySchema( - id: 90, + id: 100, name: r'novelLibraryShowCategoryTabs', type: IsarType.bool, ), r'novelLibraryShowContinueReadingButton': PropertySchema( - id: 91, + id: 101, name: r'novelLibraryShowContinueReadingButton', type: IsarType.bool, ), r'novelLibraryShowLanguage': PropertySchema( - id: 92, + id: 102, name: r'novelLibraryShowLanguage', type: IsarType.bool, ), r'novelLibraryShowNumbersOfItems': PropertySchema( - id: 93, + id: 103, name: r'novelLibraryShowNumbersOfItems', type: IsarType.bool, ), r'novelTextAlign': PropertySchema( - id: 94, + id: 104, name: r'novelTextAlign', type: IsarType.byte, enumMap: _SettingsnovelTextAlignEnumValueMap, ), r'onlyIncludePinnedSources': PropertySchema( - id: 95, + id: 105, name: r'onlyIncludePinnedSources', type: IsarType.bool, ), r'pagePreloadAmount': PropertySchema( - id: 96, + id: 106, name: r'pagePreloadAmount', type: IsarType.long, ), r'personalPageModeList': PropertySchema( - id: 97, + id: 107, name: r'personalPageModeList', type: IsarType.objectList, + target: r'PersonalPageMode', ), r'personalReaderModeList': PropertySchema( - id: 98, + id: 108, name: r'personalReaderModeList', type: IsarType.objectList, + target: r'PersonalReaderMode', ), r'playerSubtitleSettings': PropertySchema( - id: 99, + id: 109, name: r'playerSubtitleSettings', type: IsarType.object, + target: r'PlayerSubtitleSettings', ), r'pureBlackDarkMode': PropertySchema( - id: 100, + id: 110, name: r'pureBlackDarkMode', type: IsarType.bool, ), r'relativeTimesTamps': PropertySchema( - id: 101, + id: 111, name: r'relativeTimesTamps', type: IsarType.long, ), r'rpcShowCoverImage': PropertySchema( - id: 102, + id: 112, name: r'rpcShowCoverImage', type: IsarType.bool, ), r'rpcShowReadingWatchingProgress': PropertySchema( - id: 103, + id: 113, name: r'rpcShowReadingWatchingProgress', type: IsarType.bool, ), r'rpcShowTitle': PropertySchema( - id: 104, + id: 114, name: r'rpcShowTitle', type: IsarType.bool, ), r'saveAsCBZArchive': PropertySchema( - id: 105, + id: 115, name: r'saveAsCBZArchive', type: IsarType.bool, ), r'scaleType': PropertySchema( - id: 106, + id: 116, name: r'scaleType', type: IsarType.byte, enumMap: _SettingsscaleTypeEnumValueMap, ), r'showPagesNumber': PropertySchema( - id: 107, + id: 117, name: r'showPagesNumber', type: IsarType.bool, ), r'sortChapterList': PropertySchema( - id: 108, + id: 118, name: r'sortChapterList', type: IsarType.objectList, + target: r'SortChapter', ), r'sortLibraryAnime': PropertySchema( - id: 109, + id: 119, name: r'sortLibraryAnime', type: IsarType.object, + target: r'SortLibraryManga', ), r'sortLibraryManga': PropertySchema( - id: 110, + id: 120, name: r'sortLibraryManga', type: IsarType.object, + target: r'SortLibraryManga', ), r'sortLibraryNovel': PropertySchema( - id: 111, + id: 121, name: r'sortLibraryNovel', type: IsarType.object, + target: r'SortLibraryManga', ), r'startDatebackup': PropertySchema( - id: 112, + id: 122, name: r'startDatebackup', type: IsarType.long, ), r'themeIsDark': PropertySchema( - id: 113, + id: 123, name: r'themeIsDark', type: IsarType.bool, ), r'updateProgressAfterReading': PropertySchema( - id: 114, + id: 124, name: r'updateProgressAfterReading', type: IsarType.bool, ), r'updatedAt': PropertySchema( - id: 115, + id: 125, name: r'updatedAt', type: IsarType.long, ), r'useLibass': PropertySchema( - id: 116, + id: 126, name: r'useLibass', type: IsarType.bool, ), + r'useMpvConfig': PropertySchema( + id: 127, + name: r'useMpvConfig', + type: IsarType.bool, + ), r'usePageTapZones': PropertySchema( - id: 117, + id: 128, name: r'usePageTapZones', type: IsarType.bool, ), + r'useYUV420P': PropertySchema( + id: 129, + name: r'useYUV420P', + type: IsarType.bool, + ), r'userAgent': PropertySchema( - id: 118, + id: 130, name: r'userAgent', type: IsarType.string, - ) + ), + r'volumeBoostCap': PropertySchema( + id: 131, + name: r'volumeBoostCap', + type: IsarType.long, + ), }, + estimateSize: _settingsEstimateSize, serialize: _settingsSerialize, deserialize: _settingsDeserialize, @@ -656,7 +747,7 @@ const SettingsSchema = CollectionSchema( name: r'sources', target: r'Sources', single: false, - ) + ), }, embeddedSchemas: { r'SortLibraryManga': SortLibraryMangaSchema, @@ -674,8 +765,10 @@ const SettingsSchema = CollectionSchema( r'AutoScrollPages': AutoScrollPagesSchema, r'CustomColorFilter': CustomColorFilterSchema, r'PlayerSubtitleSettings': PlayerSubtitleSettingsSchema, - r'Repo': RepoSchema + r'Repo': RepoSchema, + r'AlgorithmWeights': AlgorithmWeightsSchema, }, + getId: _settingsGetId, getLinks: _settingsGetLinks, attach: _settingsAttach, @@ -688,6 +781,24 @@ int _settingsEstimateSize( Map> allOffsets, ) { var bytesCount = offsets.last; + { + final value = object.algorithmWeights; + if (value != null) { + bytesCount += + 3 + + AlgorithmWeightsSchema.estimateSize( + value, + allOffsets[AlgorithmWeights]!, + allOffsets, + ); + } + } + { + final value = object.androidProxyServer; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } { final list = object.animeExtensionsRepo; if (list != null) { @@ -707,6 +818,12 @@ int _settingsEstimateSize( bytesCount += 3 + value.length * 3; } } + { + final value = object.audioPreferredLanguages; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } { final value = object.autoBackupLocation; if (value != null) { @@ -721,8 +838,11 @@ int _settingsEstimateSize( final offsets = allOffsets[AutoScrollPages]!; for (var i = 0; i < list.length; i++) { final value = list[i]; - bytesCount += - AutoScrollPagesSchema.estimateSize(value, offsets, allOffsets); + bytesCount += AutoScrollPagesSchema.estimateSize( + value, + offsets, + allOffsets, + ); } } } @@ -748,7 +868,10 @@ int _settingsEstimateSize( for (var i = 0; i < list.length; i++) { final value = list[i]; bytesCount += ChapterFilterBookmarkedSchema.estimateSize( - value, offsets, allOffsets); + value, + offsets, + allOffsets, + ); } } } @@ -762,7 +885,10 @@ int _settingsEstimateSize( for (var i = 0; i < list.length; i++) { final value = list[i]; bytesCount += ChapterFilterDownloadedSchema.estimateSize( - value, offsets, allOffsets); + value, + offsets, + allOffsets, + ); } } } @@ -776,7 +902,10 @@ int _settingsEstimateSize( for (var i = 0; i < list.length; i++) { final value = list[i]; bytesCount += ChapterFilterUnreadSchema.estimateSize( - value, offsets, allOffsets); + value, + offsets, + allOffsets, + ); } } } @@ -789,8 +918,11 @@ int _settingsEstimateSize( final offsets = allOffsets[ChapterPageIndex]!; for (var i = 0; i < list.length; i++) { final value = list[i]; - bytesCount += - ChapterPageIndexSchema.estimateSize(value, offsets, allOffsets); + bytesCount += ChapterPageIndexSchema.estimateSize( + value, + offsets, + allOffsets, + ); } } } @@ -803,8 +935,11 @@ int _settingsEstimateSize( final offsets = allOffsets[ChapterPageurls]!; for (var i = 0; i < list.length; i++) { final value = list[i]; - bytesCount += - ChapterPageurlsSchema.estimateSize(value, offsets, allOffsets); + bytesCount += ChapterPageurlsSchema.estimateSize( + value, + offsets, + allOffsets, + ); } } } @@ -825,9 +960,19 @@ int _settingsEstimateSize( { final value = object.customColorFilter; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + CustomColorFilterSchema.estimateSize( - value, allOffsets[CustomColorFilter]!, allOffsets); + value, + allOffsets[CustomColorFilter]!, + allOffsets, + ); + } + } + { + final value = object.customDns; + if (value != null) { + bytesCount += 3 + value.length * 3; } } { @@ -839,9 +984,13 @@ int _settingsEstimateSize( { final value = object.defaultSubtitleLang; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + L10nLocaleSchema.estimateSize( - value, allOffsets[L10nLocale]!, allOffsets); + value, + allOffsets[L10nLocale]!, + allOffsets, + ); } } { @@ -858,8 +1007,11 @@ int _settingsEstimateSize( final offsets = allOffsets[FilterScanlator]!; for (var i = 0; i < list.length; i++) { final value = list[i]; - bytesCount += - FilterScanlatorSchema.estimateSize(value, offsets, allOffsets); + bytesCount += FilterScanlatorSchema.estimateSize( + value, + offsets, + allOffsets, + ); } } } @@ -891,9 +1043,13 @@ int _settingsEstimateSize( { final value = object.locale; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + L10nLocaleSchema.estimateSize( - value, allOffsets[L10nLocale]!, allOffsets); + value, + allOffsets[L10nLocale]!, + allOffsets, + ); } } { @@ -942,8 +1098,11 @@ int _settingsEstimateSize( final offsets = allOffsets[PersonalPageMode]!; for (var i = 0; i < list.length; i++) { final value = list[i]; - bytesCount += - PersonalPageModeSchema.estimateSize(value, offsets, allOffsets); + bytesCount += PersonalPageModeSchema.estimateSize( + value, + offsets, + allOffsets, + ); } } } @@ -956,8 +1115,11 @@ int _settingsEstimateSize( final offsets = allOffsets[PersonalReaderMode]!; for (var i = 0; i < list.length; i++) { final value = list[i]; - bytesCount += - PersonalReaderModeSchema.estimateSize(value, offsets, allOffsets); + bytesCount += PersonalReaderModeSchema.estimateSize( + value, + offsets, + allOffsets, + ); } } } @@ -965,9 +1127,13 @@ int _settingsEstimateSize( { final value = object.playerSubtitleSettings; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + PlayerSubtitleSettingsSchema.estimateSize( - value, allOffsets[PlayerSubtitleSettings]!, allOffsets); + value, + allOffsets[PlayerSubtitleSettings]!, + allOffsets, + ); } } { @@ -978,8 +1144,11 @@ int _settingsEstimateSize( final offsets = allOffsets[SortChapter]!; for (var i = 0; i < list.length; i++) { final value = list[i]; - bytesCount += - SortChapterSchema.estimateSize(value, offsets, allOffsets); + bytesCount += SortChapterSchema.estimateSize( + value, + offsets, + allOffsets, + ); } } } @@ -987,25 +1156,37 @@ int _settingsEstimateSize( { final value = object.sortLibraryAnime; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + SortLibraryMangaSchema.estimateSize( - value, allOffsets[SortLibraryManga]!, allOffsets); + value, + allOffsets[SortLibraryManga]!, + allOffsets, + ); } } { final value = object.sortLibraryManga; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + SortLibraryMangaSchema.estimateSize( - value, allOffsets[SortLibraryManga]!, allOffsets); + value, + allOffsets[SortLibraryManga]!, + allOffsets, + ); } } { final value = object.sortLibraryNovel; if (value != null) { - bytesCount += 3 + + bytesCount += + 3 + SortLibraryMangaSchema.estimateSize( - value, allOffsets[SortLibraryManga]!, allOffsets); + value, + allOffsets[SortLibraryManga]!, + allOffsets, + ); } } { @@ -1023,230 +1204,248 @@ void _settingsSerialize( List offsets, Map> allOffsets, ) { - writer.writeLong(offsets[0], object.aniSkipTimeoutLength); - writer.writeBool(offsets[1], object.animatePageTransitions); - writer.writeByte(offsets[2], object.animeDisplayType.index); + writer.writeObject( + offsets[0], + allOffsets, + AlgorithmWeightsSchema.serialize, + object.algorithmWeights, + ); + writer.writeString(offsets[1], object.androidProxyServer); + writer.writeLong(offsets[2], object.aniSkipTimeoutLength); + writer.writeBool(offsets[3], object.animatePageTransitions); + writer.writeByte(offsets[4], object.animeDisplayType.index); writer.writeObjectList( - offsets[3], + offsets[5], allOffsets, RepoSchema.serialize, object.animeExtensionsRepo, ); - writer.writeLong(offsets[4], object.animeGridSize); - writer.writeBool(offsets[5], object.animeLibraryDownloadedChapters); - writer.writeBool(offsets[6], object.animeLibraryLocalSource); - writer.writeBool(offsets[7], object.animeLibraryShowCategoryTabs); - writer.writeBool(offsets[8], object.animeLibraryShowContinueReadingButton); - writer.writeBool(offsets[9], object.animeLibraryShowLanguage); - writer.writeBool(offsets[10], object.animeLibraryShowNumbersOfItems); - writer.writeString(offsets[11], object.appFontFamily); - writer.writeString(offsets[12], object.autoBackupLocation); - writer.writeBool(offsets[13], object.autoExtensionsUpdates); + writer.writeLong(offsets[6], object.animeGridSize); + writer.writeBool(offsets[7], object.animeLibraryDownloadedChapters); + writer.writeBool(offsets[8], object.animeLibraryLocalSource); + writer.writeBool(offsets[9], object.animeLibraryShowCategoryTabs); + writer.writeBool(offsets[10], object.animeLibraryShowContinueReadingButton); + writer.writeBool(offsets[11], object.animeLibraryShowLanguage); + writer.writeBool(offsets[12], object.animeLibraryShowNumbersOfItems); + writer.writeString(offsets[13], object.appFontFamily); + writer.writeByte(offsets[14], object.audioChannels.index); + writer.writeString(offsets[15], object.audioPreferredLanguages); + writer.writeString(offsets[16], object.autoBackupLocation); + writer.writeBool(offsets[17], object.autoExtensionsUpdates); writer.writeObjectList( - offsets[14], + offsets[18], allOffsets, AutoScrollPagesSchema.serialize, object.autoScrollPages, ); - writer.writeByte(offsets[15], object.backgroundColor.index); - writer.writeLong(offsets[16], object.backupFrequency); - writer.writeLongList(offsets[17], object.backupListOptions); - writer.writeString(offsets[18], object.btServerAddress); - writer.writeLong(offsets[19], object.btServerPort); + writer.writeByte(offsets[19], object.backgroundColor.index); + writer.writeLong(offsets[20], object.backupFrequency); + writer.writeLongList(offsets[21], object.backupListOptions); + writer.writeString(offsets[22], object.btServerAddress); + writer.writeLong(offsets[23], object.btServerPort); writer.writeObjectList( - offsets[20], + offsets[24], allOffsets, ChapterFilterBookmarkedSchema.serialize, object.chapterFilterBookmarkedList, ); writer.writeObjectList( - offsets[21], + offsets[25], allOffsets, ChapterFilterDownloadedSchema.serialize, object.chapterFilterDownloadedList, ); writer.writeObjectList( - offsets[22], + offsets[26], allOffsets, ChapterFilterUnreadSchema.serialize, object.chapterFilterUnreadList, ); writer.writeObjectList( - offsets[23], + offsets[27], allOffsets, ChapterPageIndexSchema.serialize, object.chapterPageIndexList, ); writer.writeObjectList( - offsets[24], + offsets[28], allOffsets, ChapterPageurlsSchema.serialize, object.chapterPageUrlsList, ); - writer.writeBool(offsets[25], object.checkForAppUpdates); - writer.writeBool(offsets[26], object.checkForExtensionUpdates); - writer.writeBool(offsets[27], object.clearChapterCacheOnAppLaunch); - writer.writeByte(offsets[28], object.colorFilterBlendMode.index); - writer.writeLong(offsets[29], object.concurrentDownloads); + writer.writeBool(offsets[29], object.checkForAppUpdates); + writer.writeBool(offsets[30], object.checkForExtensionUpdates); + writer.writeBool(offsets[31], object.clearChapterCacheOnAppLaunch); + writer.writeByte(offsets[32], object.colorFilterBlendMode.index); + writer.writeLong(offsets[33], object.concurrentDownloads); writer.writeObjectList( - offsets[30], + offsets[34], allOffsets, MCookieSchema.serialize, object.cookiesList, ); - writer.writeBool(offsets[31], object.cropBorders); + writer.writeBool(offsets[35], object.cropBorders); writer.writeObject( - offsets[32], + offsets[36], allOffsets, CustomColorFilterSchema.serialize, object.customColorFilter, ); - writer.writeString(offsets[33], object.dateFormat); - writer.writeLong(offsets[34], object.defaultDoubleTapToSkipLength); - writer.writeDouble(offsets[35], object.defaultPlayBackSpeed); - writer.writeByte(offsets[36], object.defaultReaderMode.index); - writer.writeLong(offsets[37], object.defaultSkipIntroLength); + writer.writeString(offsets[37], object.customDns); + writer.writeString(offsets[38], object.dateFormat); + writer.writeByte(offsets[39], object.debandingType.index); + writer.writeLong(offsets[40], object.defaultDoubleTapToSkipLength); + writer.writeDouble(offsets[41], object.defaultPlayBackSpeed); + writer.writeByte(offsets[42], object.defaultReaderMode.index); + writer.writeLong(offsets[43], object.defaultSkipIntroLength); writer.writeObject( - offsets[38], + offsets[44], allOffsets, L10nLocaleSchema.serialize, object.defaultSubtitleLang, ); - writer.writeByte(offsets[39], object.disableSectionType.index); - writer.writeByte(offsets[40], object.displayType.index); - writer.writeLong(offsets[41], object.doubleTapAnimationSpeed); - writer.writeString(offsets[42], object.downloadLocation); - writer.writeBool(offsets[43], object.downloadOnlyOnWifi); - writer.writeBool(offsets[44], object.enableAniSkip); - writer.writeBool(offsets[45], object.enableAutoSkip); - writer.writeBool(offsets[46], object.enableCustomColorFilter); - writer.writeBool(offsets[47], object.enableDiscordRpc); + writer.writeByte(offsets[45], object.disableSectionType.index); + writer.writeByte(offsets[46], object.displayType.index); + writer.writeLong(offsets[47], object.doubleTapAnimationSpeed); + writer.writeString(offsets[48], object.downloadLocation); + writer.writeBool(offsets[49], object.downloadOnlyOnWifi); + writer.writeBool(offsets[50], object.downloadedOnlyMode); + writer.writeBool(offsets[51], object.enableAniSkip); + writer.writeBool(offsets[52], object.enableAudioPitchCorrection); + writer.writeBool(offsets[53], object.enableAutoSkip); + writer.writeBool(offsets[54], object.enableCustomColorFilter); + writer.writeBool(offsets[55], object.enableDiscordRpc); + writer.writeBool(offsets[56], object.enableGpuNext); + writer.writeBool(offsets[57], object.enableHardwareAcceleration); writer.writeObjectList( - offsets[48], + offsets[58], allOffsets, FilterScanlatorSchema.serialize, object.filterScanlatorList, ); - writer.writeDouble(offsets[49], object.flexColorSchemeBlendLevel); - writer.writeLong(offsets[50], object.flexSchemeColorIndex); - writer.writeBool(offsets[51], object.followSystemTheme); - writer.writeBool(offsets[52], object.fullScreenPlayer); - writer.writeBool(offsets[53], object.fullScreenReader); - writer.writeBool(offsets[54], object.hideDiscordRpcInIncognito); - writer.writeStringList(offsets[55], object.hideItems); - writer.writeString(offsets[56], object.hwdecMode); - writer.writeBool(offsets[57], object.incognitoMode); - writer.writeString(offsets[58], object.lastTrackerLibraryLocation); - writer.writeBool(offsets[59], object.libraryDownloadedChapters); - writer.writeLong(offsets[60], object.libraryFilterAnimeBookMarkedType); - writer.writeLong(offsets[61], object.libraryFilterAnimeDownloadType); - writer.writeLong(offsets[62], object.libraryFilterAnimeStartedType); - writer.writeLong(offsets[63], object.libraryFilterAnimeUnreadType); - writer.writeLong(offsets[64], object.libraryFilterMangasBookMarkedType); - writer.writeLong(offsets[65], object.libraryFilterMangasDownloadType); - writer.writeLong(offsets[66], object.libraryFilterMangasStartedType); - writer.writeLong(offsets[67], object.libraryFilterMangasUnreadType); - writer.writeLong(offsets[68], object.libraryFilterNovelBookMarkedType); - writer.writeLong(offsets[69], object.libraryFilterNovelDownloadType); - writer.writeLong(offsets[70], object.libraryFilterNovelStartedType); - writer.writeLong(offsets[71], object.libraryFilterNovelUnreadType); - writer.writeBool(offsets[72], object.libraryLocalSource); - writer.writeBool(offsets[73], object.libraryShowCategoryTabs); - writer.writeBool(offsets[74], object.libraryShowContinueReadingButton); - writer.writeBool(offsets[75], object.libraryShowLanguage); - writer.writeBool(offsets[76], object.libraryShowNumbersOfItems); + writer.writeDouble(offsets[59], object.flexColorSchemeBlendLevel); + writer.writeLong(offsets[60], object.flexSchemeColorIndex); + writer.writeBool(offsets[61], object.followSystemTheme); + writer.writeBool(offsets[62], object.fullScreenPlayer); + writer.writeBool(offsets[63], object.fullScreenReader); + writer.writeBool(offsets[64], object.hideDiscordRpcInIncognito); + writer.writeStringList(offsets[65], object.hideItems); + writer.writeString(offsets[66], object.hwdecMode); + writer.writeBool(offsets[67], object.incognitoMode); + writer.writeString(offsets[68], object.lastTrackerLibraryLocation); + writer.writeBool(offsets[69], object.libraryDownloadedChapters); + writer.writeLong(offsets[70], object.libraryFilterAnimeBookMarkedType); + writer.writeLong(offsets[71], object.libraryFilterAnimeDownloadType); + writer.writeLong(offsets[72], object.libraryFilterAnimeStartedType); + writer.writeLong(offsets[73], object.libraryFilterAnimeUnreadType); + writer.writeLong(offsets[74], object.libraryFilterMangasBookMarkedType); + writer.writeLong(offsets[75], object.libraryFilterMangasDownloadType); + writer.writeLong(offsets[76], object.libraryFilterMangasStartedType); + writer.writeLong(offsets[77], object.libraryFilterMangasUnreadType); + writer.writeLong(offsets[78], object.libraryFilterNovelBookMarkedType); + writer.writeLong(offsets[79], object.libraryFilterNovelDownloadType); + writer.writeLong(offsets[80], object.libraryFilterNovelStartedType); + writer.writeLong(offsets[81], object.libraryFilterNovelUnreadType); + writer.writeBool(offsets[82], object.libraryLocalSource); + writer.writeBool(offsets[83], object.libraryShowCategoryTabs); + writer.writeBool(offsets[84], object.libraryShowContinueReadingButton); + writer.writeBool(offsets[85], object.libraryShowLanguage); + writer.writeBool(offsets[86], object.libraryShowNumbersOfItems); writer.writeObject( - offsets[77], + offsets[87], allOffsets, L10nLocaleSchema.serialize, object.locale, ); writer.writeObjectList( - offsets[78], + offsets[88], allOffsets, RepoSchema.serialize, object.mangaExtensionsRepo, ); - writer.writeLong(offsets[79], object.mangaGridSize); - writer.writeByte(offsets[80], object.mangaHomeDisplayType.index); - writer.writeLong(offsets[81], object.markEpisodeAsSeenType); - writer.writeBool(offsets[82], object.mergeLibraryNavMobile); - writer.writeStringList(offsets[83], object.navigationOrder); - writer.writeByte(offsets[84], object.novelDisplayType.index); + writer.writeLong(offsets[89], object.mangaGridSize); + writer.writeByte(offsets[90], object.mangaHomeDisplayType.index); + writer.writeLong(offsets[91], object.markEpisodeAsSeenType); + writer.writeBool(offsets[92], object.mergeLibraryNavMobile); + writer.writeStringList(offsets[93], object.navigationOrder); + writer.writeByte(offsets[94], object.novelDisplayType.index); writer.writeObjectList( - offsets[85], + offsets[95], allOffsets, RepoSchema.serialize, object.novelExtensionsRepo, ); - writer.writeLong(offsets[86], object.novelFontSize); - writer.writeLong(offsets[87], object.novelGridSize); - writer.writeBool(offsets[88], object.novelLibraryDownloadedChapters); - writer.writeBool(offsets[89], object.novelLibraryLocalSource); - writer.writeBool(offsets[90], object.novelLibraryShowCategoryTabs); - writer.writeBool(offsets[91], object.novelLibraryShowContinueReadingButton); - writer.writeBool(offsets[92], object.novelLibraryShowLanguage); - writer.writeBool(offsets[93], object.novelLibraryShowNumbersOfItems); - writer.writeByte(offsets[94], object.novelTextAlign.index); - writer.writeBool(offsets[95], object.onlyIncludePinnedSources); - writer.writeLong(offsets[96], object.pagePreloadAmount); + writer.writeLong(offsets[96], object.novelFontSize); + writer.writeLong(offsets[97], object.novelGridSize); + writer.writeBool(offsets[98], object.novelLibraryDownloadedChapters); + writer.writeBool(offsets[99], object.novelLibraryLocalSource); + writer.writeBool(offsets[100], object.novelLibraryShowCategoryTabs); + writer.writeBool(offsets[101], object.novelLibraryShowContinueReadingButton); + writer.writeBool(offsets[102], object.novelLibraryShowLanguage); + writer.writeBool(offsets[103], object.novelLibraryShowNumbersOfItems); + writer.writeByte(offsets[104], object.novelTextAlign.index); + writer.writeBool(offsets[105], object.onlyIncludePinnedSources); + writer.writeLong(offsets[106], object.pagePreloadAmount); writer.writeObjectList( - offsets[97], + offsets[107], allOffsets, PersonalPageModeSchema.serialize, object.personalPageModeList, ); writer.writeObjectList( - offsets[98], + offsets[108], allOffsets, PersonalReaderModeSchema.serialize, object.personalReaderModeList, ); writer.writeObject( - offsets[99], + offsets[109], allOffsets, PlayerSubtitleSettingsSchema.serialize, object.playerSubtitleSettings, ); - writer.writeBool(offsets[100], object.pureBlackDarkMode); - writer.writeLong(offsets[101], object.relativeTimesTamps); - writer.writeBool(offsets[102], object.rpcShowCoverImage); - writer.writeBool(offsets[103], object.rpcShowReadingWatchingProgress); - writer.writeBool(offsets[104], object.rpcShowTitle); - writer.writeBool(offsets[105], object.saveAsCBZArchive); - writer.writeByte(offsets[106], object.scaleType.index); - writer.writeBool(offsets[107], object.showPagesNumber); + writer.writeBool(offsets[110], object.pureBlackDarkMode); + writer.writeLong(offsets[111], object.relativeTimesTamps); + writer.writeBool(offsets[112], object.rpcShowCoverImage); + writer.writeBool(offsets[113], object.rpcShowReadingWatchingProgress); + writer.writeBool(offsets[114], object.rpcShowTitle); + writer.writeBool(offsets[115], object.saveAsCBZArchive); + writer.writeByte(offsets[116], object.scaleType.index); + writer.writeBool(offsets[117], object.showPagesNumber); writer.writeObjectList( - offsets[108], + offsets[118], allOffsets, SortChapterSchema.serialize, object.sortChapterList, ); writer.writeObject( - offsets[109], + offsets[119], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryAnime, ); writer.writeObject( - offsets[110], + offsets[120], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryManga, ); writer.writeObject( - offsets[111], + offsets[121], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryNovel, ); - writer.writeLong(offsets[112], object.startDatebackup); - writer.writeBool(offsets[113], object.themeIsDark); - writer.writeBool(offsets[114], object.updateProgressAfterReading); - writer.writeLong(offsets[115], object.updatedAt); - writer.writeBool(offsets[116], object.useLibass); - writer.writeBool(offsets[117], object.usePageTapZones); - writer.writeString(offsets[118], object.userAgent); + writer.writeLong(offsets[122], object.startDatebackup); + writer.writeBool(offsets[123], object.themeIsDark); + writer.writeBool(offsets[124], object.updateProgressAfterReading); + writer.writeLong(offsets[125], object.updatedAt); + writer.writeBool(offsets[126], object.useLibass); + writer.writeBool(offsets[127], object.useMpvConfig); + writer.writeBool(offsets[128], object.usePageTapZones); + writer.writeBool(offsets[129], object.useYUV420P); + writer.writeString(offsets[130], object.userAgent); + writer.writeLong(offsets[131], object.volumeBoostCap); } Settings _settingsDeserialize( @@ -1256,246 +1455,287 @@ Settings _settingsDeserialize( Map> allOffsets, ) { final object = Settings( - aniSkipTimeoutLength: reader.readLongOrNull(offsets[0]), - animatePageTransitions: reader.readBoolOrNull(offsets[1]), - animeDisplayType: _SettingsanimeDisplayTypeValueEnumMap[ - reader.readByteOrNull(offsets[2])] ?? + algorithmWeights: reader.readObjectOrNull( + offsets[0], + AlgorithmWeightsSchema.deserialize, + allOffsets, + ), + androidProxyServer: reader.readStringOrNull(offsets[1]), + aniSkipTimeoutLength: reader.readLongOrNull(offsets[2]), + animatePageTransitions: reader.readBoolOrNull(offsets[3]), + animeDisplayType: + _SettingsanimeDisplayTypeValueEnumMap[reader.readByteOrNull( + offsets[4], + )] ?? DisplayType.compactGrid, animeExtensionsRepo: reader.readObjectList( - offsets[3], + offsets[5], RepoSchema.deserialize, allOffsets, Repo(), ), - animeGridSize: reader.readLongOrNull(offsets[4]), - animeLibraryDownloadedChapters: reader.readBoolOrNull(offsets[5]), - animeLibraryLocalSource: reader.readBoolOrNull(offsets[6]), - animeLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[7]), - animeLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[8]), - animeLibraryShowLanguage: reader.readBoolOrNull(offsets[9]), - animeLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[10]), - appFontFamily: reader.readStringOrNull(offsets[11]), - autoBackupLocation: reader.readStringOrNull(offsets[12]), - autoExtensionsUpdates: reader.readBoolOrNull(offsets[13]), + animeGridSize: reader.readLongOrNull(offsets[6]), + animeLibraryDownloadedChapters: reader.readBoolOrNull(offsets[7]), + animeLibraryLocalSource: reader.readBoolOrNull(offsets[8]), + animeLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[9]), + animeLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[10]), + animeLibraryShowLanguage: reader.readBoolOrNull(offsets[11]), + animeLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[12]), + appFontFamily: reader.readStringOrNull(offsets[13]), + audioChannels: + _SettingsaudioChannelsValueEnumMap[reader.readByteOrNull( + offsets[14], + )] ?? + AudioChannel.autoSafe, + audioPreferredLanguages: reader.readStringOrNull(offsets[15]), + autoBackupLocation: reader.readStringOrNull(offsets[16]), + autoExtensionsUpdates: reader.readBoolOrNull(offsets[17]), autoScrollPages: reader.readObjectList( - offsets[14], + offsets[18], AutoScrollPagesSchema.deserialize, allOffsets, AutoScrollPages(), ), - backgroundColor: _SettingsbackgroundColorValueEnumMap[ - reader.readByteOrNull(offsets[15])] ?? + backgroundColor: + _SettingsbackgroundColorValueEnumMap[reader.readByteOrNull( + offsets[19], + )] ?? BackgroundColor.black, - backupFrequency: reader.readLongOrNull(offsets[16]), - backupListOptions: reader.readLongList(offsets[17]), - btServerAddress: reader.readStringOrNull(offsets[18]), - btServerPort: reader.readLongOrNull(offsets[19]), + backupFrequency: reader.readLongOrNull(offsets[20]), + backupListOptions: reader.readLongList(offsets[21]), + btServerAddress: reader.readStringOrNull(offsets[22]), + btServerPort: reader.readLongOrNull(offsets[23]), chapterFilterDownloadedList: reader.readObjectList( - offsets[21], + offsets[25], ChapterFilterDownloadedSchema.deserialize, allOffsets, ChapterFilterDownloaded(), ), chapterPageIndexList: reader.readObjectList( - offsets[23], + offsets[27], ChapterPageIndexSchema.deserialize, allOffsets, ChapterPageIndex(), ), chapterPageUrlsList: reader.readObjectList( - offsets[24], + offsets[28], ChapterPageurlsSchema.deserialize, allOffsets, ChapterPageurls(), ), - checkForAppUpdates: reader.readBoolOrNull(offsets[25]), - checkForExtensionUpdates: reader.readBoolOrNull(offsets[26]), - clearChapterCacheOnAppLaunch: reader.readBoolOrNull(offsets[27]), - colorFilterBlendMode: _SettingscolorFilterBlendModeValueEnumMap[ - reader.readByteOrNull(offsets[28])] ?? + checkForAppUpdates: reader.readBoolOrNull(offsets[29]), + checkForExtensionUpdates: reader.readBoolOrNull(offsets[30]), + clearChapterCacheOnAppLaunch: reader.readBoolOrNull(offsets[31]), + colorFilterBlendMode: + _SettingscolorFilterBlendModeValueEnumMap[reader.readByteOrNull( + offsets[32], + )] ?? ColorFilterBlendMode.none, - concurrentDownloads: reader.readLongOrNull(offsets[29]), + concurrentDownloads: reader.readLongOrNull(offsets[33]), cookiesList: reader.readObjectList( - offsets[30], + offsets[34], MCookieSchema.deserialize, allOffsets, MCookie(), ), - cropBorders: reader.readBoolOrNull(offsets[31]), + cropBorders: reader.readBoolOrNull(offsets[35]), customColorFilter: reader.readObjectOrNull( - offsets[32], + offsets[36], CustomColorFilterSchema.deserialize, allOffsets, ), - dateFormat: reader.readStringOrNull(offsets[33]), - defaultDoubleTapToSkipLength: reader.readLongOrNull(offsets[34]), - defaultPlayBackSpeed: reader.readDoubleOrNull(offsets[35]), - defaultReaderMode: _SettingsdefaultReaderModeValueEnumMap[ - reader.readByteOrNull(offsets[36])] ?? + customDns: reader.readStringOrNull(offsets[37]), + dateFormat: reader.readStringOrNull(offsets[38]), + debandingType: + _SettingsdebandingTypeValueEnumMap[reader.readByteOrNull( + offsets[39], + )] ?? + DebandingType.none, + defaultDoubleTapToSkipLength: reader.readLongOrNull(offsets[40]), + defaultPlayBackSpeed: reader.readDoubleOrNull(offsets[41]), + defaultReaderMode: + _SettingsdefaultReaderModeValueEnumMap[reader.readByteOrNull( + offsets[42], + )] ?? ReaderMode.vertical, - defaultSkipIntroLength: reader.readLongOrNull(offsets[37]), - disableSectionType: _SettingsdisableSectionTypeValueEnumMap[ - reader.readByteOrNull(offsets[39])] ?? + defaultSkipIntroLength: reader.readLongOrNull(offsets[43]), + disableSectionType: + _SettingsdisableSectionTypeValueEnumMap[reader.readByteOrNull( + offsets[45], + )] ?? SectionType.all, displayType: - _SettingsdisplayTypeValueEnumMap[reader.readByteOrNull(offsets[40])] ?? - DisplayType.compactGrid, - doubleTapAnimationSpeed: reader.readLongOrNull(offsets[41]), - downloadLocation: reader.readStringOrNull(offsets[42]), - downloadOnlyOnWifi: reader.readBoolOrNull(offsets[43]), - enableAniSkip: reader.readBoolOrNull(offsets[44]), - enableAutoSkip: reader.readBoolOrNull(offsets[45]), - enableCustomColorFilter: reader.readBoolOrNull(offsets[46]), - enableDiscordRpc: reader.readBoolOrNull(offsets[47]), - flexColorSchemeBlendLevel: reader.readDoubleOrNull(offsets[49]), - flexSchemeColorIndex: reader.readLongOrNull(offsets[50]), - followSystemTheme: reader.readBoolOrNull(offsets[51]), - fullScreenPlayer: reader.readBoolOrNull(offsets[52]), - fullScreenReader: reader.readBoolOrNull(offsets[53]), - hideDiscordRpcInIncognito: reader.readBoolOrNull(offsets[54]), - hideItems: reader.readStringList(offsets[55]), - hwdecMode: reader.readStringOrNull(offsets[56]), + _SettingsdisplayTypeValueEnumMap[reader.readByteOrNull(offsets[46])] ?? + DisplayType.compactGrid, + doubleTapAnimationSpeed: reader.readLongOrNull(offsets[47]), + downloadLocation: reader.readStringOrNull(offsets[48]), + downloadOnlyOnWifi: reader.readBoolOrNull(offsets[49]), + downloadedOnlyMode: reader.readBoolOrNull(offsets[50]), + enableAniSkip: reader.readBoolOrNull(offsets[51]), + enableAudioPitchCorrection: reader.readBoolOrNull(offsets[52]), + enableAutoSkip: reader.readBoolOrNull(offsets[53]), + enableCustomColorFilter: reader.readBoolOrNull(offsets[54]), + enableDiscordRpc: reader.readBoolOrNull(offsets[55]), + enableGpuNext: reader.readBoolOrNull(offsets[56]), + enableHardwareAcceleration: reader.readBoolOrNull(offsets[57]), + flexColorSchemeBlendLevel: reader.readDoubleOrNull(offsets[59]), + flexSchemeColorIndex: reader.readLongOrNull(offsets[60]), + followSystemTheme: reader.readBoolOrNull(offsets[61]), + fullScreenPlayer: reader.readBoolOrNull(offsets[62]), + fullScreenReader: reader.readBoolOrNull(offsets[63]), + hideDiscordRpcInIncognito: reader.readBoolOrNull(offsets[64]), + hideItems: reader.readStringList(offsets[65]), + hwdecMode: reader.readStringOrNull(offsets[66]), id: id, - incognitoMode: reader.readBoolOrNull(offsets[57]), - lastTrackerLibraryLocation: reader.readStringOrNull(offsets[58]), - libraryDownloadedChapters: reader.readBoolOrNull(offsets[59]), - libraryFilterAnimeBookMarkedType: reader.readLongOrNull(offsets[60]), - libraryFilterAnimeDownloadType: reader.readLongOrNull(offsets[61]), - libraryFilterAnimeStartedType: reader.readLongOrNull(offsets[62]), - libraryFilterAnimeUnreadType: reader.readLongOrNull(offsets[63]), - libraryFilterMangasBookMarkedType: reader.readLongOrNull(offsets[64]), - libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[65]), - libraryFilterMangasStartedType: reader.readLongOrNull(offsets[66]), - libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[67]), - libraryFilterNovelBookMarkedType: reader.readLongOrNull(offsets[68]), - libraryFilterNovelDownloadType: reader.readLongOrNull(offsets[69]), - libraryFilterNovelStartedType: reader.readLongOrNull(offsets[70]), - libraryFilterNovelUnreadType: reader.readLongOrNull(offsets[71]), - libraryLocalSource: reader.readBoolOrNull(offsets[72]), - libraryShowCategoryTabs: reader.readBoolOrNull(offsets[73]), - libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[74]), - libraryShowLanguage: reader.readBoolOrNull(offsets[75]), - libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[76]), + incognitoMode: reader.readBoolOrNull(offsets[67]), + lastTrackerLibraryLocation: reader.readStringOrNull(offsets[68]), + libraryDownloadedChapters: reader.readBoolOrNull(offsets[69]), + libraryFilterAnimeBookMarkedType: reader.readLongOrNull(offsets[70]), + libraryFilterAnimeDownloadType: reader.readLongOrNull(offsets[71]), + libraryFilterAnimeStartedType: reader.readLongOrNull(offsets[72]), + libraryFilterAnimeUnreadType: reader.readLongOrNull(offsets[73]), + libraryFilterMangasBookMarkedType: reader.readLongOrNull(offsets[74]), + libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[75]), + libraryFilterMangasStartedType: reader.readLongOrNull(offsets[76]), + libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[77]), + libraryFilterNovelBookMarkedType: reader.readLongOrNull(offsets[78]), + libraryFilterNovelDownloadType: reader.readLongOrNull(offsets[79]), + libraryFilterNovelStartedType: reader.readLongOrNull(offsets[80]), + libraryFilterNovelUnreadType: reader.readLongOrNull(offsets[81]), + libraryLocalSource: reader.readBoolOrNull(offsets[82]), + libraryShowCategoryTabs: reader.readBoolOrNull(offsets[83]), + libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[84]), + libraryShowLanguage: reader.readBoolOrNull(offsets[85]), + libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[86]), mangaExtensionsRepo: reader.readObjectList( - offsets[78], + offsets[88], RepoSchema.deserialize, allOffsets, Repo(), ), - mangaGridSize: reader.readLongOrNull(offsets[79]), - mangaHomeDisplayType: _SettingsmangaHomeDisplayTypeValueEnumMap[ - reader.readByteOrNull(offsets[80])] ?? + mangaGridSize: reader.readLongOrNull(offsets[89]), + mangaHomeDisplayType: + _SettingsmangaHomeDisplayTypeValueEnumMap[reader.readByteOrNull( + offsets[90], + )] ?? DisplayType.comfortableGrid, - markEpisodeAsSeenType: reader.readLongOrNull(offsets[81]), - mergeLibraryNavMobile: reader.readBoolOrNull(offsets[82]), - navigationOrder: reader.readStringList(offsets[83]), - novelDisplayType: _SettingsnovelDisplayTypeValueEnumMap[ - reader.readByteOrNull(offsets[84])] ?? + markEpisodeAsSeenType: reader.readLongOrNull(offsets[91]), + mergeLibraryNavMobile: reader.readBoolOrNull(offsets[92]), + navigationOrder: reader.readStringList(offsets[93]), + novelDisplayType: + _SettingsnovelDisplayTypeValueEnumMap[reader.readByteOrNull( + offsets[94], + )] ?? DisplayType.comfortableGrid, novelExtensionsRepo: reader.readObjectList( - offsets[85], + offsets[95], RepoSchema.deserialize, allOffsets, Repo(), ), - novelFontSize: reader.readLongOrNull(offsets[86]), - novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[88]), - novelLibraryLocalSource: reader.readBoolOrNull(offsets[89]), - novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[90]), - novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[91]), - novelLibraryShowLanguage: reader.readBoolOrNull(offsets[92]), - novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[93]), - novelTextAlign: _SettingsnovelTextAlignValueEnumMap[ - reader.readByteOrNull(offsets[94])] ?? + novelFontSize: reader.readLongOrNull(offsets[96]), + novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[98]), + novelLibraryLocalSource: reader.readBoolOrNull(offsets[99]), + novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[100]), + novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[101]), + novelLibraryShowLanguage: reader.readBoolOrNull(offsets[102]), + novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[103]), + novelTextAlign: + _SettingsnovelTextAlignValueEnumMap[reader.readByteOrNull( + offsets[104], + )] ?? NovelTextAlign.left, - onlyIncludePinnedSources: reader.readBoolOrNull(offsets[95]), - pagePreloadAmount: reader.readLongOrNull(offsets[96]), + onlyIncludePinnedSources: reader.readBoolOrNull(offsets[105]), + pagePreloadAmount: reader.readLongOrNull(offsets[106]), personalPageModeList: reader.readObjectList( - offsets[97], + offsets[107], PersonalPageModeSchema.deserialize, allOffsets, PersonalPageMode(), ), personalReaderModeList: reader.readObjectList( - offsets[98], + offsets[108], PersonalReaderModeSchema.deserialize, allOffsets, PersonalReaderMode(), ), playerSubtitleSettings: reader.readObjectOrNull( - offsets[99], + offsets[109], PlayerSubtitleSettingsSchema.deserialize, allOffsets, ), - pureBlackDarkMode: reader.readBoolOrNull(offsets[100]), - relativeTimesTamps: reader.readLongOrNull(offsets[101]), - rpcShowCoverImage: reader.readBoolOrNull(offsets[102]), - rpcShowReadingWatchingProgress: reader.readBoolOrNull(offsets[103]), - rpcShowTitle: reader.readBoolOrNull(offsets[104]), - saveAsCBZArchive: reader.readBoolOrNull(offsets[105]), + pureBlackDarkMode: reader.readBoolOrNull(offsets[110]), + relativeTimesTamps: reader.readLongOrNull(offsets[111]), + rpcShowCoverImage: reader.readBoolOrNull(offsets[112]), + rpcShowReadingWatchingProgress: reader.readBoolOrNull(offsets[113]), + rpcShowTitle: reader.readBoolOrNull(offsets[114]), + saveAsCBZArchive: reader.readBoolOrNull(offsets[115]), scaleType: - _SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[106])] ?? - ScaleType.fitScreen, - showPagesNumber: reader.readBoolOrNull(offsets[107]), + _SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[116])] ?? + ScaleType.fitScreen, + showPagesNumber: reader.readBoolOrNull(offsets[117]), sortChapterList: reader.readObjectList( - offsets[108], + offsets[118], SortChapterSchema.deserialize, allOffsets, SortChapter(), ), sortLibraryAnime: reader.readObjectOrNull( - offsets[109], + offsets[119], SortLibraryMangaSchema.deserialize, allOffsets, ), sortLibraryManga: reader.readObjectOrNull( - offsets[110], + offsets[120], SortLibraryMangaSchema.deserialize, allOffsets, ), sortLibraryNovel: reader.readObjectOrNull( - offsets[111], + offsets[121], SortLibraryMangaSchema.deserialize, allOffsets, ), - startDatebackup: reader.readLongOrNull(offsets[112]), - themeIsDark: reader.readBoolOrNull(offsets[113]), - updateProgressAfterReading: reader.readBoolOrNull(offsets[114]), - updatedAt: reader.readLongOrNull(offsets[115]), - useLibass: reader.readBoolOrNull(offsets[116]), - usePageTapZones: reader.readBoolOrNull(offsets[117]), - userAgent: reader.readStringOrNull(offsets[118]), - ); - object.chapterFilterBookmarkedList = - reader.readObjectList( - offsets[20], - ChapterFilterBookmarkedSchema.deserialize, - allOffsets, - ChapterFilterBookmarked(), + startDatebackup: reader.readLongOrNull(offsets[122]), + themeIsDark: reader.readBoolOrNull(offsets[123]), + updateProgressAfterReading: reader.readBoolOrNull(offsets[124]), + updatedAt: reader.readLongOrNull(offsets[125]), + useLibass: reader.readBoolOrNull(offsets[126]), + useMpvConfig: reader.readBoolOrNull(offsets[127]), + usePageTapZones: reader.readBoolOrNull(offsets[128]), + useYUV420P: reader.readBoolOrNull(offsets[129]), + userAgent: reader.readStringOrNull(offsets[130]), + volumeBoostCap: reader.readLongOrNull(offsets[131]), ); + object.chapterFilterBookmarkedList = reader + .readObjectList( + offsets[24], + ChapterFilterBookmarkedSchema.deserialize, + allOffsets, + ChapterFilterBookmarked(), + ); object.chapterFilterUnreadList = reader.readObjectList( - offsets[22], + offsets[26], ChapterFilterUnreadSchema.deserialize, allOffsets, ChapterFilterUnread(), ); object.defaultSubtitleLang = reader.readObjectOrNull( - offsets[38], + offsets[44], L10nLocaleSchema.deserialize, allOffsets, ); object.filterScanlatorList = reader.readObjectList( - offsets[48], + offsets[58], FilterScanlatorSchema.deserialize, allOffsets, FilterScanlator(), ); object.locale = reader.readObjectOrNull( - offsets[77], + offsets[87], L10nLocaleSchema.deserialize, allOffsets, ); - object.novelGridSize = reader.readLongOrNull(offsets[87]); + object.novelGridSize = reader.readLongOrNull(offsets[97]); return object; } @@ -1507,26 +1747,34 @@ P _settingsDeserializeProp

( ) { switch (propertyId) { case 0: - return (reader.readLongOrNull(offset)) as P; + return (reader.readObjectOrNull( + offset, + AlgorithmWeightsSchema.deserialize, + allOffsets, + )) + as P; case 1: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 2: - return (_SettingsanimeDisplayTypeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - DisplayType.compactGrid) as P; - case 3: - return (reader.readObjectList( - offset, - RepoSchema.deserialize, - allOffsets, - Repo(), - )) as P; - case 4: return (reader.readLongOrNull(offset)) as P; + case 3: + return (reader.readBoolOrNull(offset)) as P; + case 4: + return (_SettingsanimeDisplayTypeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + DisplayType.compactGrid) + as P; case 5: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readObjectList( + offset, + RepoSchema.deserialize, + allOffsets, + Repo(), + )) + as P; case 6: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 7: return (reader.readBoolOrNull(offset)) as P; case 8: @@ -1536,142 +1784,163 @@ P _settingsDeserializeProp

( case 10: return (reader.readBoolOrNull(offset)) as P; case 11: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 12: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 13: - return (reader.readBoolOrNull(offset)) as P; - case 14: - return (reader.readObjectList( - offset, - AutoScrollPagesSchema.deserialize, - allOffsets, - AutoScrollPages(), - )) as P; - case 15: - return (_SettingsbackgroundColorValueEnumMap[ - reader.readByteOrNull(offset)] ?? - BackgroundColor.black) as P; - case 16: - return (reader.readLongOrNull(offset)) as P; - case 17: - return (reader.readLongList(offset)) as P; - case 18: return (reader.readStringOrNull(offset)) as P; + case 14: + return (_SettingsaudioChannelsValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + AudioChannel.autoSafe) + as P; + case 15: + return (reader.readStringOrNull(offset)) as P; + case 16: + return (reader.readStringOrNull(offset)) as P; + case 17: + return (reader.readBoolOrNull(offset)) as P; + case 18: + return (reader.readObjectList( + offset, + AutoScrollPagesSchema.deserialize, + allOffsets, + AutoScrollPages(), + )) + as P; case 19: - return (reader.readLongOrNull(offset)) as P; + return (_SettingsbackgroundColorValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + BackgroundColor.black) + as P; case 20: - return (reader.readObjectList( - offset, - ChapterFilterBookmarkedSchema.deserialize, - allOffsets, - ChapterFilterBookmarked(), - )) as P; - case 21: - return (reader.readObjectList( - offset, - ChapterFilterDownloadedSchema.deserialize, - allOffsets, - ChapterFilterDownloaded(), - )) as P; - case 22: - return (reader.readObjectList( - offset, - ChapterFilterUnreadSchema.deserialize, - allOffsets, - ChapterFilterUnread(), - )) as P; - case 23: - return (reader.readObjectList( - offset, - ChapterPageIndexSchema.deserialize, - allOffsets, - ChapterPageIndex(), - )) as P; - case 24: - return (reader.readObjectList( - offset, - ChapterPageurlsSchema.deserialize, - allOffsets, - ChapterPageurls(), - )) as P; - case 25: - return (reader.readBoolOrNull(offset)) as P; - case 26: - return (reader.readBoolOrNull(offset)) as P; - case 27: - return (reader.readBoolOrNull(offset)) as P; - case 28: - return (_SettingscolorFilterBlendModeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - ColorFilterBlendMode.none) as P; - case 29: return (reader.readLongOrNull(offset)) as P; + case 21: + return (reader.readLongList(offset)) as P; + case 22: + return (reader.readStringOrNull(offset)) as P; + case 23: + return (reader.readLongOrNull(offset)) as P; + case 24: + return (reader.readObjectList( + offset, + ChapterFilterBookmarkedSchema.deserialize, + allOffsets, + ChapterFilterBookmarked(), + )) + as P; + case 25: + return (reader.readObjectList( + offset, + ChapterFilterDownloadedSchema.deserialize, + allOffsets, + ChapterFilterDownloaded(), + )) + as P; + case 26: + return (reader.readObjectList( + offset, + ChapterFilterUnreadSchema.deserialize, + allOffsets, + ChapterFilterUnread(), + )) + as P; + case 27: + return (reader.readObjectList( + offset, + ChapterPageIndexSchema.deserialize, + allOffsets, + ChapterPageIndex(), + )) + as P; + case 28: + return (reader.readObjectList( + offset, + ChapterPageurlsSchema.deserialize, + allOffsets, + ChapterPageurls(), + )) + as P; + case 29: + return (reader.readBoolOrNull(offset)) as P; case 30: - return (reader.readObjectList( - offset, - MCookieSchema.deserialize, - allOffsets, - MCookie(), - )) as P; + return (reader.readBoolOrNull(offset)) as P; case 31: return (reader.readBoolOrNull(offset)) as P; case 32: - return (reader.readObjectOrNull( - offset, - CustomColorFilterSchema.deserialize, - allOffsets, - )) as P; + return (_SettingscolorFilterBlendModeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + ColorFilterBlendMode.none) + as P; case 33: - return (reader.readStringOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 34: - return (reader.readLongOrNull(offset)) as P; + return (reader.readObjectList( + offset, + MCookieSchema.deserialize, + allOffsets, + MCookie(), + )) + as P; case 35: - return (reader.readDoubleOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 36: - return (_SettingsdefaultReaderModeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - ReaderMode.vertical) as P; + return (reader.readObjectOrNull( + offset, + CustomColorFilterSchema.deserialize, + allOffsets, + )) + as P; case 37: - return (reader.readLongOrNull(offset)) as P; - case 38: - return (reader.readObjectOrNull( - offset, - L10nLocaleSchema.deserialize, - allOffsets, - )) as P; - case 39: - return (_SettingsdisableSectionTypeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - SectionType.all) as P; - case 40: - return (_SettingsdisplayTypeValueEnumMap[reader.readByteOrNull(offset)] ?? - DisplayType.compactGrid) as P; - case 41: - return (reader.readLongOrNull(offset)) as P; - case 42: return (reader.readStringOrNull(offset)) as P; - case 43: - return (reader.readBoolOrNull(offset)) as P; - case 44: - return (reader.readBoolOrNull(offset)) as P; - case 45: - return (reader.readBoolOrNull(offset)) as P; - case 46: - return (reader.readBoolOrNull(offset)) as P; - case 47: - return (reader.readBoolOrNull(offset)) as P; - case 48: - return (reader.readObjectList( - offset, - FilterScanlatorSchema.deserialize, - allOffsets, - FilterScanlator(), - )) as P; - case 49: - return (reader.readDoubleOrNull(offset)) as P; - case 50: + case 38: + return (reader.readStringOrNull(offset)) as P; + case 39: + return (_SettingsdebandingTypeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + DebandingType.none) + as P; + case 40: return (reader.readLongOrNull(offset)) as P; + case 41: + return (reader.readDoubleOrNull(offset)) as P; + case 42: + return (_SettingsdefaultReaderModeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + ReaderMode.vertical) + as P; + case 43: + return (reader.readLongOrNull(offset)) as P; + case 44: + return (reader.readObjectOrNull( + offset, + L10nLocaleSchema.deserialize, + allOffsets, + )) + as P; + case 45: + return (_SettingsdisableSectionTypeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + SectionType.all) + as P; + case 46: + return (_SettingsdisplayTypeValueEnumMap[reader.readByteOrNull(offset)] ?? + DisplayType.compactGrid) + as P; + case 47: + return (reader.readLongOrNull(offset)) as P; + case 48: + return (reader.readStringOrNull(offset)) as P; + case 49: + return (reader.readBoolOrNull(offset)) as P; + case 50: + return (reader.readBoolOrNull(offset)) as P; case 51: return (reader.readBoolOrNull(offset)) as P; case 52: @@ -1681,185 +1950,234 @@ P _settingsDeserializeProp

( case 54: return (reader.readBoolOrNull(offset)) as P; case 55: - return (reader.readStringList(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 56: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 57: return (reader.readBoolOrNull(offset)) as P; case 58: - return (reader.readStringOrNull(offset)) as P; + return (reader.readObjectList( + offset, + FilterScanlatorSchema.deserialize, + allOffsets, + FilterScanlator(), + )) + as P; case 59: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readDoubleOrNull(offset)) as P; case 60: return (reader.readLongOrNull(offset)) as P; case 61: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 62: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 63: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 64: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 65: - return (reader.readLongOrNull(offset)) as P; + return (reader.readStringList(offset)) as P; case 66: - return (reader.readLongOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 67: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 68: - return (reader.readLongOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 69: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 70: return (reader.readLongOrNull(offset)) as P; case 71: return (reader.readLongOrNull(offset)) as P; case 72: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 73: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 74: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 75: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 76: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 77: - return (reader.readObjectOrNull( - offset, - L10nLocaleSchema.deserialize, - allOffsets, - )) as P; + return (reader.readLongOrNull(offset)) as P; case 78: - return (reader.readObjectList( - offset, - RepoSchema.deserialize, - allOffsets, - Repo(), - )) as P; + return (reader.readLongOrNull(offset)) as P; case 79: return (reader.readLongOrNull(offset)) as P; case 80: - return (_SettingsmangaHomeDisplayTypeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - DisplayType.comfortableGrid) as P; + return (reader.readLongOrNull(offset)) as P; case 81: return (reader.readLongOrNull(offset)) as P; case 82: return (reader.readBoolOrNull(offset)) as P; case 83: - return (reader.readStringList(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 84: - return (_SettingsnovelDisplayTypeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - DisplayType.comfortableGrid) as P; + return (reader.readBoolOrNull(offset)) as P; case 85: - return (reader.readObjectList( - offset, - RepoSchema.deserialize, - allOffsets, - Repo(), - )) as P; + return (reader.readBoolOrNull(offset)) as P; case 86: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 87: - return (reader.readLongOrNull(offset)) as P; + return (reader.readObjectOrNull( + offset, + L10nLocaleSchema.deserialize, + allOffsets, + )) + as P; case 88: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readObjectList( + offset, + RepoSchema.deserialize, + allOffsets, + Repo(), + )) + as P; case 89: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 90: - return (reader.readBoolOrNull(offset)) as P; + return (_SettingsmangaHomeDisplayTypeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + DisplayType.comfortableGrid) + as P; case 91: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 92: return (reader.readBoolOrNull(offset)) as P; case 93: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readStringList(offset)) as P; case 94: - return (_SettingsnovelTextAlignValueEnumMap[ - reader.readByteOrNull(offset)] ?? - NovelTextAlign.left) as P; + return (_SettingsnovelDisplayTypeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + DisplayType.comfortableGrid) + as P; case 95: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readObjectList( + offset, + RepoSchema.deserialize, + allOffsets, + Repo(), + )) + as P; case 96: return (reader.readLongOrNull(offset)) as P; case 97: - return (reader.readObjectList( - offset, - PersonalPageModeSchema.deserialize, - allOffsets, - PersonalPageMode(), - )) as P; + return (reader.readLongOrNull(offset)) as P; case 98: - return (reader.readObjectList( - offset, - PersonalReaderModeSchema.deserialize, - allOffsets, - PersonalReaderMode(), - )) as P; + return (reader.readBoolOrNull(offset)) as P; case 99: - return (reader.readObjectOrNull( - offset, - PlayerSubtitleSettingsSchema.deserialize, - allOffsets, - )) as P; + return (reader.readBoolOrNull(offset)) as P; case 100: return (reader.readBoolOrNull(offset)) as P; case 101: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 102: return (reader.readBoolOrNull(offset)) as P; case 103: return (reader.readBoolOrNull(offset)) as P; case 104: - return (reader.readBoolOrNull(offset)) as P; + return (_SettingsnovelTextAlignValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + NovelTextAlign.left) + as P; case 105: return (reader.readBoolOrNull(offset)) as P; case 106: - return (_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offset)] ?? - ScaleType.fitScreen) as P; - case 107: - return (reader.readBoolOrNull(offset)) as P; - case 108: - return (reader.readObjectList( - offset, - SortChapterSchema.deserialize, - allOffsets, - SortChapter(), - )) as P; - case 109: - return (reader.readObjectOrNull( - offset, - SortLibraryMangaSchema.deserialize, - allOffsets, - )) as P; - case 110: - return (reader.readObjectOrNull( - offset, - SortLibraryMangaSchema.deserialize, - allOffsets, - )) as P; - case 111: - return (reader.readObjectOrNull( - offset, - SortLibraryMangaSchema.deserialize, - allOffsets, - )) as P; - case 112: return (reader.readLongOrNull(offset)) as P; + case 107: + return (reader.readObjectList( + offset, + PersonalPageModeSchema.deserialize, + allOffsets, + PersonalPageMode(), + )) + as P; + case 108: + return (reader.readObjectList( + offset, + PersonalReaderModeSchema.deserialize, + allOffsets, + PersonalReaderMode(), + )) + as P; + case 109: + return (reader.readObjectOrNull( + offset, + PlayerSubtitleSettingsSchema.deserialize, + allOffsets, + )) + as P; + case 110: + return (reader.readBoolOrNull(offset)) as P; + case 111: + return (reader.readLongOrNull(offset)) as P; + case 112: + return (reader.readBoolOrNull(offset)) as P; case 113: return (reader.readBoolOrNull(offset)) as P; case 114: return (reader.readBoolOrNull(offset)) as P; case 115: - return (reader.readLongOrNull(offset)) as P; - case 116: return (reader.readBoolOrNull(offset)) as P; + case 116: + return (_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offset)] ?? + ScaleType.fitScreen) + as P; case 117: return (reader.readBoolOrNull(offset)) as P; case 118: + return (reader.readObjectList( + offset, + SortChapterSchema.deserialize, + allOffsets, + SortChapter(), + )) + as P; + case 119: + return (reader.readObjectOrNull( + offset, + SortLibraryMangaSchema.deserialize, + allOffsets, + )) + as P; + case 120: + return (reader.readObjectOrNull( + offset, + SortLibraryMangaSchema.deserialize, + allOffsets, + )) + as P; + case 121: + return (reader.readObjectOrNull( + offset, + SortLibraryMangaSchema.deserialize, + allOffsets, + )) + as P; + case 122: + return (reader.readLongOrNull(offset)) as P; + case 123: + return (reader.readBoolOrNull(offset)) as P; + case 124: + return (reader.readBoolOrNull(offset)) as P; + case 125: + return (reader.readLongOrNull(offset)) as P; + case 126: + return (reader.readBoolOrNull(offset)) as P; + case 127: + return (reader.readBoolOrNull(offset)) as P; + case 128: + return (reader.readBoolOrNull(offset)) as P; + case 129: + return (reader.readBoolOrNull(offset)) as P; + case 130: return (reader.readStringOrNull(offset)) as P; + case 131: + return (reader.readLongOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); } @@ -1877,6 +2195,20 @@ const _SettingsanimeDisplayTypeValueEnumMap = { 2: DisplayType.coverOnlyGrid, 3: DisplayType.list, }; +const _SettingsaudioChannelsEnumValueMap = { + 'auto': 0, + 'autoSafe': 1, + 'mono': 2, + 'stereo': 3, + 'reverseStereo': 4, +}; +const _SettingsaudioChannelsValueEnumMap = { + 0: AudioChannel.auto, + 1: AudioChannel.autoSafe, + 2: AudioChannel.mono, + 3: AudioChannel.stereo, + 4: AudioChannel.reverseStereo, +}; const _SettingsbackgroundColorEnumValueMap = { 'black': 0, 'grey': 1, @@ -1919,6 +2251,12 @@ const _SettingscolorFilterBlendModeValueEnumMap = { 11: ColorFilterBlendMode.plus, 12: ColorFilterBlendMode.exclusion, }; +const _SettingsdebandingTypeEnumValueMap = {'none': 0, 'cpu': 1, 'gpu': 2}; +const _SettingsdebandingTypeValueEnumMap = { + 0: DebandingType.none, + 1: DebandingType.cpu, + 2: DebandingType.gpu, +}; const _SettingsdefaultReaderModeEnumValueMap = { 'vertical': 0, 'ltr': 1, @@ -2034,10 +2372,7 @@ extension SettingsQueryWhereSort on QueryBuilder { extension SettingsQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -2063,8 +2398,10 @@ extension SettingsQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -2072,8 +2409,10 @@ extension SettingsQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -2088,12 +2427,14 @@ extension SettingsQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -2101,183 +2442,363 @@ extension SettingsQueryWhere on QueryBuilder { extension SettingsQueryFilter on QueryBuilder { QueryBuilder - aniSkipTimeoutLengthIsNull() { + algorithmWeightsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'aniSkipTimeoutLength', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'algorithmWeights'), + ); }); } QueryBuilder - aniSkipTimeoutLengthIsNotNull() { + algorithmWeightsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'aniSkipTimeoutLength', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'algorithmWeights'), + ); }); } QueryBuilder - aniSkipTimeoutLengthEqualTo(int? value) { + androidProxyServerIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'aniSkipTimeoutLength', - value: value, - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'androidProxyServer'), + ); }); } QueryBuilder - aniSkipTimeoutLengthGreaterThan( - int? value, { + androidProxyServerIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'androidProxyServer'), + ); + }); + } + + QueryBuilder + androidProxyServerEqualTo(String? value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'androidProxyServer', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + androidProxyServerGreaterThan( + String? value, { bool include = false, + bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'aniSkipTimeoutLength', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'androidProxyServer', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - aniSkipTimeoutLengthLessThan( - int? value, { + androidProxyServerLessThan( + String? value, { bool include = false, + bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'aniSkipTimeoutLength', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'androidProxyServer', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - aniSkipTimeoutLengthBetween( + androidProxyServerBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'androidProxyServer', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + androidProxyServerStartsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'androidProxyServer', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + androidProxyServerEndsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'androidProxyServer', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + androidProxyServerContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'androidProxyServer', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + androidProxyServerMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'androidProxyServer', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + androidProxyServerIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'androidProxyServer', value: ''), + ); + }); + } + + QueryBuilder + androidProxyServerIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'androidProxyServer', value: ''), + ); + }); + } + + QueryBuilder + aniSkipTimeoutLengthIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'aniSkipTimeoutLength'), + ); + }); + } + + QueryBuilder + aniSkipTimeoutLengthIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'aniSkipTimeoutLength'), + ); + }); + } + + QueryBuilder + aniSkipTimeoutLengthEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'aniSkipTimeoutLength', + value: value, + ), + ); + }); + } + + QueryBuilder + aniSkipTimeoutLengthGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'aniSkipTimeoutLength', + value: value, + ), + ); + }); + } + + QueryBuilder + aniSkipTimeoutLengthLessThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'aniSkipTimeoutLength', + value: value, + ), + ); + }); + } + + QueryBuilder + aniSkipTimeoutLengthBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'aniSkipTimeoutLength', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'aniSkipTimeoutLength', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - animatePageTransitionsIsNull() { + animatePageTransitionsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animatePageTransitions', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'animatePageTransitions'), + ); }); } QueryBuilder - animatePageTransitionsIsNotNull() { + animatePageTransitionsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animatePageTransitions', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'animatePageTransitions'), + ); }); } QueryBuilder - animatePageTransitionsEqualTo(bool? value) { + animatePageTransitionsEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animatePageTransitions', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'animatePageTransitions', + value: value, + ), + ); }); } QueryBuilder - animeDisplayTypeEqualTo(DisplayType value) { + animeDisplayTypeEqualTo(DisplayType value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animeDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'animeDisplayType', value: value), + ); }); } QueryBuilder - animeDisplayTypeGreaterThan( - DisplayType value, { - bool include = false, - }) { + animeDisplayTypeGreaterThan(DisplayType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'animeDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'animeDisplayType', + value: value, + ), + ); }); } QueryBuilder - animeDisplayTypeLessThan( - DisplayType value, { - bool include = false, - }) { + animeDisplayTypeLessThan(DisplayType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'animeDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'animeDisplayType', + value: value, + ), + ); }); } QueryBuilder - animeDisplayTypeBetween( + animeDisplayTypeBetween( DisplayType lower, DisplayType upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'animeDisplayType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'animeDisplayType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - animeExtensionsRepoIsNull() { + animeExtensionsRepoIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animeExtensionsRepo', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'animeExtensionsRepo'), + ); }); } QueryBuilder - animeExtensionsRepoIsNotNull() { + animeExtensionsRepoIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animeExtensionsRepo', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'animeExtensionsRepo'), + ); }); } QueryBuilder - animeExtensionsRepoLengthEqualTo(int length) { + animeExtensionsRepoLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'animeExtensionsRepo', @@ -2290,52 +2811,28 @@ extension SettingsQueryFilter } QueryBuilder - animeExtensionsRepoIsEmpty() { + animeExtensionsRepoIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'animeExtensionsRepo', - 0, - true, - 0, - true, - ); + return query.listLength(r'animeExtensionsRepo', 0, true, 0, true); }); } QueryBuilder - animeExtensionsRepoIsNotEmpty() { + animeExtensionsRepoIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'animeExtensionsRepo', - 0, - false, - 999999, - true, - ); + return query.listLength(r'animeExtensionsRepo', 0, false, 999999, true); }); } QueryBuilder - animeExtensionsRepoLengthLessThan( - int length, { - bool include = false, - }) { + animeExtensionsRepoLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'animeExtensionsRepo', - 0, - true, - length, - include, - ); + return query.listLength(r'animeExtensionsRepo', 0, true, length, include); }); } QueryBuilder - animeExtensionsRepoLengthGreaterThan( - int length, { - bool include = false, - }) { + animeExtensionsRepoLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'animeExtensionsRepo', @@ -2348,7 +2845,7 @@ extension SettingsQueryFilter } QueryBuilder - animeExtensionsRepoLengthBetween( + animeExtensionsRepoLengthBetween( int lower, int upper, { bool includeLower = true, @@ -2366,44 +2863,43 @@ extension SettingsQueryFilter } QueryBuilder - animeGridSizeIsNull() { + animeGridSizeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animeGridSize', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'animeGridSize'), + ); }); } QueryBuilder - animeGridSizeIsNotNull() { + animeGridSizeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animeGridSize', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'animeGridSize'), + ); }); } QueryBuilder animeGridSizeEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animeGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'animeGridSize', value: value), + ); }); } QueryBuilder - animeGridSizeGreaterThan( - int? value, { - bool include = false, - }) { + animeGridSizeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'animeGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'animeGridSize', + value: value, + ), + ); }); } @@ -2412,11 +2908,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'animeGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'animeGridSize', + value: value, + ), + ); }); } @@ -2427,199 +2925,227 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'animeGridSize', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'animeGridSize', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - animeLibraryDownloadedChaptersIsNull() { + animeLibraryDownloadedChaptersIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animeLibraryDownloadedChapters', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'animeLibraryDownloadedChapters', + ), + ); }); } QueryBuilder - animeLibraryDownloadedChaptersIsNotNull() { + animeLibraryDownloadedChaptersIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animeLibraryDownloadedChapters', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'animeLibraryDownloadedChapters', + ), + ); }); } QueryBuilder - animeLibraryDownloadedChaptersEqualTo(bool? value) { + animeLibraryDownloadedChaptersEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animeLibraryDownloadedChapters', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'animeLibraryDownloadedChapters', + value: value, + ), + ); }); } QueryBuilder - animeLibraryLocalSourceIsNull() { + animeLibraryLocalSourceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animeLibraryLocalSource', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'animeLibraryLocalSource'), + ); }); } QueryBuilder - animeLibraryLocalSourceIsNotNull() { + animeLibraryLocalSourceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animeLibraryLocalSource', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'animeLibraryLocalSource'), + ); }); } QueryBuilder - animeLibraryLocalSourceEqualTo(bool? value) { + animeLibraryLocalSourceEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animeLibraryLocalSource', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'animeLibraryLocalSource', + value: value, + ), + ); }); } QueryBuilder - animeLibraryShowCategoryTabsIsNull() { + animeLibraryShowCategoryTabsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animeLibraryShowCategoryTabs', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'animeLibraryShowCategoryTabs'), + ); }); } QueryBuilder - animeLibraryShowCategoryTabsIsNotNull() { + animeLibraryShowCategoryTabsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animeLibraryShowCategoryTabs', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'animeLibraryShowCategoryTabs', + ), + ); }); } QueryBuilder - animeLibraryShowCategoryTabsEqualTo(bool? value) { + animeLibraryShowCategoryTabsEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animeLibraryShowCategoryTabs', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'animeLibraryShowCategoryTabs', + value: value, + ), + ); }); } QueryBuilder - animeLibraryShowContinueReadingButtonIsNull() { + animeLibraryShowContinueReadingButtonIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animeLibraryShowContinueReadingButton', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'animeLibraryShowContinueReadingButton', + ), + ); }); } QueryBuilder - animeLibraryShowContinueReadingButtonIsNotNull() { + animeLibraryShowContinueReadingButtonIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animeLibraryShowContinueReadingButton', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'animeLibraryShowContinueReadingButton', + ), + ); }); } QueryBuilder - animeLibraryShowContinueReadingButtonEqualTo(bool? value) { + animeLibraryShowContinueReadingButtonEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animeLibraryShowContinueReadingButton', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'animeLibraryShowContinueReadingButton', + value: value, + ), + ); }); } QueryBuilder - animeLibraryShowLanguageIsNull() { + animeLibraryShowLanguageIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animeLibraryShowLanguage', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'animeLibraryShowLanguage'), + ); }); } QueryBuilder - animeLibraryShowLanguageIsNotNull() { + animeLibraryShowLanguageIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animeLibraryShowLanguage', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'animeLibraryShowLanguage'), + ); }); } QueryBuilder - animeLibraryShowLanguageEqualTo(bool? value) { + animeLibraryShowLanguageEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animeLibraryShowLanguage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'animeLibraryShowLanguage', + value: value, + ), + ); }); } QueryBuilder - animeLibraryShowNumbersOfItemsIsNull() { + animeLibraryShowNumbersOfItemsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'animeLibraryShowNumbersOfItems', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'animeLibraryShowNumbersOfItems', + ), + ); }); } QueryBuilder - animeLibraryShowNumbersOfItemsIsNotNull() { + animeLibraryShowNumbersOfItemsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'animeLibraryShowNumbersOfItems', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'animeLibraryShowNumbersOfItems', + ), + ); }); } QueryBuilder - animeLibraryShowNumbersOfItemsEqualTo(bool? value) { + animeLibraryShowNumbersOfItemsEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'animeLibraryShowNumbersOfItems', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'animeLibraryShowNumbersOfItems', + value: value, + ), + ); }); } QueryBuilder - appFontFamilyIsNull() { + appFontFamilyIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'appFontFamily', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'appFontFamily'), + ); }); } QueryBuilder - appFontFamilyIsNotNull() { + appFontFamilyIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'appFontFamily', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'appFontFamily'), + ); }); } @@ -2628,27 +3154,31 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'appFontFamily', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'appFontFamily', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - appFontFamilyGreaterThan( + appFontFamilyGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'appFontFamily', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'appFontFamily', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2658,12 +3188,14 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'appFontFamily', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'appFontFamily', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2675,28 +3207,29 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'appFontFamily', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'appFontFamily', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - appFontFamilyStartsWith( - String value, { - bool caseSensitive = true, - }) { + appFontFamilyStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'appFontFamily', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'appFontFamily', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2705,124 +3238,190 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'appFontFamily', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'appFontFamily', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder appFontFamilyContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'appFontFamily', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'appFontFamily', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder appFontFamilyMatches( - String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'appFontFamily', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - appFontFamilyIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'appFontFamily', - value: '', - )); - }); - } - - QueryBuilder - appFontFamilyIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'appFontFamily', - value: '', - )); - }); - } - - QueryBuilder - autoBackupLocationIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'autoBackupLocation', - )); - }); - } - - QueryBuilder - autoBackupLocationIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'autoBackupLocation', - )); - }); - } - - QueryBuilder - autoBackupLocationEqualTo( - String? value, { + String pattern, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'autoBackupLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'appFontFamily', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - autoBackupLocationGreaterThan( + appFontFamilyIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'appFontFamily', value: ''), + ); + }); + } + + QueryBuilder + appFontFamilyIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'appFontFamily', value: ''), + ); + }); + } + + QueryBuilder audioChannelsEqualTo( + AudioChannel value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'audioChannels', value: value), + ); + }); + } + + QueryBuilder + audioChannelsGreaterThan(AudioChannel value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'audioChannels', + value: value, + ), + ); + }); + } + + QueryBuilder audioChannelsLessThan( + AudioChannel value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'audioChannels', + value: value, + ), + ); + }); + } + + QueryBuilder audioChannelsBetween( + AudioChannel lower, + AudioChannel upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'audioChannels', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'audioPreferredLanguages'), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'audioPreferredLanguages'), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesEqualTo(String? value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'audioPreferredLanguages', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'autoBackupLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'audioPreferredLanguages', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - autoBackupLocationLessThan( + audioPreferredLanguagesLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'autoBackupLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'audioPreferredLanguages', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - autoBackupLocationBetween( + audioPreferredLanguagesBetween( String? lower, String? upper, { bool includeLower = true, @@ -2830,193 +3429,332 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'autoBackupLocation', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'audioPreferredLanguages', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - autoBackupLocationStartsWith( - String value, { + audioPreferredLanguagesStartsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'audioPreferredLanguages', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesEndsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'audioPreferredLanguages', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'audioPreferredLanguages', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'audioPreferredLanguages', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'audioPreferredLanguages', + value: '', + ), + ); + }); + } + + QueryBuilder + audioPreferredLanguagesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + property: r'audioPreferredLanguages', + value: '', + ), + ); + }); + } + + QueryBuilder + autoBackupLocationIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'autoBackupLocation'), + ); + }); + } + + QueryBuilder + autoBackupLocationIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'autoBackupLocation'), + ); + }); + } + + QueryBuilder + autoBackupLocationEqualTo(String? value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'autoBackupLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + autoBackupLocationGreaterThan( + String? value, { + bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'autoBackupLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'autoBackupLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - autoBackupLocationEndsWith( - String value, { + autoBackupLocationLessThan( + String? value, { + bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'autoBackupLocation', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - autoBackupLocationContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'autoBackupLocation', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - autoBackupLocationMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'autoBackupLocation', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - autoBackupLocationIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'autoBackupLocation', - value: '', - )); - }); - } - - QueryBuilder - autoBackupLocationIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'autoBackupLocation', - value: '', - )); - }); - } - - QueryBuilder - autoExtensionsUpdatesIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'autoExtensionsUpdates', - )); - }); - } - - QueryBuilder - autoExtensionsUpdatesIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'autoExtensionsUpdates', - )); - }); - } - - QueryBuilder - autoExtensionsUpdatesEqualTo(bool? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'autoExtensionsUpdates', - value: value, - )); - }); - } - - QueryBuilder - autoScrollPagesIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'autoScrollPages', - )); - }); - } - - QueryBuilder - autoScrollPagesIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'autoScrollPages', - )); - }); - } - - QueryBuilder - autoScrollPagesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'autoScrollPages', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'autoBackupLocation', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - autoScrollPagesIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'autoScrollPages', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder - autoScrollPagesIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'autoScrollPages', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder - autoScrollPagesLengthLessThan( - int length, { - bool include = false, + autoBackupLocationBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'autoScrollPages', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.between( + property: r'autoBackupLocation', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - autoScrollPagesLengthGreaterThan( - int length, { - bool include = false, - }) { + autoBackupLocationStartsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'autoBackupLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + autoBackupLocationEndsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'autoBackupLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + autoBackupLocationContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'autoBackupLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + autoBackupLocationMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'autoBackupLocation', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + autoBackupLocationIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'autoBackupLocation', value: ''), + ); + }); + } + + QueryBuilder + autoBackupLocationIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'autoBackupLocation', value: ''), + ); + }); + } + + QueryBuilder + autoExtensionsUpdatesIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'autoExtensionsUpdates'), + ); + }); + } + + QueryBuilder + autoExtensionsUpdatesIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'autoExtensionsUpdates'), + ); + }); + } + + QueryBuilder + autoExtensionsUpdatesEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'autoExtensionsUpdates', + value: value, + ), + ); + }); + } + + QueryBuilder + autoScrollPagesIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'autoScrollPages'), + ); + }); + } + + QueryBuilder + autoScrollPagesIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'autoScrollPages'), + ); + }); + } + + QueryBuilder + autoScrollPagesLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'autoScrollPages', length, true, length, true); + }); + } + + QueryBuilder + autoScrollPagesIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'autoScrollPages', 0, true, 0, true); + }); + } + + QueryBuilder + autoScrollPagesIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'autoScrollPages', 0, false, 999999, true); + }); + } + + QueryBuilder + autoScrollPagesLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'autoScrollPages', 0, true, length, include); + }); + } + + QueryBuilder + autoScrollPagesLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'autoScrollPages', @@ -3029,7 +3767,7 @@ extension SettingsQueryFilter } QueryBuilder - autoScrollPagesLengthBetween( + autoScrollPagesLengthBetween( int lower, int upper, { bool includeLower = true, @@ -3047,269 +3785,236 @@ extension SettingsQueryFilter } QueryBuilder - backgroundColorEqualTo(BackgroundColor value) { + backgroundColorEqualTo(BackgroundColor value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'backgroundColor', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'backgroundColor', value: value), + ); }); } QueryBuilder - backgroundColorGreaterThan( - BackgroundColor value, { - bool include = false, - }) { + backgroundColorGreaterThan(BackgroundColor value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'backgroundColor', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'backgroundColor', + value: value, + ), + ); }); } QueryBuilder - backgroundColorLessThan( - BackgroundColor value, { - bool include = false, - }) { + backgroundColorLessThan(BackgroundColor value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'backgroundColor', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'backgroundColor', + value: value, + ), + ); }); } QueryBuilder - backgroundColorBetween( + backgroundColorBetween( BackgroundColor lower, BackgroundColor upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'backgroundColor', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'backgroundColor', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - backupFrequencyIsNull() { + backupFrequencyIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'backupFrequency', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'backupFrequency'), + ); }); } QueryBuilder - backupFrequencyIsNotNull() { + backupFrequencyIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'backupFrequency', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'backupFrequency'), + ); }); } QueryBuilder - backupFrequencyEqualTo(int? value) { + backupFrequencyEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'backupFrequency', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'backupFrequency', value: value), + ); }); } QueryBuilder - backupFrequencyGreaterThan( - int? value, { - bool include = false, - }) { + backupFrequencyGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'backupFrequency', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'backupFrequency', + value: value, + ), + ); }); } QueryBuilder - backupFrequencyLessThan( - int? value, { - bool include = false, - }) { + backupFrequencyLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'backupFrequency', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'backupFrequency', + value: value, + ), + ); }); } QueryBuilder - backupFrequencyBetween( + backupFrequencyBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'backupFrequency', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'backupFrequency', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - backupListOptionsIsNull() { + backupListOptionsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'backupListOptions', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'backupListOptions'), + ); }); } QueryBuilder - backupListOptionsIsNotNull() { + backupListOptionsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'backupListOptions', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'backupListOptions'), + ); }); } QueryBuilder - backupListOptionsElementEqualTo(int value) { + backupListOptionsElementEqualTo(int value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'backupListOptions', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'backupListOptions', value: value), + ); }); } QueryBuilder - backupListOptionsElementGreaterThan( - int value, { - bool include = false, - }) { + backupListOptionsElementGreaterThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'backupListOptions', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'backupListOptions', + value: value, + ), + ); }); } QueryBuilder - backupListOptionsElementLessThan( - int value, { - bool include = false, - }) { + backupListOptionsElementLessThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'backupListOptions', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'backupListOptions', + value: value, + ), + ); }); } QueryBuilder - backupListOptionsElementBetween( + backupListOptionsElementBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'backupListOptions', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } - - QueryBuilder - backupListOptionsLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'backupListOptions', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'backupListOptions', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), ); }); } QueryBuilder - backupListOptionsIsEmpty() { + backupListOptionsLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'backupListOptions', - 0, - true, - 0, - true, - ); + return query.listLength(r'backupListOptions', length, true, length, true); }); } QueryBuilder - backupListOptionsIsNotEmpty() { + backupListOptionsIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'backupListOptions', - 0, - false, - 999999, - true, - ); + return query.listLength(r'backupListOptions', 0, true, 0, true); }); } QueryBuilder - backupListOptionsLengthLessThan( - int length, { - bool include = false, - }) { + backupListOptionsIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'backupListOptions', - 0, - true, - length, - include, - ); + return query.listLength(r'backupListOptions', 0, false, 999999, true); }); } QueryBuilder - backupListOptionsLengthGreaterThan( - int length, { - bool include = false, - }) { + backupListOptionsLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'backupListOptions', 0, true, length, include); + }); + } + + QueryBuilder + backupListOptionsLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'backupListOptions', @@ -3322,7 +4027,7 @@ extension SettingsQueryFilter } QueryBuilder - backupListOptionsLengthBetween( + backupListOptionsLengthBetween( int lower, int upper, { bool includeLower = true, @@ -3340,71 +4045,74 @@ extension SettingsQueryFilter } QueryBuilder - btServerAddressIsNull() { + btServerAddressIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'btServerAddress', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'btServerAddress'), + ); }); } QueryBuilder - btServerAddressIsNotNull() { + btServerAddressIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'btServerAddress', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'btServerAddress'), + ); }); } QueryBuilder - btServerAddressEqualTo( - String? value, { - bool caseSensitive = true, - }) { + btServerAddressEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'btServerAddress', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'btServerAddress', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - btServerAddressGreaterThan( + btServerAddressGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'btServerAddress', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'btServerAddress', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - btServerAddressLessThan( + btServerAddressLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'btServerAddress', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'btServerAddress', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - btServerAddressBetween( + btServerAddressBetween( String? lower, String? upper, { bool includeLower = true, @@ -3412,125 +4120,126 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'btServerAddress', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'btServerAddress', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - btServerAddressStartsWith( - String value, { - bool caseSensitive = true, - }) { + btServerAddressStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'btServerAddress', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'btServerAddress', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - btServerAddressEndsWith( - String value, { - bool caseSensitive = true, - }) { + btServerAddressEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'btServerAddress', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'btServerAddress', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - btServerAddressContains(String value, {bool caseSensitive = true}) { + btServerAddressContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'btServerAddress', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'btServerAddress', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - btServerAddressMatches(String pattern, {bool caseSensitive = true}) { + btServerAddressMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'btServerAddress', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'btServerAddress', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - btServerAddressIsEmpty() { + btServerAddressIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'btServerAddress', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'btServerAddress', value: ''), + ); }); } QueryBuilder - btServerAddressIsNotEmpty() { + btServerAddressIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'btServerAddress', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'btServerAddress', value: ''), + ); }); } QueryBuilder btServerPortIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'btServerPort', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'btServerPort'), + ); }); } QueryBuilder - btServerPortIsNotNull() { + btServerPortIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'btServerPort', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'btServerPort'), + ); }); } QueryBuilder btServerPortEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'btServerPort', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'btServerPort', value: value), + ); }); } QueryBuilder - btServerPortGreaterThan( - int? value, { - bool include = false, - }) { + btServerPortGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'btServerPort', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'btServerPort', + value: value, + ), + ); }); } @@ -3539,11 +4248,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'btServerPort', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'btServerPort', + value: value, + ), + ); }); } @@ -3554,36 +4265,40 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'btServerPort', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'btServerPort', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - chapterFilterBookmarkedListIsNull() { + chapterFilterBookmarkedListIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterFilterBookmarkedList', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterFilterBookmarkedList'), + ); }); } QueryBuilder - chapterFilterBookmarkedListIsNotNull() { + chapterFilterBookmarkedListIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterFilterBookmarkedList', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'chapterFilterBookmarkedList', + ), + ); }); } QueryBuilder - chapterFilterBookmarkedListLengthEqualTo(int length) { + chapterFilterBookmarkedListLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterFilterBookmarkedList', @@ -3596,20 +4311,14 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterBookmarkedListIsEmpty() { + chapterFilterBookmarkedListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'chapterFilterBookmarkedList', - 0, - true, - 0, - true, - ); + return query.listLength(r'chapterFilterBookmarkedList', 0, true, 0, true); }); } QueryBuilder - chapterFilterBookmarkedListIsNotEmpty() { + chapterFilterBookmarkedListIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterFilterBookmarkedList', @@ -3622,7 +4331,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterBookmarkedListLengthLessThan( + chapterFilterBookmarkedListLengthLessThan( int length, { bool include = false, }) { @@ -3638,7 +4347,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterBookmarkedListLengthGreaterThan( + chapterFilterBookmarkedListLengthGreaterThan( int length, { bool include = false, }) { @@ -3654,7 +4363,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterBookmarkedListLengthBetween( + chapterFilterBookmarkedListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -3672,25 +4381,27 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterDownloadedListIsNull() { + chapterFilterDownloadedListIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterFilterDownloadedList', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterFilterDownloadedList'), + ); }); } QueryBuilder - chapterFilterDownloadedListIsNotNull() { + chapterFilterDownloadedListIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterFilterDownloadedList', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'chapterFilterDownloadedList', + ), + ); }); } QueryBuilder - chapterFilterDownloadedListLengthEqualTo(int length) { + chapterFilterDownloadedListLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterFilterDownloadedList', @@ -3703,20 +4414,14 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterDownloadedListIsEmpty() { + chapterFilterDownloadedListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'chapterFilterDownloadedList', - 0, - true, - 0, - true, - ); + return query.listLength(r'chapterFilterDownloadedList', 0, true, 0, true); }); } QueryBuilder - chapterFilterDownloadedListIsNotEmpty() { + chapterFilterDownloadedListIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterFilterDownloadedList', @@ -3729,7 +4434,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterDownloadedListLengthLessThan( + chapterFilterDownloadedListLengthLessThan( int length, { bool include = false, }) { @@ -3745,7 +4450,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterDownloadedListLengthGreaterThan( + chapterFilterDownloadedListLengthGreaterThan( int length, { bool include = false, }) { @@ -3761,7 +4466,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterDownloadedListLengthBetween( + chapterFilterDownloadedListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -3779,25 +4484,25 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterUnreadListIsNull() { + chapterFilterUnreadListIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterFilterUnreadList', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterFilterUnreadList'), + ); }); } QueryBuilder - chapterFilterUnreadListIsNotNull() { + chapterFilterUnreadListIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterFilterUnreadList', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'chapterFilterUnreadList'), + ); }); } QueryBuilder - chapterFilterUnreadListLengthEqualTo(int length) { + chapterFilterUnreadListLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterFilterUnreadList', @@ -3810,20 +4515,14 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterUnreadListIsEmpty() { + chapterFilterUnreadListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'chapterFilterUnreadList', - 0, - true, - 0, - true, - ); + return query.listLength(r'chapterFilterUnreadList', 0, true, 0, true); }); } QueryBuilder - chapterFilterUnreadListIsNotEmpty() { + chapterFilterUnreadListIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterFilterUnreadList', @@ -3836,10 +4535,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterUnreadListLengthLessThan( - int length, { - bool include = false, - }) { + chapterFilterUnreadListLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterFilterUnreadList', @@ -3852,10 +4548,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterUnreadListLengthGreaterThan( - int length, { - bool include = false, - }) { + chapterFilterUnreadListLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterFilterUnreadList', @@ -3868,7 +4561,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterFilterUnreadListLengthBetween( + chapterFilterUnreadListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -3886,25 +4579,25 @@ extension SettingsQueryFilter } QueryBuilder - chapterPageIndexListIsNull() { + chapterPageIndexListIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterPageIndexList', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterPageIndexList'), + ); }); } QueryBuilder - chapterPageIndexListIsNotNull() { + chapterPageIndexListIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterPageIndexList', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'chapterPageIndexList'), + ); }); } QueryBuilder - chapterPageIndexListLengthEqualTo(int length) { + chapterPageIndexListLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterPageIndexList', @@ -3917,36 +4610,21 @@ extension SettingsQueryFilter } QueryBuilder - chapterPageIndexListIsEmpty() { + chapterPageIndexListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'chapterPageIndexList', - 0, - true, - 0, - true, - ); + return query.listLength(r'chapterPageIndexList', 0, true, 0, true); }); } QueryBuilder - chapterPageIndexListIsNotEmpty() { + chapterPageIndexListIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'chapterPageIndexList', - 0, - false, - 999999, - true, - ); + return query.listLength(r'chapterPageIndexList', 0, false, 999999, true); }); } QueryBuilder - chapterPageIndexListLengthLessThan( - int length, { - bool include = false, - }) { + chapterPageIndexListLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterPageIndexList', @@ -3959,10 +4637,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterPageIndexListLengthGreaterThan( - int length, { - bool include = false, - }) { + chapterPageIndexListLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterPageIndexList', @@ -3975,7 +4650,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterPageIndexListLengthBetween( + chapterPageIndexListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -3993,25 +4668,25 @@ extension SettingsQueryFilter } QueryBuilder - chapterPageUrlsListIsNull() { + chapterPageUrlsListIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterPageUrlsList', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterPageUrlsList'), + ); }); } QueryBuilder - chapterPageUrlsListIsNotNull() { + chapterPageUrlsListIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterPageUrlsList', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'chapterPageUrlsList'), + ); }); } QueryBuilder - chapterPageUrlsListLengthEqualTo(int length) { + chapterPageUrlsListLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterPageUrlsList', @@ -4024,52 +4699,28 @@ extension SettingsQueryFilter } QueryBuilder - chapterPageUrlsListIsEmpty() { + chapterPageUrlsListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'chapterPageUrlsList', - 0, - true, - 0, - true, - ); + return query.listLength(r'chapterPageUrlsList', 0, true, 0, true); }); } QueryBuilder - chapterPageUrlsListIsNotEmpty() { + chapterPageUrlsListIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'chapterPageUrlsList', - 0, - false, - 999999, - true, - ); + return query.listLength(r'chapterPageUrlsList', 0, false, 999999, true); }); } QueryBuilder - chapterPageUrlsListLengthLessThan( - int length, { - bool include = false, - }) { + chapterPageUrlsListLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'chapterPageUrlsList', - 0, - true, - length, - include, - ); + return query.listLength(r'chapterPageUrlsList', 0, true, length, include); }); } QueryBuilder - chapterPageUrlsListLengthGreaterThan( - int length, { - bool include = false, - }) { + chapterPageUrlsListLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'chapterPageUrlsList', @@ -4082,7 +4733,7 @@ extension SettingsQueryFilter } QueryBuilder - chapterPageUrlsListLengthBetween( + chapterPageUrlsListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -4100,308 +4751,284 @@ extension SettingsQueryFilter } QueryBuilder - checkForAppUpdatesIsNull() { + checkForAppUpdatesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'checkForAppUpdates', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'checkForAppUpdates'), + ); }); } QueryBuilder - checkForAppUpdatesIsNotNull() { + checkForAppUpdatesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'checkForAppUpdates', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'checkForAppUpdates'), + ); }); } QueryBuilder - checkForAppUpdatesEqualTo(bool? value) { + checkForAppUpdatesEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'checkForAppUpdates', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'checkForAppUpdates', value: value), + ); }); } QueryBuilder - checkForExtensionUpdatesIsNull() { + checkForExtensionUpdatesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'checkForExtensionUpdates', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'checkForExtensionUpdates'), + ); }); } QueryBuilder - checkForExtensionUpdatesIsNotNull() { + checkForExtensionUpdatesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'checkForExtensionUpdates', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'checkForExtensionUpdates'), + ); }); } QueryBuilder - checkForExtensionUpdatesEqualTo(bool? value) { + checkForExtensionUpdatesEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'checkForExtensionUpdates', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'checkForExtensionUpdates', + value: value, + ), + ); }); } QueryBuilder - clearChapterCacheOnAppLaunchIsNull() { + clearChapterCacheOnAppLaunchIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'clearChapterCacheOnAppLaunch', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'clearChapterCacheOnAppLaunch'), + ); }); } QueryBuilder - clearChapterCacheOnAppLaunchIsNotNull() { + clearChapterCacheOnAppLaunchIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'clearChapterCacheOnAppLaunch', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'clearChapterCacheOnAppLaunch', + ), + ); }); } QueryBuilder - clearChapterCacheOnAppLaunchEqualTo(bool? value) { + clearChapterCacheOnAppLaunchEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'clearChapterCacheOnAppLaunch', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'clearChapterCacheOnAppLaunch', + value: value, + ), + ); }); } QueryBuilder - colorFilterBlendModeEqualTo(ColorFilterBlendMode value) { + colorFilterBlendModeEqualTo(ColorFilterBlendMode value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'colorFilterBlendMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'colorFilterBlendMode', + value: value, + ), + ); }); } QueryBuilder - colorFilterBlendModeGreaterThan( + colorFilterBlendModeGreaterThan( ColorFilterBlendMode value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'colorFilterBlendMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'colorFilterBlendMode', + value: value, + ), + ); }); } QueryBuilder - colorFilterBlendModeLessThan( + colorFilterBlendModeLessThan( ColorFilterBlendMode value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'colorFilterBlendMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'colorFilterBlendMode', + value: value, + ), + ); }); } QueryBuilder - colorFilterBlendModeBetween( + colorFilterBlendModeBetween( ColorFilterBlendMode lower, ColorFilterBlendMode upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'colorFilterBlendMode', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'colorFilterBlendMode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - concurrentDownloadsIsNull() { + concurrentDownloadsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'concurrentDownloads', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'concurrentDownloads'), + ); }); } QueryBuilder - concurrentDownloadsIsNotNull() { + concurrentDownloadsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'concurrentDownloads', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'concurrentDownloads'), + ); }); } QueryBuilder - concurrentDownloadsEqualTo(int? value) { + concurrentDownloadsEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'concurrentDownloads', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'concurrentDownloads', value: value), + ); }); } QueryBuilder - concurrentDownloadsGreaterThan( - int? value, { - bool include = false, - }) { + concurrentDownloadsGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'concurrentDownloads', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'concurrentDownloads', + value: value, + ), + ); }); } QueryBuilder - concurrentDownloadsLessThan( - int? value, { - bool include = false, - }) { + concurrentDownloadsLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'concurrentDownloads', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'concurrentDownloads', + value: value, + ), + ); }); } QueryBuilder - concurrentDownloadsBetween( + concurrentDownloadsBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'concurrentDownloads', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'concurrentDownloads', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder cookiesListIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'cookiesList', - )); - }); - } - - QueryBuilder - cookiesListIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'cookiesList', - )); - }); - } - - QueryBuilder - cookiesListLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'cookiesList', - length, - true, - length, - true, + return query.addFilterCondition( + const FilterCondition.isNull(property: r'cookiesList'), ); }); } + QueryBuilder + cookiesListIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'cookiesList'), + ); + }); + } + + QueryBuilder + cookiesListLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'cookiesList', length, true, length, true); + }); + } + QueryBuilder cookiesListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'cookiesList', - 0, - true, - 0, - true, - ); + return query.listLength(r'cookiesList', 0, true, 0, true); }); } QueryBuilder - cookiesListIsNotEmpty() { + cookiesListIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'cookiesList', - 0, - false, - 999999, - true, - ); + return query.listLength(r'cookiesList', 0, false, 999999, true); }); } QueryBuilder - cookiesListLengthLessThan( - int length, { - bool include = false, - }) { + cookiesListLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'cookiesList', - 0, - true, - length, - include, - ); + return query.listLength(r'cookiesList', 0, true, length, include); }); } QueryBuilder - cookiesListLengthGreaterThan( - int length, { - bool include = false, - }) { + cookiesListLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'cookiesList', - length, - include, - 999999, - true, - ); + return query.listLength(r'cookiesList', length, include, 999999, true); }); } QueryBuilder - cookiesListLengthBetween( + cookiesListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -4420,63 +5047,226 @@ extension SettingsQueryFilter QueryBuilder cropBordersIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'cropBorders', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'cropBorders'), + ); }); } QueryBuilder - cropBordersIsNotNull() { + cropBordersIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'cropBorders', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'cropBorders'), + ); }); } QueryBuilder cropBordersEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'cropBorders', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'cropBorders', value: value), + ); }); } QueryBuilder - customColorFilterIsNull() { + customColorFilterIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'customColorFilter', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'customColorFilter'), + ); }); } QueryBuilder - customColorFilterIsNotNull() { + customColorFilterIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'customColorFilter', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'customColorFilter'), + ); + }); + } + + QueryBuilder customDnsIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'customDns'), + ); + }); + } + + QueryBuilder customDnsIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'customDns'), + ); + }); + } + + QueryBuilder customDnsEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'customDns', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder customDnsGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'customDns', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder customDnsLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'customDns', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder customDnsBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'customDns', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder customDnsStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'customDns', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder customDnsEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'customDns', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder customDnsContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'customDns', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder customDnsMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'customDns', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder customDnsIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'customDns', value: ''), + ); + }); + } + + QueryBuilder + customDnsIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'customDns', value: ''), + ); }); } QueryBuilder dateFormatIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'dateFormat', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'dateFormat'), + ); }); } QueryBuilder - dateFormatIsNotNull() { + dateFormatIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'dateFormat', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'dateFormat'), + ); }); } @@ -4485,11 +5275,13 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -4499,12 +5291,14 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -4514,12 +5308,14 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -4531,14 +5327,16 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'dateFormat', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'dateFormat', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -4547,11 +5345,13 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -4560,197 +5360,270 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateFormatContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateFormatMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'dateFormat', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'dateFormat', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateFormatIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateFormat', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'dateFormat', value: ''), + ); }); } QueryBuilder - dateFormatIsNotEmpty() { + dateFormatIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'dateFormat', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'dateFormat', value: ''), + ); }); } - QueryBuilder - defaultDoubleTapToSkipLengthIsNull() { + QueryBuilder debandingTypeEqualTo( + DebandingType value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'defaultDoubleTapToSkipLength', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'debandingType', value: value), + ); }); } QueryBuilder - defaultDoubleTapToSkipLengthIsNotNull() { + debandingTypeGreaterThan(DebandingType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'defaultDoubleTapToSkipLength', - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'debandingType', + value: value, + ), + ); }); } - QueryBuilder - defaultDoubleTapToSkipLengthEqualTo(int? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'defaultDoubleTapToSkipLength', - value: value, - )); - }); - } - - QueryBuilder - defaultDoubleTapToSkipLengthGreaterThan( - int? value, { + QueryBuilder debandingTypeLessThan( + DebandingType value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'defaultDoubleTapToSkipLength', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'debandingType', + value: value, + ), + ); }); } - QueryBuilder - defaultDoubleTapToSkipLengthLessThan( - int? value, { - bool include = false, + QueryBuilder debandingTypeBetween( + DebandingType lower, + DebandingType upper, { + bool includeLower = true, + bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'defaultDoubleTapToSkipLength', - value: value, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'debandingType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - defaultDoubleTapToSkipLengthBetween( + defaultDoubleTapToSkipLengthIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'defaultDoubleTapToSkipLength'), + ); + }); + } + + QueryBuilder + defaultDoubleTapToSkipLengthIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'defaultDoubleTapToSkipLength', + ), + ); + }); + } + + QueryBuilder + defaultDoubleTapToSkipLengthEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'defaultDoubleTapToSkipLength', + value: value, + ), + ); + }); + } + + QueryBuilder + defaultDoubleTapToSkipLengthGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'defaultDoubleTapToSkipLength', + value: value, + ), + ); + }); + } + + QueryBuilder + defaultDoubleTapToSkipLengthLessThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'defaultDoubleTapToSkipLength', + value: value, + ), + ); + }); + } + + QueryBuilder + defaultDoubleTapToSkipLengthBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'defaultDoubleTapToSkipLength', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'defaultDoubleTapToSkipLength', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - defaultPlayBackSpeedIsNull() { + defaultPlayBackSpeedIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'defaultPlayBackSpeed', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'defaultPlayBackSpeed'), + ); }); } QueryBuilder - defaultPlayBackSpeedIsNotNull() { + defaultPlayBackSpeedIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'defaultPlayBackSpeed', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'defaultPlayBackSpeed'), + ); }); } QueryBuilder - defaultPlayBackSpeedEqualTo( - double? value, { - double epsilon = Query.epsilon, - }) { + defaultPlayBackSpeedEqualTo(double? value, {double epsilon = Query.epsilon}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'defaultPlayBackSpeed', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'defaultPlayBackSpeed', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - defaultPlayBackSpeedGreaterThan( + defaultPlayBackSpeedGreaterThan( double? value, { bool include = false, double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'defaultPlayBackSpeed', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'defaultPlayBackSpeed', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - defaultPlayBackSpeedLessThan( + defaultPlayBackSpeedLessThan( double? value, { bool include = false, double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'defaultPlayBackSpeed', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'defaultPlayBackSpeed', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - defaultPlayBackSpeedBetween( + defaultPlayBackSpeedBetween( double? lower, double? upper, { bool includeLower = true, @@ -4758,242 +5631,244 @@ extension SettingsQueryFilter double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'defaultPlayBackSpeed', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'defaultPlayBackSpeed', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - defaultReaderModeEqualTo(ReaderMode value) { + defaultReaderModeEqualTo(ReaderMode value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'defaultReaderMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'defaultReaderMode', value: value), + ); }); } QueryBuilder - defaultReaderModeGreaterThan( - ReaderMode value, { - bool include = false, - }) { + defaultReaderModeGreaterThan(ReaderMode value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'defaultReaderMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'defaultReaderMode', + value: value, + ), + ); }); } QueryBuilder - defaultReaderModeLessThan( - ReaderMode value, { - bool include = false, - }) { + defaultReaderModeLessThan(ReaderMode value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'defaultReaderMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'defaultReaderMode', + value: value, + ), + ); }); } QueryBuilder - defaultReaderModeBetween( + defaultReaderModeBetween( ReaderMode lower, ReaderMode upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'defaultReaderMode', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'defaultReaderMode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - defaultSkipIntroLengthIsNull() { + defaultSkipIntroLengthIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'defaultSkipIntroLength', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'defaultSkipIntroLength'), + ); }); } QueryBuilder - defaultSkipIntroLengthIsNotNull() { + defaultSkipIntroLengthIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'defaultSkipIntroLength', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'defaultSkipIntroLength'), + ); }); } QueryBuilder - defaultSkipIntroLengthEqualTo(int? value) { + defaultSkipIntroLengthEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'defaultSkipIntroLength', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'defaultSkipIntroLength', + value: value, + ), + ); }); } QueryBuilder - defaultSkipIntroLengthGreaterThan( - int? value, { - bool include = false, - }) { + defaultSkipIntroLengthGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'defaultSkipIntroLength', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'defaultSkipIntroLength', + value: value, + ), + ); }); } QueryBuilder - defaultSkipIntroLengthLessThan( - int? value, { - bool include = false, - }) { + defaultSkipIntroLengthLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'defaultSkipIntroLength', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'defaultSkipIntroLength', + value: value, + ), + ); }); } QueryBuilder - defaultSkipIntroLengthBetween( + defaultSkipIntroLengthBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'defaultSkipIntroLength', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'defaultSkipIntroLength', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - defaultSubtitleLangIsNull() { + defaultSubtitleLangIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'defaultSubtitleLang', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'defaultSubtitleLang'), + ); }); } QueryBuilder - defaultSubtitleLangIsNotNull() { + defaultSubtitleLangIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'defaultSubtitleLang', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'defaultSubtitleLang'), + ); }); } QueryBuilder - disableSectionTypeEqualTo(SectionType value) { + disableSectionTypeEqualTo(SectionType value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'disableSectionType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'disableSectionType', value: value), + ); }); } QueryBuilder - disableSectionTypeGreaterThan( - SectionType value, { - bool include = false, - }) { + disableSectionTypeGreaterThan(SectionType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'disableSectionType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'disableSectionType', + value: value, + ), + ); }); } QueryBuilder - disableSectionTypeLessThan( - SectionType value, { - bool include = false, - }) { + disableSectionTypeLessThan(SectionType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'disableSectionType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'disableSectionType', + value: value, + ), + ); }); } QueryBuilder - disableSectionTypeBetween( + disableSectionTypeBetween( SectionType lower, SectionType upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'disableSectionType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'disableSectionType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder displayTypeEqualTo( - DisplayType value) { + DisplayType value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'displayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'displayType', value: value), + ); }); } QueryBuilder - displayTypeGreaterThan( - DisplayType value, { - bool include = false, - }) { + displayTypeGreaterThan(DisplayType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'displayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'displayType', + value: value, + ), + ); }); } @@ -5002,11 +5877,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'displayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'displayType', + value: value, + ), + ); }); } @@ -5017,156 +5894,163 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'displayType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'displayType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - doubleTapAnimationSpeedIsNull() { + doubleTapAnimationSpeedIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'doubleTapAnimationSpeed', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'doubleTapAnimationSpeed'), + ); }); } QueryBuilder - doubleTapAnimationSpeedIsNotNull() { + doubleTapAnimationSpeedIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'doubleTapAnimationSpeed', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'doubleTapAnimationSpeed'), + ); }); } QueryBuilder - doubleTapAnimationSpeedEqualTo(int? value) { + doubleTapAnimationSpeedEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'doubleTapAnimationSpeed', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'doubleTapAnimationSpeed', + value: value, + ), + ); }); } QueryBuilder - doubleTapAnimationSpeedGreaterThan( - int? value, { - bool include = false, - }) { + doubleTapAnimationSpeedGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'doubleTapAnimationSpeed', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'doubleTapAnimationSpeed', + value: value, + ), + ); }); } QueryBuilder - doubleTapAnimationSpeedLessThan( - int? value, { - bool include = false, - }) { + doubleTapAnimationSpeedLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'doubleTapAnimationSpeed', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'doubleTapAnimationSpeed', + value: value, + ), + ); }); } QueryBuilder - doubleTapAnimationSpeedBetween( + doubleTapAnimationSpeedBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'doubleTapAnimationSpeed', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'doubleTapAnimationSpeed', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - downloadLocationIsNull() { + downloadLocationIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'downloadLocation', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'downloadLocation'), + ); }); } QueryBuilder - downloadLocationIsNotNull() { + downloadLocationIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'downloadLocation', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'downloadLocation'), + ); }); } QueryBuilder - downloadLocationEqualTo( - String? value, { - bool caseSensitive = true, - }) { + downloadLocationEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'downloadLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'downloadLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - downloadLocationGreaterThan( + downloadLocationGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'downloadLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'downloadLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - downloadLocationLessThan( + downloadLocationLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'downloadLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'downloadLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - downloadLocationBetween( + downloadLocationBetween( String? lower, String? upper, { bool includeLower = true, @@ -5174,247 +6058,368 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'downloadLocation', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'downloadLocation', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - downloadLocationStartsWith( - String value, { - bool caseSensitive = true, - }) { + downloadLocationStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'downloadLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'downloadLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - downloadLocationEndsWith( - String value, { - bool caseSensitive = true, - }) { + downloadLocationEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'downloadLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'downloadLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - downloadLocationContains(String value, {bool caseSensitive = true}) { + downloadLocationContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'downloadLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'downloadLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - downloadLocationMatches(String pattern, {bool caseSensitive = true}) { + downloadLocationMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'downloadLocation', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'downloadLocation', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - downloadLocationIsEmpty() { + downloadLocationIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'downloadLocation', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'downloadLocation', value: ''), + ); }); } QueryBuilder - downloadLocationIsNotEmpty() { + downloadLocationIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'downloadLocation', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'downloadLocation', value: ''), + ); }); } QueryBuilder - downloadOnlyOnWifiIsNull() { + downloadOnlyOnWifiIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'downloadOnlyOnWifi', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'downloadOnlyOnWifi'), + ); }); } QueryBuilder - downloadOnlyOnWifiIsNotNull() { + downloadOnlyOnWifiIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'downloadOnlyOnWifi', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'downloadOnlyOnWifi'), + ); }); } QueryBuilder - downloadOnlyOnWifiEqualTo(bool? value) { + downloadOnlyOnWifiEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'downloadOnlyOnWifi', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'downloadOnlyOnWifi', value: value), + ); }); } QueryBuilder - enableAniSkipIsNull() { + downloadedOnlyModeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'enableAniSkip', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'downloadedOnlyMode'), + ); }); } QueryBuilder - enableAniSkipIsNotNull() { + downloadedOnlyModeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'enableAniSkip', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'downloadedOnlyMode'), + ); + }); + } + + QueryBuilder + downloadedOnlyModeEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'downloadedOnlyMode', value: value), + ); + }); + } + + QueryBuilder + enableAniSkipIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'enableAniSkip'), + ); + }); + } + + QueryBuilder + enableAniSkipIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'enableAniSkip'), + ); }); } QueryBuilder enableAniSkipEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'enableAniSkip', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'enableAniSkip', value: value), + ); }); } QueryBuilder - enableAutoSkipIsNull() { + enableAudioPitchCorrectionIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'enableAutoSkip', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'enableAudioPitchCorrection'), + ); }); } QueryBuilder - enableAutoSkipIsNotNull() { + enableAudioPitchCorrectionIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'enableAutoSkip', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'enableAudioPitchCorrection', + ), + ); + }); + } + + QueryBuilder + enableAudioPitchCorrectionEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'enableAudioPitchCorrection', + value: value, + ), + ); + }); + } + + QueryBuilder + enableAutoSkipIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'enableAutoSkip'), + ); + }); + } + + QueryBuilder + enableAutoSkipIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'enableAutoSkip'), + ); }); } QueryBuilder enableAutoSkipEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'enableAutoSkip', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'enableAutoSkip', value: value), + ); }); } QueryBuilder - enableCustomColorFilterIsNull() { + enableCustomColorFilterIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'enableCustomColorFilter', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'enableCustomColorFilter'), + ); }); } QueryBuilder - enableCustomColorFilterIsNotNull() { + enableCustomColorFilterIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'enableCustomColorFilter', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'enableCustomColorFilter'), + ); }); } QueryBuilder - enableCustomColorFilterEqualTo(bool? value) { + enableCustomColorFilterEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'enableCustomColorFilter', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'enableCustomColorFilter', + value: value, + ), + ); }); } QueryBuilder - enableDiscordRpcIsNull() { + enableDiscordRpcIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'enableDiscordRpc', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'enableDiscordRpc'), + ); }); } QueryBuilder - enableDiscordRpcIsNotNull() { + enableDiscordRpcIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'enableDiscordRpc', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'enableDiscordRpc'), + ); }); } QueryBuilder - enableDiscordRpcEqualTo(bool? value) { + enableDiscordRpcEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'enableDiscordRpc', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'enableDiscordRpc', value: value), + ); }); } QueryBuilder - filterScanlatorListIsNull() { + enableGpuNextIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'filterScanlatorList', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'enableGpuNext'), + ); }); } QueryBuilder - filterScanlatorListIsNotNull() { + enableGpuNextIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'filterScanlatorList', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'enableGpuNext'), + ); + }); + } + + QueryBuilder enableGpuNextEqualTo( + bool? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'enableGpuNext', value: value), + ); }); } QueryBuilder - filterScanlatorListLengthEqualTo(int length) { + enableHardwareAccelerationIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'enableHardwareAcceleration'), + ); + }); + } + + QueryBuilder + enableHardwareAccelerationIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'enableHardwareAcceleration', + ), + ); + }); + } + + QueryBuilder + enableHardwareAccelerationEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'enableHardwareAcceleration', + value: value, + ), + ); + }); + } + + QueryBuilder + filterScanlatorListIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'filterScanlatorList'), + ); + }); + } + + QueryBuilder + filterScanlatorListIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'filterScanlatorList'), + ); + }); + } + + QueryBuilder + filterScanlatorListLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'filterScanlatorList', @@ -5427,52 +6432,28 @@ extension SettingsQueryFilter } QueryBuilder - filterScanlatorListIsEmpty() { + filterScanlatorListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'filterScanlatorList', - 0, - true, - 0, - true, - ); + return query.listLength(r'filterScanlatorList', 0, true, 0, true); }); } QueryBuilder - filterScanlatorListIsNotEmpty() { + filterScanlatorListIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'filterScanlatorList', - 0, - false, - 999999, - true, - ); + return query.listLength(r'filterScanlatorList', 0, false, 999999, true); }); } QueryBuilder - filterScanlatorListLengthLessThan( - int length, { - bool include = false, - }) { + filterScanlatorListLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'filterScanlatorList', - 0, - true, - length, - include, - ); + return query.listLength(r'filterScanlatorList', 0, true, length, include); }); } QueryBuilder - filterScanlatorListLengthGreaterThan( - int length, { - bool include = false, - }) { + filterScanlatorListLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'filterScanlatorList', @@ -5485,7 +6466,7 @@ extension SettingsQueryFilter } QueryBuilder - filterScanlatorListLengthBetween( + filterScanlatorListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -5503,71 +6484,80 @@ extension SettingsQueryFilter } QueryBuilder - flexColorSchemeBlendLevelIsNull() { + flexColorSchemeBlendLevelIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'flexColorSchemeBlendLevel', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'flexColorSchemeBlendLevel'), + ); }); } QueryBuilder - flexColorSchemeBlendLevelIsNotNull() { + flexColorSchemeBlendLevelIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'flexColorSchemeBlendLevel', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'flexColorSchemeBlendLevel'), + ); }); } QueryBuilder - flexColorSchemeBlendLevelEqualTo( + flexColorSchemeBlendLevelEqualTo( double? value, { double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'flexColorSchemeBlendLevel', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'flexColorSchemeBlendLevel', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - flexColorSchemeBlendLevelGreaterThan( + flexColorSchemeBlendLevelGreaterThan( double? value, { bool include = false, double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'flexColorSchemeBlendLevel', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'flexColorSchemeBlendLevel', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - flexColorSchemeBlendLevelLessThan( + flexColorSchemeBlendLevelLessThan( double? value, { bool include = false, double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'flexColorSchemeBlendLevel', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'flexColorSchemeBlendLevel', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - flexColorSchemeBlendLevelBetween( + flexColorSchemeBlendLevelBetween( double? lower, double? upper, { bool includeLower = true, @@ -5575,267 +6565,274 @@ extension SettingsQueryFilter double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'flexColorSchemeBlendLevel', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'flexColorSchemeBlendLevel', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - flexSchemeColorIndexIsNull() { + flexSchemeColorIndexIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'flexSchemeColorIndex', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'flexSchemeColorIndex'), + ); }); } QueryBuilder - flexSchemeColorIndexIsNotNull() { + flexSchemeColorIndexIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'flexSchemeColorIndex', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'flexSchemeColorIndex'), + ); }); } QueryBuilder - flexSchemeColorIndexEqualTo(int? value) { + flexSchemeColorIndexEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'flexSchemeColorIndex', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'flexSchemeColorIndex', + value: value, + ), + ); }); } QueryBuilder - flexSchemeColorIndexGreaterThan( - int? value, { - bool include = false, - }) { + flexSchemeColorIndexGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'flexSchemeColorIndex', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'flexSchemeColorIndex', + value: value, + ), + ); }); } QueryBuilder - flexSchemeColorIndexLessThan( - int? value, { - bool include = false, - }) { + flexSchemeColorIndexLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'flexSchemeColorIndex', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'flexSchemeColorIndex', + value: value, + ), + ); }); } QueryBuilder - flexSchemeColorIndexBetween( + flexSchemeColorIndexBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'flexSchemeColorIndex', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'flexSchemeColorIndex', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - followSystemThemeIsNull() { + followSystemThemeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'followSystemTheme', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'followSystemTheme'), + ); }); } QueryBuilder - followSystemThemeIsNotNull() { + followSystemThemeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'followSystemTheme', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'followSystemTheme'), + ); }); } QueryBuilder - followSystemThemeEqualTo(bool? value) { + followSystemThemeEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'followSystemTheme', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'followSystemTheme', value: value), + ); }); } QueryBuilder - fullScreenPlayerIsNull() { + fullScreenPlayerIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'fullScreenPlayer', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'fullScreenPlayer'), + ); }); } QueryBuilder - fullScreenPlayerIsNotNull() { + fullScreenPlayerIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'fullScreenPlayer', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'fullScreenPlayer'), + ); }); } QueryBuilder - fullScreenPlayerEqualTo(bool? value) { + fullScreenPlayerEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'fullScreenPlayer', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'fullScreenPlayer', value: value), + ); }); } QueryBuilder - fullScreenReaderIsNull() { + fullScreenReaderIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'fullScreenReader', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'fullScreenReader'), + ); }); } QueryBuilder - fullScreenReaderIsNotNull() { + fullScreenReaderIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'fullScreenReader', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'fullScreenReader'), + ); }); } QueryBuilder - fullScreenReaderEqualTo(bool? value) { + fullScreenReaderEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'fullScreenReader', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'fullScreenReader', value: value), + ); }); } QueryBuilder - hideDiscordRpcInIncognitoIsNull() { + hideDiscordRpcInIncognitoIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'hideDiscordRpcInIncognito', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'hideDiscordRpcInIncognito'), + ); }); } QueryBuilder - hideDiscordRpcInIncognitoIsNotNull() { + hideDiscordRpcInIncognitoIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'hideDiscordRpcInIncognito', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'hideDiscordRpcInIncognito'), + ); }); } QueryBuilder - hideDiscordRpcInIncognitoEqualTo(bool? value) { + hideDiscordRpcInIncognitoEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'hideDiscordRpcInIncognito', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'hideDiscordRpcInIncognito', + value: value, + ), + ); }); } QueryBuilder hideItemsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'hideItems', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'hideItems'), + ); }); } QueryBuilder hideItemsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'hideItems', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'hideItems'), + ); }); } QueryBuilder - hideItemsElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + hideItemsElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'hideItems', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'hideItems', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - hideItemsElementGreaterThan( + hideItemsElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'hideItems', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'hideItems', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - hideItemsElementLessThan( + hideItemsElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'hideItems', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'hideItems', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - hideItemsElementBetween( + hideItemsElementBetween( String lower, String upper, { bool includeLower = true, @@ -5843,159 +6840,125 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'hideItems', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - hideItemsElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'hideItems', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - hideItemsElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'hideItems', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - hideItemsElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'hideItems', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - hideItemsElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'hideItems', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - hideItemsElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'hideItems', - value: '', - )); - }); - } - - QueryBuilder - hideItemsElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'hideItems', - value: '', - )); - }); - } - - QueryBuilder - hideItemsLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'hideItems', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'hideItems', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } + QueryBuilder + hideItemsElementStartsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'hideItems', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + hideItemsElementEndsWith(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'hideItems', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + hideItemsElementContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'hideItems', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + hideItemsElementMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'hideItems', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + hideItemsElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'hideItems', value: ''), + ); + }); + } + + QueryBuilder + hideItemsElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'hideItems', value: ''), + ); + }); + } + + QueryBuilder + hideItemsLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'hideItems', length, true, length, true); + }); + } + QueryBuilder hideItemsIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'hideItems', - 0, - true, - 0, - true, - ); + return query.listLength(r'hideItems', 0, true, 0, true); }); } QueryBuilder - hideItemsIsNotEmpty() { + hideItemsIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'hideItems', - 0, - false, - 999999, - true, - ); + return query.listLength(r'hideItems', 0, false, 999999, true); }); } QueryBuilder - hideItemsLengthLessThan( - int length, { - bool include = false, - }) { + hideItemsLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'hideItems', - 0, - true, - length, - include, - ); + return query.listLength(r'hideItems', 0, true, length, include); }); } QueryBuilder - hideItemsLengthGreaterThan( - int length, { - bool include = false, - }) { + hideItemsLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'hideItems', - length, - include, - 999999, - true, - ); + return query.listLength(r'hideItems', length, include, 999999, true); }); } QueryBuilder - hideItemsLengthBetween( + hideItemsLengthBetween( int lower, int upper, { bool includeLower = true, @@ -6014,17 +6977,17 @@ extension SettingsQueryFilter QueryBuilder hwdecModeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'hwdecMode', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'hwdecMode'), + ); }); } QueryBuilder hwdecModeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'hwdecMode', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'hwdecMode'), + ); }); } @@ -6033,11 +6996,13 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'hwdecMode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'hwdecMode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -6047,12 +7012,14 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'hwdecMode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'hwdecMode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -6062,12 +7029,14 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'hwdecMode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'hwdecMode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -6079,14 +7048,16 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'hwdecMode', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'hwdecMode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -6095,11 +7066,13 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'hwdecMode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'hwdecMode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -6108,79 +7081,84 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'hwdecMode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'hwdecMode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder hwdecModeContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'hwdecMode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'hwdecMode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder hwdecModeMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'hwdecMode', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'hwdecMode', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder hwdecModeIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'hwdecMode', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'hwdecMode', value: ''), + ); }); } QueryBuilder - hwdecModeIsNotEmpty() { + hwdecModeIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'hwdecMode', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'hwdecMode', value: ''), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -6189,11 +7167,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -6202,11 +7182,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -6217,110 +7199,120 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - incognitoModeIsNull() { + incognitoModeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'incognitoMode', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'incognitoMode'), + ); }); } QueryBuilder - incognitoModeIsNotNull() { + incognitoModeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'incognitoMode', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'incognitoMode'), + ); }); } QueryBuilder incognitoModeEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'incognitoMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'incognitoMode', value: value), + ); }); } QueryBuilder - lastTrackerLibraryLocationIsNull() { + lastTrackerLibraryLocationIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastTrackerLibraryLocation', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastTrackerLibraryLocation'), + ); }); } QueryBuilder - lastTrackerLibraryLocationIsNotNull() { + lastTrackerLibraryLocationIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastTrackerLibraryLocation', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'lastTrackerLibraryLocation', + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationEqualTo( + lastTrackerLibraryLocationEqualTo( String? value, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastTrackerLibraryLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'lastTrackerLibraryLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationGreaterThan( + lastTrackerLibraryLocationGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastTrackerLibraryLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lastTrackerLibraryLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationLessThan( + lastTrackerLibraryLocationLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastTrackerLibraryLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lastTrackerLibraryLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationBetween( + lastTrackerLibraryLocationBetween( String? lower, String? upper, { bool includeLower = true, @@ -6328,1181 +7320,1301 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lastTrackerLibraryLocation', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lastTrackerLibraryLocation', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationStartsWith( + lastTrackerLibraryLocationStartsWith( String value, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'lastTrackerLibraryLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'lastTrackerLibraryLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationEndsWith( + lastTrackerLibraryLocationEndsWith( String value, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'lastTrackerLibraryLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'lastTrackerLibraryLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationContains(String value, - {bool caseSensitive = true}) { + lastTrackerLibraryLocationContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'lastTrackerLibraryLocation', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'lastTrackerLibraryLocation', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationMatches(String pattern, - {bool caseSensitive = true}) { + lastTrackerLibraryLocationMatches( + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'lastTrackerLibraryLocation', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'lastTrackerLibraryLocation', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationIsEmpty() { + lastTrackerLibraryLocationIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastTrackerLibraryLocation', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'lastTrackerLibraryLocation', + value: '', + ), + ); }); } QueryBuilder - lastTrackerLibraryLocationIsNotEmpty() { + lastTrackerLibraryLocationIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'lastTrackerLibraryLocation', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + property: r'lastTrackerLibraryLocation', + value: '', + ), + ); }); } QueryBuilder - libraryDownloadedChaptersIsNull() { + libraryDownloadedChaptersIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryDownloadedChapters', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'libraryDownloadedChapters'), + ); }); } QueryBuilder - libraryDownloadedChaptersIsNotNull() { + libraryDownloadedChaptersIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryDownloadedChapters', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'libraryDownloadedChapters'), + ); }); } QueryBuilder - libraryDownloadedChaptersEqualTo(bool? value) { + libraryDownloadedChaptersEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryDownloadedChapters', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryDownloadedChapters', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeBookMarkedTypeIsNull() { + libraryFilterAnimeBookMarkedTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterAnimeBookMarkedType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterAnimeBookMarkedType', + ), + ); }); } QueryBuilder - libraryFilterAnimeBookMarkedTypeIsNotNull() { + libraryFilterAnimeBookMarkedTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterAnimeBookMarkedType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterAnimeBookMarkedType', + ), + ); }); } QueryBuilder - libraryFilterAnimeBookMarkedTypeEqualTo(int? value) { + libraryFilterAnimeBookMarkedTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterAnimeBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterAnimeBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeBookMarkedTypeGreaterThan( + libraryFilterAnimeBookMarkedTypeGreaterThan( int? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterAnimeBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterAnimeBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeBookMarkedTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterAnimeBookMarkedTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterAnimeBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterAnimeBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeBookMarkedTypeBetween( + libraryFilterAnimeBookMarkedTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterAnimeBookMarkedType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterAnimeBookMarkedType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterAnimeDownloadTypeIsNull() { + libraryFilterAnimeDownloadTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterAnimeDownloadType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterAnimeDownloadType', + ), + ); }); } QueryBuilder - libraryFilterAnimeDownloadTypeIsNotNull() { + libraryFilterAnimeDownloadTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterAnimeDownloadType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterAnimeDownloadType', + ), + ); }); } QueryBuilder - libraryFilterAnimeDownloadTypeEqualTo(int? value) { + libraryFilterAnimeDownloadTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterAnimeDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterAnimeDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeDownloadTypeGreaterThan( + libraryFilterAnimeDownloadTypeGreaterThan( int? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterAnimeDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterAnimeDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeDownloadTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterAnimeDownloadTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterAnimeDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterAnimeDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeDownloadTypeBetween( + libraryFilterAnimeDownloadTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterAnimeDownloadType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterAnimeDownloadType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterAnimeStartedTypeIsNull() { + libraryFilterAnimeStartedTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterAnimeStartedType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterAnimeStartedType', + ), + ); }); } QueryBuilder - libraryFilterAnimeStartedTypeIsNotNull() { + libraryFilterAnimeStartedTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterAnimeStartedType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterAnimeStartedType', + ), + ); }); } QueryBuilder - libraryFilterAnimeStartedTypeEqualTo(int? value) { + libraryFilterAnimeStartedTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterAnimeStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterAnimeStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeStartedTypeGreaterThan( - int? value, { - bool include = false, - }) { + libraryFilterAnimeStartedTypeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterAnimeStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterAnimeStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeStartedTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterAnimeStartedTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterAnimeStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterAnimeStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeStartedTypeBetween( + libraryFilterAnimeStartedTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterAnimeStartedType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterAnimeStartedType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterAnimeUnreadTypeIsNull() { + libraryFilterAnimeUnreadTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterAnimeUnreadType', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'libraryFilterAnimeUnreadType'), + ); }); } QueryBuilder - libraryFilterAnimeUnreadTypeIsNotNull() { + libraryFilterAnimeUnreadTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterAnimeUnreadType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterAnimeUnreadType', + ), + ); }); } QueryBuilder - libraryFilterAnimeUnreadTypeEqualTo(int? value) { + libraryFilterAnimeUnreadTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterAnimeUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterAnimeUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeUnreadTypeGreaterThan( - int? value, { - bool include = false, - }) { + libraryFilterAnimeUnreadTypeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterAnimeUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterAnimeUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeUnreadTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterAnimeUnreadTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterAnimeUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterAnimeUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterAnimeUnreadTypeBetween( + libraryFilterAnimeUnreadTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterAnimeUnreadType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterAnimeUnreadType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterMangasBookMarkedTypeIsNull() { + libraryFilterMangasBookMarkedTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterMangasBookMarkedType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterMangasBookMarkedType', + ), + ); }); } QueryBuilder - libraryFilterMangasBookMarkedTypeIsNotNull() { + libraryFilterMangasBookMarkedTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterMangasBookMarkedType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterMangasBookMarkedType', + ), + ); }); } QueryBuilder - libraryFilterMangasBookMarkedTypeEqualTo(int? value) { + libraryFilterMangasBookMarkedTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterMangasBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterMangasBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasBookMarkedTypeGreaterThan( + libraryFilterMangasBookMarkedTypeGreaterThan( int? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterMangasBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterMangasBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasBookMarkedTypeLessThan( + libraryFilterMangasBookMarkedTypeLessThan( int? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterMangasBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterMangasBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasBookMarkedTypeBetween( + libraryFilterMangasBookMarkedTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterMangasBookMarkedType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterMangasBookMarkedType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterMangasDownloadTypeIsNull() { + libraryFilterMangasDownloadTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterMangasDownloadType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterMangasDownloadType', + ), + ); }); } QueryBuilder - libraryFilterMangasDownloadTypeIsNotNull() { + libraryFilterMangasDownloadTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterMangasDownloadType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterMangasDownloadType', + ), + ); }); } QueryBuilder - libraryFilterMangasDownloadTypeEqualTo(int? value) { + libraryFilterMangasDownloadTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterMangasDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterMangasDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasDownloadTypeGreaterThan( + libraryFilterMangasDownloadTypeGreaterThan( int? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterMangasDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterMangasDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasDownloadTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterMangasDownloadTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterMangasDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterMangasDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasDownloadTypeBetween( + libraryFilterMangasDownloadTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterMangasDownloadType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterMangasDownloadType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterMangasStartedTypeIsNull() { + libraryFilterMangasStartedTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterMangasStartedType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterMangasStartedType', + ), + ); }); } QueryBuilder - libraryFilterMangasStartedTypeIsNotNull() { + libraryFilterMangasStartedTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterMangasStartedType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterMangasStartedType', + ), + ); }); } QueryBuilder - libraryFilterMangasStartedTypeEqualTo(int? value) { + libraryFilterMangasStartedTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterMangasStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterMangasStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasStartedTypeGreaterThan( + libraryFilterMangasStartedTypeGreaterThan( int? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterMangasStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterMangasStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasStartedTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterMangasStartedTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterMangasStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterMangasStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasStartedTypeBetween( + libraryFilterMangasStartedTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterMangasStartedType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterMangasStartedType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterMangasUnreadTypeIsNull() { + libraryFilterMangasUnreadTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterMangasUnreadType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterMangasUnreadType', + ), + ); }); } QueryBuilder - libraryFilterMangasUnreadTypeIsNotNull() { + libraryFilterMangasUnreadTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterMangasUnreadType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterMangasUnreadType', + ), + ); }); } QueryBuilder - libraryFilterMangasUnreadTypeEqualTo(int? value) { + libraryFilterMangasUnreadTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterMangasUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterMangasUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasUnreadTypeGreaterThan( - int? value, { - bool include = false, - }) { + libraryFilterMangasUnreadTypeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterMangasUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterMangasUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasUnreadTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterMangasUnreadTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterMangasUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterMangasUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterMangasUnreadTypeBetween( + libraryFilterMangasUnreadTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterMangasUnreadType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterMangasUnreadType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterNovelBookMarkedTypeIsNull() { + libraryFilterNovelBookMarkedTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterNovelBookMarkedType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterNovelBookMarkedType', + ), + ); }); } QueryBuilder - libraryFilterNovelBookMarkedTypeIsNotNull() { + libraryFilterNovelBookMarkedTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterNovelBookMarkedType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterNovelBookMarkedType', + ), + ); }); } QueryBuilder - libraryFilterNovelBookMarkedTypeEqualTo(int? value) { + libraryFilterNovelBookMarkedTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterNovelBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterNovelBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelBookMarkedTypeGreaterThan( + libraryFilterNovelBookMarkedTypeGreaterThan( int? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterNovelBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterNovelBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelBookMarkedTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterNovelBookMarkedTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterNovelBookMarkedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterNovelBookMarkedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelBookMarkedTypeBetween( + libraryFilterNovelBookMarkedTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterNovelBookMarkedType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterNovelBookMarkedType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterNovelDownloadTypeIsNull() { + libraryFilterNovelDownloadTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterNovelDownloadType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterNovelDownloadType', + ), + ); }); } QueryBuilder - libraryFilterNovelDownloadTypeIsNotNull() { + libraryFilterNovelDownloadTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterNovelDownloadType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterNovelDownloadType', + ), + ); }); } QueryBuilder - libraryFilterNovelDownloadTypeEqualTo(int? value) { + libraryFilterNovelDownloadTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterNovelDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterNovelDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelDownloadTypeGreaterThan( + libraryFilterNovelDownloadTypeGreaterThan( int? value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterNovelDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterNovelDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelDownloadTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterNovelDownloadTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterNovelDownloadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterNovelDownloadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelDownloadTypeBetween( + libraryFilterNovelDownloadTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterNovelDownloadType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterNovelDownloadType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterNovelStartedTypeIsNull() { + libraryFilterNovelStartedTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterNovelStartedType', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryFilterNovelStartedType', + ), + ); }); } QueryBuilder - libraryFilterNovelStartedTypeIsNotNull() { + libraryFilterNovelStartedTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterNovelStartedType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterNovelStartedType', + ), + ); }); } QueryBuilder - libraryFilterNovelStartedTypeEqualTo(int? value) { + libraryFilterNovelStartedTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterNovelStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterNovelStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelStartedTypeGreaterThan( - int? value, { - bool include = false, - }) { + libraryFilterNovelStartedTypeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterNovelStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterNovelStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelStartedTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterNovelStartedTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterNovelStartedType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterNovelStartedType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelStartedTypeBetween( + libraryFilterNovelStartedTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterNovelStartedType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterNovelStartedType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryFilterNovelUnreadTypeIsNull() { + libraryFilterNovelUnreadTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryFilterNovelUnreadType', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'libraryFilterNovelUnreadType'), + ); }); } QueryBuilder - libraryFilterNovelUnreadTypeIsNotNull() { + libraryFilterNovelUnreadTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryFilterNovelUnreadType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryFilterNovelUnreadType', + ), + ); }); } QueryBuilder - libraryFilterNovelUnreadTypeEqualTo(int? value) { + libraryFilterNovelUnreadTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryFilterNovelUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryFilterNovelUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelUnreadTypeGreaterThan( - int? value, { - bool include = false, - }) { + libraryFilterNovelUnreadTypeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryFilterNovelUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryFilterNovelUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelUnreadTypeLessThan( - int? value, { - bool include = false, - }) { + libraryFilterNovelUnreadTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryFilterNovelUnreadType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryFilterNovelUnreadType', + value: value, + ), + ); }); } QueryBuilder - libraryFilterNovelUnreadTypeBetween( + libraryFilterNovelUnreadTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryFilterNovelUnreadType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryFilterNovelUnreadType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - libraryLocalSourceIsNull() { + libraryLocalSourceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryLocalSource', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'libraryLocalSource'), + ); }); } QueryBuilder - libraryLocalSourceIsNotNull() { + libraryLocalSourceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryLocalSource', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'libraryLocalSource'), + ); }); } QueryBuilder - libraryLocalSourceEqualTo(bool? value) { + libraryLocalSourceEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryLocalSource', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'libraryLocalSource', value: value), + ); }); } QueryBuilder - libraryShowCategoryTabsIsNull() { + libraryShowCategoryTabsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryShowCategoryTabs', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'libraryShowCategoryTabs'), + ); }); } QueryBuilder - libraryShowCategoryTabsIsNotNull() { + libraryShowCategoryTabsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryShowCategoryTabs', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'libraryShowCategoryTabs'), + ); }); } QueryBuilder - libraryShowCategoryTabsEqualTo(bool? value) { + libraryShowCategoryTabsEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryShowCategoryTabs', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryShowCategoryTabs', + value: value, + ), + ); }); } QueryBuilder - libraryShowContinueReadingButtonIsNull() { + libraryShowContinueReadingButtonIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryShowContinueReadingButton', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'libraryShowContinueReadingButton', + ), + ); }); } QueryBuilder - libraryShowContinueReadingButtonIsNotNull() { + libraryShowContinueReadingButtonIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryShowContinueReadingButton', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'libraryShowContinueReadingButton', + ), + ); }); } QueryBuilder - libraryShowContinueReadingButtonEqualTo(bool? value) { + libraryShowContinueReadingButtonEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryShowContinueReadingButton', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryShowContinueReadingButton', + value: value, + ), + ); }); } QueryBuilder - libraryShowLanguageIsNull() { + libraryShowLanguageIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryShowLanguage', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'libraryShowLanguage'), + ); }); } QueryBuilder - libraryShowLanguageIsNotNull() { + libraryShowLanguageIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryShowLanguage', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'libraryShowLanguage'), + ); }); } QueryBuilder - libraryShowLanguageEqualTo(bool? value) { + libraryShowLanguageEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryShowLanguage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'libraryShowLanguage', value: value), + ); }); } QueryBuilder - libraryShowNumbersOfItemsIsNull() { + libraryShowNumbersOfItemsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryShowNumbersOfItems', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'libraryShowNumbersOfItems'), + ); }); } QueryBuilder - libraryShowNumbersOfItemsIsNotNull() { + libraryShowNumbersOfItemsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryShowNumbersOfItems', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'libraryShowNumbersOfItems'), + ); }); } QueryBuilder - libraryShowNumbersOfItemsEqualTo(bool? value) { + libraryShowNumbersOfItemsEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryShowNumbersOfItems', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'libraryShowNumbersOfItems', + value: value, + ), + ); }); } QueryBuilder localeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'locale', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'locale'), + ); }); } QueryBuilder localeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'locale', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'locale'), + ); }); } QueryBuilder - mangaExtensionsRepoIsNull() { + mangaExtensionsRepoIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaExtensionsRepo', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaExtensionsRepo'), + ); }); } QueryBuilder - mangaExtensionsRepoIsNotNull() { + mangaExtensionsRepoIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaExtensionsRepo', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaExtensionsRepo'), + ); }); } QueryBuilder - mangaExtensionsRepoLengthEqualTo(int length) { + mangaExtensionsRepoLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'mangaExtensionsRepo', @@ -7515,52 +8627,28 @@ extension SettingsQueryFilter } QueryBuilder - mangaExtensionsRepoIsEmpty() { + mangaExtensionsRepoIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'mangaExtensionsRepo', - 0, - true, - 0, - true, - ); + return query.listLength(r'mangaExtensionsRepo', 0, true, 0, true); }); } QueryBuilder - mangaExtensionsRepoIsNotEmpty() { + mangaExtensionsRepoIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'mangaExtensionsRepo', - 0, - false, - 999999, - true, - ); + return query.listLength(r'mangaExtensionsRepo', 0, false, 999999, true); }); } QueryBuilder - mangaExtensionsRepoLengthLessThan( - int length, { - bool include = false, - }) { + mangaExtensionsRepoLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'mangaExtensionsRepo', - 0, - true, - length, - include, - ); + return query.listLength(r'mangaExtensionsRepo', 0, true, length, include); }); } QueryBuilder - mangaExtensionsRepoLengthGreaterThan( - int length, { - bool include = false, - }) { + mangaExtensionsRepoLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'mangaExtensionsRepo', @@ -7573,7 +8661,7 @@ extension SettingsQueryFilter } QueryBuilder - mangaExtensionsRepoLengthBetween( + mangaExtensionsRepoLengthBetween( int lower, int upper, { bool includeLower = true, @@ -7591,44 +8679,43 @@ extension SettingsQueryFilter } QueryBuilder - mangaGridSizeIsNull() { + mangaGridSizeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaGridSize', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaGridSize'), + ); }); } QueryBuilder - mangaGridSizeIsNotNull() { + mangaGridSizeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaGridSize', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaGridSize'), + ); }); } QueryBuilder mangaGridSizeEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaGridSize', value: value), + ); }); } QueryBuilder - mangaGridSizeGreaterThan( - int? value, { - bool include = false, - }) { + mangaGridSizeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaGridSize', + value: value, + ), + ); }); } @@ -7637,11 +8724,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaGridSize', + value: value, + ), + ); }); } @@ -7652,240 +8741,251 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaGridSize', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaGridSize', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - mangaHomeDisplayTypeEqualTo(DisplayType value) { + mangaHomeDisplayTypeEqualTo(DisplayType value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaHomeDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'mangaHomeDisplayType', + value: value, + ), + ); }); } QueryBuilder - mangaHomeDisplayTypeGreaterThan( - DisplayType value, { - bool include = false, - }) { + mangaHomeDisplayTypeGreaterThan(DisplayType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaHomeDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaHomeDisplayType', + value: value, + ), + ); }); } QueryBuilder - mangaHomeDisplayTypeLessThan( - DisplayType value, { - bool include = false, - }) { + mangaHomeDisplayTypeLessThan(DisplayType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaHomeDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaHomeDisplayType', + value: value, + ), + ); }); } QueryBuilder - mangaHomeDisplayTypeBetween( + mangaHomeDisplayTypeBetween( DisplayType lower, DisplayType upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaHomeDisplayType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaHomeDisplayType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - markEpisodeAsSeenTypeIsNull() { + markEpisodeAsSeenTypeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'markEpisodeAsSeenType', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'markEpisodeAsSeenType'), + ); }); } QueryBuilder - markEpisodeAsSeenTypeIsNotNull() { + markEpisodeAsSeenTypeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'markEpisodeAsSeenType', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'markEpisodeAsSeenType'), + ); }); } QueryBuilder - markEpisodeAsSeenTypeEqualTo(int? value) { + markEpisodeAsSeenTypeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'markEpisodeAsSeenType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'markEpisodeAsSeenType', + value: value, + ), + ); }); } QueryBuilder - markEpisodeAsSeenTypeGreaterThan( - int? value, { - bool include = false, - }) { + markEpisodeAsSeenTypeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'markEpisodeAsSeenType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'markEpisodeAsSeenType', + value: value, + ), + ); }); } QueryBuilder - markEpisodeAsSeenTypeLessThan( - int? value, { - bool include = false, - }) { + markEpisodeAsSeenTypeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'markEpisodeAsSeenType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'markEpisodeAsSeenType', + value: value, + ), + ); }); } QueryBuilder - markEpisodeAsSeenTypeBetween( + markEpisodeAsSeenTypeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'markEpisodeAsSeenType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'markEpisodeAsSeenType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - mergeLibraryNavMobileIsNull() { + mergeLibraryNavMobileIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mergeLibraryNavMobile', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mergeLibraryNavMobile'), + ); }); } QueryBuilder - mergeLibraryNavMobileIsNotNull() { + mergeLibraryNavMobileIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mergeLibraryNavMobile', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mergeLibraryNavMobile'), + ); }); } QueryBuilder - mergeLibraryNavMobileEqualTo(bool? value) { + mergeLibraryNavMobileEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mergeLibraryNavMobile', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'mergeLibraryNavMobile', + value: value, + ), + ); }); } QueryBuilder - navigationOrderIsNull() { + navigationOrderIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'navigationOrder', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'navigationOrder'), + ); }); } QueryBuilder - navigationOrderIsNotNull() { + navigationOrderIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'navigationOrder', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'navigationOrder'), + ); }); } QueryBuilder - navigationOrderElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + navigationOrderElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'navigationOrder', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'navigationOrder', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - navigationOrderElementGreaterThan( + navigationOrderElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'navigationOrder', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'navigationOrder', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - navigationOrderElementLessThan( + navigationOrderElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'navigationOrder', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'navigationOrder', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - navigationOrderElementBetween( + navigationOrderElementBetween( String lower, String upper, { bool includeLower = true, @@ -7893,149 +8993,119 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'navigationOrder', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - navigationOrderElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'navigationOrder', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - navigationOrderElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'navigationOrder', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - navigationOrderElementContains(String value, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'navigationOrder', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - navigationOrderElementMatches(String pattern, - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'navigationOrder', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - navigationOrderElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'navigationOrder', - value: '', - )); - }); - } - - QueryBuilder - navigationOrderElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'navigationOrder', - value: '', - )); - }); - } - - QueryBuilder - navigationOrderLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'navigationOrder', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'navigationOrder', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - navigationOrderIsEmpty() { + navigationOrderElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'navigationOrder', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'navigationOrder', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - navigationOrderIsNotEmpty() { + navigationOrderElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'navigationOrder', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'navigationOrder', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - navigationOrderLengthLessThan( - int length, { - bool include = false, - }) { + navigationOrderElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'navigationOrder', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'navigationOrder', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - navigationOrderLengthGreaterThan( - int length, { - bool include = false, - }) { + navigationOrderElementMatches(String pattern, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'navigationOrder', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder + navigationOrderElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'navigationOrder', value: ''), + ); + }); + } + + QueryBuilder + navigationOrderElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'navigationOrder', value: ''), + ); + }); + } + + QueryBuilder + navigationOrderLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'navigationOrder', length, true, length, true); + }); + } + + QueryBuilder + navigationOrderIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'navigationOrder', 0, true, 0, true); + }); + } + + QueryBuilder + navigationOrderIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'navigationOrder', 0, false, 999999, true); + }); + } + + QueryBuilder + navigationOrderLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'navigationOrder', 0, true, length, include); + }); + } + + QueryBuilder + navigationOrderLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'navigationOrder', @@ -8048,7 +9118,7 @@ extension SettingsQueryFilter } QueryBuilder - navigationOrderLengthBetween( + navigationOrderLengthBetween( int lower, int upper, { bool includeLower = true, @@ -8066,81 +9136,80 @@ extension SettingsQueryFilter } QueryBuilder - novelDisplayTypeEqualTo(DisplayType value) { + novelDisplayTypeEqualTo(DisplayType value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'novelDisplayType', value: value), + ); }); } QueryBuilder - novelDisplayTypeGreaterThan( - DisplayType value, { - bool include = false, - }) { + novelDisplayTypeGreaterThan(DisplayType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'novelDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'novelDisplayType', + value: value, + ), + ); }); } QueryBuilder - novelDisplayTypeLessThan( - DisplayType value, { - bool include = false, - }) { + novelDisplayTypeLessThan(DisplayType value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'novelDisplayType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'novelDisplayType', + value: value, + ), + ); }); } QueryBuilder - novelDisplayTypeBetween( + novelDisplayTypeBetween( DisplayType lower, DisplayType upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'novelDisplayType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'novelDisplayType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - novelExtensionsRepoIsNull() { + novelExtensionsRepoIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelExtensionsRepo', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'novelExtensionsRepo'), + ); }); } QueryBuilder - novelExtensionsRepoIsNotNull() { + novelExtensionsRepoIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelExtensionsRepo', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'novelExtensionsRepo'), + ); }); } QueryBuilder - novelExtensionsRepoLengthEqualTo(int length) { + novelExtensionsRepoLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'novelExtensionsRepo', @@ -8153,52 +9222,28 @@ extension SettingsQueryFilter } QueryBuilder - novelExtensionsRepoIsEmpty() { + novelExtensionsRepoIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'novelExtensionsRepo', - 0, - true, - 0, - true, - ); + return query.listLength(r'novelExtensionsRepo', 0, true, 0, true); }); } QueryBuilder - novelExtensionsRepoIsNotEmpty() { + novelExtensionsRepoIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'novelExtensionsRepo', - 0, - false, - 999999, - true, - ); + return query.listLength(r'novelExtensionsRepo', 0, false, 999999, true); }); } QueryBuilder - novelExtensionsRepoLengthLessThan( - int length, { - bool include = false, - }) { + novelExtensionsRepoLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'novelExtensionsRepo', - 0, - true, - length, - include, - ); + return query.listLength(r'novelExtensionsRepo', 0, true, length, include); }); } QueryBuilder - novelExtensionsRepoLengthGreaterThan( - int length, { - bool include = false, - }) { + novelExtensionsRepoLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'novelExtensionsRepo', @@ -8211,7 +9256,7 @@ extension SettingsQueryFilter } QueryBuilder - novelExtensionsRepoLengthBetween( + novelExtensionsRepoLengthBetween( int lower, int upper, { bool includeLower = true, @@ -8229,44 +9274,43 @@ extension SettingsQueryFilter } QueryBuilder - novelFontSizeIsNull() { + novelFontSizeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelFontSize', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'novelFontSize'), + ); }); } QueryBuilder - novelFontSizeIsNotNull() { + novelFontSizeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelFontSize', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'novelFontSize'), + ); }); } QueryBuilder novelFontSizeEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelFontSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'novelFontSize', value: value), + ); }); } QueryBuilder - novelFontSizeGreaterThan( - int? value, { - bool include = false, - }) { + novelFontSizeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'novelFontSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'novelFontSize', + value: value, + ), + ); }); } @@ -8275,11 +9319,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'novelFontSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'novelFontSize', + value: value, + ), + ); }); } @@ -8290,55 +9336,56 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'novelFontSize', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'novelFontSize', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - novelGridSizeIsNull() { + novelGridSizeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelGridSize', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'novelGridSize'), + ); }); } QueryBuilder - novelGridSizeIsNotNull() { + novelGridSizeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelGridSize', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'novelGridSize'), + ); }); } QueryBuilder novelGridSizeEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'novelGridSize', value: value), + ); }); } QueryBuilder - novelGridSizeGreaterThan( - int? value, { - bool include = false, - }) { + novelGridSizeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'novelGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'novelGridSize', + value: value, + ), + ); }); } @@ -8347,11 +9394,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'novelGridSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'novelGridSize', + value: value, + ), + ); }); } @@ -8362,219 +9411,245 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'novelGridSize', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'novelGridSize', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - novelLibraryDownloadedChaptersIsNull() { + novelLibraryDownloadedChaptersIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelLibraryDownloadedChapters', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'novelLibraryDownloadedChapters', + ), + ); }); } QueryBuilder - novelLibraryDownloadedChaptersIsNotNull() { + novelLibraryDownloadedChaptersIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelLibraryDownloadedChapters', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'novelLibraryDownloadedChapters', + ), + ); }); } QueryBuilder - novelLibraryDownloadedChaptersEqualTo(bool? value) { + novelLibraryDownloadedChaptersEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelLibraryDownloadedChapters', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'novelLibraryDownloadedChapters', + value: value, + ), + ); }); } QueryBuilder - novelLibraryLocalSourceIsNull() { + novelLibraryLocalSourceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelLibraryLocalSource', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'novelLibraryLocalSource'), + ); }); } QueryBuilder - novelLibraryLocalSourceIsNotNull() { + novelLibraryLocalSourceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelLibraryLocalSource', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'novelLibraryLocalSource'), + ); }); } QueryBuilder - novelLibraryLocalSourceEqualTo(bool? value) { + novelLibraryLocalSourceEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelLibraryLocalSource', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'novelLibraryLocalSource', + value: value, + ), + ); }); } QueryBuilder - novelLibraryShowCategoryTabsIsNull() { + novelLibraryShowCategoryTabsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelLibraryShowCategoryTabs', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'novelLibraryShowCategoryTabs'), + ); }); } QueryBuilder - novelLibraryShowCategoryTabsIsNotNull() { + novelLibraryShowCategoryTabsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelLibraryShowCategoryTabs', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'novelLibraryShowCategoryTabs', + ), + ); }); } QueryBuilder - novelLibraryShowCategoryTabsEqualTo(bool? value) { + novelLibraryShowCategoryTabsEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelLibraryShowCategoryTabs', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'novelLibraryShowCategoryTabs', + value: value, + ), + ); }); } QueryBuilder - novelLibraryShowContinueReadingButtonIsNull() { + novelLibraryShowContinueReadingButtonIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelLibraryShowContinueReadingButton', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'novelLibraryShowContinueReadingButton', + ), + ); }); } QueryBuilder - novelLibraryShowContinueReadingButtonIsNotNull() { + novelLibraryShowContinueReadingButtonIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelLibraryShowContinueReadingButton', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'novelLibraryShowContinueReadingButton', + ), + ); }); } QueryBuilder - novelLibraryShowContinueReadingButtonEqualTo(bool? value) { + novelLibraryShowContinueReadingButtonEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelLibraryShowContinueReadingButton', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'novelLibraryShowContinueReadingButton', + value: value, + ), + ); }); } QueryBuilder - novelLibraryShowLanguageIsNull() { + novelLibraryShowLanguageIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelLibraryShowLanguage', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'novelLibraryShowLanguage'), + ); }); } QueryBuilder - novelLibraryShowLanguageIsNotNull() { + novelLibraryShowLanguageIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelLibraryShowLanguage', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'novelLibraryShowLanguage'), + ); }); } QueryBuilder - novelLibraryShowLanguageEqualTo(bool? value) { + novelLibraryShowLanguageEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelLibraryShowLanguage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'novelLibraryShowLanguage', + value: value, + ), + ); }); } QueryBuilder - novelLibraryShowNumbersOfItemsIsNull() { + novelLibraryShowNumbersOfItemsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'novelLibraryShowNumbersOfItems', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'novelLibraryShowNumbersOfItems', + ), + ); }); } QueryBuilder - novelLibraryShowNumbersOfItemsIsNotNull() { + novelLibraryShowNumbersOfItemsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'novelLibraryShowNumbersOfItems', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'novelLibraryShowNumbersOfItems', + ), + ); }); } QueryBuilder - novelLibraryShowNumbersOfItemsEqualTo(bool? value) { + novelLibraryShowNumbersOfItemsEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelLibraryShowNumbersOfItems', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'novelLibraryShowNumbersOfItems', + value: value, + ), + ); }); } QueryBuilder novelTextAlignEqualTo( - NovelTextAlign value) { + NovelTextAlign value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'novelTextAlign', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'novelTextAlign', value: value), + ); }); } QueryBuilder - novelTextAlignGreaterThan( - NovelTextAlign value, { - bool include = false, - }) { + novelTextAlignGreaterThan(NovelTextAlign value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'novelTextAlign', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'novelTextAlign', + value: value, + ), + ); }); } QueryBuilder - novelTextAlignLessThan( - NovelTextAlign value, { - bool include = false, - }) { + novelTextAlignLessThan(NovelTextAlign value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'novelTextAlign', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'novelTextAlign', + value: value, + ), + ); }); } @@ -8585,138 +9660,141 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'novelTextAlign', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'novelTextAlign', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - onlyIncludePinnedSourcesIsNull() { + onlyIncludePinnedSourcesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'onlyIncludePinnedSources', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'onlyIncludePinnedSources'), + ); }); } QueryBuilder - onlyIncludePinnedSourcesIsNotNull() { + onlyIncludePinnedSourcesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'onlyIncludePinnedSources', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'onlyIncludePinnedSources'), + ); }); } QueryBuilder - onlyIncludePinnedSourcesEqualTo(bool? value) { + onlyIncludePinnedSourcesEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'onlyIncludePinnedSources', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'onlyIncludePinnedSources', + value: value, + ), + ); }); } QueryBuilder - pagePreloadAmountIsNull() { + pagePreloadAmountIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'pagePreloadAmount', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'pagePreloadAmount'), + ); }); } QueryBuilder - pagePreloadAmountIsNotNull() { + pagePreloadAmountIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'pagePreloadAmount', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'pagePreloadAmount'), + ); }); } QueryBuilder - pagePreloadAmountEqualTo(int? value) { + pagePreloadAmountEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'pagePreloadAmount', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'pagePreloadAmount', value: value), + ); }); } QueryBuilder - pagePreloadAmountGreaterThan( - int? value, { - bool include = false, - }) { + pagePreloadAmountGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'pagePreloadAmount', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'pagePreloadAmount', + value: value, + ), + ); }); } QueryBuilder - pagePreloadAmountLessThan( - int? value, { - bool include = false, - }) { + pagePreloadAmountLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'pagePreloadAmount', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'pagePreloadAmount', + value: value, + ), + ); }); } QueryBuilder - pagePreloadAmountBetween( + pagePreloadAmountBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'pagePreloadAmount', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'pagePreloadAmount', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - personalPageModeListIsNull() { + personalPageModeListIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'personalPageModeList', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'personalPageModeList'), + ); }); } QueryBuilder - personalPageModeListIsNotNull() { + personalPageModeListIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'personalPageModeList', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'personalPageModeList'), + ); }); } QueryBuilder - personalPageModeListLengthEqualTo(int length) { + personalPageModeListLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'personalPageModeList', @@ -8729,36 +9807,21 @@ extension SettingsQueryFilter } QueryBuilder - personalPageModeListIsEmpty() { + personalPageModeListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'personalPageModeList', - 0, - true, - 0, - true, - ); + return query.listLength(r'personalPageModeList', 0, true, 0, true); }); } QueryBuilder - personalPageModeListIsNotEmpty() { + personalPageModeListIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'personalPageModeList', - 0, - false, - 999999, - true, - ); + return query.listLength(r'personalPageModeList', 0, false, 999999, true); }); } QueryBuilder - personalPageModeListLengthLessThan( - int length, { - bool include = false, - }) { + personalPageModeListLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'personalPageModeList', @@ -8771,10 +9834,7 @@ extension SettingsQueryFilter } QueryBuilder - personalPageModeListLengthGreaterThan( - int length, { - bool include = false, - }) { + personalPageModeListLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'personalPageModeList', @@ -8787,7 +9847,7 @@ extension SettingsQueryFilter } QueryBuilder - personalPageModeListLengthBetween( + personalPageModeListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -8805,25 +9865,25 @@ extension SettingsQueryFilter } QueryBuilder - personalReaderModeListIsNull() { + personalReaderModeListIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'personalReaderModeList', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'personalReaderModeList'), + ); }); } QueryBuilder - personalReaderModeListIsNotNull() { + personalReaderModeListIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'personalReaderModeList', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'personalReaderModeList'), + ); }); } QueryBuilder - personalReaderModeListLengthEqualTo(int length) { + personalReaderModeListLengthEqualTo(int length) { return QueryBuilder.apply(this, (query) { return query.listLength( r'personalReaderModeList', @@ -8836,20 +9896,14 @@ extension SettingsQueryFilter } QueryBuilder - personalReaderModeListIsEmpty() { + personalReaderModeListIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'personalReaderModeList', - 0, - true, - 0, - true, - ); + return query.listLength(r'personalReaderModeList', 0, true, 0, true); }); } QueryBuilder - personalReaderModeListIsNotEmpty() { + personalReaderModeListIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.listLength( r'personalReaderModeList', @@ -8862,10 +9916,7 @@ extension SettingsQueryFilter } QueryBuilder - personalReaderModeListLengthLessThan( - int length, { - bool include = false, - }) { + personalReaderModeListLengthLessThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'personalReaderModeList', @@ -8878,10 +9929,7 @@ extension SettingsQueryFilter } QueryBuilder - personalReaderModeListLengthGreaterThan( - int length, { - bool include = false, - }) { + personalReaderModeListLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'personalReaderModeList', @@ -8894,7 +9942,7 @@ extension SettingsQueryFilter } QueryBuilder - personalReaderModeListLengthBetween( + personalReaderModeListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -8912,243 +9960,245 @@ extension SettingsQueryFilter } QueryBuilder - playerSubtitleSettingsIsNull() { + playerSubtitleSettingsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'playerSubtitleSettings', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'playerSubtitleSettings'), + ); }); } QueryBuilder - playerSubtitleSettingsIsNotNull() { + playerSubtitleSettingsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'playerSubtitleSettings', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'playerSubtitleSettings'), + ); }); } QueryBuilder - pureBlackDarkModeIsNull() { + pureBlackDarkModeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'pureBlackDarkMode', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'pureBlackDarkMode'), + ); }); } QueryBuilder - pureBlackDarkModeIsNotNull() { + pureBlackDarkModeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'pureBlackDarkMode', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'pureBlackDarkMode'), + ); }); } QueryBuilder - pureBlackDarkModeEqualTo(bool? value) { + pureBlackDarkModeEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'pureBlackDarkMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'pureBlackDarkMode', value: value), + ); }); } QueryBuilder - relativeTimesTampsIsNull() { + relativeTimesTampsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'relativeTimesTamps', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'relativeTimesTamps'), + ); }); } QueryBuilder - relativeTimesTampsIsNotNull() { + relativeTimesTampsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'relativeTimesTamps', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'relativeTimesTamps'), + ); }); } QueryBuilder - relativeTimesTampsEqualTo(int? value) { + relativeTimesTampsEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'relativeTimesTamps', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'relativeTimesTamps', value: value), + ); }); } QueryBuilder - relativeTimesTampsGreaterThan( - int? value, { - bool include = false, - }) { + relativeTimesTampsGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'relativeTimesTamps', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'relativeTimesTamps', + value: value, + ), + ); }); } QueryBuilder - relativeTimesTampsLessThan( - int? value, { - bool include = false, - }) { + relativeTimesTampsLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'relativeTimesTamps', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'relativeTimesTamps', + value: value, + ), + ); }); } QueryBuilder - relativeTimesTampsBetween( + relativeTimesTampsBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'relativeTimesTamps', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'relativeTimesTamps', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - rpcShowCoverImageIsNull() { + rpcShowCoverImageIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'rpcShowCoverImage', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'rpcShowCoverImage'), + ); }); } QueryBuilder - rpcShowCoverImageIsNotNull() { + rpcShowCoverImageIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'rpcShowCoverImage', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'rpcShowCoverImage'), + ); }); } QueryBuilder - rpcShowCoverImageEqualTo(bool? value) { + rpcShowCoverImageEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'rpcShowCoverImage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'rpcShowCoverImage', value: value), + ); }); } QueryBuilder - rpcShowReadingWatchingProgressIsNull() { + rpcShowReadingWatchingProgressIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'rpcShowReadingWatchingProgress', - )); + return query.addFilterCondition( + const FilterCondition.isNull( + property: r'rpcShowReadingWatchingProgress', + ), + ); }); } QueryBuilder - rpcShowReadingWatchingProgressIsNotNull() { + rpcShowReadingWatchingProgressIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'rpcShowReadingWatchingProgress', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'rpcShowReadingWatchingProgress', + ), + ); }); } QueryBuilder - rpcShowReadingWatchingProgressEqualTo(bool? value) { + rpcShowReadingWatchingProgressEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'rpcShowReadingWatchingProgress', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'rpcShowReadingWatchingProgress', + value: value, + ), + ); }); } QueryBuilder rpcShowTitleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'rpcShowTitle', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'rpcShowTitle'), + ); }); } QueryBuilder - rpcShowTitleIsNotNull() { + rpcShowTitleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'rpcShowTitle', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'rpcShowTitle'), + ); }); } QueryBuilder rpcShowTitleEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'rpcShowTitle', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'rpcShowTitle', value: value), + ); }); } QueryBuilder - saveAsCBZArchiveIsNull() { + saveAsCBZArchiveIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'saveAsCBZArchive', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'saveAsCBZArchive'), + ); }); } QueryBuilder - saveAsCBZArchiveIsNotNull() { + saveAsCBZArchiveIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'saveAsCBZArchive', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'saveAsCBZArchive'), + ); }); } QueryBuilder - saveAsCBZArchiveEqualTo(bool? value) { + saveAsCBZArchiveEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'saveAsCBZArchive', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'saveAsCBZArchive', value: value), + ); }); } QueryBuilder scaleTypeEqualTo( - ScaleType value) { + ScaleType value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'scaleType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'scaleType', value: value), + ); }); } @@ -9157,11 +10207,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'scaleType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'scaleType', + value: value, + ), + ); }); } @@ -9170,11 +10222,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'scaleType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'scaleType', + value: value, + ), + ); }); } @@ -9185,122 +10239,93 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'scaleType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } - - QueryBuilder - showPagesNumberIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'showPagesNumber', - )); - }); - } - - QueryBuilder - showPagesNumberIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'showPagesNumber', - )); - }); - } - - QueryBuilder - showPagesNumberEqualTo(bool? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'showPagesNumber', - value: value, - )); - }); - } - - QueryBuilder - sortChapterListIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sortChapterList', - )); - }); - } - - QueryBuilder - sortChapterListIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sortChapterList', - )); - }); - } - - QueryBuilder - sortChapterListLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'sortChapterList', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'scaleType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), ); }); } QueryBuilder - sortChapterListIsEmpty() { + showPagesNumberIsNull() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'sortChapterList', - 0, - true, - 0, - true, + return query.addFilterCondition( + const FilterCondition.isNull(property: r'showPagesNumber'), ); }); } QueryBuilder - sortChapterListIsNotEmpty() { + showPagesNumberIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'sortChapterList', - 0, - false, - 999999, - true, + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'showPagesNumber'), ); }); } QueryBuilder - sortChapterListLengthLessThan( - int length, { - bool include = false, - }) { + showPagesNumberEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'sortChapterList', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.equalTo(property: r'showPagesNumber', value: value), ); }); } QueryBuilder - sortChapterListLengthGreaterThan( - int length, { - bool include = false, - }) { + sortChapterListIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sortChapterList'), + ); + }); + } + + QueryBuilder + sortChapterListIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sortChapterList'), + ); + }); + } + + QueryBuilder + sortChapterListLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'sortChapterList', length, true, length, true); + }); + } + + QueryBuilder + sortChapterListIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'sortChapterList', 0, true, 0, true); + }); + } + + QueryBuilder + sortChapterListIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'sortChapterList', 0, false, 999999, true); + }); + } + + QueryBuilder + sortChapterListLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'sortChapterList', 0, true, length, include); + }); + } + + QueryBuilder + sortChapterListLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.listLength( r'sortChapterList', @@ -9313,7 +10338,7 @@ extension SettingsQueryFilter } QueryBuilder - sortChapterListLengthBetween( + sortChapterListLengthBetween( int lower, int upper, { bool includeLower = true, @@ -9331,211 +10356,214 @@ extension SettingsQueryFilter } QueryBuilder - sortLibraryAnimeIsNull() { + sortLibraryAnimeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sortLibraryAnime', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sortLibraryAnime'), + ); }); } QueryBuilder - sortLibraryAnimeIsNotNull() { + sortLibraryAnimeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sortLibraryAnime', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sortLibraryAnime'), + ); }); } QueryBuilder - sortLibraryMangaIsNull() { + sortLibraryMangaIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sortLibraryManga', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sortLibraryManga'), + ); }); } QueryBuilder - sortLibraryMangaIsNotNull() { + sortLibraryMangaIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sortLibraryManga', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sortLibraryManga'), + ); }); } QueryBuilder - sortLibraryNovelIsNull() { + sortLibraryNovelIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sortLibraryNovel', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sortLibraryNovel'), + ); }); } QueryBuilder - sortLibraryNovelIsNotNull() { + sortLibraryNovelIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sortLibraryNovel', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sortLibraryNovel'), + ); }); } QueryBuilder - startDatebackupIsNull() { + startDatebackupIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'startDatebackup', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'startDatebackup'), + ); }); } QueryBuilder - startDatebackupIsNotNull() { + startDatebackupIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'startDatebackup', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'startDatebackup'), + ); }); } QueryBuilder - startDatebackupEqualTo(int? value) { + startDatebackupEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'startDatebackup', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'startDatebackup', value: value), + ); }); } QueryBuilder - startDatebackupGreaterThan( - int? value, { - bool include = false, - }) { + startDatebackupGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'startDatebackup', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'startDatebackup', + value: value, + ), + ); }); } QueryBuilder - startDatebackupLessThan( - int? value, { - bool include = false, - }) { + startDatebackupLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'startDatebackup', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'startDatebackup', + value: value, + ), + ); }); } QueryBuilder - startDatebackupBetween( + startDatebackupBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'startDatebackup', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'startDatebackup', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder themeIsDarkIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'themeIsDark', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'themeIsDark'), + ); }); } QueryBuilder - themeIsDarkIsNotNull() { + themeIsDarkIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'themeIsDark', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'themeIsDark'), + ); }); } QueryBuilder themeIsDarkEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'themeIsDark', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'themeIsDark', value: value), + ); }); } QueryBuilder - updateProgressAfterReadingIsNull() { + updateProgressAfterReadingIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updateProgressAfterReading', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updateProgressAfterReading'), + ); }); } QueryBuilder - updateProgressAfterReadingIsNotNull() { + updateProgressAfterReadingIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updateProgressAfterReading', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull( + property: r'updateProgressAfterReading', + ), + ); }); } QueryBuilder - updateProgressAfterReadingEqualTo(bool? value) { + updateProgressAfterReadingEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updateProgressAfterReading', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'updateProgressAfterReading', + value: value, + ), + ); }); } QueryBuilder updatedAtIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); }); } @@ -9544,11 +10572,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -9557,11 +10587,13 @@ extension SettingsQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -9572,83 +10604,138 @@ extension SettingsQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'updatedAt', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder useLibassIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'useLibass', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'useLibass'), + ); }); } QueryBuilder useLibassIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'useLibass', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'useLibass'), + ); }); } QueryBuilder useLibassEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'useLibass', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'useLibass', value: value), + ); + }); + } + + QueryBuilder useMpvConfigIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'useMpvConfig'), + ); }); } QueryBuilder - usePageTapZonesIsNull() { + useMpvConfigIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'usePageTapZones', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'useMpvConfig'), + ); + }); + } + + QueryBuilder useMpvConfigEqualTo( + bool? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'useMpvConfig', value: value), + ); }); } QueryBuilder - usePageTapZonesIsNotNull() { + usePageTapZonesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'usePageTapZones', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'usePageTapZones'), + ); }); } QueryBuilder - usePageTapZonesEqualTo(bool? value) { + usePageTapZonesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'usePageTapZones', - value: value, - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'usePageTapZones'), + ); + }); + } + + QueryBuilder + usePageTapZonesEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'usePageTapZones', value: value), + ); + }); + } + + QueryBuilder useYUV420PIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'useYUV420P'), + ); + }); + } + + QueryBuilder + useYUV420PIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'useYUV420P'), + ); + }); + } + + QueryBuilder useYUV420PEqualTo( + bool? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'useYUV420P', value: value), + ); }); } QueryBuilder userAgentIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'userAgent', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'userAgent'), + ); }); } QueryBuilder userAgentIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'userAgent', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'userAgent'), + ); }); } @@ -9657,11 +10744,13 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'userAgent', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'userAgent', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -9671,12 +10760,14 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'userAgent', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'userAgent', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -9686,12 +10777,14 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'userAgent', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'userAgent', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -9703,14 +10796,16 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'userAgent', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'userAgent', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -9719,11 +10814,13 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'userAgent', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'userAgent', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -9732,204 +10829,296 @@ extension SettingsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'userAgent', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'userAgent', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder userAgentContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'userAgent', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'userAgent', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder userAgentMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'userAgent', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'userAgent', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder userAgentIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'userAgent', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'userAgent', value: ''), + ); }); } QueryBuilder - userAgentIsNotEmpty() { + userAgentIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'userAgent', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'userAgent', value: ''), + ); + }); + } + + QueryBuilder + volumeBoostCapIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'volumeBoostCap'), + ); + }); + } + + QueryBuilder + volumeBoostCapIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'volumeBoostCap'), + ); + }); + } + + QueryBuilder volumeBoostCapEqualTo( + int? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'volumeBoostCap', value: value), + ); + }); + } + + QueryBuilder + volumeBoostCapGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'volumeBoostCap', + value: value, + ), + ); + }); + } + + QueryBuilder + volumeBoostCapLessThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'volumeBoostCap', + value: value, + ), + ); + }); + } + + QueryBuilder volumeBoostCapBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'volumeBoostCap', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } extension SettingsQueryObject on QueryBuilder { + QueryBuilder algorithmWeights( + FilterQuery q, + ) { + return QueryBuilder.apply(this, (query) { + return query.object(q, r'algorithmWeights'); + }); + } + QueryBuilder - animeExtensionsRepoElement(FilterQuery q) { + animeExtensionsRepoElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'animeExtensionsRepo'); }); } QueryBuilder - autoScrollPagesElement(FilterQuery q) { + autoScrollPagesElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'autoScrollPages'); }); } QueryBuilder - chapterFilterBookmarkedListElement( - FilterQuery q) { + chapterFilterBookmarkedListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'chapterFilterBookmarkedList'); }); } QueryBuilder - chapterFilterDownloadedListElement( - FilterQuery q) { + chapterFilterDownloadedListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'chapterFilterDownloadedList'); }); } QueryBuilder - chapterFilterUnreadListElement(FilterQuery q) { + chapterFilterUnreadListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'chapterFilterUnreadList'); }); } QueryBuilder - chapterPageIndexListElement(FilterQuery q) { + chapterPageIndexListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'chapterPageIndexList'); }); } QueryBuilder - chapterPageUrlsListElement(FilterQuery q) { + chapterPageUrlsListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'chapterPageUrlsList'); }); } QueryBuilder cookiesListElement( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.object(q, r'cookiesList'); }); } QueryBuilder customColorFilter( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.object(q, r'customColorFilter'); }); } QueryBuilder defaultSubtitleLang( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.object(q, r'defaultSubtitleLang'); }); } QueryBuilder - filterScanlatorListElement(FilterQuery q) { + filterScanlatorListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'filterScanlatorList'); }); } QueryBuilder locale( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.object(q, r'locale'); }); } QueryBuilder - mangaExtensionsRepoElement(FilterQuery q) { + mangaExtensionsRepoElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'mangaExtensionsRepo'); }); } QueryBuilder - novelExtensionsRepoElement(FilterQuery q) { + novelExtensionsRepoElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'novelExtensionsRepo'); }); } QueryBuilder - personalPageModeListElement(FilterQuery q) { + personalPageModeListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'personalPageModeList'); }); } QueryBuilder - personalReaderModeListElement(FilterQuery q) { + personalReaderModeListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'personalReaderModeList'); }); } QueryBuilder - playerSubtitleSettings(FilterQuery q) { + playerSubtitleSettings(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'playerSubtitleSettings'); }); } QueryBuilder - sortChapterListElement(FilterQuery q) { + sortChapterListElement(FilterQuery q) { return QueryBuilder.apply(this, (query) { return query.object(q, r'sortChapterList'); }); } QueryBuilder sortLibraryAnime( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.object(q, r'sortLibraryAnime'); }); } QueryBuilder sortLibraryManga( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.object(q, r'sortLibraryManga'); }); } QueryBuilder sortLibraryNovel( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.object(q, r'sortLibraryNovel'); }); @@ -9939,14 +11128,16 @@ extension SettingsQueryObject extension SettingsQueryLinks on QueryBuilder { QueryBuilder sources( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.link(q, r'sources'); }); } QueryBuilder sourcesLengthEqualTo( - int length) { + int length, + ) { return QueryBuilder.apply(this, (query) { return query.linkLength(r'sources', length, true, length, true); }); @@ -9974,10 +11165,7 @@ extension SettingsQueryLinks } QueryBuilder - sourcesLengthGreaterThan( - int length, { - bool include = false, - }) { + sourcesLengthGreaterThan(int length, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.linkLength(r'sources', length, include, 999999, true); }); @@ -9991,12 +11179,30 @@ extension SettingsQueryLinks }) { return QueryBuilder.apply(this, (query) { return query.linkLength( - r'sources', lower, includeLower, upper, includeUpper); + r'sources', + lower, + includeLower, + upper, + includeUpper, + ); }); } } extension SettingsQuerySortBy on QueryBuilder { + QueryBuilder sortByAndroidProxyServer() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'androidProxyServer', Sort.asc); + }); + } + + QueryBuilder + sortByAndroidProxyServerDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'androidProxyServer', Sort.desc); + }); + } + QueryBuilder sortByAniSkipTimeoutLength() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'aniSkipTimeoutLength', Sort.asc); @@ -10004,21 +11210,21 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByAniSkipTimeoutLengthDesc() { + sortByAniSkipTimeoutLengthDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'aniSkipTimeoutLength', Sort.desc); }); } QueryBuilder - sortByAnimatePageTransitions() { + sortByAnimatePageTransitions() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animatePageTransitions', Sort.asc); }); } QueryBuilder - sortByAnimatePageTransitionsDesc() { + sortByAnimatePageTransitionsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animatePageTransitions', Sort.desc); }); @@ -10049,86 +11255,90 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByAnimeLibraryDownloadedChapters() { + sortByAnimeLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryDownloadedChapters', Sort.asc); }); } QueryBuilder - sortByAnimeLibraryDownloadedChaptersDesc() { + sortByAnimeLibraryDownloadedChaptersDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryDownloadedChapters', Sort.desc); }); } QueryBuilder - sortByAnimeLibraryLocalSource() { + sortByAnimeLibraryLocalSource() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryLocalSource', Sort.asc); }); } QueryBuilder - sortByAnimeLibraryLocalSourceDesc() { + sortByAnimeLibraryLocalSourceDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryLocalSource', Sort.desc); }); } QueryBuilder - sortByAnimeLibraryShowCategoryTabs() { + sortByAnimeLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowCategoryTabs', Sort.asc); }); } QueryBuilder - sortByAnimeLibraryShowCategoryTabsDesc() { + sortByAnimeLibraryShowCategoryTabsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowCategoryTabs', Sort.desc); }); } QueryBuilder - sortByAnimeLibraryShowContinueReadingButton() { + sortByAnimeLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addSortBy( - r'animeLibraryShowContinueReadingButton', Sort.asc); + r'animeLibraryShowContinueReadingButton', + Sort.asc, + ); }); } QueryBuilder - sortByAnimeLibraryShowContinueReadingButtonDesc() { + sortByAnimeLibraryShowContinueReadingButtonDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy( - r'animeLibraryShowContinueReadingButton', Sort.desc); + r'animeLibraryShowContinueReadingButton', + Sort.desc, + ); }); } QueryBuilder - sortByAnimeLibraryShowLanguage() { + sortByAnimeLibraryShowLanguage() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowLanguage', Sort.asc); }); } QueryBuilder - sortByAnimeLibraryShowLanguageDesc() { + sortByAnimeLibraryShowLanguageDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowLanguage', Sort.desc); }); } QueryBuilder - sortByAnimeLibraryShowNumbersOfItems() { + sortByAnimeLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowNumbersOfItems', Sort.asc); }); } QueryBuilder - sortByAnimeLibraryShowNumbersOfItemsDesc() { + sortByAnimeLibraryShowNumbersOfItemsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowNumbersOfItems', Sort.desc); }); @@ -10146,6 +11356,32 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByAudioChannels() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'audioChannels', Sort.asc); + }); + } + + QueryBuilder sortByAudioChannelsDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'audioChannels', Sort.desc); + }); + } + + QueryBuilder + sortByAudioPreferredLanguages() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'audioPreferredLanguages', Sort.asc); + }); + } + + QueryBuilder + sortByAudioPreferredLanguagesDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'audioPreferredLanguages', Sort.desc); + }); + } + QueryBuilder sortByAutoBackupLocation() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoBackupLocation', Sort.asc); @@ -10153,7 +11389,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByAutoBackupLocationDesc() { + sortByAutoBackupLocationDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoBackupLocation', Sort.desc); }); @@ -10166,7 +11402,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByAutoExtensionsUpdatesDesc() { + sortByAutoExtensionsUpdatesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoExtensionsUpdates', Sort.desc); }); @@ -10227,35 +11463,35 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByCheckForAppUpdatesDesc() { + sortByCheckForAppUpdatesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'checkForAppUpdates', Sort.desc); }); } QueryBuilder - sortByCheckForExtensionUpdates() { + sortByCheckForExtensionUpdates() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'checkForExtensionUpdates', Sort.asc); }); } QueryBuilder - sortByCheckForExtensionUpdatesDesc() { + sortByCheckForExtensionUpdatesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'checkForExtensionUpdates', Sort.desc); }); } QueryBuilder - sortByClearChapterCacheOnAppLaunch() { + sortByClearChapterCacheOnAppLaunch() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'clearChapterCacheOnAppLaunch', Sort.asc); }); } QueryBuilder - sortByClearChapterCacheOnAppLaunchDesc() { + sortByClearChapterCacheOnAppLaunchDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'clearChapterCacheOnAppLaunch', Sort.desc); }); @@ -10268,7 +11504,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByColorFilterBlendModeDesc() { + sortByColorFilterBlendModeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'colorFilterBlendMode', Sort.desc); }); @@ -10281,7 +11517,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByConcurrentDownloadsDesc() { + sortByConcurrentDownloadsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'concurrentDownloads', Sort.desc); }); @@ -10299,6 +11535,18 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByCustomDns() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'customDns', Sort.asc); + }); + } + + QueryBuilder sortByCustomDnsDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'customDns', Sort.desc); + }); + } + QueryBuilder sortByDateFormat() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'dateFormat', Sort.asc); @@ -10311,15 +11559,27 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByDebandingType() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'debandingType', Sort.asc); + }); + } + + QueryBuilder sortByDebandingTypeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'debandingType', Sort.desc); + }); + } + QueryBuilder - sortByDefaultDoubleTapToSkipLength() { + sortByDefaultDoubleTapToSkipLength() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultDoubleTapToSkipLength', Sort.asc); }); } QueryBuilder - sortByDefaultDoubleTapToSkipLengthDesc() { + sortByDefaultDoubleTapToSkipLengthDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultDoubleTapToSkipLength', Sort.desc); }); @@ -10332,7 +11592,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByDefaultPlayBackSpeedDesc() { + sortByDefaultPlayBackSpeedDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultPlayBackSpeed', Sort.desc); }); @@ -10351,14 +11611,14 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByDefaultSkipIntroLength() { + sortByDefaultSkipIntroLength() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultSkipIntroLength', Sort.asc); }); } QueryBuilder - sortByDefaultSkipIntroLengthDesc() { + sortByDefaultSkipIntroLengthDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultSkipIntroLength', Sort.desc); }); @@ -10371,7 +11631,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByDisableSectionTypeDesc() { + sortByDisableSectionTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'disableSectionType', Sort.desc); }); @@ -10390,14 +11650,14 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByDoubleTapAnimationSpeed() { + sortByDoubleTapAnimationSpeed() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'doubleTapAnimationSpeed', Sort.asc); }); } QueryBuilder - sortByDoubleTapAnimationSpeedDesc() { + sortByDoubleTapAnimationSpeedDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'doubleTapAnimationSpeed', Sort.desc); }); @@ -10422,12 +11682,25 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByDownloadOnlyOnWifiDesc() { + sortByDownloadOnlyOnWifiDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'downloadOnlyOnWifi', Sort.desc); }); } + QueryBuilder sortByDownloadedOnlyMode() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'downloadedOnlyMode', Sort.asc); + }); + } + + QueryBuilder + sortByDownloadedOnlyModeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'downloadedOnlyMode', Sort.desc); + }); + } + QueryBuilder sortByEnableAniSkip() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableAniSkip', Sort.asc); @@ -10440,6 +11713,20 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder + sortByEnableAudioPitchCorrection() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableAudioPitchCorrection', Sort.asc); + }); + } + + QueryBuilder + sortByEnableAudioPitchCorrectionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableAudioPitchCorrection', Sort.desc); + }); + } + QueryBuilder sortByEnableAutoSkip() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableAutoSkip', Sort.asc); @@ -10453,14 +11740,14 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByEnableCustomColorFilter() { + sortByEnableCustomColorFilter() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableCustomColorFilter', Sort.asc); }); } QueryBuilder - sortByEnableCustomColorFilterDesc() { + sortByEnableCustomColorFilterDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableCustomColorFilter', Sort.desc); }); @@ -10478,15 +11765,41 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByEnableGpuNext() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableGpuNext', Sort.asc); + }); + } + + QueryBuilder sortByEnableGpuNextDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableGpuNext', Sort.desc); + }); + } + QueryBuilder - sortByFlexColorSchemeBlendLevel() { + sortByEnableHardwareAcceleration() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableHardwareAcceleration', Sort.asc); + }); + } + + QueryBuilder + sortByEnableHardwareAccelerationDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableHardwareAcceleration', Sort.desc); + }); + } + + QueryBuilder + sortByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'flexColorSchemeBlendLevel', Sort.asc); }); } QueryBuilder - sortByFlexColorSchemeBlendLevelDesc() { + sortByFlexColorSchemeBlendLevelDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'flexColorSchemeBlendLevel', Sort.desc); }); @@ -10499,7 +11812,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByFlexSchemeColorIndexDesc() { + sortByFlexSchemeColorIndexDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'flexSchemeColorIndex', Sort.desc); }); @@ -10542,14 +11855,14 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByHideDiscordRpcInIncognito() { + sortByHideDiscordRpcInIncognito() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'hideDiscordRpcInIncognito', Sort.asc); }); } QueryBuilder - sortByHideDiscordRpcInIncognitoDesc() { + sortByHideDiscordRpcInIncognitoDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'hideDiscordRpcInIncognito', Sort.desc); }); @@ -10580,196 +11893,196 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByLastTrackerLibraryLocation() { + sortByLastTrackerLibraryLocation() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastTrackerLibraryLocation', Sort.asc); }); } QueryBuilder - sortByLastTrackerLibraryLocationDesc() { + sortByLastTrackerLibraryLocationDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastTrackerLibraryLocation', Sort.desc); }); } QueryBuilder - sortByLibraryDownloadedChapters() { + sortByLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryDownloadedChapters', Sort.asc); }); } QueryBuilder - sortByLibraryDownloadedChaptersDesc() { + sortByLibraryDownloadedChaptersDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryDownloadedChapters', Sort.desc); }); } QueryBuilder - sortByLibraryFilterAnimeBookMarkedType() { + sortByLibraryFilterAnimeBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeBookMarkedType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterAnimeBookMarkedTypeDesc() { + sortByLibraryFilterAnimeBookMarkedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeBookMarkedType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterAnimeDownloadType() { + sortByLibraryFilterAnimeDownloadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeDownloadType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterAnimeDownloadTypeDesc() { + sortByLibraryFilterAnimeDownloadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeDownloadType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterAnimeStartedType() { + sortByLibraryFilterAnimeStartedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeStartedType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterAnimeStartedTypeDesc() { + sortByLibraryFilterAnimeStartedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeStartedType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterAnimeUnreadType() { + sortByLibraryFilterAnimeUnreadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeUnreadType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterAnimeUnreadTypeDesc() { + sortByLibraryFilterAnimeUnreadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeUnreadType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterMangasBookMarkedType() { + sortByLibraryFilterMangasBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasBookMarkedType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterMangasBookMarkedTypeDesc() { + sortByLibraryFilterMangasBookMarkedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasBookMarkedType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterMangasDownloadType() { + sortByLibraryFilterMangasDownloadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasDownloadType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterMangasDownloadTypeDesc() { + sortByLibraryFilterMangasDownloadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasDownloadType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterMangasStartedType() { + sortByLibraryFilterMangasStartedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasStartedType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterMangasStartedTypeDesc() { + sortByLibraryFilterMangasStartedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasStartedType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterMangasUnreadType() { + sortByLibraryFilterMangasUnreadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasUnreadType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterMangasUnreadTypeDesc() { + sortByLibraryFilterMangasUnreadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasUnreadType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterNovelBookMarkedType() { + sortByLibraryFilterNovelBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelBookMarkedType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterNovelBookMarkedTypeDesc() { + sortByLibraryFilterNovelBookMarkedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelBookMarkedType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterNovelDownloadType() { + sortByLibraryFilterNovelDownloadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelDownloadType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterNovelDownloadTypeDesc() { + sortByLibraryFilterNovelDownloadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelDownloadType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterNovelStartedType() { + sortByLibraryFilterNovelStartedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelStartedType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterNovelStartedTypeDesc() { + sortByLibraryFilterNovelStartedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelStartedType', Sort.desc); }); } QueryBuilder - sortByLibraryFilterNovelUnreadType() { + sortByLibraryFilterNovelUnreadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelUnreadType', Sort.asc); }); } QueryBuilder - sortByLibraryFilterNovelUnreadTypeDesc() { + sortByLibraryFilterNovelUnreadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelUnreadType', Sort.desc); }); @@ -10782,35 +12095,35 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByLibraryLocalSourceDesc() { + sortByLibraryLocalSourceDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryLocalSource', Sort.desc); }); } QueryBuilder - sortByLibraryShowCategoryTabs() { + sortByLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowCategoryTabs', Sort.asc); }); } QueryBuilder - sortByLibraryShowCategoryTabsDesc() { + sortByLibraryShowCategoryTabsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowCategoryTabs', Sort.desc); }); } QueryBuilder - sortByLibraryShowContinueReadingButton() { + sortByLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowContinueReadingButton', Sort.asc); }); } QueryBuilder - sortByLibraryShowContinueReadingButtonDesc() { + sortByLibraryShowContinueReadingButtonDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowContinueReadingButton', Sort.desc); }); @@ -10823,21 +12136,21 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByLibraryShowLanguageDesc() { + sortByLibraryShowLanguageDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowLanguage', Sort.desc); }); } QueryBuilder - sortByLibraryShowNumbersOfItems() { + sortByLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowNumbersOfItems', Sort.asc); }); } QueryBuilder - sortByLibraryShowNumbersOfItemsDesc() { + sortByLibraryShowNumbersOfItemsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowNumbersOfItems', Sort.desc); }); @@ -10862,7 +12175,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByMangaHomeDisplayTypeDesc() { + sortByMangaHomeDisplayTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'mangaHomeDisplayType', Sort.desc); }); @@ -10875,7 +12188,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByMarkEpisodeAsSeenTypeDesc() { + sortByMarkEpisodeAsSeenTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'markEpisodeAsSeenType', Sort.desc); }); @@ -10888,7 +12201,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByMergeLibraryNavMobileDesc() { + sortByMergeLibraryNavMobileDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'mergeLibraryNavMobile', Sort.desc); }); @@ -10931,86 +12244,90 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByNovelLibraryDownloadedChapters() { + sortByNovelLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryDownloadedChapters', Sort.asc); }); } QueryBuilder - sortByNovelLibraryDownloadedChaptersDesc() { + sortByNovelLibraryDownloadedChaptersDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryDownloadedChapters', Sort.desc); }); } QueryBuilder - sortByNovelLibraryLocalSource() { + sortByNovelLibraryLocalSource() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryLocalSource', Sort.asc); }); } QueryBuilder - sortByNovelLibraryLocalSourceDesc() { + sortByNovelLibraryLocalSourceDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryLocalSource', Sort.desc); }); } QueryBuilder - sortByNovelLibraryShowCategoryTabs() { + sortByNovelLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowCategoryTabs', Sort.asc); }); } QueryBuilder - sortByNovelLibraryShowCategoryTabsDesc() { + sortByNovelLibraryShowCategoryTabsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowCategoryTabs', Sort.desc); }); } QueryBuilder - sortByNovelLibraryShowContinueReadingButton() { + sortByNovelLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addSortBy( - r'novelLibraryShowContinueReadingButton', Sort.asc); + r'novelLibraryShowContinueReadingButton', + Sort.asc, + ); }); } QueryBuilder - sortByNovelLibraryShowContinueReadingButtonDesc() { + sortByNovelLibraryShowContinueReadingButtonDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy( - r'novelLibraryShowContinueReadingButton', Sort.desc); + r'novelLibraryShowContinueReadingButton', + Sort.desc, + ); }); } QueryBuilder - sortByNovelLibraryShowLanguage() { + sortByNovelLibraryShowLanguage() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowLanguage', Sort.asc); }); } QueryBuilder - sortByNovelLibraryShowLanguageDesc() { + sortByNovelLibraryShowLanguageDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowLanguage', Sort.desc); }); } QueryBuilder - sortByNovelLibraryShowNumbersOfItems() { + sortByNovelLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowNumbersOfItems', Sort.asc); }); } QueryBuilder - sortByNovelLibraryShowNumbersOfItemsDesc() { + sortByNovelLibraryShowNumbersOfItemsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowNumbersOfItems', Sort.desc); }); @@ -11029,14 +12346,14 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByOnlyIncludePinnedSources() { + sortByOnlyIncludePinnedSources() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'onlyIncludePinnedSources', Sort.asc); }); } QueryBuilder - sortByOnlyIncludePinnedSourcesDesc() { + sortByOnlyIncludePinnedSourcesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'onlyIncludePinnedSources', Sort.desc); }); @@ -11073,7 +12390,7 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByRelativeTimesTampsDesc() { + sortByRelativeTimesTampsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'relativeTimesTamps', Sort.desc); }); @@ -11092,14 +12409,14 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByRpcShowReadingWatchingProgress() { + sortByRpcShowReadingWatchingProgress() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'rpcShowReadingWatchingProgress', Sort.asc); }); } QueryBuilder - sortByRpcShowReadingWatchingProgressDesc() { + sortByRpcShowReadingWatchingProgressDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'rpcShowReadingWatchingProgress', Sort.desc); }); @@ -11178,14 +12495,14 @@ extension SettingsQuerySortBy on QueryBuilder { } QueryBuilder - sortByUpdateProgressAfterReading() { + sortByUpdateProgressAfterReading() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'updateProgressAfterReading', Sort.asc); }); } QueryBuilder - sortByUpdateProgressAfterReadingDesc() { + sortByUpdateProgressAfterReadingDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'updateProgressAfterReading', Sort.desc); }); @@ -11215,6 +12532,18 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByUseMpvConfig() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'useMpvConfig', Sort.asc); + }); + } + + QueryBuilder sortByUseMpvConfigDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'useMpvConfig', Sort.desc); + }); + } + QueryBuilder sortByUsePageTapZones() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'usePageTapZones', Sort.asc); @@ -11227,6 +12556,18 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByUseYUV420P() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'useYUV420P', Sort.asc); + }); + } + + QueryBuilder sortByUseYUV420PDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'useYUV420P', Sort.desc); + }); + } + QueryBuilder sortByUserAgent() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'userAgent', Sort.asc); @@ -11238,10 +12579,35 @@ extension SettingsQuerySortBy on QueryBuilder { return query.addSortBy(r'userAgent', Sort.desc); }); } + + QueryBuilder sortByVolumeBoostCap() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'volumeBoostCap', Sort.asc); + }); + } + + QueryBuilder sortByVolumeBoostCapDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'volumeBoostCap', Sort.desc); + }); + } } extension SettingsQuerySortThenBy on QueryBuilder { + QueryBuilder thenByAndroidProxyServer() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'androidProxyServer', Sort.asc); + }); + } + + QueryBuilder + thenByAndroidProxyServerDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'androidProxyServer', Sort.desc); + }); + } + QueryBuilder thenByAniSkipTimeoutLength() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'aniSkipTimeoutLength', Sort.asc); @@ -11249,21 +12615,21 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByAniSkipTimeoutLengthDesc() { + thenByAniSkipTimeoutLengthDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'aniSkipTimeoutLength', Sort.desc); }); } QueryBuilder - thenByAnimatePageTransitions() { + thenByAnimatePageTransitions() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animatePageTransitions', Sort.asc); }); } QueryBuilder - thenByAnimatePageTransitionsDesc() { + thenByAnimatePageTransitionsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animatePageTransitions', Sort.desc); }); @@ -11294,86 +12660,90 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByAnimeLibraryDownloadedChapters() { + thenByAnimeLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryDownloadedChapters', Sort.asc); }); } QueryBuilder - thenByAnimeLibraryDownloadedChaptersDesc() { + thenByAnimeLibraryDownloadedChaptersDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryDownloadedChapters', Sort.desc); }); } QueryBuilder - thenByAnimeLibraryLocalSource() { + thenByAnimeLibraryLocalSource() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryLocalSource', Sort.asc); }); } QueryBuilder - thenByAnimeLibraryLocalSourceDesc() { + thenByAnimeLibraryLocalSourceDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryLocalSource', Sort.desc); }); } QueryBuilder - thenByAnimeLibraryShowCategoryTabs() { + thenByAnimeLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowCategoryTabs', Sort.asc); }); } QueryBuilder - thenByAnimeLibraryShowCategoryTabsDesc() { + thenByAnimeLibraryShowCategoryTabsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowCategoryTabs', Sort.desc); }); } QueryBuilder - thenByAnimeLibraryShowContinueReadingButton() { + thenByAnimeLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addSortBy( - r'animeLibraryShowContinueReadingButton', Sort.asc); + r'animeLibraryShowContinueReadingButton', + Sort.asc, + ); }); } QueryBuilder - thenByAnimeLibraryShowContinueReadingButtonDesc() { + thenByAnimeLibraryShowContinueReadingButtonDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy( - r'animeLibraryShowContinueReadingButton', Sort.desc); + r'animeLibraryShowContinueReadingButton', + Sort.desc, + ); }); } QueryBuilder - thenByAnimeLibraryShowLanguage() { + thenByAnimeLibraryShowLanguage() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowLanguage', Sort.asc); }); } QueryBuilder - thenByAnimeLibraryShowLanguageDesc() { + thenByAnimeLibraryShowLanguageDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowLanguage', Sort.desc); }); } QueryBuilder - thenByAnimeLibraryShowNumbersOfItems() { + thenByAnimeLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowNumbersOfItems', Sort.asc); }); } QueryBuilder - thenByAnimeLibraryShowNumbersOfItemsDesc() { + thenByAnimeLibraryShowNumbersOfItemsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'animeLibraryShowNumbersOfItems', Sort.desc); }); @@ -11391,6 +12761,32 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByAudioChannels() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'audioChannels', Sort.asc); + }); + } + + QueryBuilder thenByAudioChannelsDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'audioChannels', Sort.desc); + }); + } + + QueryBuilder + thenByAudioPreferredLanguages() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'audioPreferredLanguages', Sort.asc); + }); + } + + QueryBuilder + thenByAudioPreferredLanguagesDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'audioPreferredLanguages', Sort.desc); + }); + } + QueryBuilder thenByAutoBackupLocation() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoBackupLocation', Sort.asc); @@ -11398,7 +12794,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByAutoBackupLocationDesc() { + thenByAutoBackupLocationDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoBackupLocation', Sort.desc); }); @@ -11411,7 +12807,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByAutoExtensionsUpdatesDesc() { + thenByAutoExtensionsUpdatesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoExtensionsUpdates', Sort.desc); }); @@ -11472,35 +12868,35 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByCheckForAppUpdatesDesc() { + thenByCheckForAppUpdatesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'checkForAppUpdates', Sort.desc); }); } QueryBuilder - thenByCheckForExtensionUpdates() { + thenByCheckForExtensionUpdates() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'checkForExtensionUpdates', Sort.asc); }); } QueryBuilder - thenByCheckForExtensionUpdatesDesc() { + thenByCheckForExtensionUpdatesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'checkForExtensionUpdates', Sort.desc); }); } QueryBuilder - thenByClearChapterCacheOnAppLaunch() { + thenByClearChapterCacheOnAppLaunch() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'clearChapterCacheOnAppLaunch', Sort.asc); }); } QueryBuilder - thenByClearChapterCacheOnAppLaunchDesc() { + thenByClearChapterCacheOnAppLaunchDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'clearChapterCacheOnAppLaunch', Sort.desc); }); @@ -11513,7 +12909,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByColorFilterBlendModeDesc() { + thenByColorFilterBlendModeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'colorFilterBlendMode', Sort.desc); }); @@ -11526,7 +12922,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByConcurrentDownloadsDesc() { + thenByConcurrentDownloadsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'concurrentDownloads', Sort.desc); }); @@ -11544,6 +12940,18 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByCustomDns() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'customDns', Sort.asc); + }); + } + + QueryBuilder thenByCustomDnsDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'customDns', Sort.desc); + }); + } + QueryBuilder thenByDateFormat() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'dateFormat', Sort.asc); @@ -11556,15 +12964,27 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByDebandingType() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'debandingType', Sort.asc); + }); + } + + QueryBuilder thenByDebandingTypeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'debandingType', Sort.desc); + }); + } + QueryBuilder - thenByDefaultDoubleTapToSkipLength() { + thenByDefaultDoubleTapToSkipLength() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultDoubleTapToSkipLength', Sort.asc); }); } QueryBuilder - thenByDefaultDoubleTapToSkipLengthDesc() { + thenByDefaultDoubleTapToSkipLengthDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultDoubleTapToSkipLength', Sort.desc); }); @@ -11577,7 +12997,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByDefaultPlayBackSpeedDesc() { + thenByDefaultPlayBackSpeedDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultPlayBackSpeed', Sort.desc); }); @@ -11596,14 +13016,14 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByDefaultSkipIntroLength() { + thenByDefaultSkipIntroLength() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultSkipIntroLength', Sort.asc); }); } QueryBuilder - thenByDefaultSkipIntroLengthDesc() { + thenByDefaultSkipIntroLengthDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'defaultSkipIntroLength', Sort.desc); }); @@ -11616,7 +13036,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByDisableSectionTypeDesc() { + thenByDisableSectionTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'disableSectionType', Sort.desc); }); @@ -11635,14 +13055,14 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByDoubleTapAnimationSpeed() { + thenByDoubleTapAnimationSpeed() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'doubleTapAnimationSpeed', Sort.asc); }); } QueryBuilder - thenByDoubleTapAnimationSpeedDesc() { + thenByDoubleTapAnimationSpeedDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'doubleTapAnimationSpeed', Sort.desc); }); @@ -11667,12 +13087,25 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByDownloadOnlyOnWifiDesc() { + thenByDownloadOnlyOnWifiDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'downloadOnlyOnWifi', Sort.desc); }); } + QueryBuilder thenByDownloadedOnlyMode() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'downloadedOnlyMode', Sort.asc); + }); + } + + QueryBuilder + thenByDownloadedOnlyModeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'downloadedOnlyMode', Sort.desc); + }); + } + QueryBuilder thenByEnableAniSkip() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableAniSkip', Sort.asc); @@ -11685,6 +13118,20 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder + thenByEnableAudioPitchCorrection() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableAudioPitchCorrection', Sort.asc); + }); + } + + QueryBuilder + thenByEnableAudioPitchCorrectionDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableAudioPitchCorrection', Sort.desc); + }); + } + QueryBuilder thenByEnableAutoSkip() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableAutoSkip', Sort.asc); @@ -11698,14 +13145,14 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByEnableCustomColorFilter() { + thenByEnableCustomColorFilter() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableCustomColorFilter', Sort.asc); }); } QueryBuilder - thenByEnableCustomColorFilterDesc() { + thenByEnableCustomColorFilterDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'enableCustomColorFilter', Sort.desc); }); @@ -11723,15 +13170,41 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByEnableGpuNext() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableGpuNext', Sort.asc); + }); + } + + QueryBuilder thenByEnableGpuNextDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableGpuNext', Sort.desc); + }); + } + QueryBuilder - thenByFlexColorSchemeBlendLevel() { + thenByEnableHardwareAcceleration() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableHardwareAcceleration', Sort.asc); + }); + } + + QueryBuilder + thenByEnableHardwareAccelerationDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableHardwareAcceleration', Sort.desc); + }); + } + + QueryBuilder + thenByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'flexColorSchemeBlendLevel', Sort.asc); }); } QueryBuilder - thenByFlexColorSchemeBlendLevelDesc() { + thenByFlexColorSchemeBlendLevelDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'flexColorSchemeBlendLevel', Sort.desc); }); @@ -11744,7 +13217,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByFlexSchemeColorIndexDesc() { + thenByFlexSchemeColorIndexDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'flexSchemeColorIndex', Sort.desc); }); @@ -11787,14 +13260,14 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByHideDiscordRpcInIncognito() { + thenByHideDiscordRpcInIncognito() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'hideDiscordRpcInIncognito', Sort.asc); }); } QueryBuilder - thenByHideDiscordRpcInIncognitoDesc() { + thenByHideDiscordRpcInIncognitoDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'hideDiscordRpcInIncognito', Sort.desc); }); @@ -11837,196 +13310,196 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByLastTrackerLibraryLocation() { + thenByLastTrackerLibraryLocation() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastTrackerLibraryLocation', Sort.asc); }); } QueryBuilder - thenByLastTrackerLibraryLocationDesc() { + thenByLastTrackerLibraryLocationDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastTrackerLibraryLocation', Sort.desc); }); } QueryBuilder - thenByLibraryDownloadedChapters() { + thenByLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryDownloadedChapters', Sort.asc); }); } QueryBuilder - thenByLibraryDownloadedChaptersDesc() { + thenByLibraryDownloadedChaptersDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryDownloadedChapters', Sort.desc); }); } QueryBuilder - thenByLibraryFilterAnimeBookMarkedType() { + thenByLibraryFilterAnimeBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeBookMarkedType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterAnimeBookMarkedTypeDesc() { + thenByLibraryFilterAnimeBookMarkedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeBookMarkedType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterAnimeDownloadType() { + thenByLibraryFilterAnimeDownloadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeDownloadType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterAnimeDownloadTypeDesc() { + thenByLibraryFilterAnimeDownloadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeDownloadType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterAnimeStartedType() { + thenByLibraryFilterAnimeStartedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeStartedType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterAnimeStartedTypeDesc() { + thenByLibraryFilterAnimeStartedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeStartedType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterAnimeUnreadType() { + thenByLibraryFilterAnimeUnreadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeUnreadType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterAnimeUnreadTypeDesc() { + thenByLibraryFilterAnimeUnreadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterAnimeUnreadType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterMangasBookMarkedType() { + thenByLibraryFilterMangasBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasBookMarkedType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterMangasBookMarkedTypeDesc() { + thenByLibraryFilterMangasBookMarkedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasBookMarkedType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterMangasDownloadType() { + thenByLibraryFilterMangasDownloadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasDownloadType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterMangasDownloadTypeDesc() { + thenByLibraryFilterMangasDownloadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasDownloadType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterMangasStartedType() { + thenByLibraryFilterMangasStartedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasStartedType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterMangasStartedTypeDesc() { + thenByLibraryFilterMangasStartedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasStartedType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterMangasUnreadType() { + thenByLibraryFilterMangasUnreadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasUnreadType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterMangasUnreadTypeDesc() { + thenByLibraryFilterMangasUnreadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterMangasUnreadType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterNovelBookMarkedType() { + thenByLibraryFilterNovelBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelBookMarkedType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterNovelBookMarkedTypeDesc() { + thenByLibraryFilterNovelBookMarkedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelBookMarkedType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterNovelDownloadType() { + thenByLibraryFilterNovelDownloadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelDownloadType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterNovelDownloadTypeDesc() { + thenByLibraryFilterNovelDownloadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelDownloadType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterNovelStartedType() { + thenByLibraryFilterNovelStartedType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelStartedType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterNovelStartedTypeDesc() { + thenByLibraryFilterNovelStartedTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelStartedType', Sort.desc); }); } QueryBuilder - thenByLibraryFilterNovelUnreadType() { + thenByLibraryFilterNovelUnreadType() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelUnreadType', Sort.asc); }); } QueryBuilder - thenByLibraryFilterNovelUnreadTypeDesc() { + thenByLibraryFilterNovelUnreadTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryFilterNovelUnreadType', Sort.desc); }); @@ -12039,35 +13512,35 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByLibraryLocalSourceDesc() { + thenByLibraryLocalSourceDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryLocalSource', Sort.desc); }); } QueryBuilder - thenByLibraryShowCategoryTabs() { + thenByLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowCategoryTabs', Sort.asc); }); } QueryBuilder - thenByLibraryShowCategoryTabsDesc() { + thenByLibraryShowCategoryTabsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowCategoryTabs', Sort.desc); }); } QueryBuilder - thenByLibraryShowContinueReadingButton() { + thenByLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowContinueReadingButton', Sort.asc); }); } QueryBuilder - thenByLibraryShowContinueReadingButtonDesc() { + thenByLibraryShowContinueReadingButtonDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowContinueReadingButton', Sort.desc); }); @@ -12080,21 +13553,21 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByLibraryShowLanguageDesc() { + thenByLibraryShowLanguageDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowLanguage', Sort.desc); }); } QueryBuilder - thenByLibraryShowNumbersOfItems() { + thenByLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowNumbersOfItems', Sort.asc); }); } QueryBuilder - thenByLibraryShowNumbersOfItemsDesc() { + thenByLibraryShowNumbersOfItemsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'libraryShowNumbersOfItems', Sort.desc); }); @@ -12119,7 +13592,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByMangaHomeDisplayTypeDesc() { + thenByMangaHomeDisplayTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'mangaHomeDisplayType', Sort.desc); }); @@ -12132,7 +13605,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByMarkEpisodeAsSeenTypeDesc() { + thenByMarkEpisodeAsSeenTypeDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'markEpisodeAsSeenType', Sort.desc); }); @@ -12145,7 +13618,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByMergeLibraryNavMobileDesc() { + thenByMergeLibraryNavMobileDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'mergeLibraryNavMobile', Sort.desc); }); @@ -12188,86 +13661,90 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByNovelLibraryDownloadedChapters() { + thenByNovelLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryDownloadedChapters', Sort.asc); }); } QueryBuilder - thenByNovelLibraryDownloadedChaptersDesc() { + thenByNovelLibraryDownloadedChaptersDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryDownloadedChapters', Sort.desc); }); } QueryBuilder - thenByNovelLibraryLocalSource() { + thenByNovelLibraryLocalSource() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryLocalSource', Sort.asc); }); } QueryBuilder - thenByNovelLibraryLocalSourceDesc() { + thenByNovelLibraryLocalSourceDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryLocalSource', Sort.desc); }); } QueryBuilder - thenByNovelLibraryShowCategoryTabs() { + thenByNovelLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowCategoryTabs', Sort.asc); }); } QueryBuilder - thenByNovelLibraryShowCategoryTabsDesc() { + thenByNovelLibraryShowCategoryTabsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowCategoryTabs', Sort.desc); }); } QueryBuilder - thenByNovelLibraryShowContinueReadingButton() { + thenByNovelLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addSortBy( - r'novelLibraryShowContinueReadingButton', Sort.asc); + r'novelLibraryShowContinueReadingButton', + Sort.asc, + ); }); } QueryBuilder - thenByNovelLibraryShowContinueReadingButtonDesc() { + thenByNovelLibraryShowContinueReadingButtonDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy( - r'novelLibraryShowContinueReadingButton', Sort.desc); + r'novelLibraryShowContinueReadingButton', + Sort.desc, + ); }); } QueryBuilder - thenByNovelLibraryShowLanguage() { + thenByNovelLibraryShowLanguage() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowLanguage', Sort.asc); }); } QueryBuilder - thenByNovelLibraryShowLanguageDesc() { + thenByNovelLibraryShowLanguageDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowLanguage', Sort.desc); }); } QueryBuilder - thenByNovelLibraryShowNumbersOfItems() { + thenByNovelLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowNumbersOfItems', Sort.asc); }); } QueryBuilder - thenByNovelLibraryShowNumbersOfItemsDesc() { + thenByNovelLibraryShowNumbersOfItemsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'novelLibraryShowNumbersOfItems', Sort.desc); }); @@ -12286,14 +13763,14 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByOnlyIncludePinnedSources() { + thenByOnlyIncludePinnedSources() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'onlyIncludePinnedSources', Sort.asc); }); } QueryBuilder - thenByOnlyIncludePinnedSourcesDesc() { + thenByOnlyIncludePinnedSourcesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'onlyIncludePinnedSources', Sort.desc); }); @@ -12330,7 +13807,7 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByRelativeTimesTampsDesc() { + thenByRelativeTimesTampsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'relativeTimesTamps', Sort.desc); }); @@ -12349,14 +13826,14 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByRpcShowReadingWatchingProgress() { + thenByRpcShowReadingWatchingProgress() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'rpcShowReadingWatchingProgress', Sort.asc); }); } QueryBuilder - thenByRpcShowReadingWatchingProgressDesc() { + thenByRpcShowReadingWatchingProgressDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'rpcShowReadingWatchingProgress', Sort.desc); }); @@ -12435,14 +13912,14 @@ extension SettingsQuerySortThenBy } QueryBuilder - thenByUpdateProgressAfterReading() { + thenByUpdateProgressAfterReading() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'updateProgressAfterReading', Sort.asc); }); } QueryBuilder - thenByUpdateProgressAfterReadingDesc() { + thenByUpdateProgressAfterReadingDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'updateProgressAfterReading', Sort.desc); }); @@ -12472,6 +13949,18 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByUseMpvConfig() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'useMpvConfig', Sort.asc); + }); + } + + QueryBuilder thenByUseMpvConfigDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'useMpvConfig', Sort.desc); + }); + } + QueryBuilder thenByUsePageTapZones() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'usePageTapZones', Sort.asc); @@ -12484,6 +13973,18 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByUseYUV420P() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'useYUV420P', Sort.asc); + }); + } + + QueryBuilder thenByUseYUV420PDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'useYUV420P', Sort.desc); + }); + } + QueryBuilder thenByUserAgent() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'userAgent', Sort.asc); @@ -12495,10 +13996,33 @@ extension SettingsQuerySortThenBy return query.addSortBy(r'userAgent', Sort.desc); }); } + + QueryBuilder thenByVolumeBoostCap() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'volumeBoostCap', Sort.asc); + }); + } + + QueryBuilder thenByVolumeBoostCapDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'volumeBoostCap', Sort.desc); + }); + } } extension SettingsQueryWhereDistinct on QueryBuilder { + QueryBuilder distinctByAndroidProxyServer({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy( + r'androidProxyServer', + caseSensitive: caseSensitive, + ); + }); + } + QueryBuilder distinctByAniSkipTimeoutLength() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'aniSkipTimeoutLength'); @@ -12506,7 +14030,7 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByAnimatePageTransitions() { + distinctByAnimatePageTransitions() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'animatePageTransitions'); }); @@ -12525,65 +14049,87 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByAnimeLibraryDownloadedChapters() { + distinctByAnimeLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'animeLibraryDownloadedChapters'); }); } QueryBuilder - distinctByAnimeLibraryLocalSource() { + distinctByAnimeLibraryLocalSource() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'animeLibraryLocalSource'); }); } QueryBuilder - distinctByAnimeLibraryShowCategoryTabs() { + distinctByAnimeLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'animeLibraryShowCategoryTabs'); }); } QueryBuilder - distinctByAnimeLibraryShowContinueReadingButton() { + distinctByAnimeLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'animeLibraryShowContinueReadingButton'); }); } QueryBuilder - distinctByAnimeLibraryShowLanguage() { + distinctByAnimeLibraryShowLanguage() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'animeLibraryShowLanguage'); }); } QueryBuilder - distinctByAnimeLibraryShowNumbersOfItems() { + distinctByAnimeLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'animeLibraryShowNumbersOfItems'); }); } - QueryBuilder distinctByAppFontFamily( - {bool caseSensitive = true}) { + QueryBuilder distinctByAppFontFamily({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'appFontFamily', - caseSensitive: caseSensitive); + return query.addDistinctBy( + r'appFontFamily', + caseSensitive: caseSensitive, + ); }); } - QueryBuilder distinctByAutoBackupLocation( - {bool caseSensitive = true}) { + QueryBuilder distinctByAudioChannels() { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'autoBackupLocation', - caseSensitive: caseSensitive); + return query.addDistinctBy(r'audioChannels'); }); } QueryBuilder - distinctByAutoExtensionsUpdates() { + distinctByAudioPreferredLanguages({bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy( + r'audioPreferredLanguages', + caseSensitive: caseSensitive, + ); + }); + } + + QueryBuilder distinctByAutoBackupLocation({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy( + r'autoBackupLocation', + caseSensitive: caseSensitive, + ); + }); + } + + QueryBuilder + distinctByAutoExtensionsUpdates() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'autoExtensionsUpdates'); }); @@ -12607,11 +14153,14 @@ extension SettingsQueryWhereDistinct }); } - QueryBuilder distinctByBtServerAddress( - {bool caseSensitive = true}) { + QueryBuilder distinctByBtServerAddress({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'btServerAddress', - caseSensitive: caseSensitive); + return query.addDistinctBy( + r'btServerAddress', + caseSensitive: caseSensitive, + ); }); } @@ -12628,14 +14177,14 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByCheckForExtensionUpdates() { + distinctByCheckForExtensionUpdates() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'checkForExtensionUpdates'); }); } QueryBuilder - distinctByClearChapterCacheOnAppLaunch() { + distinctByClearChapterCacheOnAppLaunch() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'clearChapterCacheOnAppLaunch'); }); @@ -12659,15 +14208,30 @@ extension SettingsQueryWhereDistinct }); } - QueryBuilder distinctByDateFormat( - {bool caseSensitive = true}) { + QueryBuilder distinctByCustomDns({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'customDns', caseSensitive: caseSensitive); + }); + } + + QueryBuilder distinctByDateFormat({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'dateFormat', caseSensitive: caseSensitive); }); } + QueryBuilder distinctByDebandingType() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'debandingType'); + }); + } + QueryBuilder - distinctByDefaultDoubleTapToSkipLength() { + distinctByDefaultDoubleTapToSkipLength() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'defaultDoubleTapToSkipLength'); }); @@ -12686,7 +14250,7 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByDefaultSkipIntroLength() { + distinctByDefaultSkipIntroLength() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'defaultSkipIntroLength'); }); @@ -12705,17 +14269,20 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByDoubleTapAnimationSpeed() { + distinctByDoubleTapAnimationSpeed() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'doubleTapAnimationSpeed'); }); } - QueryBuilder distinctByDownloadLocation( - {bool caseSensitive = true}) { + QueryBuilder distinctByDownloadLocation({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'downloadLocation', - caseSensitive: caseSensitive); + return query.addDistinctBy( + r'downloadLocation', + caseSensitive: caseSensitive, + ); }); } @@ -12725,12 +14292,25 @@ extension SettingsQueryWhereDistinct }); } + QueryBuilder distinctByDownloadedOnlyMode() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'downloadedOnlyMode'); + }); + } + QueryBuilder distinctByEnableAniSkip() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'enableAniSkip'); }); } + QueryBuilder + distinctByEnableAudioPitchCorrection() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'enableAudioPitchCorrection'); + }); + } + QueryBuilder distinctByEnableAutoSkip() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'enableAutoSkip'); @@ -12738,7 +14318,7 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByEnableCustomColorFilter() { + distinctByEnableCustomColorFilter() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'enableCustomColorFilter'); }); @@ -12750,8 +14330,21 @@ extension SettingsQueryWhereDistinct }); } + QueryBuilder distinctByEnableGpuNext() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'enableGpuNext'); + }); + } + QueryBuilder - distinctByFlexColorSchemeBlendLevel() { + distinctByEnableHardwareAcceleration() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'enableHardwareAcceleration'); + }); + } + + QueryBuilder + distinctByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'flexColorSchemeBlendLevel'); }); @@ -12782,7 +14375,7 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByHideDiscordRpcInIncognito() { + distinctByHideDiscordRpcInIncognito() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'hideDiscordRpcInIncognito'); }); @@ -12794,8 +14387,9 @@ extension SettingsQueryWhereDistinct }); } - QueryBuilder distinctByHwdecMode( - {bool caseSensitive = true}) { + QueryBuilder distinctByHwdecMode({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'hwdecMode', caseSensitive: caseSensitive); }); @@ -12808,99 +14402,101 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByLastTrackerLibraryLocation({bool caseSensitive = true}) { + distinctByLastTrackerLibraryLocation({bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'lastTrackerLibraryLocation', - caseSensitive: caseSensitive); + return query.addDistinctBy( + r'lastTrackerLibraryLocation', + caseSensitive: caseSensitive, + ); }); } QueryBuilder - distinctByLibraryDownloadedChapters() { + distinctByLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryDownloadedChapters'); }); } QueryBuilder - distinctByLibraryFilterAnimeBookMarkedType() { + distinctByLibraryFilterAnimeBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterAnimeBookMarkedType'); }); } QueryBuilder - distinctByLibraryFilterAnimeDownloadType() { + distinctByLibraryFilterAnimeDownloadType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterAnimeDownloadType'); }); } QueryBuilder - distinctByLibraryFilterAnimeStartedType() { + distinctByLibraryFilterAnimeStartedType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterAnimeStartedType'); }); } QueryBuilder - distinctByLibraryFilterAnimeUnreadType() { + distinctByLibraryFilterAnimeUnreadType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterAnimeUnreadType'); }); } QueryBuilder - distinctByLibraryFilterMangasBookMarkedType() { + distinctByLibraryFilterMangasBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterMangasBookMarkedType'); }); } QueryBuilder - distinctByLibraryFilterMangasDownloadType() { + distinctByLibraryFilterMangasDownloadType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterMangasDownloadType'); }); } QueryBuilder - distinctByLibraryFilterMangasStartedType() { + distinctByLibraryFilterMangasStartedType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterMangasStartedType'); }); } QueryBuilder - distinctByLibraryFilterMangasUnreadType() { + distinctByLibraryFilterMangasUnreadType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterMangasUnreadType'); }); } QueryBuilder - distinctByLibraryFilterNovelBookMarkedType() { + distinctByLibraryFilterNovelBookMarkedType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterNovelBookMarkedType'); }); } QueryBuilder - distinctByLibraryFilterNovelDownloadType() { + distinctByLibraryFilterNovelDownloadType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterNovelDownloadType'); }); } QueryBuilder - distinctByLibraryFilterNovelStartedType() { + distinctByLibraryFilterNovelStartedType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterNovelStartedType'); }); } QueryBuilder - distinctByLibraryFilterNovelUnreadType() { + distinctByLibraryFilterNovelUnreadType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryFilterNovelUnreadType'); }); @@ -12913,14 +14509,14 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByLibraryShowCategoryTabs() { + distinctByLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryShowCategoryTabs'); }); } QueryBuilder - distinctByLibraryShowContinueReadingButton() { + distinctByLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryShowContinueReadingButton'); }); @@ -12933,7 +14529,7 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByLibraryShowNumbersOfItems() { + distinctByLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'libraryShowNumbersOfItems'); }); @@ -12952,14 +14548,14 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByMarkEpisodeAsSeenType() { + distinctByMarkEpisodeAsSeenType() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'markEpisodeAsSeenType'); }); } QueryBuilder - distinctByMergeLibraryNavMobile() { + distinctByMergeLibraryNavMobile() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'mergeLibraryNavMobile'); }); @@ -12990,42 +14586,42 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByNovelLibraryDownloadedChapters() { + distinctByNovelLibraryDownloadedChapters() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'novelLibraryDownloadedChapters'); }); } QueryBuilder - distinctByNovelLibraryLocalSource() { + distinctByNovelLibraryLocalSource() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'novelLibraryLocalSource'); }); } QueryBuilder - distinctByNovelLibraryShowCategoryTabs() { + distinctByNovelLibraryShowCategoryTabs() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'novelLibraryShowCategoryTabs'); }); } QueryBuilder - distinctByNovelLibraryShowContinueReadingButton() { + distinctByNovelLibraryShowContinueReadingButton() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'novelLibraryShowContinueReadingButton'); }); } QueryBuilder - distinctByNovelLibraryShowLanguage() { + distinctByNovelLibraryShowLanguage() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'novelLibraryShowLanguage'); }); } QueryBuilder - distinctByNovelLibraryShowNumbersOfItems() { + distinctByNovelLibraryShowNumbersOfItems() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'novelLibraryShowNumbersOfItems'); }); @@ -13038,7 +14634,7 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByOnlyIncludePinnedSources() { + distinctByOnlyIncludePinnedSources() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'onlyIncludePinnedSources'); }); @@ -13069,7 +14665,7 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByRpcShowReadingWatchingProgress() { + distinctByRpcShowReadingWatchingProgress() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'rpcShowReadingWatchingProgress'); }); @@ -13112,7 +14708,7 @@ extension SettingsQueryWhereDistinct } QueryBuilder - distinctByUpdateProgressAfterReading() { + distinctByUpdateProgressAfterReading() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'updateProgressAfterReading'); }); @@ -13130,18 +14726,37 @@ extension SettingsQueryWhereDistinct }); } + QueryBuilder distinctByUseMpvConfig() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'useMpvConfig'); + }); + } + QueryBuilder distinctByUsePageTapZones() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'usePageTapZones'); }); } - QueryBuilder distinctByUserAgent( - {bool caseSensitive = true}) { + QueryBuilder distinctByUseYUV420P() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'useYUV420P'); + }); + } + + QueryBuilder distinctByUserAgent({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'userAgent', caseSensitive: caseSensitive); }); } + + QueryBuilder distinctByVolumeBoostCap() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'volumeBoostCap'); + }); + } } extension SettingsQueryProperty @@ -13152,29 +14767,43 @@ extension SettingsQueryProperty }); } + QueryBuilder + algorithmWeightsProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'algorithmWeights'); + }); + } + + QueryBuilder + androidProxyServerProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'androidProxyServer'); + }); + } + QueryBuilder - aniSkipTimeoutLengthProperty() { + aniSkipTimeoutLengthProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'aniSkipTimeoutLength'); }); } QueryBuilder - animatePageTransitionsProperty() { + animatePageTransitionsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animatePageTransitions'); }); } QueryBuilder - animeDisplayTypeProperty() { + animeDisplayTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animeDisplayType'); }); } QueryBuilder?, QQueryOperations> - animeExtensionsRepoProperty() { + animeExtensionsRepoProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animeExtensionsRepo'); }); @@ -13187,42 +14816,42 @@ extension SettingsQueryProperty } QueryBuilder - animeLibraryDownloadedChaptersProperty() { + animeLibraryDownloadedChaptersProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animeLibraryDownloadedChapters'); }); } QueryBuilder - animeLibraryLocalSourceProperty() { + animeLibraryLocalSourceProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animeLibraryLocalSource'); }); } QueryBuilder - animeLibraryShowCategoryTabsProperty() { + animeLibraryShowCategoryTabsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animeLibraryShowCategoryTabs'); }); } QueryBuilder - animeLibraryShowContinueReadingButtonProperty() { + animeLibraryShowContinueReadingButtonProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animeLibraryShowContinueReadingButton'); }); } QueryBuilder - animeLibraryShowLanguageProperty() { + animeLibraryShowLanguageProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animeLibraryShowLanguage'); }); } QueryBuilder - animeLibraryShowNumbersOfItemsProperty() { + animeLibraryShowNumbersOfItemsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'animeLibraryShowNumbersOfItems'); }); @@ -13234,29 +14863,43 @@ extension SettingsQueryProperty }); } + QueryBuilder + audioChannelsProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'audioChannels'); + }); + } + QueryBuilder - autoBackupLocationProperty() { + audioPreferredLanguagesProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'audioPreferredLanguages'); + }); + } + + QueryBuilder + autoBackupLocationProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'autoBackupLocation'); }); } QueryBuilder - autoExtensionsUpdatesProperty() { + autoExtensionsUpdatesProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'autoExtensionsUpdates'); }); } QueryBuilder?, QQueryOperations> - autoScrollPagesProperty() { + autoScrollPagesProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'autoScrollPages'); }); } QueryBuilder - backgroundColorProperty() { + backgroundColorProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'backgroundColor'); }); @@ -13269,7 +14912,7 @@ extension SettingsQueryProperty } QueryBuilder?, QQueryOperations> - backupListOptionsProperty() { + backupListOptionsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'backupListOptions'); }); @@ -13288,35 +14931,35 @@ extension SettingsQueryProperty } QueryBuilder?, QQueryOperations> - chapterFilterBookmarkedListProperty() { + chapterFilterBookmarkedListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'chapterFilterBookmarkedList'); }); } QueryBuilder?, QQueryOperations> - chapterFilterDownloadedListProperty() { + chapterFilterDownloadedListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'chapterFilterDownloadedList'); }); } QueryBuilder?, QQueryOperations> - chapterFilterUnreadListProperty() { + chapterFilterUnreadListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'chapterFilterUnreadList'); }); } QueryBuilder?, QQueryOperations> - chapterPageIndexListProperty() { + chapterPageIndexListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'chapterPageIndexList'); }); } QueryBuilder?, QQueryOperations> - chapterPageUrlsListProperty() { + chapterPageUrlsListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'chapterPageUrlsList'); }); @@ -13329,21 +14972,21 @@ extension SettingsQueryProperty } QueryBuilder - checkForExtensionUpdatesProperty() { + checkForExtensionUpdatesProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'checkForExtensionUpdates'); }); } QueryBuilder - clearChapterCacheOnAppLaunchProperty() { + clearChapterCacheOnAppLaunchProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'clearChapterCacheOnAppLaunch'); }); } QueryBuilder - colorFilterBlendModeProperty() { + colorFilterBlendModeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'colorFilterBlendMode'); }); @@ -13356,7 +14999,7 @@ extension SettingsQueryProperty } QueryBuilder?, QQueryOperations> - cookiesListProperty() { + cookiesListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'cookiesList'); }); @@ -13369,55 +15012,68 @@ extension SettingsQueryProperty } QueryBuilder - customColorFilterProperty() { + customColorFilterProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'customColorFilter'); }); } + QueryBuilder customDnsProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'customDns'); + }); + } + QueryBuilder dateFormatProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'dateFormat'); }); } + QueryBuilder + debandingTypeProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'debandingType'); + }); + } + QueryBuilder - defaultDoubleTapToSkipLengthProperty() { + defaultDoubleTapToSkipLengthProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'defaultDoubleTapToSkipLength'); }); } QueryBuilder - defaultPlayBackSpeedProperty() { + defaultPlayBackSpeedProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'defaultPlayBackSpeed'); }); } QueryBuilder - defaultReaderModeProperty() { + defaultReaderModeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'defaultReaderMode'); }); } QueryBuilder - defaultSkipIntroLengthProperty() { + defaultSkipIntroLengthProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'defaultSkipIntroLength'); }); } QueryBuilder - defaultSubtitleLangProperty() { + defaultSubtitleLangProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'defaultSubtitleLang'); }); } QueryBuilder - disableSectionTypeProperty() { + disableSectionTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'disableSectionType'); }); @@ -13430,7 +15086,7 @@ extension SettingsQueryProperty } QueryBuilder - doubleTapAnimationSpeedProperty() { + doubleTapAnimationSpeedProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'doubleTapAnimationSpeed'); }); @@ -13448,12 +15104,25 @@ extension SettingsQueryProperty }); } + QueryBuilder downloadedOnlyModeProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'downloadedOnlyMode'); + }); + } + QueryBuilder enableAniSkipProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'enableAniSkip'); }); } + QueryBuilder + enableAudioPitchCorrectionProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'enableAudioPitchCorrection'); + }); + } + QueryBuilder enableAutoSkipProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'enableAutoSkip'); @@ -13461,7 +15130,7 @@ extension SettingsQueryProperty } QueryBuilder - enableCustomColorFilterProperty() { + enableCustomColorFilterProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'enableCustomColorFilter'); }); @@ -13473,22 +15142,35 @@ extension SettingsQueryProperty }); } + QueryBuilder enableGpuNextProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'enableGpuNext'); + }); + } + + QueryBuilder + enableHardwareAccelerationProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'enableHardwareAcceleration'); + }); + } + QueryBuilder?, QQueryOperations> - filterScanlatorListProperty() { + filterScanlatorListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'filterScanlatorList'); }); } QueryBuilder - flexColorSchemeBlendLevelProperty() { + flexColorSchemeBlendLevelProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'flexColorSchemeBlendLevel'); }); } QueryBuilder - flexSchemeColorIndexProperty() { + flexSchemeColorIndexProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'flexSchemeColorIndex'); }); @@ -13513,7 +15195,7 @@ extension SettingsQueryProperty } QueryBuilder - hideDiscordRpcInIncognitoProperty() { + hideDiscordRpcInIncognitoProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'hideDiscordRpcInIncognito'); }); @@ -13538,98 +15220,98 @@ extension SettingsQueryProperty } QueryBuilder - lastTrackerLibraryLocationProperty() { + lastTrackerLibraryLocationProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'lastTrackerLibraryLocation'); }); } QueryBuilder - libraryDownloadedChaptersProperty() { + libraryDownloadedChaptersProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryDownloadedChapters'); }); } QueryBuilder - libraryFilterAnimeBookMarkedTypeProperty() { + libraryFilterAnimeBookMarkedTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterAnimeBookMarkedType'); }); } QueryBuilder - libraryFilterAnimeDownloadTypeProperty() { + libraryFilterAnimeDownloadTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterAnimeDownloadType'); }); } QueryBuilder - libraryFilterAnimeStartedTypeProperty() { + libraryFilterAnimeStartedTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterAnimeStartedType'); }); } QueryBuilder - libraryFilterAnimeUnreadTypeProperty() { + libraryFilterAnimeUnreadTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterAnimeUnreadType'); }); } QueryBuilder - libraryFilterMangasBookMarkedTypeProperty() { + libraryFilterMangasBookMarkedTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterMangasBookMarkedType'); }); } QueryBuilder - libraryFilterMangasDownloadTypeProperty() { + libraryFilterMangasDownloadTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterMangasDownloadType'); }); } QueryBuilder - libraryFilterMangasStartedTypeProperty() { + libraryFilterMangasStartedTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterMangasStartedType'); }); } QueryBuilder - libraryFilterMangasUnreadTypeProperty() { + libraryFilterMangasUnreadTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterMangasUnreadType'); }); } QueryBuilder - libraryFilterNovelBookMarkedTypeProperty() { + libraryFilterNovelBookMarkedTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterNovelBookMarkedType'); }); } QueryBuilder - libraryFilterNovelDownloadTypeProperty() { + libraryFilterNovelDownloadTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterNovelDownloadType'); }); } QueryBuilder - libraryFilterNovelStartedTypeProperty() { + libraryFilterNovelStartedTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterNovelStartedType'); }); } QueryBuilder - libraryFilterNovelUnreadTypeProperty() { + libraryFilterNovelUnreadTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryFilterNovelUnreadType'); }); @@ -13642,28 +15324,28 @@ extension SettingsQueryProperty } QueryBuilder - libraryShowCategoryTabsProperty() { + libraryShowCategoryTabsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryShowCategoryTabs'); }); } QueryBuilder - libraryShowContinueReadingButtonProperty() { + libraryShowContinueReadingButtonProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryShowContinueReadingButton'); }); } QueryBuilder - libraryShowLanguageProperty() { + libraryShowLanguageProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryShowLanguage'); }); } QueryBuilder - libraryShowNumbersOfItemsProperty() { + libraryShowNumbersOfItemsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'libraryShowNumbersOfItems'); }); @@ -13676,7 +15358,7 @@ extension SettingsQueryProperty } QueryBuilder?, QQueryOperations> - mangaExtensionsRepoProperty() { + mangaExtensionsRepoProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'mangaExtensionsRepo'); }); @@ -13689,42 +15371,42 @@ extension SettingsQueryProperty } QueryBuilder - mangaHomeDisplayTypeProperty() { + mangaHomeDisplayTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'mangaHomeDisplayType'); }); } QueryBuilder - markEpisodeAsSeenTypeProperty() { + markEpisodeAsSeenTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'markEpisodeAsSeenType'); }); } QueryBuilder - mergeLibraryNavMobileProperty() { + mergeLibraryNavMobileProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'mergeLibraryNavMobile'); }); } QueryBuilder?, QQueryOperations> - navigationOrderProperty() { + navigationOrderProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'navigationOrder'); }); } QueryBuilder - novelDisplayTypeProperty() { + novelDisplayTypeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelDisplayType'); }); } QueryBuilder?, QQueryOperations> - novelExtensionsRepoProperty() { + novelExtensionsRepoProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelExtensionsRepo'); }); @@ -13743,56 +15425,56 @@ extension SettingsQueryProperty } QueryBuilder - novelLibraryDownloadedChaptersProperty() { + novelLibraryDownloadedChaptersProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelLibraryDownloadedChapters'); }); } QueryBuilder - novelLibraryLocalSourceProperty() { + novelLibraryLocalSourceProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelLibraryLocalSource'); }); } QueryBuilder - novelLibraryShowCategoryTabsProperty() { + novelLibraryShowCategoryTabsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelLibraryShowCategoryTabs'); }); } QueryBuilder - novelLibraryShowContinueReadingButtonProperty() { + novelLibraryShowContinueReadingButtonProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelLibraryShowContinueReadingButton'); }); } QueryBuilder - novelLibraryShowLanguageProperty() { + novelLibraryShowLanguageProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelLibraryShowLanguage'); }); } QueryBuilder - novelLibraryShowNumbersOfItemsProperty() { + novelLibraryShowNumbersOfItemsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelLibraryShowNumbersOfItems'); }); } QueryBuilder - novelTextAlignProperty() { + novelTextAlignProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'novelTextAlign'); }); } QueryBuilder - onlyIncludePinnedSourcesProperty() { + onlyIncludePinnedSourcesProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'onlyIncludePinnedSources'); }); @@ -13805,21 +15487,21 @@ extension SettingsQueryProperty } QueryBuilder?, QQueryOperations> - personalPageModeListProperty() { + personalPageModeListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'personalPageModeList'); }); } QueryBuilder?, QQueryOperations> - personalReaderModeListProperty() { + personalReaderModeListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'personalReaderModeList'); }); } QueryBuilder - playerSubtitleSettingsProperty() { + playerSubtitleSettingsProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'playerSubtitleSettings'); }); @@ -13844,7 +15526,7 @@ extension SettingsQueryProperty } QueryBuilder - rpcShowReadingWatchingProgressProperty() { + rpcShowReadingWatchingProgressProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'rpcShowReadingWatchingProgress'); }); @@ -13875,28 +15557,28 @@ extension SettingsQueryProperty } QueryBuilder?, QQueryOperations> - sortChapterListProperty() { + sortChapterListProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'sortChapterList'); }); } QueryBuilder - sortLibraryAnimeProperty() { + sortLibraryAnimeProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'sortLibraryAnime'); }); } QueryBuilder - sortLibraryMangaProperty() { + sortLibraryMangaProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'sortLibraryManga'); }); } QueryBuilder - sortLibraryNovelProperty() { + sortLibraryNovelProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'sortLibraryNovel'); }); @@ -13915,7 +15597,7 @@ extension SettingsQueryProperty } QueryBuilder - updateProgressAfterReadingProperty() { + updateProgressAfterReadingProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'updateProgressAfterReading'); }); @@ -13933,17 +15615,35 @@ extension SettingsQueryProperty }); } + QueryBuilder useMpvConfigProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'useMpvConfig'); + }); + } + QueryBuilder usePageTapZonesProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'usePageTapZones'); }); } + QueryBuilder useYUV420PProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'useYUV420P'); + }); + } + QueryBuilder userAgentProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'userAgent'); }); } + + QueryBuilder volumeBoostCapProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'volumeBoostCap'); + }); + } } // ************************************************************************** @@ -13957,17 +15657,10 @@ const MCookieSchema = Schema( name: r'MCookie', id: -1854909335245943751, properties: { - r'cookie': PropertySchema( - id: 0, - name: r'cookie', - type: IsarType.string, - ), - r'host': PropertySchema( - id: 1, - name: r'host', - type: IsarType.string, - ) + r'cookie': PropertySchema(id: 0, name: r'cookie', type: IsarType.string), + r'host': PropertySchema(id: 1, name: r'host', type: IsarType.string), }, + estimateSize: _mCookieEstimateSize, serialize: _mCookieSerialize, deserialize: _mCookieDeserialize, @@ -14038,17 +15731,17 @@ extension MCookieQueryFilter on QueryBuilder { QueryBuilder cookieIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'cookie', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'cookie'), + ); }); } QueryBuilder cookieIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'cookie', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'cookie'), + ); }); } @@ -14057,11 +15750,13 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'cookie', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'cookie', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14071,12 +15766,14 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'cookie', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'cookie', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14086,12 +15783,14 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'cookie', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'cookie', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14103,14 +15802,16 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'cookie', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'cookie', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14119,11 +15820,13 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'cookie', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'cookie', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14132,69 +15835,75 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'cookie', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'cookie', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder cookieContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'cookie', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'cookie', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder cookieMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'cookie', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'cookie', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder cookieIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'cookie', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'cookie', value: ''), + ); }); } QueryBuilder cookieIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'cookie', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'cookie', value: ''), + ); }); } QueryBuilder hostIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'host', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'host'), + ); }); } QueryBuilder hostIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'host', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'host'), + ); }); } @@ -14203,11 +15912,13 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'host', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'host', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14217,12 +15928,14 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'host', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'host', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14232,12 +15945,14 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'host', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'host', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14249,14 +15964,16 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'host', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'host', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14265,11 +15982,13 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'host', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'host', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -14278,53 +15997,59 @@ extension MCookieQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'host', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'host', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder hostContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'host', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'host', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder hostMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'host', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'host', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder hostIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'host', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'host', value: ''), + ); }); } QueryBuilder hostIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'host', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'host', value: ''), + ); }); } } @@ -14339,17 +16064,10 @@ const SortLibraryMangaSchema = Schema( name: r'SortLibraryManga', id: -8485569296691672246, properties: { - r'index': PropertySchema( - id: 0, - name: r'index', - type: IsarType.long, - ), - r'reverse': PropertySchema( - id: 1, - name: r'reverse', - type: IsarType.bool, - ) + r'index': PropertySchema(id: 0, name: r'index', type: IsarType.long), + r'reverse': PropertySchema(id: 1, name: r'reverse', type: IsarType.bool), }, + estimateSize: _sortLibraryMangaEstimateSize, serialize: _sortLibraryMangaSerialize, deserialize: _sortLibraryMangaDeserialize, @@ -14407,104 +16125,102 @@ P _sortLibraryMangaDeserializeProp

( extension SortLibraryMangaQueryFilter on QueryBuilder { QueryBuilder - indexIsNull() { + indexIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'index', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'index'), + ); }); } QueryBuilder - indexIsNotNull() { + indexIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'index', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'index'), + ); }); } QueryBuilder - indexEqualTo(int? value) { + indexEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'index', value: value), + ); }); } QueryBuilder - indexGreaterThan( - int? value, { - bool include = false, - }) { + indexGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'index', + value: value, + ), + ); }); } QueryBuilder - indexLessThan( - int? value, { - bool include = false, - }) { + indexLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'index', + value: value, + ), + ); }); } QueryBuilder - indexBetween( + indexBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'index', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'index', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - reverseIsNull() { + reverseIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'reverse', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'reverse'), + ); }); } QueryBuilder - reverseIsNotNull() { + reverseIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'reverse', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'reverse'), + ); }); } QueryBuilder - reverseEqualTo(bool? value) { + reverseEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'reverse', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'reverse', value: value), + ); }); } } @@ -14519,22 +16235,11 @@ const SortChapterSchema = Schema( name: r'SortChapter', id: -468129901904543096, properties: { - r'index': PropertySchema( - id: 0, - name: r'index', - type: IsarType.long, - ), - r'mangaId': PropertySchema( - id: 1, - name: r'mangaId', - type: IsarType.long, - ), - r'reverse': PropertySchema( - id: 2, - name: r'reverse', - type: IsarType.bool, - ) + r'index': PropertySchema(id: 0, name: r'index', type: IsarType.long), + r'mangaId': PropertySchema(id: 1, name: r'mangaId', type: IsarType.long), + r'reverse': PropertySchema(id: 2, name: r'reverse', type: IsarType.bool), }, + estimateSize: _sortChapterEstimateSize, serialize: _sortChapterSerialize, deserialize: _sortChapterDeserialize, @@ -14597,42 +16302,41 @@ extension SortChapterQueryFilter on QueryBuilder { QueryBuilder indexIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'index', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'index'), + ); }); } QueryBuilder - indexIsNotNull() { + indexIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'index', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'index'), + ); }); } QueryBuilder indexEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'index', value: value), + ); }); } QueryBuilder - indexGreaterThan( - int? value, { - bool include = false, - }) { + indexGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'index', + value: value, + ), + ); }); } @@ -14641,11 +16345,13 @@ extension SortChapterQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'index', + value: value, + ), + ); }); } @@ -14656,55 +16362,56 @@ extension SortChapterQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'index', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'index', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - mangaIdIsNull() { + mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdIsNotNull() { + mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } QueryBuilder - mangaIdGreaterThan( - int? value, { - bool include = false, - }) { + mangaIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -14713,11 +16420,13 @@ extension SortChapterQueryFilter bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -14728,41 +16437,43 @@ extension SortChapterQueryFilter bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - reverseIsNull() { + reverseIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'reverse', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'reverse'), + ); }); } QueryBuilder - reverseIsNotNull() { + reverseIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'reverse', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'reverse'), + ); }); } QueryBuilder reverseEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'reverse', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'reverse', value: value), + ); }); } } @@ -14777,17 +16488,10 @@ const ChapterFilterDownloadedSchema = Schema( name: r'ChapterFilterDownloaded', id: -5772236935601996927, properties: { - r'mangaId': PropertySchema( - id: 0, - name: r'mangaId', - type: IsarType.long, - ), - r'type': PropertySchema( - id: 1, - name: r'type', - type: IsarType.long, - ) + r'mangaId': PropertySchema(id: 0, name: r'mangaId', type: IsarType.long), + r'type': PropertySchema(id: 1, name: r'type', type: IsarType.long), }, + estimateSize: _chapterFilterDownloadedEstimateSize, serialize: _chapterFilterDownloadedSerialize, deserialize: _chapterFilterDownloadedDeserialize, @@ -14842,159 +16546,215 @@ P _chapterFilterDownloadedDeserializeProp

( } } -extension ChapterFilterDownloadedQueryFilter on QueryBuilder< - ChapterFilterDownloaded, ChapterFilterDownloaded, QFilterCondition> { - QueryBuilder mangaIdIsNull() { +extension ChapterFilterDownloadedQueryFilter + on + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QFilterCondition + > { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } - QueryBuilder mangaIdIsNotNull() { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } - QueryBuilder mangaIdEqualTo(int? value) { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + mangaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } - QueryBuilder mangaIdGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + mangaIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } - QueryBuilder mangaIdLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + mangaIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } - QueryBuilder mangaIdBetween( + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + mangaIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder typeIsNull() { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + typeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'type', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'type'), + ); }); } - QueryBuilder typeIsNotNull() { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + typeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'type', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'type'), + ); }); } - QueryBuilder typeEqualTo(int? value) { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + typeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'type', value: value), + ); }); } - QueryBuilder typeGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + typeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'type', + value: value, + ), + ); }); } - QueryBuilder typeLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + typeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'type', + value: value, + ), + ); }); } - QueryBuilder typeBetween( + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QAfterFilterCondition + > + typeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'type', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'type', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } -extension ChapterFilterDownloadedQueryObject on QueryBuilder< - ChapterFilterDownloaded, ChapterFilterDownloaded, QFilterCondition> {} +extension ChapterFilterDownloadedQueryObject + on + QueryBuilder< + ChapterFilterDownloaded, + ChapterFilterDownloaded, + QFilterCondition + > {} // coverage:ignore-file // ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types @@ -15003,17 +16763,10 @@ const ChapterFilterUnreadSchema = Schema( name: r'ChapterFilterUnread', id: 2999193805790237469, properties: { - r'mangaId': PropertySchema( - id: 0, - name: r'mangaId', - type: IsarType.long, - ), - r'type': PropertySchema( - id: 1, - name: r'type', - type: IsarType.long, - ) + r'mangaId': PropertySchema(id: 0, name: r'mangaId', type: IsarType.long), + r'type': PropertySchema(id: 1, name: r'type', type: IsarType.long), }, + estimateSize: _chapterFilterUnreadEstimateSize, serialize: _chapterFilterUnreadSerialize, deserialize: _chapterFilterUnreadDeserialize, @@ -15068,159 +16821,167 @@ P _chapterFilterUnreadDeserializeProp

( } } -extension ChapterFilterUnreadQueryFilter on QueryBuilder { +extension ChapterFilterUnreadQueryFilter + on + QueryBuilder< + ChapterFilterUnread, + ChapterFilterUnread, + QFilterCondition + > { QueryBuilder - mangaIdIsNull() { + mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdIsNotNull() { + mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdEqualTo(int? value) { + mangaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } QueryBuilder - mangaIdGreaterThan( - int? value, { - bool include = false, - }) { + mangaIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdLessThan( - int? value, { - bool include = false, - }) { + mangaIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdBetween( + mangaIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - typeIsNull() { + typeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'type', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'type'), + ); }); } QueryBuilder - typeIsNotNull() { + typeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'type', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'type'), + ); }); } QueryBuilder - typeEqualTo(int? value) { + typeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'type', value: value), + ); }); } QueryBuilder - typeGreaterThan( - int? value, { - bool include = false, - }) { + typeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'type', + value: value, + ), + ); }); } QueryBuilder - typeLessThan( - int? value, { - bool include = false, - }) { + typeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'type', + value: value, + ), + ); }); } QueryBuilder - typeBetween( + typeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'type', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'type', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } -extension ChapterFilterUnreadQueryObject on QueryBuilder {} +extension ChapterFilterUnreadQueryObject + on + QueryBuilder< + ChapterFilterUnread, + ChapterFilterUnread, + QFilterCondition + > {} // coverage:ignore-file // ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types @@ -15229,17 +16990,10 @@ const ChapterFilterBookmarkedSchema = Schema( name: r'ChapterFilterBookmarked', id: -4183165879060895626, properties: { - r'mangaId': PropertySchema( - id: 0, - name: r'mangaId', - type: IsarType.long, - ), - r'type': PropertySchema( - id: 1, - name: r'type', - type: IsarType.long, - ) + r'mangaId': PropertySchema(id: 0, name: r'mangaId', type: IsarType.long), + r'type': PropertySchema(id: 1, name: r'type', type: IsarType.long), }, + estimateSize: _chapterFilterBookmarkedEstimateSize, serialize: _chapterFilterBookmarkedSerialize, deserialize: _chapterFilterBookmarkedDeserialize, @@ -15294,159 +17048,215 @@ P _chapterFilterBookmarkedDeserializeProp

( } } -extension ChapterFilterBookmarkedQueryFilter on QueryBuilder< - ChapterFilterBookmarked, ChapterFilterBookmarked, QFilterCondition> { - QueryBuilder mangaIdIsNull() { +extension ChapterFilterBookmarkedQueryFilter + on + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QFilterCondition + > { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } - QueryBuilder mangaIdIsNotNull() { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } - QueryBuilder mangaIdEqualTo(int? value) { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + mangaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } - QueryBuilder mangaIdGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + mangaIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } - QueryBuilder mangaIdLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + mangaIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } - QueryBuilder mangaIdBetween( + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + mangaIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder typeIsNull() { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + typeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'type', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'type'), + ); }); } - QueryBuilder typeIsNotNull() { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + typeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'type', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'type'), + ); }); } - QueryBuilder typeEqualTo(int? value) { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + typeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'type', value: value), + ); }); } - QueryBuilder typeGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + typeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'type', + value: value, + ), + ); }); } - QueryBuilder typeLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + typeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'type', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'type', + value: value, + ), + ); }); } - QueryBuilder typeBetween( + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QAfterFilterCondition + > + typeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'type', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'type', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } -extension ChapterFilterBookmarkedQueryObject on QueryBuilder< - ChapterFilterBookmarked, ChapterFilterBookmarked, QFilterCondition> {} +extension ChapterFilterBookmarkedQueryObject + on + QueryBuilder< + ChapterFilterBookmarked, + ChapterFilterBookmarked, + QFilterCondition + > {} // coverage:ignore-file // ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types @@ -15470,12 +17280,9 @@ const ChapterPageurlsSchema = Schema( name: r'headers', type: IsarType.stringList, ), - r'urls': PropertySchema( - id: 3, - name: r'urls', - type: IsarType.stringList, - ) + r'urls': PropertySchema(id: 3, name: r'urls', type: IsarType.stringList), }, + estimateSize: _chapterPageurlsEstimateSize, serialize: _chapterPageurlsSerialize, deserialize: _chapterPageurlsDeserialize, @@ -15571,145 +17378,147 @@ P _chapterPageurlsDeserializeProp

( extension ChapterPageurlsQueryFilter on QueryBuilder { QueryBuilder - chapterIdIsNull() { + chapterIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterId'), + ); }); } QueryBuilder - chapterIdIsNotNull() { + chapterIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'chapterId'), + ); }); } QueryBuilder - chapterIdEqualTo(int? value) { + chapterIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'chapterId', value: value), + ); }); } QueryBuilder - chapterIdGreaterThan( - int? value, { - bool include = false, - }) { + chapterIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'chapterId', + value: value, + ), + ); }); } QueryBuilder - chapterIdLessThan( - int? value, { - bool include = false, - }) { + chapterIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'chapterId', + value: value, + ), + ); }); } QueryBuilder - chapterIdBetween( + chapterIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'chapterId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'chapterId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - chapterUrlIsNull() { + chapterUrlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterUrl'), + ); }); } QueryBuilder - chapterUrlIsNotNull() { + chapterUrlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'chapterUrl'), + ); }); } QueryBuilder - chapterUrlEqualTo( - String? value, { - bool caseSensitive = true, - }) { + chapterUrlEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'chapterUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'chapterUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - chapterUrlGreaterThan( + chapterUrlGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'chapterUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'chapterUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - chapterUrlLessThan( + chapterUrlLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'chapterUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'chapterUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - chapterUrlBetween( + chapterUrlBetween( String? lower, String? upper, { bool includeLower = true, @@ -15717,153 +17526,158 @@ extension ChapterPageurlsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'chapterUrl', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'chapterUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - chapterUrlStartsWith( - String value, { - bool caseSensitive = true, - }) { + chapterUrlStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'chapterUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'chapterUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - chapterUrlEndsWith( - String value, { - bool caseSensitive = true, - }) { + chapterUrlEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'chapterUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'chapterUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - chapterUrlContains(String value, {bool caseSensitive = true}) { + chapterUrlContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'chapterUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'chapterUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - chapterUrlMatches(String pattern, {bool caseSensitive = true}) { + chapterUrlMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'chapterUrl', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'chapterUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - chapterUrlIsEmpty() { + chapterUrlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'chapterUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'chapterUrl', value: ''), + ); }); } QueryBuilder - chapterUrlIsNotEmpty() { + chapterUrlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'chapterUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'chapterUrl', value: ''), + ); }); } QueryBuilder - headersIsNull() { + headersIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'headers', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'headers'), + ); }); } QueryBuilder - headersIsNotNull() { + headersIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'headers', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'headers'), + ); }); } QueryBuilder - headersElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + headersElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - headersElementGreaterThan( + headersElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - headersElementLessThan( + headersElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - headersElementBetween( + headersElementBetween( String lower, String upper, { bool includeLower = true, @@ -15871,160 +17685,126 @@ extension ChapterPageurlsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'headers', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - headersElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - headersElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - headersElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - headersElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'headers', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - headersElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'headers', - value: '', - )); - }); - } - - QueryBuilder - headersElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'headers', - value: '', - )); - }); - } - - QueryBuilder - headersLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'headers', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'headers', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - headersIsEmpty() { + headersElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'headers', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - headersIsNotEmpty() { + headersElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'headers', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - headersLengthLessThan( - int length, { - bool include = false, - }) { + headersElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'headers', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - headersLengthGreaterThan( - int length, { - bool include = false, - }) { + headersElementMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'headers', - length, - include, - 999999, - true, + return query.addFilterCondition( + FilterCondition.matches( + property: r'headers', + wildcard: pattern, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - headersLengthBetween( + headersElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'headers', value: ''), + ); + }); + } + + QueryBuilder + headersElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'headers', value: ''), + ); + }); + } + + QueryBuilder + headersLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'headers', length, true, length, true); + }); + } + + QueryBuilder + headersIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'headers', 0, true, 0, true); + }); + } + + QueryBuilder + headersIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'headers', 0, false, 999999, true); + }); + } + + QueryBuilder + headersLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'headers', 0, true, length, include); + }); + } + + QueryBuilder + headersLengthGreaterThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'headers', length, include, 999999, true); + }); + } + + QueryBuilder + headersLengthBetween( int lower, int upper, { bool includeLower = true, @@ -16042,71 +17822,74 @@ extension ChapterPageurlsQueryFilter } QueryBuilder - urlsIsNull() { + urlsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'urls', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'urls'), + ); }); } QueryBuilder - urlsIsNotNull() { + urlsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'urls', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'urls'), + ); }); } QueryBuilder - urlsElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + urlsElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'urls', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'urls', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - urlsElementGreaterThan( + urlsElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'urls', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'urls', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - urlsElementLessThan( + urlsElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'urls', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'urls', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - urlsElementBetween( + urlsElementBetween( String lower, String upper, { bool includeLower = true, @@ -16114,160 +17897,126 @@ extension ChapterPageurlsQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'urls', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - urlsElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'urls', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - urlsElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'urls', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - urlsElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'urls', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - urlsElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'urls', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - urlsElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'urls', - value: '', - )); - }); - } - - QueryBuilder - urlsElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'urls', - value: '', - )); - }); - } - - QueryBuilder - urlsLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'urls', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'urls', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - urlsIsEmpty() { + urlsElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'urls', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'urls', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - urlsIsNotEmpty() { + urlsElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'urls', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'urls', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - urlsLengthLessThan( - int length, { - bool include = false, - }) { + urlsElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'urls', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'urls', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - urlsLengthGreaterThan( - int length, { - bool include = false, - }) { + urlsElementMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'urls', - length, - include, - 999999, - true, + return query.addFilterCondition( + FilterCondition.matches( + property: r'urls', + wildcard: pattern, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - urlsLengthBetween( + urlsElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'urls', value: ''), + ); + }); + } + + QueryBuilder + urlsElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'urls', value: ''), + ); + }); + } + + QueryBuilder + urlsLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'urls', length, true, length, true); + }); + } + + QueryBuilder + urlsIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'urls', 0, true, 0, true); + }); + } + + QueryBuilder + urlsIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'urls', 0, false, 999999, true); + }); + } + + QueryBuilder + urlsLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'urls', 0, true, length, include); + }); + } + + QueryBuilder + urlsLengthGreaterThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'urls', length, include, 999999, true); + }); + } + + QueryBuilder + urlsLengthBetween( int lower, int upper, { bool includeLower = true, @@ -16300,12 +18049,9 @@ const ChapterPageIndexSchema = Schema( name: r'chapterId', type: IsarType.long, ), - r'index': PropertySchema( - id: 1, - name: r'index', - type: IsarType.long, - ) + r'index': PropertySchema(id: 1, name: r'index', type: IsarType.long), }, + estimateSize: _chapterPageIndexEstimateSize, serialize: _chapterPageIndexSerialize, deserialize: _chapterPageIndexDeserialize, @@ -16363,150 +18109,148 @@ P _chapterPageIndexDeserializeProp

( extension ChapterPageIndexQueryFilter on QueryBuilder { QueryBuilder - chapterIdIsNull() { + chapterIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterId'), + ); }); } QueryBuilder - chapterIdIsNotNull() { + chapterIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'chapterId'), + ); }); } QueryBuilder - chapterIdEqualTo(int? value) { + chapterIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'chapterId', value: value), + ); }); } QueryBuilder - chapterIdGreaterThan( - int? value, { - bool include = false, - }) { + chapterIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'chapterId', + value: value, + ), + ); }); } QueryBuilder - chapterIdLessThan( - int? value, { - bool include = false, - }) { + chapterIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'chapterId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'chapterId', + value: value, + ), + ); }); } QueryBuilder - chapterIdBetween( + chapterIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'chapterId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'chapterId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - indexIsNull() { + indexIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'index', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'index'), + ); }); } QueryBuilder - indexIsNotNull() { + indexIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'index', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'index'), + ); }); } QueryBuilder - indexEqualTo(int? value) { + indexEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'index', value: value), + ); }); } QueryBuilder - indexGreaterThan( - int? value, { - bool include = false, - }) { + indexGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'index', + value: value, + ), + ); }); } QueryBuilder - indexLessThan( - int? value, { - bool include = false, - }) { + indexLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'index', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'index', + value: value, + ), + ); }); } QueryBuilder - indexBetween( + indexBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'index', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'index', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -16521,18 +18265,15 @@ const PersonalReaderModeSchema = Schema( name: r'PersonalReaderMode', id: -1072936262658804338, properties: { - r'mangaId': PropertySchema( - id: 0, - name: r'mangaId', - type: IsarType.long, - ), + r'mangaId': PropertySchema(id: 0, name: r'mangaId', type: IsarType.long), r'readerMode': PropertySchema( id: 1, name: r'readerMode', type: IsarType.byte, enumMap: _PersonalReaderModereaderModeEnumValueMap, - ) + ), }, + estimateSize: _personalReaderModeEstimateSize, serialize: _personalReaderModeSerialize, deserialize: _personalReaderModeDeserialize, @@ -16566,8 +18307,10 @@ PersonalReaderMode _personalReaderModeDeserialize( ) { final object = PersonalReaderMode( mangaId: reader.readLongOrNull(offsets[0]), - readerMode: _PersonalReaderModereaderModeValueEnumMap[ - reader.readByteOrNull(offsets[1])] ?? + readerMode: + _PersonalReaderModereaderModeValueEnumMap[reader.readByteOrNull( + offsets[1], + )] ?? ReaderMode.vertical, ); return object; @@ -16583,9 +18326,11 @@ P _personalReaderModeDeserializeProp

( case 0: return (reader.readLongOrNull(offset)) as P; case 1: - return (_PersonalReaderModereaderModeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - ReaderMode.vertical) as P; + return (_PersonalReaderModereaderModeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + ReaderMode.vertical) + as P; default: throw IsarError('Unknown property with id $propertyId'); } @@ -16611,132 +18356,130 @@ const _PersonalReaderModereaderModeValueEnumMap = { extension PersonalReaderModeQueryFilter on QueryBuilder { QueryBuilder - mangaIdIsNull() { + mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdIsNotNull() { + mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdEqualTo(int? value) { + mangaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } QueryBuilder - mangaIdGreaterThan( - int? value, { - bool include = false, - }) { + mangaIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdLessThan( - int? value, { - bool include = false, - }) { + mangaIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdBetween( + mangaIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - readerModeEqualTo(ReaderMode value) { + readerModeEqualTo(ReaderMode value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'readerMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'readerMode', value: value), + ); }); } QueryBuilder - readerModeGreaterThan( - ReaderMode value, { - bool include = false, - }) { + readerModeGreaterThan(ReaderMode value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'readerMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'readerMode', + value: value, + ), + ); }); } QueryBuilder - readerModeLessThan( - ReaderMode value, { - bool include = false, - }) { + readerModeLessThan(ReaderMode value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'readerMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'readerMode', + value: value, + ), + ); }); } QueryBuilder - readerModeBetween( + readerModeBetween( ReaderMode lower, ReaderMode upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'readerMode', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'readerMode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -16756,17 +18499,14 @@ const AutoScrollPagesSchema = Schema( name: r'autoScroll', type: IsarType.bool, ), - r'mangaId': PropertySchema( - id: 1, - name: r'mangaId', - type: IsarType.long, - ), + r'mangaId': PropertySchema(id: 1, name: r'mangaId', type: IsarType.long), r'pageOffset': PropertySchema( id: 2, name: r'pageOffset', type: IsarType.double, - ) + ), }, + estimateSize: _autoScrollPagesEstimateSize, serialize: _autoScrollPagesSerialize, deserialize: _autoScrollPagesDeserialize, @@ -16828,173 +18568,177 @@ P _autoScrollPagesDeserializeProp

( extension AutoScrollPagesQueryFilter on QueryBuilder { QueryBuilder - autoScrollIsNull() { + autoScrollIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'autoScroll', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'autoScroll'), + ); }); } QueryBuilder - autoScrollIsNotNull() { + autoScrollIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'autoScroll', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'autoScroll'), + ); }); } QueryBuilder - autoScrollEqualTo(bool? value) { + autoScrollEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'autoScroll', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'autoScroll', value: value), + ); }); } QueryBuilder - mangaIdIsNull() { + mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdIsNotNull() { + mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdEqualTo(int? value) { + mangaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } QueryBuilder - mangaIdGreaterThan( - int? value, { - bool include = false, - }) { + mangaIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdLessThan( - int? value, { - bool include = false, - }) { + mangaIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdBetween( + mangaIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - pageOffsetIsNull() { + pageOffsetIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'pageOffset', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'pageOffset'), + ); }); } QueryBuilder - pageOffsetIsNotNull() { + pageOffsetIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'pageOffset', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'pageOffset'), + ); }); } QueryBuilder - pageOffsetEqualTo( - double? value, { - double epsilon = Query.epsilon, - }) { + pageOffsetEqualTo(double? value, {double epsilon = Query.epsilon}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'pageOffset', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'pageOffset', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - pageOffsetGreaterThan( + pageOffsetGreaterThan( double? value, { bool include = false, double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'pageOffset', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'pageOffset', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - pageOffsetLessThan( + pageOffsetLessThan( double? value, { bool include = false, double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'pageOffset', - value: value, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'pageOffset', + value: value, + + epsilon: epsilon, + ), + ); }); } QueryBuilder - pageOffsetBetween( + pageOffsetBetween( double? lower, double? upper, { bool includeLower = true, @@ -17002,14 +18746,17 @@ extension AutoScrollPagesQueryFilter double epsilon = Query.epsilon, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'pageOffset', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - epsilon: epsilon, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'pageOffset', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + + epsilon: epsilon, + ), + ); }); } } @@ -17024,22 +18771,13 @@ const RepoSchema = Schema( name: r'Repo', id: 8520529424681796092, properties: { - r'jsonUrl': PropertySchema( - id: 0, - name: r'jsonUrl', - type: IsarType.string, - ), - r'name': PropertySchema( - id: 1, - name: r'name', - type: IsarType.string, - ), - r'website': PropertySchema( - id: 2, - name: r'website', - type: IsarType.string, - ) + r'hashCode': PropertySchema(id: 0, name: r'hashCode', type: IsarType.long), + r'hidden': PropertySchema(id: 1, name: r'hidden', type: IsarType.bool), + r'jsonUrl': PropertySchema(id: 2, name: r'jsonUrl', type: IsarType.string), + r'name': PropertySchema(id: 3, name: r'name', type: IsarType.string), + r'website': PropertySchema(id: 4, name: r'website', type: IsarType.string), }, + estimateSize: _repoEstimateSize, serialize: _repoSerialize, deserialize: _repoDeserialize, @@ -17079,9 +18817,11 @@ void _repoSerialize( List offsets, Map> allOffsets, ) { - writer.writeString(offsets[0], object.jsonUrl); - writer.writeString(offsets[1], object.name); - writer.writeString(offsets[2], object.website); + writer.writeLong(offsets[0], object.hashCode); + writer.writeBool(offsets[1], object.hidden); + writer.writeString(offsets[2], object.jsonUrl); + writer.writeString(offsets[3], object.name); + writer.writeString(offsets[4], object.website); } Repo _repoDeserialize( @@ -17091,9 +18831,10 @@ Repo _repoDeserialize( Map> allOffsets, ) { final object = Repo( - jsonUrl: reader.readStringOrNull(offsets[0]), - name: reader.readStringOrNull(offsets[1]), - website: reader.readStringOrNull(offsets[2]), + hidden: reader.readBoolOrNull(offsets[1]), + jsonUrl: reader.readStringOrNull(offsets[2]), + name: reader.readStringOrNull(offsets[3]), + website: reader.readStringOrNull(offsets[4]), ); return object; } @@ -17106,30 +18847,115 @@ P _repoDeserializeProp

( ) { switch (propertyId) { case 0: - return (reader.readStringOrNull(offset)) as P; + return (reader.readLong(offset)) as P; case 1: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 2: return (reader.readStringOrNull(offset)) as P; + case 3: + return (reader.readStringOrNull(offset)) as P; + case 4: + return (reader.readStringOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); } } extension RepoQueryFilter on QueryBuilder { + QueryBuilder hashCodeEqualTo(int value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'hashCode', value: value), + ); + }); + } + + QueryBuilder hashCodeGreaterThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'hashCode', + value: value, + ), + ); + }); + } + + QueryBuilder hashCodeLessThan( + int value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'hashCode', + value: value, + ), + ); + }); + } + + QueryBuilder hashCodeBetween( + int lower, + int upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'hashCode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } + + QueryBuilder hiddenIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'hidden'), + ); + }); + } + + QueryBuilder hiddenIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'hidden'), + ); + }); + } + + QueryBuilder hiddenEqualTo(bool? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'hidden', value: value), + ); + }); + } + QueryBuilder jsonUrlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'jsonUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'jsonUrl'), + ); }); } QueryBuilder jsonUrlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'jsonUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'jsonUrl'), + ); }); } @@ -17138,11 +18964,13 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'jsonUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'jsonUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17152,12 +18980,14 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'jsonUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'jsonUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17167,12 +18997,14 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'jsonUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'jsonUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17184,14 +19016,16 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'jsonUrl', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'jsonUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17200,11 +19034,13 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'jsonUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'jsonUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17213,67 +19049,75 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'jsonUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'jsonUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder jsonUrlContains(String value, - {bool caseSensitive = true}) { + QueryBuilder jsonUrlContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'jsonUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'jsonUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder jsonUrlMatches(String pattern, - {bool caseSensitive = true}) { + QueryBuilder jsonUrlMatches( + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'jsonUrl', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'jsonUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder jsonUrlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'jsonUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'jsonUrl', value: ''), + ); }); } QueryBuilder jsonUrlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'jsonUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'jsonUrl', value: ''), + ); }); } QueryBuilder nameIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'name'), + ); }); } QueryBuilder nameIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'name'), + ); }); } @@ -17282,11 +19126,13 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17296,12 +19142,14 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17311,12 +19159,14 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17328,14 +19178,16 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'name', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17344,11 +19196,13 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17357,67 +19211,75 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder nameContains(String value, - {bool caseSensitive = true}) { + QueryBuilder nameContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder nameMatches(String pattern, - {bool caseSensitive = true}) { + QueryBuilder nameMatches( + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'name', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'name', value: ''), + ); }); } QueryBuilder nameIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'name', value: ''), + ); }); } QueryBuilder websiteIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'website', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'website'), + ); }); } QueryBuilder websiteIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'website', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'website'), + ); }); } @@ -17426,11 +19288,13 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'website', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'website', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17440,12 +19304,14 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'website', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'website', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17455,12 +19321,14 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'website', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'website', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17472,14 +19340,16 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'website', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'website', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17488,11 +19358,13 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'website', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'website', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -17501,51 +19373,59 @@ extension RepoQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'website', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'website', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder websiteContains(String value, - {bool caseSensitive = true}) { + QueryBuilder websiteContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'website', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'website', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder websiteMatches(String pattern, - {bool caseSensitive = true}) { + QueryBuilder websiteMatches( + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'website', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'website', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder websiteIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'website', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'website', value: ''), + ); }); } QueryBuilder websiteIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'website', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'website', value: ''), + ); }); } } @@ -17559,18 +19439,15 @@ const PersonalPageModeSchema = Schema( name: r'PersonalPageMode', id: -7061860019786197792, properties: { - r'mangaId': PropertySchema( - id: 0, - name: r'mangaId', - type: IsarType.long, - ), + r'mangaId': PropertySchema(id: 0, name: r'mangaId', type: IsarType.long), r'pageMode': PropertySchema( id: 1, name: r'pageMode', type: IsarType.byte, enumMap: _PersonalPageModepageModeEnumValueMap, - ) + ), }, + estimateSize: _personalPageModeEstimateSize, serialize: _personalPageModeSerialize, deserialize: _personalPageModeDeserialize, @@ -17604,8 +19481,10 @@ PersonalPageMode _personalPageModeDeserialize( ) { final object = PersonalPageMode( mangaId: reader.readLongOrNull(offsets[0]), - pageMode: _PersonalPageModepageModeValueEnumMap[ - reader.readByteOrNull(offsets[1])] ?? + pageMode: + _PersonalPageModepageModeValueEnumMap[reader.readByteOrNull( + offsets[1], + )] ?? PageMode.onePage, ); return object; @@ -17621,18 +19500,17 @@ P _personalPageModeDeserializeProp

( case 0: return (reader.readLongOrNull(offset)) as P; case 1: - return (_PersonalPageModepageModeValueEnumMap[ - reader.readByteOrNull(offset)] ?? - PageMode.onePage) as P; + return (_PersonalPageModepageModeValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + PageMode.onePage) + as P; default: throw IsarError('Unknown property with id $propertyId'); } } -const _PersonalPageModepageModeEnumValueMap = { - 'onePage': 0, - 'doublePage': 1, -}; +const _PersonalPageModepageModeEnumValueMap = {'onePage': 0, 'doublePage': 1}; const _PersonalPageModepageModeValueEnumMap = { 0: PageMode.onePage, 1: PageMode.doublePage, @@ -17641,132 +19519,130 @@ const _PersonalPageModepageModeValueEnumMap = { extension PersonalPageModeQueryFilter on QueryBuilder { QueryBuilder - mangaIdIsNull() { + mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdIsNotNull() { + mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdEqualTo(int? value) { + mangaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } QueryBuilder - mangaIdGreaterThan( - int? value, { - bool include = false, - }) { + mangaIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdLessThan( - int? value, { - bool include = false, - }) { + mangaIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdBetween( + mangaIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - pageModeEqualTo(PageMode value) { + pageModeEqualTo(PageMode value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'pageMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'pageMode', value: value), + ); }); } QueryBuilder - pageModeGreaterThan( - PageMode value, { - bool include = false, - }) { + pageModeGreaterThan(PageMode value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'pageMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'pageMode', + value: value, + ), + ); }); } QueryBuilder - pageModeLessThan( - PageMode value, { - bool include = false, - }) { + pageModeLessThan(PageMode value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'pageMode', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'pageMode', + value: value, + ), + ); }); } QueryBuilder - pageModeBetween( + pageModeBetween( PageMode lower, PageMode upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'pageMode', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'pageMode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -17781,17 +19657,14 @@ const FilterScanlatorSchema = Schema( name: r'FilterScanlator', id: 3007689993900015493, properties: { - r'mangaId': PropertySchema( - id: 0, - name: r'mangaId', - type: IsarType.long, - ), + r'mangaId': PropertySchema(id: 0, name: r'mangaId', type: IsarType.long), r'scanlators': PropertySchema( id: 1, name: r'scanlators', type: IsarType.stringList, - ) + ), }, + estimateSize: _filterScanlatorEstimateSize, serialize: _filterScanlatorSerialize, deserialize: _filterScanlatorDeserialize, @@ -17861,145 +19734,147 @@ P _filterScanlatorDeserializeProp

( extension FilterScanlatorQueryFilter on QueryBuilder { QueryBuilder - mangaIdIsNull() { + mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdIsNotNull() { + mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder - mangaIdEqualTo(int? value) { + mangaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } QueryBuilder - mangaIdGreaterThan( - int? value, { - bool include = false, - }) { + mangaIdGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdLessThan( - int? value, { - bool include = false, - }) { + mangaIdLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } QueryBuilder - mangaIdBetween( + mangaIdBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - scanlatorsIsNull() { + scanlatorsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'scanlators', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'scanlators'), + ); }); } QueryBuilder - scanlatorsIsNotNull() { + scanlatorsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'scanlators', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'scanlators'), + ); }); } QueryBuilder - scanlatorsElementEqualTo( - String value, { - bool caseSensitive = true, - }) { + scanlatorsElementEqualTo(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'scanlators', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'scanlators', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - scanlatorsElementGreaterThan( + scanlatorsElementGreaterThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'scanlators', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'scanlators', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - scanlatorsElementLessThan( + scanlatorsElementLessThan( String value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'scanlators', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'scanlators', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - scanlatorsElementBetween( + scanlatorsElementBetween( String lower, String upper, { bool includeLower = true, @@ -18007,160 +19882,126 @@ extension FilterScanlatorQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'scanlators', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - scanlatorsElementStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'scanlators', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - scanlatorsElementEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'scanlators', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - scanlatorsElementContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'scanlators', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - scanlatorsElementMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'scanlators', - wildcard: pattern, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - scanlatorsElementIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'scanlators', - value: '', - )); - }); - } - - QueryBuilder - scanlatorsElementIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'scanlators', - value: '', - )); - }); - } - - QueryBuilder - scanlatorsLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'scanlators', - length, - true, - length, - true, + return query.addFilterCondition( + FilterCondition.between( + property: r'scanlators', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - scanlatorsIsEmpty() { + scanlatorsElementStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'scanlators', - 0, - true, - 0, - true, + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'scanlators', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - scanlatorsIsNotEmpty() { + scanlatorsElementEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'scanlators', - 0, - false, - 999999, - true, + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'scanlators', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - scanlatorsLengthLessThan( - int length, { - bool include = false, - }) { + scanlatorsElementContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'scanlators', - 0, - true, - length, - include, + return query.addFilterCondition( + FilterCondition.contains( + property: r'scanlators', + value: value, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - scanlatorsLengthGreaterThan( - int length, { - bool include = false, - }) { + scanlatorsElementMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.listLength( - r'scanlators', - length, - include, - 999999, - true, + return query.addFilterCondition( + FilterCondition.matches( + property: r'scanlators', + wildcard: pattern, + caseSensitive: caseSensitive, + ), ); }); } QueryBuilder - scanlatorsLengthBetween( + scanlatorsElementIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'scanlators', value: ''), + ); + }); + } + + QueryBuilder + scanlatorsElementIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'scanlators', value: ''), + ); + }); + } + + QueryBuilder + scanlatorsLengthEqualTo(int length) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'scanlators', length, true, length, true); + }); + } + + QueryBuilder + scanlatorsIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'scanlators', 0, true, 0, true); + }); + } + + QueryBuilder + scanlatorsIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'scanlators', 0, false, 999999, true); + }); + } + + QueryBuilder + scanlatorsLengthLessThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'scanlators', 0, true, length, include); + }); + } + + QueryBuilder + scanlatorsLengthGreaterThan(int length, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.listLength(r'scanlators', length, include, 999999, true); + }); + } + + QueryBuilder + scanlatorsLengthBetween( int lower, int upper, { bool includeLower = true, @@ -18197,8 +20038,9 @@ const L10nLocaleSchema = Schema( id: 1, name: r'languageCode', type: IsarType.string, - ) + ), }, + estimateSize: _l10nLocaleEstimateSize, serialize: _l10nLocaleSerialize, deserialize: _l10nLocaleDeserialize, @@ -18268,71 +20110,74 @@ P _l10nLocaleDeserializeProp

( extension L10nLocaleQueryFilter on QueryBuilder { QueryBuilder - countryCodeIsNull() { + countryCodeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'countryCode', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'countryCode'), + ); }); } QueryBuilder - countryCodeIsNotNull() { + countryCodeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'countryCode', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'countryCode'), + ); }); } QueryBuilder - countryCodeEqualTo( - String? value, { - bool caseSensitive = true, - }) { + countryCodeEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'countryCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'countryCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - countryCodeGreaterThan( + countryCodeGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'countryCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'countryCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - countryCodeLessThan( + countryCodeLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'countryCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'countryCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - countryCodeBetween( + countryCodeBetween( String? lower, String? upper, { bool includeLower = true, @@ -18340,153 +20185,158 @@ extension L10nLocaleQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'countryCode', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'countryCode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - countryCodeStartsWith( - String value, { - bool caseSensitive = true, - }) { + countryCodeStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'countryCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'countryCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - countryCodeEndsWith( - String value, { - bool caseSensitive = true, - }) { + countryCodeEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'countryCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'countryCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - countryCodeContains(String value, {bool caseSensitive = true}) { + countryCodeContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'countryCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'countryCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - countryCodeMatches(String pattern, {bool caseSensitive = true}) { + countryCodeMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'countryCode', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'countryCode', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - countryCodeIsEmpty() { + countryCodeIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'countryCode', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'countryCode', value: ''), + ); }); } QueryBuilder - countryCodeIsNotEmpty() { + countryCodeIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'countryCode', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'countryCode', value: ''), + ); }); } QueryBuilder - languageCodeIsNull() { + languageCodeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'languageCode', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'languageCode'), + ); }); } QueryBuilder - languageCodeIsNotNull() { + languageCodeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'languageCode', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'languageCode'), + ); }); } QueryBuilder - languageCodeEqualTo( - String? value, { - bool caseSensitive = true, - }) { + languageCodeEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'languageCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'languageCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - languageCodeGreaterThan( + languageCodeGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'languageCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'languageCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - languageCodeLessThan( + languageCodeLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'languageCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'languageCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - languageCodeBetween( + languageCodeBetween( String? lower, String? upper, { bool includeLower = true, @@ -18494,84 +20344,86 @@ extension L10nLocaleQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'languageCode', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'languageCode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - languageCodeStartsWith( - String value, { - bool caseSensitive = true, - }) { + languageCodeStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'languageCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'languageCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - languageCodeEndsWith( - String value, { - bool caseSensitive = true, - }) { + languageCodeEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'languageCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'languageCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - languageCodeContains(String value, {bool caseSensitive = true}) { + languageCodeContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'languageCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'languageCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - languageCodeMatches(String pattern, {bool caseSensitive = true}) { + languageCodeMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'languageCode', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'languageCode', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - languageCodeIsEmpty() { + languageCodeIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'languageCode', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'languageCode', value: ''), + ); }); } QueryBuilder - languageCodeIsNotEmpty() { + languageCodeIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'languageCode', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'languageCode', value: ''), + ); }); } } @@ -18586,27 +20438,12 @@ const CustomColorFilterSchema = Schema( name: r'CustomColorFilter', id: -2363592387931876829, properties: { - r'a': PropertySchema( - id: 0, - name: r'a', - type: IsarType.long, - ), - r'b': PropertySchema( - id: 1, - name: r'b', - type: IsarType.long, - ), - r'g': PropertySchema( - id: 2, - name: r'g', - type: IsarType.long, - ), - r'r': PropertySchema( - id: 3, - name: r'r', - type: IsarType.long, - ) + r'a': PropertySchema(id: 0, name: r'a', type: IsarType.long), + r'b': PropertySchema(id: 1, name: r'b', type: IsarType.long), + r'g': PropertySchema(id: 2, name: r'g', type: IsarType.long), + r'r': PropertySchema(id: 3, name: r'r', type: IsarType.long), }, + estimateSize: _customColorFilterEstimateSize, serialize: _customColorFilterSerialize, deserialize: _customColorFilterDeserialize, @@ -18672,298 +20509,294 @@ P _customColorFilterDeserializeProp

( extension CustomColorFilterQueryFilter on QueryBuilder { QueryBuilder - aIsNull() { + aIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'a', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'a'), + ); }); } QueryBuilder - aIsNotNull() { + aIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'a', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'a'), + ); }); } QueryBuilder - aEqualTo(int? value) { + aEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'a', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'a', value: value), + ); }); } QueryBuilder - aGreaterThan( - int? value, { - bool include = false, - }) { + aGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'a', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'a', + value: value, + ), + ); }); } QueryBuilder - aLessThan( - int? value, { - bool include = false, - }) { + aLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'a', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'a', + value: value, + ), + ); }); } QueryBuilder - aBetween( + aBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'a', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'a', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - bIsNull() { + bIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'b', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'b'), + ); }); } QueryBuilder - bIsNotNull() { + bIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'b', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'b'), + ); }); } QueryBuilder - bEqualTo(int? value) { + bEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'b', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'b', value: value), + ); }); } QueryBuilder - bGreaterThan( - int? value, { - bool include = false, - }) { + bGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'b', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'b', + value: value, + ), + ); }); } QueryBuilder - bLessThan( - int? value, { - bool include = false, - }) { + bLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'b', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'b', + value: value, + ), + ); }); } QueryBuilder - bBetween( + bBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'b', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'b', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - gIsNull() { + gIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'g', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'g'), + ); }); } QueryBuilder - gIsNotNull() { + gIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'g', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'g'), + ); }); } QueryBuilder - gEqualTo(int? value) { + gEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'g', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'g', value: value), + ); }); } QueryBuilder - gGreaterThan( - int? value, { - bool include = false, - }) { + gGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'g', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'g', + value: value, + ), + ); }); } QueryBuilder - gLessThan( - int? value, { - bool include = false, - }) { + gLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'g', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'g', + value: value, + ), + ); }); } QueryBuilder - gBetween( + gBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'g', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'g', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - rIsNull() { + rIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'r', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'r'), + ); }); } QueryBuilder - rIsNotNull() { + rIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'r', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'r'), + ); }); } QueryBuilder - rEqualTo(int? value) { + rEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'r', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'r', value: value), + ); }); } QueryBuilder - rGreaterThan( - int? value, { - bool include = false, - }) { + rGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'r', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'r', + value: value, + ), + ); }); } QueryBuilder - rLessThan( - int? value, { - bool include = false, - }) { + rLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'r', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'r', + value: value, + ), + ); }); } QueryBuilder - rBetween( + rBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'r', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'r', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -19018,11 +20851,7 @@ const PlayerSubtitleSettingsSchema = Schema( name: r'borderColorR', type: IsarType.long, ), - r'fontSize': PropertySchema( - id: 8, - name: r'fontSize', - type: IsarType.long, - ), + r'fontSize': PropertySchema(id: 8, name: r'fontSize', type: IsarType.long), r'textColorA': PropertySchema( id: 9, name: r'textColorA', @@ -19043,17 +20872,14 @@ const PlayerSubtitleSettingsSchema = Schema( name: r'textColorR', type: IsarType.long, ), - r'useBold': PropertySchema( - id: 13, - name: r'useBold', - type: IsarType.bool, - ), + r'useBold': PropertySchema(id: 13, name: r'useBold', type: IsarType.bool), r'useItalic': PropertySchema( id: 14, name: r'useItalic', type: IsarType.bool, - ) + ), }, + estimateSize: _playerSubtitleSettingsEstimateSize, serialize: _playerSubtitleSettingsSerialize, deserialize: _playerSubtitleSettingsDeserialize, @@ -19160,1026 +20986,1730 @@ P _playerSubtitleSettingsDeserializeProp

( } } -extension PlayerSubtitleSettingsQueryFilter on QueryBuilder< - PlayerSubtitleSettings, PlayerSubtitleSettings, QFilterCondition> { - QueryBuilder backgroundColorAIsNull() { +extension PlayerSubtitleSettingsQueryFilter + on + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QFilterCondition + > { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorAIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'backgroundColorA', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'backgroundColorA'), + ); }); } - QueryBuilder backgroundColorAIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorAIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'backgroundColorA', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'backgroundColorA'), + ); }); } - QueryBuilder backgroundColorAEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorAEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'backgroundColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'backgroundColorA', value: value), + ); }); } - QueryBuilder backgroundColorAGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorAGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'backgroundColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'backgroundColorA', + value: value, + ), + ); }); } - QueryBuilder backgroundColorALessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorALessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'backgroundColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'backgroundColorA', + value: value, + ), + ); }); } - QueryBuilder backgroundColorABetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorABetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'backgroundColorA', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'backgroundColorA', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder backgroundColorBIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorBIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'backgroundColorB', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'backgroundColorB'), + ); }); } - QueryBuilder backgroundColorBIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorBIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'backgroundColorB', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'backgroundColorB'), + ); }); } - QueryBuilder backgroundColorBEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorBEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'backgroundColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'backgroundColorB', value: value), + ); }); } - QueryBuilder backgroundColorBGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorBGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'backgroundColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'backgroundColorB', + value: value, + ), + ); }); } - QueryBuilder backgroundColorBLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorBLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'backgroundColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'backgroundColorB', + value: value, + ), + ); }); } - QueryBuilder backgroundColorBBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorBBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'backgroundColorB', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'backgroundColorB', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder backgroundColorGIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorGIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'backgroundColorG', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'backgroundColorG'), + ); }); } - QueryBuilder backgroundColorGIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorGIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'backgroundColorG', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'backgroundColorG'), + ); }); } - QueryBuilder backgroundColorGEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorGEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'backgroundColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'backgroundColorG', value: value), + ); }); } - QueryBuilder backgroundColorGGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorGGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'backgroundColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'backgroundColorG', + value: value, + ), + ); }); } - QueryBuilder backgroundColorGLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorGLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'backgroundColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'backgroundColorG', + value: value, + ), + ); }); } - QueryBuilder backgroundColorGBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorGBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'backgroundColorG', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'backgroundColorG', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder backgroundColorRIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorRIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'backgroundColorR', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'backgroundColorR'), + ); }); } - QueryBuilder backgroundColorRIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorRIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'backgroundColorR', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'backgroundColorR'), + ); }); } - QueryBuilder backgroundColorREqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorREqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'backgroundColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'backgroundColorR', value: value), + ); }); } - QueryBuilder backgroundColorRGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorRGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'backgroundColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'backgroundColorR', + value: value, + ), + ); }); } - QueryBuilder backgroundColorRLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorRLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'backgroundColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'backgroundColorR', + value: value, + ), + ); }); } - QueryBuilder backgroundColorRBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + backgroundColorRBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'backgroundColorR', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'backgroundColorR', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder borderColorAIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorAIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'borderColorA', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'borderColorA'), + ); }); } - QueryBuilder borderColorAIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorAIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'borderColorA', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'borderColorA'), + ); }); } - QueryBuilder borderColorAEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorAEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'borderColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'borderColorA', value: value), + ); }); } - QueryBuilder borderColorAGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorAGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'borderColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'borderColorA', + value: value, + ), + ); }); } - QueryBuilder borderColorALessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorALessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'borderColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'borderColorA', + value: value, + ), + ); }); } - QueryBuilder borderColorABetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorABetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'borderColorA', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'borderColorA', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder borderColorBIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorBIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'borderColorB', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'borderColorB'), + ); }); } - QueryBuilder borderColorBIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorBIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'borderColorB', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'borderColorB'), + ); }); } - QueryBuilder borderColorBEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorBEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'borderColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'borderColorB', value: value), + ); }); } - QueryBuilder borderColorBGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorBGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'borderColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'borderColorB', + value: value, + ), + ); }); } - QueryBuilder borderColorBLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorBLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'borderColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'borderColorB', + value: value, + ), + ); }); } - QueryBuilder borderColorBBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorBBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'borderColorB', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'borderColorB', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder borderColorGIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorGIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'borderColorG', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'borderColorG'), + ); }); } - QueryBuilder borderColorGIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorGIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'borderColorG', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'borderColorG'), + ); }); } - QueryBuilder borderColorGEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorGEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'borderColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'borderColorG', value: value), + ); }); } - QueryBuilder borderColorGGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorGGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'borderColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'borderColorG', + value: value, + ), + ); }); } - QueryBuilder borderColorGLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorGLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'borderColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'borderColorG', + value: value, + ), + ); }); } - QueryBuilder borderColorGBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorGBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'borderColorG', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'borderColorG', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder borderColorRIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorRIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'borderColorR', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'borderColorR'), + ); }); } - QueryBuilder borderColorRIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorRIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'borderColorR', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'borderColorR'), + ); }); } - QueryBuilder borderColorREqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorREqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'borderColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'borderColorR', value: value), + ); }); } - QueryBuilder borderColorRGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorRGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'borderColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'borderColorR', + value: value, + ), + ); }); } - QueryBuilder borderColorRLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorRLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'borderColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'borderColorR', + value: value, + ), + ); }); } - QueryBuilder borderColorRBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + borderColorRBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'borderColorR', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'borderColorR', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder fontSizeIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + fontSizeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'fontSize', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'fontSize'), + ); }); } - QueryBuilder fontSizeIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + fontSizeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'fontSize', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'fontSize'), + ); }); } - QueryBuilder fontSizeEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + fontSizeEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'fontSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'fontSize', value: value), + ); }); } - QueryBuilder fontSizeGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + fontSizeGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'fontSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'fontSize', + value: value, + ), + ); }); } - QueryBuilder fontSizeLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + fontSizeLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'fontSize', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'fontSize', + value: value, + ), + ); }); } - QueryBuilder fontSizeBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + fontSizeBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'fontSize', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'fontSize', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder textColorAIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorAIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'textColorA', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'textColorA'), + ); }); } - QueryBuilder textColorAIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorAIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'textColorA', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'textColorA'), + ); }); } - QueryBuilder textColorAEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorAEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'textColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'textColorA', value: value), + ); }); } - QueryBuilder textColorAGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorAGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'textColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'textColorA', + value: value, + ), + ); }); } - QueryBuilder textColorALessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorALessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'textColorA', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'textColorA', + value: value, + ), + ); }); } - QueryBuilder textColorABetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorABetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'textColorA', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'textColorA', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder textColorBIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorBIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'textColorB', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'textColorB'), + ); }); } - QueryBuilder textColorBIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorBIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'textColorB', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'textColorB'), + ); }); } - QueryBuilder textColorBEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorBEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'textColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'textColorB', value: value), + ); }); } - QueryBuilder textColorBGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorBGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'textColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'textColorB', + value: value, + ), + ); }); } - QueryBuilder textColorBLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorBLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'textColorB', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'textColorB', + value: value, + ), + ); }); } - QueryBuilder textColorBBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorBBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'textColorB', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'textColorB', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder textColorGIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorGIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'textColorG', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'textColorG'), + ); }); } - QueryBuilder textColorGIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorGIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'textColorG', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'textColorG'), + ); }); } - QueryBuilder textColorGEqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorGEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'textColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'textColorG', value: value), + ); }); } - QueryBuilder textColorGGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorGGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'textColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'textColorG', + value: value, + ), + ); }); } - QueryBuilder textColorGLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorGLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'textColorG', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'textColorG', + value: value, + ), + ); }); } - QueryBuilder textColorGBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorGBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'textColorG', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'textColorG', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder textColorRIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorRIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'textColorR', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'textColorR'), + ); }); } - QueryBuilder textColorRIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorRIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'textColorR', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'textColorR'), + ); }); } - QueryBuilder textColorREqualTo(int? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorREqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'textColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'textColorR', value: value), + ); }); } - QueryBuilder textColorRGreaterThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorRGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'textColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'textColorR', + value: value, + ), + ); }); } - QueryBuilder textColorRLessThan( - int? value, { - bool include = false, - }) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorRLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'textColorR', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'textColorR', + value: value, + ), + ); }); } - QueryBuilder textColorRBetween( + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + textColorRBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'textColorR', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'textColorR', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } - QueryBuilder useBoldIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + useBoldIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'useBold', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'useBold'), + ); }); } - QueryBuilder useBoldIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + useBoldIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'useBold', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'useBold'), + ); }); } - QueryBuilder useBoldEqualTo(bool? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + useBoldEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'useBold', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'useBold', value: value), + ); }); } - QueryBuilder useItalicIsNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + useItalicIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'useItalic', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'useItalic'), + ); }); } - QueryBuilder useItalicIsNotNull() { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + useItalicIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'useItalic', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'useItalic'), + ); }); } - QueryBuilder useItalicEqualTo(bool? value) { + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QAfterFilterCondition + > + useItalicEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'useItalic', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'useItalic', value: value), + ); }); } } -extension PlayerSubtitleSettingsQueryObject on QueryBuilder< - PlayerSubtitleSettings, PlayerSubtitleSettings, QFilterCondition> {} +extension PlayerSubtitleSettingsQueryObject + on + QueryBuilder< + PlayerSubtitleSettings, + PlayerSubtitleSettings, + QFilterCondition + > {} + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +const AlgorithmWeightsSchema = Schema( + name: r'AlgorithmWeights', + id: -2865436974642812672, + properties: { + r'genre': PropertySchema(id: 0, name: r'genre', type: IsarType.long), + r'setting': PropertySchema(id: 1, name: r'setting', type: IsarType.long), + r'synopsis': PropertySchema(id: 2, name: r'synopsis', type: IsarType.long), + r'theme': PropertySchema(id: 3, name: r'theme', type: IsarType.long), + }, + + estimateSize: _algorithmWeightsEstimateSize, + serialize: _algorithmWeightsSerialize, + deserialize: _algorithmWeightsDeserialize, + deserializeProp: _algorithmWeightsDeserializeProp, +); + +int _algorithmWeightsEstimateSize( + AlgorithmWeights object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + return bytesCount; +} + +void _algorithmWeightsSerialize( + AlgorithmWeights object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeLong(offsets[0], object.genre); + writer.writeLong(offsets[1], object.setting); + writer.writeLong(offsets[2], object.synopsis); + writer.writeLong(offsets[3], object.theme); +} + +AlgorithmWeights _algorithmWeightsDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = AlgorithmWeights( + genre: reader.readLongOrNull(offsets[0]), + setting: reader.readLongOrNull(offsets[1]), + synopsis: reader.readLongOrNull(offsets[2]), + theme: reader.readLongOrNull(offsets[3]), + ); + return object; +} + +P _algorithmWeightsDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readLongOrNull(offset)) as P; + case 1: + return (reader.readLongOrNull(offset)) as P; + case 2: + return (reader.readLongOrNull(offset)) as P; + case 3: + return (reader.readLongOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +extension AlgorithmWeightsQueryFilter + on QueryBuilder { + QueryBuilder + genreIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'genre'), + ); + }); + } + + QueryBuilder + genreIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'genre'), + ); + }); + } + + QueryBuilder + genreEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'genre', value: value), + ); + }); + } + + QueryBuilder + genreGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'genre', + value: value, + ), + ); + }); + } + + QueryBuilder + genreLessThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'genre', + value: value, + ), + ); + }); + } + + QueryBuilder + genreBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'genre', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } + + QueryBuilder + settingIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'setting'), + ); + }); + } + + QueryBuilder + settingIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'setting'), + ); + }); + } + + QueryBuilder + settingEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'setting', value: value), + ); + }); + } + + QueryBuilder + settingGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'setting', + value: value, + ), + ); + }); + } + + QueryBuilder + settingLessThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'setting', + value: value, + ), + ); + }); + } + + QueryBuilder + settingBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'setting', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } + + QueryBuilder + synopsisIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'synopsis'), + ); + }); + } + + QueryBuilder + synopsisIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'synopsis'), + ); + }); + } + + QueryBuilder + synopsisEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'synopsis', value: value), + ); + }); + } + + QueryBuilder + synopsisGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'synopsis', + value: value, + ), + ); + }); + } + + QueryBuilder + synopsisLessThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'synopsis', + value: value, + ), + ); + }); + } + + QueryBuilder + synopsisBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'synopsis', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } + + QueryBuilder + themeIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'theme'), + ); + }); + } + + QueryBuilder + themeIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'theme'), + ); + }); + } + + QueryBuilder + themeEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'theme', value: value), + ); + }); + } + + QueryBuilder + themeGreaterThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'theme', + value: value, + ), + ); + }); + } + + QueryBuilder + themeLessThan(int? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'theme', + value: value, + ), + ); + }); + } + + QueryBuilder + themeBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'theme', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); + }); + } +} + +extension AlgorithmWeightsQueryObject + on QueryBuilder {} diff --git a/lib/models/source.dart b/lib/models/source.dart index b564cf50..66184ac5 100644 --- a/lib/models/source.dart +++ b/lib/models/source.dart @@ -1,4 +1,7 @@ +import 'dart:convert'; + import 'package:isar/isar.dart'; +import 'package:mangayomi/eval/model/filter.dart'; import 'package:mangayomi/eval/model/m_source.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/settings.dart'; @@ -49,6 +52,15 @@ class Source { String? headers; + /// For Mihon ext + bool? supportLatest; + + /// For Mihon ext + String? filterList; + + /// For Mihon ext + String? preferenceList; + bool? isManga; @enumerated @@ -93,6 +105,9 @@ class Source { this.versionLast = "0.0.1", this.sourceCode = '', this.headers = '', + this.supportLatest, + this.filterList, + this.preferenceList, this.isManga, this.itemType = ItemType.manga, this.appMinVerReq = "", @@ -104,6 +119,10 @@ class Source { this.updatedAt = 0, }); + FilterList? getFilterList() => filterList != null + ? FilterList.fromJson(jsonDecode(filterList!) as Map) + : null; + Source.fromJson(Map json) { apiUrl = json['apiUrl']; appMinVerReq = json['appMinVerReq']; @@ -112,6 +131,9 @@ class Source { dateFormatLocale = json['dateFormatLocale']; hasCloudflare = json['hasCloudflare']; headers = json['headers']; + supportLatest = json['supportLatest']; + filterList = json['filterList']; + preferenceList = json['preferenceList']; iconUrl = json['iconUrl']; id = json['id']; isActive = json['isActive']; @@ -147,6 +169,9 @@ class Source { 'dateFormatLocale': dateFormatLocale, 'hasCloudflare': hasCloudflare, 'headers': headers, + 'supportLatest': supportLatest, + 'filterList': filterList, + 'preferenceList': preferenceList, 'iconUrl': iconUrl, 'id': id, 'isActive': isActive, @@ -191,4 +216,4 @@ class Source { } } -enum SourceCodeLanguage { dart, javascript } +enum SourceCodeLanguage { dart, javascript, mihon } diff --git a/lib/models/source.g.dart b/lib/models/source.g.dart index a2ea5965..bf2d532c 100644 --- a/lib/models/source.g.dart +++ b/lib/models/source.g.dart @@ -22,21 +22,13 @@ const SourceSchema = CollectionSchema( name: r'additionalParams', type: IsarType.string, ), - r'apiUrl': PropertySchema( - id: 1, - name: r'apiUrl', - type: IsarType.string, - ), + r'apiUrl': PropertySchema(id: 1, name: r'apiUrl', type: IsarType.string), r'appMinVerReq': PropertySchema( id: 2, name: r'appMinVerReq', type: IsarType.string, ), - r'baseUrl': PropertySchema( - id: 3, - name: r'baseUrl', - type: IsarType.string, - ), + r'baseUrl': PropertySchema(id: 3, name: r'baseUrl', type: IsarType.string), r'dateFormat': PropertySchema( id: 4, name: r'dateFormat', @@ -47,135 +39,100 @@ const SourceSchema = CollectionSchema( name: r'dateFormatLocale', type: IsarType.string, ), - r'hasCloudflare': PropertySchema( + r'filterList': PropertySchema( id: 6, + name: r'filterList', + type: IsarType.string, + ), + r'hasCloudflare': PropertySchema( + id: 7, name: r'hasCloudflare', type: IsarType.bool, ), - r'headers': PropertySchema( - id: 7, - name: r'headers', - type: IsarType.string, - ), - r'iconUrl': PropertySchema( - id: 8, - name: r'iconUrl', - type: IsarType.string, - ), - r'isActive': PropertySchema( - id: 9, - name: r'isActive', - type: IsarType.bool, - ), - r'isAdded': PropertySchema( - id: 10, - name: r'isAdded', - type: IsarType.bool, - ), + r'headers': PropertySchema(id: 8, name: r'headers', type: IsarType.string), + r'iconUrl': PropertySchema(id: 9, name: r'iconUrl', type: IsarType.string), + r'isActive': PropertySchema(id: 10, name: r'isActive', type: IsarType.bool), + r'isAdded': PropertySchema(id: 11, name: r'isAdded', type: IsarType.bool), r'isFullData': PropertySchema( - id: 11, + id: 12, name: r'isFullData', type: IsarType.bool, ), - r'isLocal': PropertySchema( - id: 12, - name: r'isLocal', - type: IsarType.bool, - ), - r'isManga': PropertySchema( - id: 13, - name: r'isManga', - type: IsarType.bool, - ), - r'isNsfw': PropertySchema( - id: 14, - name: r'isNsfw', - type: IsarType.bool, - ), + r'isLocal': PropertySchema(id: 13, name: r'isLocal', type: IsarType.bool), + r'isManga': PropertySchema(id: 14, name: r'isManga', type: IsarType.bool), + r'isNsfw': PropertySchema(id: 15, name: r'isNsfw', type: IsarType.bool), r'isObsolete': PropertySchema( - id: 15, + id: 16, name: r'isObsolete', type: IsarType.bool, ), - r'isPinned': PropertySchema( - id: 16, - name: r'isPinned', - type: IsarType.bool, - ), + r'isPinned': PropertySchema(id: 17, name: r'isPinned', type: IsarType.bool), r'isTorrent': PropertySchema( - id: 17, + id: 18, name: r'isTorrent', type: IsarType.bool, ), r'itemType': PropertySchema( - id: 18, + id: 19, name: r'itemType', type: IsarType.byte, enumMap: _SourceitemTypeEnumValueMap, ), - r'lang': PropertySchema( - id: 19, - name: r'lang', - type: IsarType.string, - ), - r'lastUsed': PropertySchema( - id: 20, - name: r'lastUsed', - type: IsarType.bool, - ), - r'name': PropertySchema( - id: 21, - name: r'name', - type: IsarType.string, - ), - r'notes': PropertySchema( - id: 22, - name: r'notes', + r'lang': PropertySchema(id: 20, name: r'lang', type: IsarType.string), + r'lastUsed': PropertySchema(id: 21, name: r'lastUsed', type: IsarType.bool), + r'name': PropertySchema(id: 22, name: r'name', type: IsarType.string), + r'notes': PropertySchema(id: 23, name: r'notes', type: IsarType.string), + r'preferenceList': PropertySchema( + id: 24, + name: r'preferenceList', type: IsarType.string, ), r'repo': PropertySchema( - id: 23, + id: 25, name: r'repo', type: IsarType.object, + target: r'Repo', ), r'sourceCode': PropertySchema( - id: 24, + id: 26, name: r'sourceCode', type: IsarType.string, ), r'sourceCodeLanguage': PropertySchema( - id: 25, + id: 27, name: r'sourceCodeLanguage', type: IsarType.byte, enumMap: _SourcesourceCodeLanguageEnumValueMap, ), r'sourceCodeUrl': PropertySchema( - id: 26, + id: 28, name: r'sourceCodeUrl', type: IsarType.string, ), + r'supportLatest': PropertySchema( + id: 29, + name: r'supportLatest', + type: IsarType.bool, + ), r'typeSource': PropertySchema( - id: 27, + id: 30, name: r'typeSource', type: IsarType.string, ), r'updatedAt': PropertySchema( - id: 28, + id: 31, name: r'updatedAt', type: IsarType.long, ), - r'version': PropertySchema( - id: 29, - name: r'version', - type: IsarType.string, - ), + r'version': PropertySchema(id: 32, name: r'version', type: IsarType.string), r'versionLast': PropertySchema( - id: 30, + id: 33, name: r'versionLast', type: IsarType.string, - ) + ), }, + estimateSize: _sourceEstimateSize, serialize: _sourceSerialize, deserialize: _sourceDeserialize, @@ -184,6 +141,7 @@ const SourceSchema = CollectionSchema( indexes: {}, links: {}, embeddedSchemas: {r'Repo': RepoSchema}, + getId: _sourceGetId, getLinks: _sourceGetLinks, attach: _sourceAttach, @@ -232,6 +190,12 @@ int _sourceEstimateSize( bytesCount += 3 + value.length * 3; } } + { + final value = object.filterList; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } { final value = object.headers; if (value != null) { @@ -262,6 +226,12 @@ int _sourceEstimateSize( bytesCount += 3 + value.length * 3; } } + { + final value = object.preferenceList; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } { final value = object.repo; if (value != null) { @@ -314,36 +284,39 @@ void _sourceSerialize( writer.writeString(offsets[3], object.baseUrl); writer.writeString(offsets[4], object.dateFormat); writer.writeString(offsets[5], object.dateFormatLocale); - writer.writeBool(offsets[6], object.hasCloudflare); - writer.writeString(offsets[7], object.headers); - writer.writeString(offsets[8], object.iconUrl); - writer.writeBool(offsets[9], object.isActive); - writer.writeBool(offsets[10], object.isAdded); - writer.writeBool(offsets[11], object.isFullData); - writer.writeBool(offsets[12], object.isLocal); - writer.writeBool(offsets[13], object.isManga); - writer.writeBool(offsets[14], object.isNsfw); - writer.writeBool(offsets[15], object.isObsolete); - writer.writeBool(offsets[16], object.isPinned); - writer.writeBool(offsets[17], object.isTorrent); - writer.writeByte(offsets[18], object.itemType.index); - writer.writeString(offsets[19], object.lang); - writer.writeBool(offsets[20], object.lastUsed); - writer.writeString(offsets[21], object.name); - writer.writeString(offsets[22], object.notes); + writer.writeString(offsets[6], object.filterList); + writer.writeBool(offsets[7], object.hasCloudflare); + writer.writeString(offsets[8], object.headers); + writer.writeString(offsets[9], object.iconUrl); + writer.writeBool(offsets[10], object.isActive); + writer.writeBool(offsets[11], object.isAdded); + writer.writeBool(offsets[12], object.isFullData); + writer.writeBool(offsets[13], object.isLocal); + writer.writeBool(offsets[14], object.isManga); + writer.writeBool(offsets[15], object.isNsfw); + writer.writeBool(offsets[16], object.isObsolete); + writer.writeBool(offsets[17], object.isPinned); + writer.writeBool(offsets[18], object.isTorrent); + writer.writeByte(offsets[19], object.itemType.index); + writer.writeString(offsets[20], object.lang); + writer.writeBool(offsets[21], object.lastUsed); + writer.writeString(offsets[22], object.name); + writer.writeString(offsets[23], object.notes); + writer.writeString(offsets[24], object.preferenceList); writer.writeObject( - offsets[23], + offsets[25], allOffsets, RepoSchema.serialize, object.repo, ); - writer.writeString(offsets[24], object.sourceCode); - writer.writeByte(offsets[25], object.sourceCodeLanguage.index); - writer.writeString(offsets[26], object.sourceCodeUrl); - writer.writeString(offsets[27], object.typeSource); - writer.writeLong(offsets[28], object.updatedAt); - writer.writeString(offsets[29], object.version); - writer.writeString(offsets[30], object.versionLast); + writer.writeString(offsets[26], object.sourceCode); + writer.writeByte(offsets[27], object.sourceCodeLanguage.index); + writer.writeString(offsets[28], object.sourceCodeUrl); + writer.writeBool(offsets[29], object.supportLatest); + writer.writeString(offsets[30], object.typeSource); + writer.writeLong(offsets[31], object.updatedAt); + writer.writeString(offsets[32], object.version); + writer.writeString(offsets[33], object.versionLast); } Source _sourceDeserialize( @@ -359,38 +332,44 @@ Source _sourceDeserialize( baseUrl: reader.readStringOrNull(offsets[3]), dateFormat: reader.readStringOrNull(offsets[4]), dateFormatLocale: reader.readStringOrNull(offsets[5]), - hasCloudflare: reader.readBoolOrNull(offsets[6]), - headers: reader.readStringOrNull(offsets[7]), - iconUrl: reader.readStringOrNull(offsets[8]), + filterList: reader.readStringOrNull(offsets[6]), + hasCloudflare: reader.readBoolOrNull(offsets[7]), + headers: reader.readStringOrNull(offsets[8]), + iconUrl: reader.readStringOrNull(offsets[9]), id: id, - isActive: reader.readBoolOrNull(offsets[9]), - isAdded: reader.readBoolOrNull(offsets[10]), - isFullData: reader.readBoolOrNull(offsets[11]), - isLocal: reader.readBoolOrNull(offsets[12]), - isManga: reader.readBoolOrNull(offsets[13]), - isNsfw: reader.readBoolOrNull(offsets[14]), - isObsolete: reader.readBoolOrNull(offsets[15]), - isPinned: reader.readBoolOrNull(offsets[16]), - itemType: _SourceitemTypeValueEnumMap[reader.readByteOrNull(offsets[18])] ?? + isActive: reader.readBoolOrNull(offsets[10]), + isAdded: reader.readBoolOrNull(offsets[11]), + isFullData: reader.readBoolOrNull(offsets[12]), + isLocal: reader.readBoolOrNull(offsets[13]), + isManga: reader.readBoolOrNull(offsets[14]), + isNsfw: reader.readBoolOrNull(offsets[15]), + isObsolete: reader.readBoolOrNull(offsets[16]), + isPinned: reader.readBoolOrNull(offsets[17]), + itemType: + _SourceitemTypeValueEnumMap[reader.readByteOrNull(offsets[19])] ?? ItemType.manga, - lang: reader.readStringOrNull(offsets[19]), - lastUsed: reader.readBoolOrNull(offsets[20]), - name: reader.readStringOrNull(offsets[21]), - notes: reader.readStringOrNull(offsets[22]), + lang: reader.readStringOrNull(offsets[20]), + lastUsed: reader.readBoolOrNull(offsets[21]), + name: reader.readStringOrNull(offsets[22]), + notes: reader.readStringOrNull(offsets[23]), + preferenceList: reader.readStringOrNull(offsets[24]), repo: reader.readObjectOrNull( - offsets[23], + offsets[25], RepoSchema.deserialize, allOffsets, ), - sourceCode: reader.readStringOrNull(offsets[24]), - sourceCodeUrl: reader.readStringOrNull(offsets[26]), - typeSource: reader.readStringOrNull(offsets[27]), - updatedAt: reader.readLongOrNull(offsets[28]), - version: reader.readStringOrNull(offsets[29]), - versionLast: reader.readStringOrNull(offsets[30]), + sourceCode: reader.readStringOrNull(offsets[26]), + sourceCodeUrl: reader.readStringOrNull(offsets[28]), + supportLatest: reader.readBoolOrNull(offsets[29]), + typeSource: reader.readStringOrNull(offsets[30]), + updatedAt: reader.readLongOrNull(offsets[31]), + version: reader.readStringOrNull(offsets[32]), + versionLast: reader.readStringOrNull(offsets[33]), ); - object.sourceCodeLanguage = _SourcesourceCodeLanguageValueEnumMap[ - reader.readByteOrNull(offsets[25])] ?? + object.sourceCodeLanguage = + _SourcesourceCodeLanguageValueEnumMap[reader.readByteOrNull( + offsets[27], + )] ?? SourceCodeLanguage.dart; return object; } @@ -415,13 +394,13 @@ P _sourceDeserializeProp

( case 5: return (reader.readStringOrNull(offset)) as P; case 6: - return (reader.readBoolOrNull(offset)) as P; - case 7: return (reader.readStringOrNull(offset)) as P; + case 7: + return (reader.readBoolOrNull(offset)) as P; case 8: return (reader.readStringOrNull(offset)) as P; case 9: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 10: return (reader.readBoolOrNull(offset)) as P; case 11: @@ -437,50 +416,56 @@ P _sourceDeserializeProp

( case 16: return (reader.readBoolOrNull(offset)) as P; case 17: - return (reader.readBool(offset)) as P; - case 18: - return (_SourceitemTypeValueEnumMap[reader.readByteOrNull(offset)] ?? - ItemType.manga) as P; - case 19: - return (reader.readStringOrNull(offset)) as P; - case 20: return (reader.readBoolOrNull(offset)) as P; - case 21: + case 18: + return (reader.readBool(offset)) as P; + case 19: + return (_SourceitemTypeValueEnumMap[reader.readByteOrNull(offset)] ?? + ItemType.manga) + as P; + case 20: return (reader.readStringOrNull(offset)) as P; + case 21: + return (reader.readBoolOrNull(offset)) as P; case 22: return (reader.readStringOrNull(offset)) as P; case 23: - return (reader.readObjectOrNull( - offset, - RepoSchema.deserialize, - allOffsets, - )) as P; + return (reader.readStringOrNull(offset)) as P; case 24: return (reader.readStringOrNull(offset)) as P; case 25: - return (_SourcesourceCodeLanguageValueEnumMap[ - reader.readByteOrNull(offset)] ?? - SourceCodeLanguage.dart) as P; + return (reader.readObjectOrNull( + offset, + RepoSchema.deserialize, + allOffsets, + )) + as P; case 26: return (reader.readStringOrNull(offset)) as P; case 27: - return (reader.readStringOrNull(offset)) as P; + return (_SourcesourceCodeLanguageValueEnumMap[reader.readByteOrNull( + offset, + )] ?? + SourceCodeLanguage.dart) + as P; case 28: - return (reader.readLongOrNull(offset)) as P; - case 29: return (reader.readStringOrNull(offset)) as P; + case 29: + return (reader.readBoolOrNull(offset)) as P; case 30: return (reader.readStringOrNull(offset)) as P; + case 31: + return (reader.readLongOrNull(offset)) as P; + case 32: + return (reader.readStringOrNull(offset)) as P; + case 33: + return (reader.readStringOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); } } -const _SourceitemTypeEnumValueMap = { - 'manga': 0, - 'anime': 1, - 'novel': 2, -}; +const _SourceitemTypeEnumValueMap = {'manga': 0, 'anime': 1, 'novel': 2}; const _SourceitemTypeValueEnumMap = { 0: ItemType.manga, 1: ItemType.anime, @@ -489,10 +474,12 @@ const _SourceitemTypeValueEnumMap = { const _SourcesourceCodeLanguageEnumValueMap = { 'dart': 0, 'javascript': 1, + 'mihon': 2, }; const _SourcesourceCodeLanguageValueEnumMap = { 0: SourceCodeLanguage.dart, 1: SourceCodeLanguage.javascript, + 2: SourceCodeLanguage.mihon, }; Id _sourceGetId(Source object) { @@ -518,10 +505,7 @@ extension SourceQueryWhereSort on QueryBuilder { extension SourceQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -547,8 +531,10 @@ extension SourceQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -556,8 +542,10 @@ extension SourceQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -572,12 +560,14 @@ extension SourceQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -585,18 +575,18 @@ extension SourceQueryWhere on QueryBuilder { extension SourceQueryFilter on QueryBuilder { QueryBuilder additionalParamsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'additionalParams', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'additionalParams'), + ); }); } QueryBuilder - additionalParamsIsNotNull() { + additionalParamsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'additionalParams', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'additionalParams'), + ); }); } @@ -605,27 +595,31 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'additionalParams', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'additionalParams', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - additionalParamsGreaterThan( + additionalParamsGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'additionalParams', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'additionalParams', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -635,12 +629,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'additionalParams', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'additionalParams', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -652,28 +648,29 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'additionalParams', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'additionalParams', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - additionalParamsStartsWith( - String value, { - bool caseSensitive = true, - }) { + additionalParamsStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'additionalParams', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'additionalParams', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -682,71 +679,77 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'additionalParams', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'additionalParams', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder additionalParamsContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'additionalParams', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'additionalParams', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder additionalParamsMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'additionalParams', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'additionalParams', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - additionalParamsIsEmpty() { + additionalParamsIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'additionalParams', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'additionalParams', value: ''), + ); }); } QueryBuilder - additionalParamsIsNotEmpty() { + additionalParamsIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'additionalParams', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'additionalParams', value: ''), + ); }); } QueryBuilder apiUrlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'apiUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'apiUrl'), + ); }); } QueryBuilder apiUrlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'apiUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'apiUrl'), + ); }); } @@ -755,11 +758,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'apiUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'apiUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -769,12 +774,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'apiUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'apiUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -784,12 +791,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'apiUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'apiUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -801,14 +810,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'apiUrl', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'apiUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -817,11 +828,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'apiUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'apiUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -830,69 +843,75 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'apiUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'apiUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder apiUrlContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'apiUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'apiUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder apiUrlMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'apiUrl', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'apiUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder apiUrlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'apiUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'apiUrl', value: ''), + ); }); } QueryBuilder apiUrlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'apiUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'apiUrl', value: ''), + ); }); } QueryBuilder appMinVerReqIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'appMinVerReq', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'appMinVerReq'), + ); }); } QueryBuilder appMinVerReqIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'appMinVerReq', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'appMinVerReq'), + ); }); } @@ -901,11 +920,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'appMinVerReq', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'appMinVerReq', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -915,12 +936,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'appMinVerReq', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'appMinVerReq', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -930,12 +953,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'appMinVerReq', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'appMinVerReq', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -947,14 +972,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'appMinVerReq', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'appMinVerReq', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -963,11 +990,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'appMinVerReq', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'appMinVerReq', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -976,69 +1005,75 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'appMinVerReq', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'appMinVerReq', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder appMinVerReqContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'appMinVerReq', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'appMinVerReq', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder appMinVerReqMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'appMinVerReq', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'appMinVerReq', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder appMinVerReqIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'appMinVerReq', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'appMinVerReq', value: ''), + ); }); } QueryBuilder appMinVerReqIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'appMinVerReq', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'appMinVerReq', value: ''), + ); }); } QueryBuilder baseUrlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'baseUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'baseUrl'), + ); }); } QueryBuilder baseUrlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'baseUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'baseUrl'), + ); }); } @@ -1047,11 +1082,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'baseUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'baseUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1061,12 +1098,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'baseUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'baseUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1076,12 +1115,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'baseUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'baseUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1093,14 +1134,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'baseUrl', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'baseUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1109,11 +1152,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'baseUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'baseUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1122,69 +1167,75 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'baseUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'baseUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder baseUrlContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'baseUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'baseUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder baseUrlMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'baseUrl', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'baseUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder baseUrlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'baseUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'baseUrl', value: ''), + ); }); } QueryBuilder baseUrlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'baseUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'baseUrl', value: ''), + ); }); } QueryBuilder dateFormatIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'dateFormat', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'dateFormat'), + ); }); } QueryBuilder dateFormatIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'dateFormat', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'dateFormat'), + ); }); } @@ -1193,11 +1244,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1207,12 +1260,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1222,12 +1277,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1239,14 +1296,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'dateFormat', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'dateFormat', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1255,11 +1314,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1268,70 +1329,76 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateFormatContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'dateFormat', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'dateFormat', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateFormatMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'dateFormat', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'dateFormat', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateFormatIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateFormat', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'dateFormat', value: ''), + ); }); } QueryBuilder dateFormatIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'dateFormat', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'dateFormat', value: ''), + ); }); } QueryBuilder dateFormatLocaleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'dateFormatLocale', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'dateFormatLocale'), + ); }); } QueryBuilder - dateFormatLocaleIsNotNull() { + dateFormatLocaleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'dateFormatLocale', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'dateFormatLocale'), + ); }); } @@ -1340,27 +1407,31 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateFormatLocale', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'dateFormatLocale', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dateFormatLocaleGreaterThan( + dateFormatLocaleGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dateFormatLocale', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'dateFormatLocale', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1370,12 +1441,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dateFormatLocale', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'dateFormatLocale', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1387,28 +1460,29 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'dateFormatLocale', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'dateFormatLocale', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dateFormatLocaleStartsWith( - String value, { - bool caseSensitive = true, - }) { + dateFormatLocaleStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'dateFormatLocale', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'dateFormatLocale', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1417,97 +1491,265 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'dateFormatLocale', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'dateFormatLocale', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateFormatLocaleContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'dateFormatLocale', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'dateFormatLocale', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateFormatLocaleMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'dateFormatLocale', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'dateFormatLocale', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - dateFormatLocaleIsEmpty() { + dateFormatLocaleIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'dateFormatLocale', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'dateFormatLocale', value: ''), + ); }); } QueryBuilder - dateFormatLocaleIsNotEmpty() { + dateFormatLocaleIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'dateFormatLocale', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'dateFormatLocale', value: ''), + ); + }); + } + + QueryBuilder filterListIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'filterList'), + ); + }); + } + + QueryBuilder filterListIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'filterList'), + ); + }); + } + + QueryBuilder filterListEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'filterList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder filterListGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'filterList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder filterListLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'filterList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder filterListBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'filterList', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder filterListStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'filterList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder filterListEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'filterList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder filterListContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'filterList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder filterListMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'filterList', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder filterListIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'filterList', value: ''), + ); + }); + } + + QueryBuilder filterListIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'filterList', value: ''), + ); }); } QueryBuilder hasCloudflareIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'hasCloudflare', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'hasCloudflare'), + ); }); } QueryBuilder hasCloudflareIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'hasCloudflare', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'hasCloudflare'), + ); }); } QueryBuilder hasCloudflareEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'hasCloudflare', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'hasCloudflare', value: value), + ); }); } QueryBuilder headersIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'headers', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'headers'), + ); }); } QueryBuilder headersIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'headers', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'headers'), + ); }); } @@ -1516,11 +1758,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1530,12 +1774,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1545,12 +1791,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1562,14 +1810,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'headers', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'headers', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1578,11 +1828,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1591,69 +1843,75 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder headersContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'headers', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'headers', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder headersMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'headers', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'headers', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder headersIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'headers', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'headers', value: ''), + ); }); } QueryBuilder headersIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'headers', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'headers', value: ''), + ); }); } QueryBuilder iconUrlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'iconUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'iconUrl'), + ); }); } QueryBuilder iconUrlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'iconUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'iconUrl'), + ); }); } @@ -1662,11 +1920,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'iconUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'iconUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1676,12 +1936,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'iconUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'iconUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1691,12 +1953,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'iconUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'iconUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1708,14 +1972,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'iconUrl', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'iconUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1724,11 +1990,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'iconUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'iconUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1737,78 +2005,83 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'iconUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'iconUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder iconUrlContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'iconUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'iconUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder iconUrlMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'iconUrl', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'iconUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder iconUrlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'iconUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'iconUrl', value: ''), + ); }); } QueryBuilder iconUrlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'iconUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'iconUrl', value: ''), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -1817,11 +2090,13 @@ extension SourceQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -1830,11 +2105,13 @@ extension SourceQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -1845,241 +2122,243 @@ extension SourceQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder isActiveIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isActive', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isActive'), + ); }); } QueryBuilder isActiveIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isActive', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isActive'), + ); }); } QueryBuilder isActiveEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isActive', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isActive', value: value), + ); }); } QueryBuilder isAddedIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isAdded', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isAdded'), + ); }); } QueryBuilder isAddedIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isAdded', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isAdded'), + ); }); } QueryBuilder isAddedEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isAdded', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isAdded', value: value), + ); }); } QueryBuilder isFullDataIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isFullData', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isFullData'), + ); }); } QueryBuilder isFullDataIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isFullData', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isFullData'), + ); }); } QueryBuilder isFullDataEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isFullData', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isFullData', value: value), + ); }); } QueryBuilder isLocalIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isLocal', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isLocal'), + ); }); } QueryBuilder isLocalIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isLocal', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isLocal'), + ); }); } QueryBuilder isLocalEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isLocal', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isLocal', value: value), + ); }); } QueryBuilder isMangaIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isManga', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isManga'), + ); }); } QueryBuilder isMangaIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isManga', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isManga'), + ); }); } QueryBuilder isMangaEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isManga', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isManga', value: value), + ); }); } QueryBuilder isNsfwIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isNsfw', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isNsfw'), + ); }); } QueryBuilder isNsfwIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isNsfw', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isNsfw'), + ); }); } QueryBuilder isNsfwEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isNsfw', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isNsfw', value: value), + ); }); } QueryBuilder isObsoleteIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isObsolete', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isObsolete'), + ); }); } QueryBuilder isObsoleteIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isObsolete', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isObsolete'), + ); }); } QueryBuilder isObsoleteEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isObsolete', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isObsolete', value: value), + ); }); } QueryBuilder isPinnedIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isPinned', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isPinned'), + ); }); } QueryBuilder isPinnedIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isPinned', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isPinned'), + ); }); } QueryBuilder isPinnedEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isPinned', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isPinned', value: value), + ); }); } QueryBuilder isTorrentEqualTo( - bool value) { + bool value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isTorrent', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isTorrent', value: value), + ); }); } QueryBuilder itemTypeEqualTo( - ItemType value) { + ItemType value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'itemType', value: value), + ); }); } @@ -2088,11 +2367,13 @@ extension SourceQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'itemType', + value: value, + ), + ); }); } @@ -2101,11 +2382,13 @@ extension SourceQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'itemType', + value: value, + ), + ); }); } @@ -2116,29 +2399,31 @@ extension SourceQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'itemType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'itemType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder langIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lang', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lang'), + ); }); } QueryBuilder langIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lang', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lang'), + ); }); } @@ -2147,11 +2432,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2161,12 +2448,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2176,12 +2465,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2193,14 +2484,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lang', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lang', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2209,11 +2502,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2222,94 +2517,101 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder langContains(String value, - {bool caseSensitive = true}) { + QueryBuilder langContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'lang', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'lang', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder langMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'lang', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'lang', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder langIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lang', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lang', value: ''), + ); }); } QueryBuilder langIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'lang', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'lang', value: ''), + ); }); } QueryBuilder lastUsedIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastUsed', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastUsed'), + ); }); } QueryBuilder lastUsedIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastUsed', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lastUsed'), + ); }); } QueryBuilder lastUsedEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastUsed', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lastUsed', value: value), + ); }); } QueryBuilder nameIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'name'), + ); }); } QueryBuilder nameIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'name', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'name'), + ); }); } @@ -2318,11 +2620,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2332,12 +2636,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2347,12 +2653,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2364,14 +2672,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'name', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2380,11 +2690,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2393,68 +2705,75 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder nameContains(String value, - {bool caseSensitive = true}) { + QueryBuilder nameContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'name', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'name', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder nameIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'name', value: ''), + ); }); } QueryBuilder nameIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'name', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'name', value: ''), + ); }); } QueryBuilder notesIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'notes', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'notes'), + ); }); } QueryBuilder notesIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'notes', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'notes'), + ); }); } @@ -2463,11 +2782,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'notes', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'notes', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2477,12 +2798,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'notes', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'notes', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2492,12 +2815,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'notes', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'notes', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2509,14 +2834,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'notes', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'notes', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2525,11 +2852,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'notes', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'notes', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2538,85 +2867,255 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'notes', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'notes', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder notesContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'notes', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'notes', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder notesMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'notes', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'notes', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder notesIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'notes', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'notes', value: ''), + ); }); } QueryBuilder notesIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'notes', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'notes', value: ''), + ); + }); + } + + QueryBuilder preferenceListIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'preferenceList'), + ); + }); + } + + QueryBuilder + preferenceListIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'preferenceList'), + ); + }); + } + + QueryBuilder preferenceListEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'preferenceList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder preferenceListGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'preferenceList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder preferenceListLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'preferenceList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder preferenceListBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.between( + property: r'preferenceList', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder preferenceListStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'preferenceList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder preferenceListEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'preferenceList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder preferenceListContains( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.contains( + property: r'preferenceList', + value: value, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder preferenceListMatches( + String pattern, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.matches( + property: r'preferenceList', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); + }); + } + + QueryBuilder preferenceListIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'preferenceList', value: ''), + ); + }); + } + + QueryBuilder + preferenceListIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'preferenceList', value: ''), + ); }); } QueryBuilder repoIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'repo', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'repo'), + ); }); } QueryBuilder repoIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'repo', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'repo'), + ); }); } QueryBuilder sourceCodeIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sourceCode', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sourceCode'), + ); }); } QueryBuilder sourceCodeIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sourceCode', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sourceCode'), + ); }); } @@ -2625,11 +3124,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sourceCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'sourceCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2639,12 +3140,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'sourceCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'sourceCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2654,12 +3157,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'sourceCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'sourceCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2671,14 +3176,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'sourceCode', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'sourceCode', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2687,11 +3194,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'sourceCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'sourceCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2700,91 +3209,98 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'sourceCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'sourceCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder sourceCodeContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'sourceCode', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'sourceCode', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder sourceCodeMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'sourceCode', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'sourceCode', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder sourceCodeIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sourceCode', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'sourceCode', value: ''), + ); }); } QueryBuilder sourceCodeIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'sourceCode', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'sourceCode', value: ''), + ); }); } QueryBuilder sourceCodeLanguageEqualTo( - SourceCodeLanguage value) { + SourceCodeLanguage value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sourceCodeLanguage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'sourceCodeLanguage', value: value), + ); }); } QueryBuilder - sourceCodeLanguageGreaterThan( + sourceCodeLanguageGreaterThan( SourceCodeLanguage value, { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'sourceCodeLanguage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'sourceCodeLanguage', + value: value, + ), + ); }); } QueryBuilder - sourceCodeLanguageLessThan( - SourceCodeLanguage value, { - bool include = false, - }) { + sourceCodeLanguageLessThan(SourceCodeLanguage value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'sourceCodeLanguage', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'sourceCodeLanguage', + value: value, + ), + ); }); } @@ -2795,29 +3311,31 @@ extension SourceQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'sourceCodeLanguage', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'sourceCodeLanguage', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder sourceCodeUrlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'sourceCodeUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'sourceCodeUrl'), + ); }); } QueryBuilder sourceCodeUrlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'sourceCodeUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'sourceCodeUrl'), + ); }); } @@ -2826,11 +3344,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sourceCodeUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'sourceCodeUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2840,12 +3360,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'sourceCodeUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'sourceCodeUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2855,12 +3377,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'sourceCodeUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'sourceCodeUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2872,14 +3396,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'sourceCodeUrl', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'sourceCodeUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2888,11 +3414,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'sourceCodeUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'sourceCodeUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2901,70 +3429,102 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'sourceCodeUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'sourceCodeUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder sourceCodeUrlContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'sourceCodeUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'sourceCodeUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder sourceCodeUrlMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'sourceCodeUrl', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'sourceCodeUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder sourceCodeUrlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'sourceCodeUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'sourceCodeUrl', value: ''), + ); }); } QueryBuilder - sourceCodeUrlIsNotEmpty() { + sourceCodeUrlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'sourceCodeUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'sourceCodeUrl', value: ''), + ); + }); + } + + QueryBuilder supportLatestIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'supportLatest'), + ); + }); + } + + QueryBuilder supportLatestIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'supportLatest'), + ); + }); + } + + QueryBuilder supportLatestEqualTo( + bool? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'supportLatest', value: value), + ); }); } QueryBuilder typeSourceIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'typeSource', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'typeSource'), + ); }); } QueryBuilder typeSourceIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'typeSource', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'typeSource'), + ); }); } @@ -2973,11 +3533,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'typeSource', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'typeSource', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -2987,12 +3549,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'typeSource', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'typeSource', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3002,12 +3566,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'typeSource', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'typeSource', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3019,14 +3585,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'typeSource', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'typeSource', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3035,11 +3603,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'typeSource', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'typeSource', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3048,79 +3618,85 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'typeSource', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'typeSource', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder typeSourceContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'typeSource', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'typeSource', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder typeSourceMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'typeSource', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'typeSource', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder typeSourceIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'typeSource', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'typeSource', value: ''), + ); }); } QueryBuilder typeSourceIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'typeSource', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'typeSource', value: ''), + ); }); } QueryBuilder updatedAtIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); }); } @@ -3129,11 +3705,13 @@ extension SourceQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -3142,11 +3720,13 @@ extension SourceQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -3157,29 +3737,31 @@ extension SourceQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'updatedAt', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder versionIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'version', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'version'), + ); }); } QueryBuilder versionIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'version', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'version'), + ); }); } @@ -3188,11 +3770,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'version', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'version', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3202,12 +3786,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'version', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'version', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3217,12 +3803,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'version', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'version', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3234,14 +3822,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'version', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'version', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3250,11 +3840,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'version', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'version', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3263,69 +3855,75 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'version', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'version', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder versionContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'version', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'version', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder versionMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'version', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'version', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder versionIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'version', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'version', value: ''), + ); }); } QueryBuilder versionIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'version', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'version', value: ''), + ); }); } QueryBuilder versionLastIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'versionLast', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'versionLast'), + ); }); } QueryBuilder versionLastIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'versionLast', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'versionLast'), + ); }); } @@ -3334,11 +3932,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'versionLast', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'versionLast', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3348,12 +3948,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'versionLast', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'versionLast', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3363,12 +3965,14 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'versionLast', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'versionLast', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3380,14 +3984,16 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'versionLast', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'versionLast', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3396,11 +4002,13 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'versionLast', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'versionLast', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -3409,60 +4017,67 @@ extension SourceQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'versionLast', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'versionLast', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder versionLastContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'versionLast', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'versionLast', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder versionLastMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'versionLast', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'versionLast', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder versionLastIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'versionLast', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'versionLast', value: ''), + ); }); } QueryBuilder versionLastIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'versionLast', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'versionLast', value: ''), + ); }); } } extension SourceQueryObject on QueryBuilder { QueryBuilder repo( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.object(q, r'repo'); }); @@ -3544,6 +4159,18 @@ extension SourceQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByFilterList() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'filterList', Sort.asc); + }); + } + + QueryBuilder sortByFilterListDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'filterList', Sort.desc); + }); + } + QueryBuilder sortByHasCloudflare() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'hasCloudflare', Sort.asc); @@ -3748,6 +4375,18 @@ extension SourceQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByPreferenceList() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'preferenceList', Sort.asc); + }); + } + + QueryBuilder sortByPreferenceListDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'preferenceList', Sort.desc); + }); + } + QueryBuilder sortBySourceCode() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceCode', Sort.asc); @@ -3784,6 +4423,18 @@ extension SourceQuerySortBy on QueryBuilder { }); } + QueryBuilder sortBySupportLatest() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'supportLatest', Sort.asc); + }); + } + + QueryBuilder sortBySupportLatestDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'supportLatest', Sort.desc); + }); + } + QueryBuilder sortByTypeSource() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'typeSource', Sort.asc); @@ -3906,6 +4557,18 @@ extension SourceQuerySortThenBy on QueryBuilder { }); } + QueryBuilder thenByFilterList() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'filterList', Sort.asc); + }); + } + + QueryBuilder thenByFilterListDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'filterList', Sort.desc); + }); + } + QueryBuilder thenByHasCloudflare() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'hasCloudflare', Sort.asc); @@ -4122,6 +4785,18 @@ extension SourceQuerySortThenBy on QueryBuilder { }); } + QueryBuilder thenByPreferenceList() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'preferenceList', Sort.asc); + }); + } + + QueryBuilder thenByPreferenceListDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'preferenceList', Sort.desc); + }); + } + QueryBuilder thenBySourceCode() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'sourceCode', Sort.asc); @@ -4158,6 +4833,18 @@ extension SourceQuerySortThenBy on QueryBuilder { }); } + QueryBuilder thenBySupportLatest() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'supportLatest', Sort.asc); + }); + } + + QueryBuilder thenBySupportLatestDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'supportLatest', Sort.desc); + }); + } + QueryBuilder thenByTypeSource() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'typeSource', Sort.asc); @@ -4208,47 +4895,65 @@ extension SourceQuerySortThenBy on QueryBuilder { } extension SourceQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByAdditionalParams( - {bool caseSensitive = true}) { + QueryBuilder distinctByAdditionalParams({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'additionalParams', - caseSensitive: caseSensitive); + return query.addDistinctBy( + r'additionalParams', + caseSensitive: caseSensitive, + ); }); } - QueryBuilder distinctByApiUrl( - {bool caseSensitive = true}) { + QueryBuilder distinctByApiUrl({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'apiUrl', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByAppMinVerReq( - {bool caseSensitive = true}) { + QueryBuilder distinctByAppMinVerReq({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'appMinVerReq', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByBaseUrl( - {bool caseSensitive = true}) { + QueryBuilder distinctByBaseUrl({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'baseUrl', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByDateFormat( - {bool caseSensitive = true}) { + QueryBuilder distinctByDateFormat({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'dateFormat', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByDateFormatLocale( - {bool caseSensitive = true}) { + QueryBuilder distinctByDateFormatLocale({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'dateFormatLocale', - caseSensitive: caseSensitive); + return query.addDistinctBy( + r'dateFormatLocale', + caseSensitive: caseSensitive, + ); + }); + } + + QueryBuilder distinctByFilterList({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'filterList', caseSensitive: caseSensitive); }); } @@ -4258,15 +4963,17 @@ extension SourceQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByHeaders( - {bool caseSensitive = true}) { + QueryBuilder distinctByHeaders({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'headers', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByIconUrl( - {bool caseSensitive = true}) { + QueryBuilder distinctByIconUrl({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'iconUrl', caseSensitive: caseSensitive); }); @@ -4332,8 +5039,9 @@ extension SourceQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByLang( - {bool caseSensitive = true}) { + QueryBuilder distinctByLang({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'lang', caseSensitive: caseSensitive); }); @@ -4345,22 +5053,36 @@ extension SourceQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByName( - {bool caseSensitive = true}) { + QueryBuilder distinctByName({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'name', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByNotes( - {bool caseSensitive = true}) { + QueryBuilder distinctByNotes({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'notes', caseSensitive: caseSensitive); }); } - QueryBuilder distinctBySourceCode( - {bool caseSensitive = true}) { + QueryBuilder distinctByPreferenceList({ + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy( + r'preferenceList', + caseSensitive: caseSensitive, + ); + }); + } + + QueryBuilder distinctBySourceCode({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'sourceCode', caseSensitive: caseSensitive); }); @@ -4372,16 +5094,26 @@ extension SourceQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctBySourceCodeUrl( - {bool caseSensitive = true}) { + QueryBuilder distinctBySourceCodeUrl({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'sourceCodeUrl', - caseSensitive: caseSensitive); + return query.addDistinctBy( + r'sourceCodeUrl', + caseSensitive: caseSensitive, + ); }); } - QueryBuilder distinctByTypeSource( - {bool caseSensitive = true}) { + QueryBuilder distinctBySupportLatest() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'supportLatest'); + }); + } + + QueryBuilder distinctByTypeSource({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'typeSource', caseSensitive: caseSensitive); }); @@ -4393,15 +5125,17 @@ extension SourceQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByVersion( - {bool caseSensitive = true}) { + QueryBuilder distinctByVersion({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'version', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByVersionLast( - {bool caseSensitive = true}) { + QueryBuilder distinctByVersionLast({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'versionLast', caseSensitive: caseSensitive); }); @@ -4451,6 +5185,12 @@ extension SourceQueryProperty on QueryBuilder { }); } + QueryBuilder filterListProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'filterList'); + }); + } + QueryBuilder hasCloudflareProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'hasCloudflare'); @@ -4553,6 +5293,12 @@ extension SourceQueryProperty on QueryBuilder { }); } + QueryBuilder preferenceListProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'preferenceList'); + }); + } + QueryBuilder repoProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'repo'); @@ -4566,7 +5312,7 @@ extension SourceQueryProperty on QueryBuilder { } QueryBuilder - sourceCodeLanguageProperty() { + sourceCodeLanguageProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'sourceCodeLanguage'); }); @@ -4578,6 +5324,12 @@ extension SourceQueryProperty on QueryBuilder { }); } + QueryBuilder supportLatestProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'supportLatest'); + }); + } + QueryBuilder typeSourceProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'typeSource'); diff --git a/lib/models/sync_preference.g.dart b/lib/models/sync_preference.g.dart index 0efcbc0e..1248547c 100644 --- a/lib/models/sync_preference.g.dart +++ b/lib/models/sync_preference.g.dart @@ -27,11 +27,7 @@ const SyncPreferenceSchema = CollectionSchema( name: r'autoSyncFrequency', type: IsarType.long, ), - r'email': PropertySchema( - id: 2, - name: r'email', - type: IsarType.string, - ), + r'email': PropertySchema(id: 2, name: r'email', type: IsarType.string), r'lastSyncHistory': PropertySchema( id: 3, name: r'lastSyncHistory', @@ -47,21 +43,13 @@ const SyncPreferenceSchema = CollectionSchema( name: r'lastSyncUpdate', type: IsarType.long, ), - r'server': PropertySchema( - id: 6, - name: r'server', - type: IsarType.string, - ), + r'server': PropertySchema(id: 6, name: r'server', type: IsarType.string), r'syncHistories': PropertySchema( id: 7, name: r'syncHistories', type: IsarType.bool, ), - r'syncOn': PropertySchema( - id: 8, - name: r'syncOn', - type: IsarType.bool, - ), + r'syncOn': PropertySchema(id: 8, name: r'syncOn', type: IsarType.bool), r'syncSettings': PropertySchema( id: 9, name: r'syncSettings', @@ -71,8 +59,9 @@ const SyncPreferenceSchema = CollectionSchema( id: 10, name: r'syncUpdates', type: IsarType.bool, - ) + ), }, + estimateSize: _syncPreferenceEstimateSize, serialize: _syncPreferenceSerialize, deserialize: _syncPreferenceDeserialize, @@ -81,6 +70,7 @@ const SyncPreferenceSchema = CollectionSchema( indexes: {}, links: {}, embeddedSchemas: {}, + getId: _syncPreferenceGetId, getLinks: _syncPreferenceGetLinks, attach: _syncPreferenceAttach, @@ -199,7 +189,10 @@ List> _syncPreferenceGetLinks(SyncPreference object) { } void _syncPreferenceAttach( - IsarCollection col, Id id, SyncPreference object) { + IsarCollection col, + Id id, + SyncPreference object, +) { object.syncId = id; } @@ -215,17 +208,17 @@ extension SyncPreferenceQueryWhereSort extension SyncPreferenceQueryWhere on QueryBuilder { QueryBuilder syncIdEqualTo( - Id syncId) { + Id syncId, + ) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: syncId, - upper: syncId, - )); + return query.addWhereClause( + IdWhereClause.between(lower: syncId, upper: syncId), + ); }); } QueryBuilder - syncIdNotEqualTo(Id syncId) { + syncIdNotEqualTo(Id syncId) { return QueryBuilder.apply(this, (query) { if (query.whereSort == Sort.asc) { return query @@ -248,7 +241,7 @@ extension SyncPreferenceQueryWhere } QueryBuilder - syncIdGreaterThan(Id syncId, {bool include = false}) { + syncIdGreaterThan(Id syncId, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: syncId, includeLower: include), @@ -257,7 +250,7 @@ extension SyncPreferenceQueryWhere } QueryBuilder - syncIdLessThan(Id syncId, {bool include = false}) { + syncIdLessThan(Id syncId, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: syncId, includeUpper: include), @@ -272,12 +265,14 @@ extension SyncPreferenceQueryWhere bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerSyncId, - includeLower: includeLower, - upper: upperSyncId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerSyncId, + includeLower: includeLower, + upper: upperSyncId, + includeUpper: includeUpper, + ), + ); }); } } @@ -285,71 +280,74 @@ extension SyncPreferenceQueryWhere extension SyncPreferenceQueryFilter on QueryBuilder { QueryBuilder - authTokenIsNull() { + authTokenIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'authToken', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'authToken'), + ); }); } QueryBuilder - authTokenIsNotNull() { + authTokenIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'authToken', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'authToken'), + ); }); } QueryBuilder - authTokenEqualTo( - String? value, { - bool caseSensitive = true, - }) { + authTokenEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'authToken', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'authToken', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - authTokenGreaterThan( + authTokenGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'authToken', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'authToken', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - authTokenLessThan( + authTokenLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'authToken', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'authToken', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - authTokenBetween( + authTokenBetween( String? lower, String? upper, { bool includeLower = true, @@ -357,209 +355,213 @@ extension SyncPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'authToken', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'authToken', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - authTokenStartsWith( - String value, { - bool caseSensitive = true, - }) { + authTokenStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'authToken', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'authToken', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - authTokenEndsWith( - String value, { - bool caseSensitive = true, - }) { + authTokenEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'authToken', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'authToken', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - authTokenContains(String value, {bool caseSensitive = true}) { + authTokenContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'authToken', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'authToken', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - authTokenMatches(String pattern, {bool caseSensitive = true}) { + authTokenMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'authToken', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'authToken', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - authTokenIsEmpty() { + authTokenIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'authToken', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'authToken', value: ''), + ); }); } QueryBuilder - authTokenIsNotEmpty() { + authTokenIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'authToken', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'authToken', value: ''), + ); }); } QueryBuilder - autoSyncFrequencyEqualTo(int value) { + autoSyncFrequencyEqualTo(int value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'autoSyncFrequency', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'autoSyncFrequency', value: value), + ); }); } QueryBuilder - autoSyncFrequencyGreaterThan( - int value, { - bool include = false, - }) { + autoSyncFrequencyGreaterThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'autoSyncFrequency', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'autoSyncFrequency', + value: value, + ), + ); }); } QueryBuilder - autoSyncFrequencyLessThan( - int value, { - bool include = false, - }) { + autoSyncFrequencyLessThan(int value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'autoSyncFrequency', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'autoSyncFrequency', + value: value, + ), + ); }); } QueryBuilder - autoSyncFrequencyBetween( + autoSyncFrequencyBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'autoSyncFrequency', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'autoSyncFrequency', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - emailIsNull() { + emailIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'email', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'email'), + ); }); } QueryBuilder - emailIsNotNull() { + emailIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'email', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'email'), + ); }); } QueryBuilder - emailEqualTo( - String? value, { - bool caseSensitive = true, - }) { + emailEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'email', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'email', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - emailGreaterThan( + emailGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'email', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'email', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - emailLessThan( + emailLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'email', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'email', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - emailBetween( + emailBetween( String? lower, String? upper, { bool includeLower = true, @@ -567,375 +569,377 @@ extension SyncPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'email', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'email', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - emailStartsWith( - String value, { - bool caseSensitive = true, - }) { + emailStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'email', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'email', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - emailEndsWith( - String value, { - bool caseSensitive = true, - }) { + emailEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'email', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'email', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - emailContains(String value, {bool caseSensitive = true}) { + emailContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'email', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'email', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - emailMatches(String pattern, {bool caseSensitive = true}) { + emailMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'email', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'email', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - emailIsEmpty() { + emailIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'email', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'email', value: ''), + ); }); } QueryBuilder - emailIsNotEmpty() { + emailIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'email', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'email', value: ''), + ); }); } QueryBuilder - lastSyncHistoryIsNull() { + lastSyncHistoryIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastSyncHistory', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastSyncHistory'), + ); }); } QueryBuilder - lastSyncHistoryIsNotNull() { + lastSyncHistoryIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastSyncHistory', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lastSyncHistory'), + ); }); } QueryBuilder - lastSyncHistoryEqualTo(int? value) { + lastSyncHistoryEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastSyncHistory', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lastSyncHistory', value: value), + ); }); } QueryBuilder - lastSyncHistoryGreaterThan( - int? value, { - bool include = false, - }) { + lastSyncHistoryGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastSyncHistory', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lastSyncHistory', + value: value, + ), + ); }); } QueryBuilder - lastSyncHistoryLessThan( - int? value, { - bool include = false, - }) { + lastSyncHistoryLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastSyncHistory', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lastSyncHistory', + value: value, + ), + ); }); } QueryBuilder - lastSyncHistoryBetween( + lastSyncHistoryBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lastSyncHistory', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lastSyncHistory', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - lastSyncMangaIsNull() { + lastSyncMangaIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastSyncManga', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastSyncManga'), + ); }); } QueryBuilder - lastSyncMangaIsNotNull() { + lastSyncMangaIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastSyncManga', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lastSyncManga'), + ); }); } QueryBuilder - lastSyncMangaEqualTo(int? value) { + lastSyncMangaEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastSyncManga', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lastSyncManga', value: value), + ); }); } QueryBuilder - lastSyncMangaGreaterThan( - int? value, { - bool include = false, - }) { + lastSyncMangaGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastSyncManga', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lastSyncManga', + value: value, + ), + ); }); } QueryBuilder - lastSyncMangaLessThan( - int? value, { - bool include = false, - }) { + lastSyncMangaLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastSyncManga', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lastSyncManga', + value: value, + ), + ); }); } QueryBuilder - lastSyncMangaBetween( + lastSyncMangaBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lastSyncManga', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lastSyncManga', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - lastSyncUpdateIsNull() { + lastSyncUpdateIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastSyncUpdate', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastSyncUpdate'), + ); }); } QueryBuilder - lastSyncUpdateIsNotNull() { + lastSyncUpdateIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastSyncUpdate', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lastSyncUpdate'), + ); }); } QueryBuilder - lastSyncUpdateEqualTo(int? value) { + lastSyncUpdateEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastSyncUpdate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lastSyncUpdate', value: value), + ); }); } QueryBuilder - lastSyncUpdateGreaterThan( - int? value, { - bool include = false, - }) { + lastSyncUpdateGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastSyncUpdate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lastSyncUpdate', + value: value, + ), + ); }); } QueryBuilder - lastSyncUpdateLessThan( - int? value, { - bool include = false, - }) { + lastSyncUpdateLessThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastSyncUpdate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lastSyncUpdate', + value: value, + ), + ); }); } QueryBuilder - lastSyncUpdateBetween( + lastSyncUpdateBetween( int? lower, int? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lastSyncUpdate', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lastSyncUpdate', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - serverIsNull() { + serverIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'server', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'server'), + ); }); } QueryBuilder - serverIsNotNull() { + serverIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'server', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'server'), + ); }); } QueryBuilder - serverEqualTo( - String? value, { - bool caseSensitive = true, - }) { + serverEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'server', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'server', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - serverGreaterThan( + serverGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'server', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'server', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - serverLessThan( + serverLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'server', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'server', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - serverBetween( + serverBetween( String? lower, String? upper, { bool includeLower = true, @@ -943,198 +947,195 @@ extension SyncPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'server', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'server', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - serverStartsWith( - String value, { - bool caseSensitive = true, - }) { + serverStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'server', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'server', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - serverEndsWith( - String value, { - bool caseSensitive = true, - }) { + serverEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'server', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'server', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - serverContains(String value, {bool caseSensitive = true}) { + serverContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'server', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'server', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - serverMatches(String pattern, {bool caseSensitive = true}) { + serverMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'server', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'server', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - serverIsEmpty() { + serverIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'server', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'server', value: ''), + ); }); } QueryBuilder - serverIsNotEmpty() { + serverIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'server', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'server', value: ''), + ); }); } QueryBuilder - syncHistoriesEqualTo(bool value) { + syncHistoriesEqualTo(bool value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncHistories', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'syncHistories', value: value), + ); }); } QueryBuilder - syncIdIsNull() { + syncIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'syncId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'syncId'), + ); }); } QueryBuilder - syncIdIsNotNull() { + syncIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'syncId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'syncId'), + ); }); } QueryBuilder - syncIdEqualTo(Id? value) { + syncIdEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'syncId', value: value), + ); }); } QueryBuilder - syncIdGreaterThan( - Id? value, { - bool include = false, - }) { + syncIdGreaterThan(Id? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'syncId', + value: value, + ), + ); }); } QueryBuilder - syncIdLessThan( - Id? value, { - bool include = false, - }) { + syncIdLessThan(Id? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'syncId', + value: value, + ), + ); }); } QueryBuilder - syncIdBetween( + syncIdBetween( Id? lower, Id? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'syncId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'syncId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - syncOnEqualTo(bool value) { + syncOnEqualTo(bool value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncOn', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'syncOn', value: value), + ); }); } QueryBuilder - syncSettingsEqualTo(bool value) { + syncSettingsEqualTo(bool value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncSettings', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'syncSettings', value: value), + ); }); } QueryBuilder - syncUpdatesEqualTo(bool value) { + syncUpdatesEqualTo(bool value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncUpdates', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'syncUpdates', value: value), + ); }); } } @@ -1154,21 +1155,21 @@ extension SyncPreferenceQuerySortBy } QueryBuilder - sortByAuthTokenDesc() { + sortByAuthTokenDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'authToken', Sort.desc); }); } QueryBuilder - sortByAutoSyncFrequency() { + sortByAutoSyncFrequency() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoSyncFrequency', Sort.asc); }); } QueryBuilder - sortByAutoSyncFrequencyDesc() { + sortByAutoSyncFrequencyDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoSyncFrequency', Sort.desc); }); @@ -1187,42 +1188,42 @@ extension SyncPreferenceQuerySortBy } QueryBuilder - sortByLastSyncHistory() { + sortByLastSyncHistory() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncHistory', Sort.asc); }); } QueryBuilder - sortByLastSyncHistoryDesc() { + sortByLastSyncHistoryDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncHistory', Sort.desc); }); } QueryBuilder - sortByLastSyncManga() { + sortByLastSyncManga() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncManga', Sort.asc); }); } QueryBuilder - sortByLastSyncMangaDesc() { + sortByLastSyncMangaDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncManga', Sort.desc); }); } QueryBuilder - sortByLastSyncUpdate() { + sortByLastSyncUpdate() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncUpdate', Sort.asc); }); } QueryBuilder - sortByLastSyncUpdateDesc() { + sortByLastSyncUpdateDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncUpdate', Sort.desc); }); @@ -1235,21 +1236,21 @@ extension SyncPreferenceQuerySortBy } QueryBuilder - sortByServerDesc() { + sortByServerDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'server', Sort.desc); }); } QueryBuilder - sortBySyncHistories() { + sortBySyncHistories() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncHistories', Sort.asc); }); } QueryBuilder - sortBySyncHistoriesDesc() { + sortBySyncHistoriesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncHistories', Sort.desc); }); @@ -1262,35 +1263,35 @@ extension SyncPreferenceQuerySortBy } QueryBuilder - sortBySyncOnDesc() { + sortBySyncOnDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncOn', Sort.desc); }); } QueryBuilder - sortBySyncSettings() { + sortBySyncSettings() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncSettings', Sort.asc); }); } QueryBuilder - sortBySyncSettingsDesc() { + sortBySyncSettingsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncSettings', Sort.desc); }); } QueryBuilder - sortBySyncUpdates() { + sortBySyncUpdates() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncUpdates', Sort.asc); }); } QueryBuilder - sortBySyncUpdatesDesc() { + sortBySyncUpdatesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncUpdates', Sort.desc); }); @@ -1306,21 +1307,21 @@ extension SyncPreferenceQuerySortThenBy } QueryBuilder - thenByAuthTokenDesc() { + thenByAuthTokenDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'authToken', Sort.desc); }); } QueryBuilder - thenByAutoSyncFrequency() { + thenByAutoSyncFrequency() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoSyncFrequency', Sort.asc); }); } QueryBuilder - thenByAutoSyncFrequencyDesc() { + thenByAutoSyncFrequencyDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'autoSyncFrequency', Sort.desc); }); @@ -1339,42 +1340,42 @@ extension SyncPreferenceQuerySortThenBy } QueryBuilder - thenByLastSyncHistory() { + thenByLastSyncHistory() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncHistory', Sort.asc); }); } QueryBuilder - thenByLastSyncHistoryDesc() { + thenByLastSyncHistoryDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncHistory', Sort.desc); }); } QueryBuilder - thenByLastSyncManga() { + thenByLastSyncManga() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncManga', Sort.asc); }); } QueryBuilder - thenByLastSyncMangaDesc() { + thenByLastSyncMangaDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncManga', Sort.desc); }); } QueryBuilder - thenByLastSyncUpdate() { + thenByLastSyncUpdate() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncUpdate', Sort.asc); }); } QueryBuilder - thenByLastSyncUpdateDesc() { + thenByLastSyncUpdateDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'lastSyncUpdate', Sort.desc); }); @@ -1387,21 +1388,21 @@ extension SyncPreferenceQuerySortThenBy } QueryBuilder - thenByServerDesc() { + thenByServerDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'server', Sort.desc); }); } QueryBuilder - thenBySyncHistories() { + thenBySyncHistories() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncHistories', Sort.asc); }); } QueryBuilder - thenBySyncHistoriesDesc() { + thenBySyncHistoriesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncHistories', Sort.desc); }); @@ -1414,7 +1415,7 @@ extension SyncPreferenceQuerySortThenBy } QueryBuilder - thenBySyncIdDesc() { + thenBySyncIdDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncId', Sort.desc); }); @@ -1427,35 +1428,35 @@ extension SyncPreferenceQuerySortThenBy } QueryBuilder - thenBySyncOnDesc() { + thenBySyncOnDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncOn', Sort.desc); }); } QueryBuilder - thenBySyncSettings() { + thenBySyncSettings() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncSettings', Sort.asc); }); } QueryBuilder - thenBySyncSettingsDesc() { + thenBySyncSettingsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncSettings', Sort.desc); }); } QueryBuilder - thenBySyncUpdates() { + thenBySyncUpdates() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncUpdates', Sort.asc); }); } QueryBuilder - thenBySyncUpdatesDesc() { + thenBySyncUpdatesDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncUpdates', Sort.desc); }); @@ -1464,57 +1465,60 @@ extension SyncPreferenceQuerySortThenBy extension SyncPreferenceQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByAuthToken( - {bool caseSensitive = true}) { + QueryBuilder distinctByAuthToken({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'authToken', caseSensitive: caseSensitive); }); } QueryBuilder - distinctByAutoSyncFrequency() { + distinctByAutoSyncFrequency() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'autoSyncFrequency'); }); } - QueryBuilder distinctByEmail( - {bool caseSensitive = true}) { + QueryBuilder distinctByEmail({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'email', caseSensitive: caseSensitive); }); } QueryBuilder - distinctByLastSyncHistory() { + distinctByLastSyncHistory() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'lastSyncHistory'); }); } QueryBuilder - distinctByLastSyncManga() { + distinctByLastSyncManga() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'lastSyncManga'); }); } QueryBuilder - distinctByLastSyncUpdate() { + distinctByLastSyncUpdate() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'lastSyncUpdate'); }); } - QueryBuilder distinctByServer( - {bool caseSensitive = true}) { + QueryBuilder distinctByServer({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'server', caseSensitive: caseSensitive); }); } QueryBuilder - distinctBySyncHistories() { + distinctBySyncHistories() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'syncHistories'); }); @@ -1527,14 +1531,14 @@ extension SyncPreferenceQueryWhereDistinct } QueryBuilder - distinctBySyncSettings() { + distinctBySyncSettings() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'syncSettings'); }); } QueryBuilder - distinctBySyncUpdates() { + distinctBySyncUpdates() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'syncUpdates'); }); @@ -1556,7 +1560,7 @@ extension SyncPreferenceQueryProperty } QueryBuilder - autoSyncFrequencyProperty() { + autoSyncFrequencyProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'autoSyncFrequency'); }); @@ -1569,7 +1573,7 @@ extension SyncPreferenceQueryProperty } QueryBuilder - lastSyncHistoryProperty() { + lastSyncHistoryProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'lastSyncHistory'); }); @@ -1582,7 +1586,7 @@ extension SyncPreferenceQueryProperty } QueryBuilder - lastSyncUpdateProperty() { + lastSyncUpdateProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'lastSyncUpdate'); }); diff --git a/lib/models/track.g.dart b/lib/models/track.g.dart index d4c66669..c5602505 100644 --- a/lib/models/track.g.dart +++ b/lib/models/track.g.dart @@ -22,11 +22,7 @@ const TrackSchema = CollectionSchema( name: r'finishedReadingDate', type: IsarType.long, ), - r'isManga': PropertySchema( - id: 1, - name: r'isManga', - type: IsarType.bool, - ), + r'isManga': PropertySchema(id: 1, name: r'isManga', type: IsarType.bool), r'itemType': PropertySchema( id: 2, name: r'itemType', @@ -43,21 +39,9 @@ const TrackSchema = CollectionSchema( name: r'libraryId', type: IsarType.long, ), - r'mangaId': PropertySchema( - id: 5, - name: r'mangaId', - type: IsarType.long, - ), - r'mediaId': PropertySchema( - id: 6, - name: r'mediaId', - type: IsarType.long, - ), - r'score': PropertySchema( - id: 7, - name: r'score', - type: IsarType.long, - ), + r'mangaId': PropertySchema(id: 5, name: r'mangaId', type: IsarType.long), + r'mediaId': PropertySchema(id: 6, name: r'mediaId', type: IsarType.long), + r'score': PropertySchema(id: 7, name: r'score', type: IsarType.long), r'startedReadingDate': PropertySchema( id: 8, name: r'startedReadingDate', @@ -69,16 +53,8 @@ const TrackSchema = CollectionSchema( type: IsarType.byte, enumMap: _TrackstatusEnumValueMap, ), - r'syncId': PropertySchema( - id: 10, - name: r'syncId', - type: IsarType.long, - ), - r'title': PropertySchema( - id: 11, - name: r'title', - type: IsarType.string, - ), + r'syncId': PropertySchema(id: 10, name: r'syncId', type: IsarType.long), + r'title': PropertySchema(id: 11, name: r'title', type: IsarType.string), r'totalChapter': PropertySchema( id: 12, name: r'totalChapter', @@ -93,8 +69,9 @@ const TrackSchema = CollectionSchema( id: 14, name: r'updatedAt', type: IsarType.long, - ) + ), }, + estimateSize: _trackEstimateSize, serialize: _trackSerialize, deserialize: _trackDeserialize, @@ -103,6 +80,7 @@ const TrackSchema = CollectionSchema( indexes: {}, links: {}, embeddedSchemas: {}, + getId: _trackGetId, getLinks: _trackGetLinks, attach: _trackAttach, @@ -163,7 +141,8 @@ Track _trackDeserialize( finishedReadingDate: reader.readLongOrNull(offsets[0]), id: id, isManga: reader.readBoolOrNull(offsets[1]), - itemType: _TrackitemTypeValueEnumMap[reader.readByteOrNull(offsets[2])] ?? + itemType: + _TrackitemTypeValueEnumMap[reader.readByteOrNull(offsets[2])] ?? ItemType.manga, lastChapterRead: reader.readLongOrNull(offsets[3]), libraryId: reader.readLongOrNull(offsets[4]), @@ -171,7 +150,8 @@ Track _trackDeserialize( mediaId: reader.readLongOrNull(offsets[6]), score: reader.readLongOrNull(offsets[7]), startedReadingDate: reader.readLongOrNull(offsets[8]), - status: _TrackstatusValueEnumMap[reader.readByteOrNull(offsets[9])] ?? + status: + _TrackstatusValueEnumMap[reader.readByteOrNull(offsets[9])] ?? TrackStatus.reading, syncId: reader.readLongOrNull(offsets[10]), title: reader.readStringOrNull(offsets[11]), @@ -195,7 +175,8 @@ P _trackDeserializeProp

( return (reader.readBoolOrNull(offset)) as P; case 2: return (_TrackitemTypeValueEnumMap[reader.readByteOrNull(offset)] ?? - ItemType.manga) as P; + ItemType.manga) + as P; case 3: return (reader.readLongOrNull(offset)) as P; case 4: @@ -210,7 +191,8 @@ P _trackDeserializeProp

( return (reader.readLongOrNull(offset)) as P; case 9: return (_TrackstatusValueEnumMap[reader.readByteOrNull(offset)] ?? - TrackStatus.reading) as P; + TrackStatus.reading) + as P; case 10: return (reader.readLongOrNull(offset)) as P; case 11: @@ -226,11 +208,7 @@ P _trackDeserializeProp

( } } -const _TrackitemTypeEnumValueMap = { - 'manga': 0, - 'anime': 1, - 'novel': 2, -}; +const _TrackitemTypeEnumValueMap = {'manga': 0, 'anime': 1, 'novel': 2}; const _TrackitemTypeValueEnumMap = { 0: ItemType.manga, 1: ItemType.anime, @@ -282,10 +260,7 @@ extension TrackQueryWhereSort on QueryBuilder { extension TrackQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -311,8 +286,10 @@ extension TrackQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -320,8 +297,10 @@ extension TrackQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -336,56 +315,57 @@ extension TrackQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } extension TrackQueryFilter on QueryBuilder { QueryBuilder - finishedReadingDateIsNull() { + finishedReadingDateIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'finishedReadingDate', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'finishedReadingDate'), + ); }); } QueryBuilder - finishedReadingDateIsNotNull() { + finishedReadingDateIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'finishedReadingDate', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'finishedReadingDate'), + ); }); } QueryBuilder finishedReadingDateEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'finishedReadingDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'finishedReadingDate', value: value), + ); }); } QueryBuilder - finishedReadingDateGreaterThan( - int? value, { - bool include = false, - }) { + finishedReadingDateGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'finishedReadingDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'finishedReadingDate', + value: value, + ), + ); }); } @@ -394,11 +374,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'finishedReadingDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'finishedReadingDate', + value: value, + ), + ); }); } @@ -409,38 +391,39 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'finishedReadingDate', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'finishedReadingDate', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -449,11 +432,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -462,11 +447,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -477,49 +464,51 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder isMangaIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isManga', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'isManga'), + ); }); } QueryBuilder isMangaIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isManga', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'isManga'), + ); }); } QueryBuilder isMangaEqualTo( - bool? value) { + bool? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isManga', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'isManga', value: value), + ); }); } QueryBuilder itemTypeEqualTo( - ItemType value) { + ItemType value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'itemType', value: value), + ); }); } @@ -528,11 +517,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'itemType', + value: value, + ), + ); }); } @@ -541,11 +532,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'itemType', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'itemType', + value: value, + ), + ); }); } @@ -556,39 +549,41 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'itemType', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'itemType', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder lastChapterReadIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'lastChapterRead', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'lastChapterRead'), + ); }); } QueryBuilder lastChapterReadIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastChapterRead', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'lastChapterRead'), + ); }); } QueryBuilder lastChapterReadEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastChapterRead', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'lastChapterRead', value: value), + ); }); } @@ -597,11 +592,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastChapterRead', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'lastChapterRead', + value: value, + ), + ); }); } @@ -610,11 +607,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastChapterRead', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'lastChapterRead', + value: value, + ), + ); }); } @@ -625,39 +624,41 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'lastChapterRead', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'lastChapterRead', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder libraryIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'libraryId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'libraryId'), + ); }); } QueryBuilder libraryIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'libraryId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'libraryId'), + ); }); } QueryBuilder libraryIdEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'libraryId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'libraryId', value: value), + ); }); } @@ -666,11 +667,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'libraryId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'libraryId', + value: value, + ), + ); }); } @@ -679,11 +682,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'libraryId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'libraryId', + value: value, + ), + ); }); } @@ -694,38 +699,39 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'libraryId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'libraryId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } @@ -734,11 +740,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -747,11 +755,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -762,38 +772,39 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder mediaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mediaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mediaId'), + ); }); } QueryBuilder mediaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mediaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mediaId'), + ); }); } QueryBuilder mediaIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mediaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mediaId', value: value), + ); }); } @@ -802,11 +813,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mediaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mediaId', + value: value, + ), + ); }); } @@ -815,11 +828,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mediaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mediaId', + value: value, + ), + ); }); } @@ -830,38 +845,39 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mediaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mediaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder scoreIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'score', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'score'), + ); }); } QueryBuilder scoreIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'score', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'score'), + ); }); } QueryBuilder scoreEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'score', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'score', value: value), + ); }); } @@ -870,11 +886,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'score', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'score', + value: value, + ), + ); }); } @@ -883,11 +901,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'score', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'score', + value: value, + ), + ); }); } @@ -898,54 +918,55 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'score', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'score', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder startedReadingDateIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'startedReadingDate', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'startedReadingDate'), + ); }); } QueryBuilder - startedReadingDateIsNotNull() { + startedReadingDateIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'startedReadingDate', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'startedReadingDate'), + ); }); } QueryBuilder startedReadingDateEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'startedReadingDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'startedReadingDate', value: value), + ); }); } QueryBuilder - startedReadingDateGreaterThan( - int? value, { - bool include = false, - }) { + startedReadingDateGreaterThan(int? value, {bool include = false}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'startedReadingDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'startedReadingDate', + value: value, + ), + ); }); } @@ -954,11 +975,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'startedReadingDate', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'startedReadingDate', + value: value, + ), + ); }); } @@ -969,23 +992,25 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'startedReadingDate', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'startedReadingDate', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder statusEqualTo( - TrackStatus value) { + TrackStatus value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'status', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'status', value: value), + ); }); } @@ -994,11 +1019,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'status', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'status', + value: value, + ), + ); }); } @@ -1007,11 +1034,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'status', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'status', + value: value, + ), + ); }); } @@ -1022,38 +1051,39 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'status', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'status', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder syncIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'syncId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'syncId'), + ); }); } QueryBuilder syncIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'syncId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'syncId'), + ); }); } QueryBuilder syncIdEqualTo(int? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'syncId', value: value), + ); }); } @@ -1062,11 +1092,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'syncId', + value: value, + ), + ); }); } @@ -1075,11 +1107,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'syncId', + value: value, + ), + ); }); } @@ -1090,29 +1124,31 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'syncId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'syncId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder titleIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'title'), + ); }); } QueryBuilder titleIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'title', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'title'), + ); }); } @@ -1121,11 +1157,13 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1135,12 +1173,14 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1150,12 +1190,14 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1167,14 +1209,16 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'title', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'title', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1183,11 +1227,13 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1196,77 +1242,85 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleContains(String value, - {bool caseSensitive = true}) { + QueryBuilder titleContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'title', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'title', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder titleMatches(String pattern, - {bool caseSensitive = true}) { + QueryBuilder titleMatches( + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'title', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'title', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder titleIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'title', value: ''), + ); }); } QueryBuilder titleIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'title', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'title', value: ''), + ); }); } QueryBuilder totalChapterIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'totalChapter', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'totalChapter'), + ); }); } QueryBuilder totalChapterIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'totalChapter', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'totalChapter'), + ); }); } QueryBuilder totalChapterEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'totalChapter', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'totalChapter', value: value), + ); }); } @@ -1275,11 +1329,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'totalChapter', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'totalChapter', + value: value, + ), + ); }); } @@ -1288,11 +1344,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'totalChapter', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'totalChapter', + value: value, + ), + ); }); } @@ -1303,29 +1361,31 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'totalChapter', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'totalChapter', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder trackingUrlIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'trackingUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'trackingUrl'), + ); }); } QueryBuilder trackingUrlIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'trackingUrl', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'trackingUrl'), + ); }); } @@ -1334,11 +1394,13 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'trackingUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'trackingUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1348,12 +1410,14 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'trackingUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'trackingUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1363,12 +1427,14 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'trackingUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'trackingUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1380,14 +1446,16 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'trackingUrl', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'trackingUrl', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1396,11 +1464,13 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'trackingUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'trackingUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -1409,79 +1479,85 @@ extension TrackQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'trackingUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'trackingUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder trackingUrlContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'trackingUrl', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'trackingUrl', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder trackingUrlMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'trackingUrl', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'trackingUrl', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder trackingUrlIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'trackingUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'trackingUrl', value: ''), + ); }); } QueryBuilder trackingUrlIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'trackingUrl', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'trackingUrl', value: ''), + ); }); } QueryBuilder updatedAtIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); }); } @@ -1490,11 +1566,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -1503,11 +1581,13 @@ extension TrackQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -1518,13 +1598,15 @@ extension TrackQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'updatedAt', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -1976,8 +2058,9 @@ extension TrackQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByTitle( - {bool caseSensitive = true}) { + QueryBuilder distinctByTitle({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'title', caseSensitive: caseSensitive); }); @@ -1989,8 +2072,9 @@ extension TrackQueryWhereDistinct on QueryBuilder { }); } - QueryBuilder distinctByTrackingUrl( - {bool caseSensitive = true}) { + QueryBuilder distinctByTrackingUrl({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'trackingUrl', caseSensitive: caseSensitive); }); diff --git a/lib/models/track_preference.dart b/lib/models/track_preference.dart index 7304911a..9018daf2 100644 --- a/lib/models/track_preference.dart +++ b/lib/models/track_preference.dart @@ -12,7 +12,15 @@ class TrackPreference { String? prefs; - TrackPreference({this.syncId, this.username, this.oAuth, this.prefs}); + bool? refreshing; + + TrackPreference({ + this.syncId, + this.username, + this.oAuth, + this.prefs, + this.refreshing, + }); TrackPreference.fromJson(Map json) { syncId = json['syncId']; diff --git a/lib/models/track_preference.g.dart b/lib/models/track_preference.g.dart index 4262e332..9fb8268d 100644 --- a/lib/models/track_preference.g.dart +++ b/lib/models/track_preference.g.dart @@ -17,22 +17,20 @@ const TrackPreferenceSchema = CollectionSchema( name: r'Track Preference', id: -7260395670212271073, properties: { - r'oAuth': PropertySchema( - id: 0, - name: r'oAuth', - type: IsarType.string, - ), - r'prefs': PropertySchema( - id: 1, - name: r'prefs', - type: IsarType.string, + r'oAuth': PropertySchema(id: 0, name: r'oAuth', type: IsarType.string), + r'prefs': PropertySchema(id: 1, name: r'prefs', type: IsarType.string), + r'refreshing': PropertySchema( + id: 2, + name: r'refreshing', + type: IsarType.bool, ), r'username': PropertySchema( - id: 2, + id: 3, name: r'username', type: IsarType.string, - ) + ), }, + estimateSize: _trackPreferenceEstimateSize, serialize: _trackPreferenceSerialize, deserialize: _trackPreferenceDeserialize, @@ -41,6 +39,7 @@ const TrackPreferenceSchema = CollectionSchema( indexes: {}, links: {}, embeddedSchemas: {}, + getId: _trackPreferenceGetId, getLinks: _trackPreferenceGetLinks, attach: _trackPreferenceAttach, @@ -82,7 +81,8 @@ void _trackPreferenceSerialize( ) { writer.writeString(offsets[0], object.oAuth); writer.writeString(offsets[1], object.prefs); - writer.writeString(offsets[2], object.username); + writer.writeBool(offsets[2], object.refreshing); + writer.writeString(offsets[3], object.username); } TrackPreference _trackPreferenceDeserialize( @@ -94,8 +94,9 @@ TrackPreference _trackPreferenceDeserialize( final object = TrackPreference( oAuth: reader.readStringOrNull(offsets[0]), prefs: reader.readStringOrNull(offsets[1]), + refreshing: reader.readBoolOrNull(offsets[2]), syncId: id, - username: reader.readStringOrNull(offsets[2]), + username: reader.readStringOrNull(offsets[3]), ); return object; } @@ -112,6 +113,8 @@ P _trackPreferenceDeserializeProp

( case 1: return (reader.readStringOrNull(offset)) as P; case 2: + return (reader.readBoolOrNull(offset)) as P; + case 3: return (reader.readStringOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); @@ -127,7 +130,10 @@ List> _trackPreferenceGetLinks(TrackPreference object) { } void _trackPreferenceAttach( - IsarCollection col, Id id, TrackPreference object) { + IsarCollection col, + Id id, + TrackPreference object, +) { object.syncId = id; } @@ -143,17 +149,16 @@ extension TrackPreferenceQueryWhereSort extension TrackPreferenceQueryWhere on QueryBuilder { QueryBuilder - syncIdEqualTo(Id syncId) { + syncIdEqualTo(Id syncId) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: syncId, - upper: syncId, - )); + return query.addWhereClause( + IdWhereClause.between(lower: syncId, upper: syncId), + ); }); } QueryBuilder - syncIdNotEqualTo(Id syncId) { + syncIdNotEqualTo(Id syncId) { return QueryBuilder.apply(this, (query) { if (query.whereSort == Sort.asc) { return query @@ -176,7 +181,7 @@ extension TrackPreferenceQueryWhere } QueryBuilder - syncIdGreaterThan(Id syncId, {bool include = false}) { + syncIdGreaterThan(Id syncId, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: syncId, includeLower: include), @@ -185,7 +190,7 @@ extension TrackPreferenceQueryWhere } QueryBuilder - syncIdLessThan(Id syncId, {bool include = false}) { + syncIdLessThan(Id syncId, {bool include = false}) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: syncId, includeUpper: include), @@ -194,19 +199,21 @@ extension TrackPreferenceQueryWhere } QueryBuilder - syncIdBetween( + syncIdBetween( Id lowerSyncId, Id upperSyncId, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerSyncId, - includeLower: includeLower, - upper: upperSyncId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerSyncId, + includeLower: includeLower, + upper: upperSyncId, + includeUpper: includeUpper, + ), + ); }); } } @@ -214,71 +221,74 @@ extension TrackPreferenceQueryWhere extension TrackPreferenceQueryFilter on QueryBuilder { QueryBuilder - oAuthIsNull() { + oAuthIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'oAuth', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'oAuth'), + ); }); } QueryBuilder - oAuthIsNotNull() { + oAuthIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'oAuth', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'oAuth'), + ); }); } QueryBuilder - oAuthEqualTo( - String? value, { - bool caseSensitive = true, - }) { + oAuthEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'oAuth', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'oAuth', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - oAuthGreaterThan( + oAuthGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'oAuth', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'oAuth', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - oAuthLessThan( + oAuthLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'oAuth', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'oAuth', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - oAuthBetween( + oAuthBetween( String? lower, String? upper, { bool includeLower = true, @@ -286,153 +296,158 @@ extension TrackPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'oAuth', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'oAuth', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - oAuthStartsWith( - String value, { - bool caseSensitive = true, - }) { + oAuthStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'oAuth', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'oAuth', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - oAuthEndsWith( - String value, { - bool caseSensitive = true, - }) { + oAuthEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'oAuth', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'oAuth', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - oAuthContains(String value, {bool caseSensitive = true}) { + oAuthContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'oAuth', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'oAuth', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - oAuthMatches(String pattern, {bool caseSensitive = true}) { + oAuthMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'oAuth', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'oAuth', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - oAuthIsEmpty() { + oAuthIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'oAuth', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'oAuth', value: ''), + ); }); } QueryBuilder - oAuthIsNotEmpty() { + oAuthIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'oAuth', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'oAuth', value: ''), + ); }); } QueryBuilder - prefsIsNull() { + prefsIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'prefs', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'prefs'), + ); }); } QueryBuilder - prefsIsNotNull() { + prefsIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'prefs', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'prefs'), + ); }); } QueryBuilder - prefsEqualTo( - String? value, { - bool caseSensitive = true, - }) { + prefsEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'prefs', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'prefs', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - prefsGreaterThan( + prefsGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'prefs', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'prefs', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - prefsLessThan( + prefsLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'prefs', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'prefs', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - prefsBetween( + prefsBetween( String? lower, String? upper, { bool includeLower = true, @@ -440,227 +455,258 @@ extension TrackPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'prefs', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'prefs', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - prefsStartsWith( - String value, { - bool caseSensitive = true, - }) { + prefsStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'prefs', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'prefs', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - prefsEndsWith( - String value, { - bool caseSensitive = true, - }) { + prefsEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'prefs', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'prefs', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - prefsContains(String value, {bool caseSensitive = true}) { + prefsContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'prefs', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'prefs', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - prefsMatches(String pattern, {bool caseSensitive = true}) { + prefsMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'prefs', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'prefs', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - prefsIsEmpty() { + prefsIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'prefs', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'prefs', value: ''), + ); }); } QueryBuilder - prefsIsNotEmpty() { + prefsIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'prefs', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'prefs', value: ''), + ); }); } QueryBuilder - syncIdIsNull() { + refreshingIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'syncId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'refreshing'), + ); }); } QueryBuilder - syncIdIsNotNull() { + refreshingIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'syncId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'refreshing'), + ); }); } QueryBuilder - syncIdEqualTo(Id? value) { + refreshingEqualTo(bool? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'refreshing', value: value), + ); }); } QueryBuilder - syncIdGreaterThan( - Id? value, { - bool include = false, - }) { + syncIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'syncId'), + ); }); } QueryBuilder - syncIdLessThan( - Id? value, { - bool include = false, - }) { + syncIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'syncId', - value: value, - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'syncId'), + ); }); } QueryBuilder - syncIdBetween( + syncIdEqualTo(Id? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'syncId', value: value), + ); + }); + } + + QueryBuilder + syncIdGreaterThan(Id? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'syncId', + value: value, + ), + ); + }); + } + + QueryBuilder + syncIdLessThan(Id? value, {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'syncId', + value: value, + ), + ); + }); + } + + QueryBuilder + syncIdBetween( Id? lower, Id? upper, { bool includeLower = true, bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'syncId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'syncId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder - usernameIsNull() { + usernameIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'username', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'username'), + ); }); } QueryBuilder - usernameIsNotNull() { + usernameIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'username', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'username'), + ); }); } QueryBuilder - usernameEqualTo( - String? value, { - bool caseSensitive = true, - }) { + usernameEqualTo(String? value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'username', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'username', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - usernameGreaterThan( + usernameGreaterThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'username', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'username', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - usernameLessThan( + usernameLessThan( String? value, { bool include = false, bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'username', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'username', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - usernameBetween( + usernameBetween( String? lower, String? upper, { bool includeLower = true, @@ -668,84 +714,86 @@ extension TrackPreferenceQueryFilter bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'username', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'username', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - usernameStartsWith( - String value, { - bool caseSensitive = true, - }) { + usernameStartsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'username', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'username', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - usernameEndsWith( - String value, { - bool caseSensitive = true, - }) { + usernameEndsWith(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'username', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'username', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - usernameContains(String value, {bool caseSensitive = true}) { + usernameContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'username', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'username', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - usernameMatches(String pattern, {bool caseSensitive = true}) { + usernameMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'username', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'username', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder - usernameIsEmpty() { + usernameIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'username', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'username', value: ''), + ); }); } QueryBuilder - usernameIsNotEmpty() { + usernameIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'username', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'username', value: ''), + ); }); } } @@ -765,7 +813,7 @@ extension TrackPreferenceQuerySortBy } QueryBuilder - sortByOAuthDesc() { + sortByOAuthDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'oAuth', Sort.desc); }); @@ -778,21 +826,35 @@ extension TrackPreferenceQuerySortBy } QueryBuilder - sortByPrefsDesc() { + sortByPrefsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'prefs', Sort.desc); }); } QueryBuilder - sortByUsername() { + sortByRefreshing() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'refreshing', Sort.asc); + }); + } + + QueryBuilder + sortByRefreshingDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'refreshing', Sort.desc); + }); + } + + QueryBuilder + sortByUsername() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'username', Sort.asc); }); } QueryBuilder - sortByUsernameDesc() { + sortByUsernameDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'username', Sort.desc); }); @@ -808,7 +870,7 @@ extension TrackPreferenceQuerySortThenBy } QueryBuilder - thenByOAuthDesc() { + thenByOAuthDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'oAuth', Sort.desc); }); @@ -821,12 +883,26 @@ extension TrackPreferenceQuerySortThenBy } QueryBuilder - thenByPrefsDesc() { + thenByPrefsDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'prefs', Sort.desc); }); } + QueryBuilder + thenByRefreshing() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'refreshing', Sort.asc); + }); + } + + QueryBuilder + thenByRefreshingDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'refreshing', Sort.desc); + }); + } + QueryBuilder thenBySyncId() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncId', Sort.asc); @@ -834,21 +910,21 @@ extension TrackPreferenceQuerySortThenBy } QueryBuilder - thenBySyncIdDesc() { + thenBySyncIdDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'syncId', Sort.desc); }); } QueryBuilder - thenByUsername() { + thenByUsername() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'username', Sort.asc); }); } QueryBuilder - thenByUsernameDesc() { + thenByUsernameDesc() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'username', Sort.desc); }); @@ -857,22 +933,32 @@ extension TrackPreferenceQuerySortThenBy extension TrackPreferenceQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByOAuth( - {bool caseSensitive = true}) { + QueryBuilder distinctByOAuth({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'oAuth', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByPrefs( - {bool caseSensitive = true}) { + QueryBuilder distinctByPrefs({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'prefs', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByUsername( - {bool caseSensitive = true}) { + QueryBuilder + distinctByRefreshing() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'refreshing'); + }); + } + + QueryBuilder distinctByUsername({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'username', caseSensitive: caseSensitive); }); @@ -899,6 +985,12 @@ extension TrackPreferenceQueryProperty }); } + QueryBuilder refreshingProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'refreshing'); + }); + } + QueryBuilder usernameProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'username'); diff --git a/lib/models/update.g.dart b/lib/models/update.g.dart index 074eedc5..ea5502ed 100644 --- a/lib/models/update.g.dart +++ b/lib/models/update.g.dart @@ -22,22 +22,15 @@ const UpdateSchema = CollectionSchema( name: r'chapterName', type: IsarType.string, ), - r'date': PropertySchema( - id: 1, - name: r'date', - type: IsarType.string, - ), - r'mangaId': PropertySchema( - id: 2, - name: r'mangaId', - type: IsarType.long, - ), + r'date': PropertySchema(id: 1, name: r'date', type: IsarType.string), + r'mangaId': PropertySchema(id: 2, name: r'mangaId', type: IsarType.long), r'updatedAt': PropertySchema( id: 3, name: r'updatedAt', type: IsarType.long, - ) + ), }, + estimateSize: _updateEstimateSize, serialize: _updateSerialize, deserialize: _updateDeserialize, @@ -50,9 +43,10 @@ const UpdateSchema = CollectionSchema( name: r'chapter', target: r'Chapter', single: true, - ) + ), }, embeddedSchemas: {}, + getId: _updateGetId, getLinks: _updateGetLinks, attach: _updateAttach, @@ -152,10 +146,7 @@ extension UpdateQueryWhereSort on QueryBuilder { extension UpdateQueryWhere on QueryBuilder { QueryBuilder idEqualTo(Id id) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - )); + return query.addWhereClause(IdWhereClause.between(lower: id, upper: id)); }); } @@ -181,8 +172,10 @@ extension UpdateQueryWhere on QueryBuilder { }); } - QueryBuilder idGreaterThan(Id id, - {bool include = false}) { + QueryBuilder idGreaterThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), @@ -190,8 +183,10 @@ extension UpdateQueryWhere on QueryBuilder { }); } - QueryBuilder idLessThan(Id id, - {bool include = false}) { + QueryBuilder idLessThan( + Id id, { + bool include = false, + }) { return QueryBuilder.apply(this, (query) { return query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), @@ -206,12 +201,14 @@ extension UpdateQueryWhere on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - )); + return query.addWhereClause( + IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ), + ); }); } } @@ -219,17 +216,17 @@ extension UpdateQueryWhere on QueryBuilder { extension UpdateQueryFilter on QueryBuilder { QueryBuilder chapterNameIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'chapterName', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'chapterName'), + ); }); } QueryBuilder chapterNameIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'chapterName', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'chapterName'), + ); }); } @@ -238,11 +235,13 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'chapterName', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'chapterName', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -252,12 +251,14 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'chapterName', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'chapterName', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -267,12 +268,14 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'chapterName', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'chapterName', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -284,14 +287,16 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'chapterName', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'chapterName', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -300,11 +305,13 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'chapterName', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'chapterName', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -313,69 +320,75 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'chapterName', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'chapterName', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder chapterNameContains( - String value, - {bool caseSensitive = true}) { + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'chapterName', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'chapterName', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder chapterNameMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'chapterName', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'chapterName', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder chapterNameIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'chapterName', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'chapterName', value: ''), + ); }); } QueryBuilder chapterNameIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'chapterName', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'chapterName', value: ''), + ); }); } QueryBuilder dateIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'date', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'date'), + ); }); } QueryBuilder dateIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'date', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'date'), + ); }); } @@ -384,11 +397,13 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.equalTo( + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -398,12 +413,14 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -413,12 +430,14 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -430,14 +449,16 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'date', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'date', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ), + ); }); } @@ -446,11 +467,13 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.startsWith( + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } @@ -459,77 +482,83 @@ extension UpdateQueryFilter on QueryBuilder { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.endsWith( + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } - QueryBuilder dateContains(String value, - {bool caseSensitive = true}) { + QueryBuilder dateContains( + String value, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'date', - value: value, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.contains( + property: r'date', + value: value, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateMatches( - String pattern, - {bool caseSensitive = true}) { + String pattern, { + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( - property: r'date', - wildcard: pattern, - caseSensitive: caseSensitive, - )); + return query.addFilterCondition( + FilterCondition.matches( + property: r'date', + wildcard: pattern, + caseSensitive: caseSensitive, + ), + ); }); } QueryBuilder dateIsEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'date', - value: '', - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'date', value: ''), + ); }); } QueryBuilder dateIsNotEmpty() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - property: r'date', - value: '', - )); + return query.addFilterCondition( + FilterCondition.greaterThan(property: r'date', value: ''), + ); }); } QueryBuilder idIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'id'), + ); }); } QueryBuilder idIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'id', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'id'), + ); }); } QueryBuilder idEqualTo(Id? value) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'id', value: value), + ); }); } @@ -538,11 +567,13 @@ extension UpdateQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -551,11 +582,13 @@ extension UpdateQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ), + ); }); } @@ -566,39 +599,41 @@ extension UpdateQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder mangaIdIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'mangaId', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'mangaId'), + ); }); } QueryBuilder mangaIdEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'mangaId', value: value), + ); }); } @@ -607,11 +642,13 @@ extension UpdateQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -620,11 +657,13 @@ extension UpdateQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'mangaId', + value: value, + ), + ); }); } @@ -635,39 +674,41 @@ extension UpdateQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'mangaId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'mangaId', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } QueryBuilder updatedAtIsNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtIsNotNull() { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedAt', - )); + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'updatedAt'), + ); }); } QueryBuilder updatedAtEqualTo( - int? value) { + int? value, + ) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.equalTo(property: r'updatedAt', value: value), + ); }); } @@ -676,11 +717,13 @@ extension UpdateQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.greaterThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -689,11 +732,13 @@ extension UpdateQueryFilter on QueryBuilder { bool include = false, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'updatedAt', - value: value, - )); + return query.addFilterCondition( + FilterCondition.lessThan( + include: include, + property: r'updatedAt', + value: value, + ), + ); }); } @@ -704,13 +749,15 @@ extension UpdateQueryFilter on QueryBuilder { bool includeUpper = true, }) { return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'updatedAt', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); + return query.addFilterCondition( + FilterCondition.between( + property: r'updatedAt', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ), + ); }); } } @@ -719,7 +766,8 @@ extension UpdateQueryObject on QueryBuilder {} extension UpdateQueryLinks on QueryBuilder { QueryBuilder chapter( - FilterQuery q) { + FilterQuery q, + ) { return QueryBuilder.apply(this, (query) { return query.link(q, r'chapter'); }); @@ -845,15 +893,17 @@ extension UpdateQuerySortThenBy on QueryBuilder { } extension UpdateQueryWhereDistinct on QueryBuilder { - QueryBuilder distinctByChapterName( - {bool caseSensitive = true}) { + QueryBuilder distinctByChapterName({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'chapterName', caseSensitive: caseSensitive); }); } - QueryBuilder distinctByDate( - {bool caseSensitive = true}) { + QueryBuilder distinctByDate({ + bool caseSensitive = true, + }) { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'date', caseSensitive: caseSensitive); }); diff --git a/lib/modules/anime/anime_player_view.dart b/lib/modules/anime/anime_player_view.dart index c69190fe..b8ec1d46 100644 --- a/lib/modules/anime/anime_player_view.dart +++ b/lib/modules/anime/anime_player_view.dart @@ -1,15 +1,23 @@ import 'dart:async'; +import 'dart:convert'; +import 'dart:ffi'; import 'dart:io'; +import 'dart:math'; import 'package:bot_toast/bot_toast.dart'; +import 'package:ffi/ffi.dart'; import 'package:file_picker/file_picker.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_qjs/quickjs/ffi.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart' as riv; import 'package:mangayomi/eval/model/m_bridge.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/chapter.dart'; +import 'package:mangayomi/models/custom_button.dart'; import 'package:mangayomi/models/manga.dart'; +import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/video.dart' as vid; import 'package:mangayomi/modules/anime/providers/anime_player_controller_provider.dart'; import 'package:mangayomi/modules/anime/widgets/aniskip_countdown_btn.dart'; @@ -20,24 +28,33 @@ import 'package:mangayomi/modules/anime/widgets/mobile.dart'; import 'package:mangayomi/modules/anime/widgets/subtitle_view.dart'; import 'package:mangayomi/modules/anime/widgets/subtitle_setting_widget.dart'; import 'package:mangayomi/modules/manga/reader/providers/push_router.dart'; +import 'package:mangayomi/modules/more/settings/player/providers/custom_buttons_provider.dart'; +import 'package:mangayomi/modules/more/settings/player/providers/player_audio_state_provider.dart'; +import 'package:mangayomi/modules/more/settings/player/providers/player_decoder_state_provider.dart'; import 'package:mangayomi/modules/more/settings/player/providers/player_state_provider.dart'; import 'package:mangayomi/modules/widgets/custom_draggable_tabbar.dart'; import 'package:mangayomi/modules/widgets/progress_center.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/services/aniskip.dart'; +import 'package:mangayomi/services/fetch_subtitles.dart'; import 'package:mangayomi/services/get_video_list.dart'; import 'package:mangayomi/services/torrent_server.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; import 'package:mangayomi/utils/language.dart'; import 'package:media_kit/media_kit.dart'; +import 'package:media_kit/generated/libmpv/bindings.dart' as generated; import 'package:media_kit_video/media_kit_video.dart'; import 'package:media_kit_video/media_kit_video_controls/src/controls/extensions/duration.dart'; +import 'package:numberpicker/numberpicker.dart'; import 'package:path/path.dart' as p; +import 'package:path/path.dart' as path; import 'package:path_provider/path_provider.dart'; import 'package:share_plus/share_plus.dart'; import 'package:super_sliver_list/super_sliver_list.dart'; +import 'widgets/search_subtitles.dart'; + bool _isDesktop = Platform.isMacOS || Platform.isLinux || Platform.isWindows; class AnimePlayerView extends riv.ConsumerStatefulWidget { @@ -74,7 +91,7 @@ class _AnimePlayerViewState extends riv.ConsumerState { SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive); return serversData.when( data: (data) { - final (videos, isLocal, infoHashList) = data; + final (videos, isLocal, infoHashList, mpvDirectory) = data; _infoHashList = infoHashList; if (videos.isEmpty && !(episode.manga.value!.isLocalArchive ?? false)) { return Scaffold( @@ -102,6 +119,7 @@ class _AnimePlayerViewState extends riv.ConsumerState { desktopFullScreenPlayer: (value) { desktopFullScreenPlayer = value; }, + mpvDirectory: mpvDirectory, ); }, error: (error, stackTrace) => Scaffold( @@ -150,6 +168,7 @@ class AnimeStreamPage extends riv.ConsumerStatefulWidget { final String defaultSubtitle; final bool isLocal; final bool isTorrent; + final Directory? mpvDirectory; final void Function(bool) desktopFullScreenPlayer; const AnimeStreamPage({ super.key, @@ -159,6 +178,7 @@ class AnimeStreamPage extends riv.ConsumerStatefulWidget { required this.episode, required this.isTorrent, required this.desktopFullScreenPlayer, + required this.mpvDirectory, }); @override @@ -175,14 +195,68 @@ class _AnimeStreamPageState extends riv.ConsumerState with TickerProviderStateMixin, WidgetsBindingObserver { late final GlobalKey _key = GlobalKey(); late final useLibass = ref.read(useLibassStateProvider); + late final useMpvConfig = ref.read(useMpvConfigStateProvider); + late final useGpuNext = ref.read(useGpuNextStateProvider); + late final debandingType = ref.read(debandingStateProvider); + late final useYUV420P = ref.read(useYUV420PStateProvider); + late final audioPreferredLang = ref.read(audioPreferredLangStateProvider); + late final enableAudioPitchCorrection = ref.read( + enableAudioPitchCorrectionStateProvider, + ); + late final audioChannel = ref.read(audioChannelStateProvider); + late final volumeBoostCap = ref.read(volumeBoostCapStateProvider); late final Player _player = Player( - configuration: PlayerConfiguration(libass: useLibass), + configuration: PlayerConfiguration( + libass: useLibass, + config: true, + configDir: useMpvConfig ? widget.mpvDirectory?.path ?? "" : "", + options: { + if (debandingType == DebandingType.cpu) "vf": "gradfun=radius=12", + if (debandingType == DebandingType.gpu) "deband": "yes", + if (useYUV420P) "vf": "format=yuv420p", + if (audioPreferredLang.isNotEmpty) "alang": audioPreferredLang, + if (enableAudioPitchCorrection) "audio-pitch-correction": "yes", + "volume-max": "${volumeBoostCap + 100}", + if (audioChannel != AudioChannel.reverseStereo) + "audio-channels": audioChannel.mpvName, + if (audioChannel == AudioChannel.reverseStereo) + "af": audioChannel.mpvName, + }, + observeProperties: { + "user-data/aniyomi/show_text": generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/toggle_ui": generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/show_panel": generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/software_keyboard": + generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/set_button_title": + generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/reset_button_title": + generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/toggle_button": generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/switch_episode": + generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/pause": generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/seek_by": generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/seek_to": generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/seek_by_with_text": + generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/seek_to_with_text": + generated.mpv_format.MPV_FORMAT_NODE, + "user-data/aniyomi/launch_int_picker": + generated.mpv_format.MPV_FORMAT_NODE, + "user-data/mangayomi/chapter_titles": + generated.mpv_format.MPV_FORMAT_NODE, + "user-data/mangayomi/current_chapter": + generated.mpv_format.MPV_FORMAT_INT64, + "user-data/mangayomi/selected_shader": + generated.mpv_format.MPV_FORMAT_NODE, + }, + eventHandler: _handleMpvEvents, + ), ); late final hwdecMode = ref.read(hwdecModeStateProvider()); - late final VideoController _controller = VideoController( - _player, - configuration: VideoControllerConfiguration(hwdec: hwdecMode), - ); + late final enableHardwareAccel = ref.read(enableHardwareAccelStateProvider); + late final VideoController _controller; late final _streamController = ref.read( animeStreamControllerProvider(episode: widget.episode).notifier, ); @@ -207,6 +281,11 @@ class _AnimeStreamPageState extends riv.ConsumerState final ValueNotifier _isCompleted = ValueNotifier(false); final ValueNotifier _tempPosition = ValueNotifier(null); final ValueNotifier _fit = ValueNotifier(BoxFit.contain); + final ValueNotifier> _chapterMarks = ValueNotifier([]); + final ValueNotifier _currentChapterMark = ValueNotifier(null); + final ValueNotifier _selectedShader = ValueNotifier(""); + final ValueNotifier _customButton = ValueNotifier(null); + final ValueNotifier?> _customButtons = ValueNotifier(null); late final ValueNotifier<_AniSkipPhase> _skipPhase = ValueNotifier( _AniSkipPhase.none, ); @@ -216,6 +295,10 @@ class _AnimeStreamPageState extends riv.ConsumerState bool _hasEndingSkip = false; bool _initSubtitleAndAudio = true; bool _includeSubtitles = false; + int _subDelay = 0; + final _subDelayController = TextEditingController(text: "0"); + double _subSpeed = 1; + final _subSpeedController = TextEditingController(text: "1"); int lastRpcTimestampUpdate = DateTime.now().millisecondsSinceEpoch; late final StreamSubscription _currentPositionSub; @@ -225,10 +308,7 @@ class _AnimeStreamPageState extends riv.ConsumerState .duration .listen((duration) { _currentTotalDuration.value = duration; - discordRpc?.startChapterTimestamp( - _currentPosition.value.inMilliseconds, - duration.inMilliseconds, - ); + discordRpc?.updateChapterTimestamp(_currentPosition.value, duration); }); bool get hasNextEpisode => _streamController.getEpisodeIndex().$1 != 0; @@ -249,6 +329,396 @@ class _AnimeStreamPageState extends riv.ConsumerState } }); + Future _handleMpvEvents(Pointer event) async { + try { + if (event.ref.event_id == + generated.mpv_event_id.MPV_EVENT_PROPERTY_CHANGE) { + final prop = event.ref.data.cast(); + final propName = prop.ref.name.cast().toDartString(); + if (kDebugMode) { + if (propName.startsWith("user-data/")) { + print("DEBUG 00: $propName - ${prop.ref.format}"); + } + } + if (propName.startsWith("user-data/") && + prop.ref.format == generated.mpv_format.MPV_FORMAT_NODE) { + final value = prop.ref.data.cast(); + _handleMpvNodeEvents(propName, value); + } else if (propName.startsWith("user-data/") && + prop.ref.format == generated.mpv_format.MPV_FORMAT_INT64) { + final value = prop.ref.data.cast().value; + _handleMpvNumberEvents(propName, value); + } + } + } catch (e) { + if (kDebugMode) { + debugPrint(e.toString()); + } + } + } + + Future _handleMpvNodeEvents( + String propName, + Pointer value, + ) async { + final nativePlayer = _player.platform as NativePlayer; + switch (propName.substring(10)) { + case "aniyomi/show_text": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + botToast( + text, + alignY: -0.99, + second: 2, + dismissDirections: const [ + DismissDirection.vertical, + DismissDirection.horizontal, + ], + showIcon: false, + ); + nativePlayer.setProperty("user-data/aniyomi/show_text", ""); + } + break; + case "aniyomi/toggle_ui": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + switch (text) { + // WIP + case "show": + break; + case "hide": + break; + case "toggle": + break; + } + nativePlayer.setProperty("user-data/aniyomi/toggle_ui", ""); + } + break; + case "aniyomi/show_panel": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + switch (text) { + // WIP + case "subtitle_settings": + break; + case "subtitle_delay": + break; + case "audio_delay": + break; + case "video_filters": + break; + } + nativePlayer.setProperty("user-data/aniyomi/show_panel", ""); + } + break; + case "aniyomi/software_keyboard": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + switch (text) { + // WIP + case "show": + break; + case "hide": + break; + case "toggle": + break; + } + nativePlayer.setProperty("user-data/aniyomi/software_keyboard", ""); + } + break; + case "aniyomi/set_button_title": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + final temp = _customButton.value; + if (temp == null) break; + _customButton.value = temp..currentTitle = text; + nativePlayer.setProperty("user-data/aniyomi/set_button_title", ""); + } + break; + case "aniyomi/reset_button_title": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + final temp = _customButton.value; + if (temp == null) break; + _customButton.value = temp..currentTitle = temp.button.title ?? ""; + nativePlayer.setProperty("user-data/aniyomi/reset_button_title", ""); + } + break; + case "aniyomi/toggle_button": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + final temp = _customButton.value; + if (temp == null) break; + switch (text) { + case "show": + _customButton.value = temp..visible = true; + break; + case "hide": + _customButton.value = temp..visible = false; + break; + case "toggle": + _customButton.value = temp..visible = !temp.visible; + break; + } + nativePlayer.setProperty("user-data/aniyomi/toggle_button", ""); + } + break; + case "aniyomi/switch_episode": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + switch (text) { + case "n": + pushToNewEpisode(context, _streamController.getNextEpisode()); + break; + case "p": + pushToNewEpisode(context, _streamController.getPrevEpisode()); + break; + } + nativePlayer.setProperty("user-data/aniyomi/switch_episode", ""); + } + break; + case "aniyomi/pause": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + switch (text) { + case "pause": + await _player.pause(); + break; + case "unpause": + await _player.play(); + break; + case "pauseunpause": + await _player.playOrPause(); + break; + } + nativePlayer.setProperty("user-data/aniyomi/pause", ""); + } + break; + case "aniyomi/seek_by": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + final data = int.parse(text.replaceAll("\"", "")); + final pos = _currentPosition.value.inSeconds + data; + _tempPosition.value = Duration(seconds: pos); + await _player.seek(Duration(seconds: pos)); + _tempPosition.value = null; + nativePlayer.setProperty("user-data/aniyomi/seek_by", ""); + } + break; + case "aniyomi/seek_to": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + final data = int.parse(text.replaceAll("\"", "")); + _tempPosition.value = Duration(seconds: data); + await _player.seek(Duration(seconds: data)); + _tempPosition.value = null; + nativePlayer.setProperty("user-data/aniyomi/seek_to", ""); + } + break; + case "aniyomi/seek_by_with_text": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + final data = text.split("|"); + final pos = + _currentPosition.value.inSeconds + + int.parse(data[0].replaceAll("\"", "")); + _tempPosition.value = Duration(seconds: pos); + await _player.seek(Duration(seconds: pos)); + _tempPosition.value = null; + (_player.platform as NativePlayer).command(["show-text", data[1]]); + nativePlayer.setProperty("user-data/aniyomi/seek_by_with_text", ""); + } + break; + case "aniyomi/seek_to_with_text": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + final data = text.split("|"); + final pos = int.parse(data[0].replaceAll("\"", "")); + _tempPosition.value = Duration(seconds: pos); + await _player.seek(Duration(seconds: pos)); + _tempPosition.value = null; + (_player.platform as NativePlayer).command(["show-text", data[1]]); + nativePlayer.setProperty("user-data/aniyomi/seek_to_with_text", ""); + } + break; + case "aniyomi/launch_int_picker": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + if (text.isEmpty) break; + final data = text.split("|"); + final start = int.parse(data[2]); + final stop = int.parse(data[3]); + final step = int.parse(data[4]); + int currentValue = start; + await showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text(data[0]), + content: StatefulBuilder( + builder: (context, setState) => SizedBox( + height: 200, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + NumberPicker( + value: currentValue, + minValue: start, + maxValue: stop, + step: step, + haptics: true, + textMapper: (numberText) => + data[1].replaceAll("%d", numberText), + onChanged: (value) => + setState(() => currentValue = value), + ), + ], + ), + ), + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () async { + Navigator.pop(context); + }, + child: Text( + context.l10n.cancel, + style: TextStyle(color: context.primaryColor), + ), + ), + TextButton( + onPressed: () async { + final namePtr = data[5].toNativeUtf8(); + final valuePtr = calloc(1) + ..value = currentValue; + nativePlayer.mpv.mpv_set_property( + nativePlayer.ctx, + namePtr.cast(), + generated.mpv_format.MPV_FORMAT_INT64, + valuePtr.cast(), + ); + malloc.free(namePtr); + malloc.free(valuePtr); + Navigator.pop(context); + }, + child: Text( + context.l10n.ok, + style: TextStyle(color: context.primaryColor), + ), + ), + ], + ), + ], + ); + }, + ); + nativePlayer.setProperty("user-data/aniyomi/launch_int_picker", ""); + } + break; + case "mangayomi/chapter_titles": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + final data = jsonDecode(text) as List; + _chapterMarks.value = data + .map( + (e) => ( + e["title"] as String, + e["timestamp"] is double + ? (e["timestamp"] as double).toInt() * 1000 + : (e["timestamp"] as int) * 1000, + ), + ) + .toList(); + } + break; + case "mangayomi/selected_shader": + if (value.ref.format == generated.mpv_format.MPV_FORMAT_STRING) { + final text = value.ref.u.string.cast().toDartString(); + _selectedShader.value = text; + } + break; + } + } + + Future _handleMpvNumberEvents(String propName, int value) async { + switch (propName.substring(10)) { + case "mangayomi/current_chapter": + _currentChapterMark.value = max(value, 0); + break; + } + } + + Future _initCustomButton() async { + if (!useMpvConfig) return; + final customButtons = await ref.read(getCustomButtonsStreamProvider.future); + if (customButtons.isEmpty) return; + final primaryButton = + customButtons.firstWhereOrNull((e) => e.isFavourite ?? false) ?? + customButtons.first; + final provider = StorageProvider(); + if (!(await provider.requestPermission())) { + return; + } + final dir = await provider.getMpvDirectory(); + String scriptsDir = path.join(dir!.path, 'scripts'); + final mpvFile = File('$scriptsDir/init_custom_buttons.lua'); + final content = StringBuffer(); + content.writeln("""local lua_modules = mp.find_config_file('scripts') +if lua_modules then + package.path = package.path .. ';' .. lua_modules .. '/?.lua;' .. lua_modules .. '/?/init.lua;' .. '\${scriptsDir()!!.filePath}' .. '/?.lua' +end +local aniyomi = require 'init_aniyomi_functions'"""); + for (final button in customButtons) { + content.writeln( + """ +${button.getButtonStartup(primaryButton.id!).trim()} +function button${button.id}() + ${button.getButtonPress(primaryButton.id!).trim()} +end +mp.register_script_message('call_button_${button.id}', button${button.id}) +function button${button.id}long() + ${button.getButtonLongPress(primaryButton.id!).trim()} +end +mp.register_script_message('call_button_${button.id}_long', button${button.id}long)""", + ); + } + await mpvFile.writeAsString(content.toString()); + await (_player.platform as NativePlayer).command([ + "load-script", + mpvFile.path, + ]); + _customButton.value = ActiveCustomButton( + currentTitle: primaryButton.title!, + visible: true, + button: primaryButton, + onPress: () => (_player.platform as NativePlayer).command([ + "script-message", + "call_button_${primaryButton.id}", + ]), + onLongPress: () => (_player.platform as NativePlayer).command([ + "script-message", + "call_button_${primaryButton.id}_long", + ]), + ); + _customButtons.value = customButtons; + } + void pushToNewEpisode(BuildContext context, Chapter episode) { widget.desktopFullScreenPlayer.call(ref.read(fullscreenProvider)); if (context.mounted) { @@ -315,19 +785,86 @@ class _AnimeStreamPageState extends riv.ConsumerState void _updateRpcTimestamp() { final now = DateTime.now().millisecondsSinceEpoch; - if (lastRpcTimestampUpdate + 10000 < now) { - discordRpc?.updateChapterTimestamp(_currentPosition.value.inMilliseconds); + if (lastRpcTimestampUpdate + 5000 < now) { + if (_currentTotalDuration.value != null) { + discordRpc?.updateChapterTimestamp( + _currentPosition.value, + _currentTotalDuration.value!, + ); + } lastRpcTimestampUpdate = now; } } + void _onSubDelayChanged() { + final nativePlayer = (_player.platform as NativePlayer); + final delayMs = int.tryParse(_subDelayController.text); + if (delayMs != null) { + final namePtr = "sub-delay".toNativeUtf8(); + final valuePtr = calloc(1)..value = delayMs / 1000; + nativePlayer.mpv.mpv_set_property( + nativePlayer.ctx, + namePtr.cast(), + generated.mpv_format.MPV_FORMAT_DOUBLE, + valuePtr.cast(), + ); + malloc.free(namePtr); + malloc.free(valuePtr); + _subDelay = delayMs; + } + } + + void _onSubSpeedChanged() { + final nativePlayer = (_player.platform as NativePlayer); + final speed = double.tryParse(_subSpeedController.text); + if (speed != null) { + final namePtr = "sub-speed".toNativeUtf8(); + final valuePtr = calloc(1) + ..value = speed < 0.1 + ? 0.1 + : speed > 10 + ? 10 + : speed; + nativePlayer.mpv.mpv_set_property( + nativePlayer.ctx, + namePtr.cast(), + generated.mpv_format.MPV_FORMAT_DOUBLE, + valuePtr.cast(), + ); + malloc.free(namePtr); + malloc.free(valuePtr); + _subSpeed = speed; + } + } + @override void initState() { super.initState(); + _controller = VideoController( + _player, + configuration: VideoControllerConfiguration( + hwdec: hwdecMode, + enableHardwareAcceleration: enableHardwareAccel, + vo: Platform.isAndroid + ? useGpuNext + ? "gpu-next" + : "gpu" + : "libmpv", + ), + ); // If player is being launched the first time, // use global "Use Fullscreen" setting. // Else (if user already watches an episode and just changes it), // stay in the same mode, the user left it in. + try { + final defaultSkipIntroLength = ref.read( + defaultSkipIntroLengthStateProvider, + ); + (_player.platform as NativePlayer).setProperty( + "user-data/current-anime/intro-length", + "$defaultSkipIntroLength", + ); + } catch (_) {} if (_isDesktop && _firstTime) { final globalFullscreen = ref.read(fullScreenPlayerStateProvider); setFullScreen(value: globalFullscreen); @@ -354,8 +891,11 @@ class _AnimeStreamPageState extends riv.ConsumerState _setPlaybackSpeed(ref.read(defaultPlayBackSpeedStateProvider)); if (ref.read(enableAniSkipStateProvider)) _initAniSkip(); }); + _initCustomButton(); discordRpc?.showChapterDetails(ref, widget.episode); _currentPosition.addListener(_updateRpcTimestamp); + _subDelayController.addListener(_onSubDelayChanged); + _subSpeedController.addListener(_onSubSpeedChanged); WidgetsBinding.instance.addObserver(this); } @@ -444,6 +984,8 @@ class _AnimeStreamPageState extends riv.ConsumerState discordRpc?.showIdleText(); discordRpc?.showOriginalTimestamp(); _currentPosition.dispose(); + _subDelayController.dispose(); + _subSpeedController.dispose(); super.dispose(); } @@ -614,7 +1156,7 @@ class _AnimeStreamPageState extends riv.ConsumerState .toList(); List subs = []; - if (widget.videos.isNotEmpty && !widget.isLocal) { + if (widget.videos.isNotEmpty) { for (var video in widget.videos) { for (var sub in video.subtitles ?? []) { if (!subs.contains(sub.file)) { @@ -622,8 +1164,8 @@ class _AnimeStreamPageState extends riv.ConsumerState final label = sub.label; videoSubtitle.add( VideoPrefs( - isLocal: false, - subtitle: file.startsWith("http") + isLocal: widget.isLocal, + subtitle: (file.startsWith("http") || file.startsWith("file")) ? SubtitleTrack.uri(file, title: label, language: label) : SubtitleTrack.data(file, title: label, language: label), ), @@ -675,6 +1217,91 @@ class _AnimeStreamPageState extends riv.ConsumerState padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 12), child: Column( children: [ + Row( + children: [ + Text(context.l10n.subtitle_delay_text), + IconButton( + onPressed: () { + _subDelay = 0; + _subDelayController.value = TextEditingValue( + text: "$_subDelay", + ); + _subSpeed = 1; + _subSpeedController.value = TextEditingValue( + text: _subSpeed.toStringAsFixed(2), + ); + }, + icon: const Icon(Icons.refresh), + ), + ], + ), + const SizedBox(height: 15), + Row( + children: [ + IconButton( + onPressed: () { + _subDelay -= 50; + _subDelayController.value = TextEditingValue( + text: "$_subDelay", + ); + }, + icon: const Icon(Icons.remove_circle), + ), + Expanded( + child: TextFormField( + controller: _subDelayController, + keyboardType: TextInputType.number, + decoration: InputDecoration( + isDense: true, + label: Text(context.l10n.subtitle_delay), + ), + ), + ), + IconButton( + onPressed: () { + _subDelay += 50; + _subDelayController.value = TextEditingValue( + text: "$_subDelay", + ); + }, + icon: const Icon(Icons.add_circle), + ), + ], + ), + const SizedBox(height: 15), + Row( + children: [ + IconButton( + onPressed: () { + _subSpeed -= 0.01; + _subSpeedController.value = TextEditingValue( + text: _subSpeed.toStringAsFixed(2), + ); + }, + icon: const Icon(Icons.remove_circle), + ), + Expanded( + child: TextFormField( + controller: _subSpeedController, + keyboardType: TextInputType.numberWithOptions(decimal: true), + decoration: InputDecoration( + isDense: true, + label: Text(context.l10n.subtitle_speed), + ), + ), + ), + IconButton( + onPressed: () { + _subSpeed += 0.01; + _subSpeedController.value = TextEditingValue( + text: _subSpeed.toStringAsFixed(2), + ); + }, + icon: const Icon(Icons.add_circle), + ), + ], + ), + const SizedBox(height: 30), ...videoSubtitleLast.toSet().toList().map((sub) { final title = sub.title ?? @@ -700,6 +1327,7 @@ class _AnimeStreamPageState extends riv.ConsumerState child: textWidget(title, selected), ); }), + const SizedBox(height: 30), GestureDetector( onTap: () async { try { @@ -721,6 +1349,35 @@ class _AnimeStreamPageState extends riv.ConsumerState }, child: textWidget(context.l10n.load_own_subtitles, false), ), + const SizedBox(height: 30), + GestureDetector( + onTap: () async { + try { + final subtitle = + await subtitlesSearchraggableMenu( + context, + chapter: widget.episode, + isLocal: widget.isLocal, + ) + as ImdbSubtitle?; + if (subtitle != null && context.mounted) { + _player.setSubtitleTrack( + SubtitleTrack.uri( + subtitle.url!, + title: subtitle.language, + language: subtitle.language, + ), + ); + } + if (!context.mounted) return; + Navigator.pop(context); + } catch (_) { + botToast("Error"); + Navigator.pop(context); + } + }, + child: textWidget(context.l10n.search_subtitles, false), + ), ], ), ); @@ -834,27 +1491,79 @@ class _AnimeStreamPageState extends riv.ConsumerState padding: const EdgeInsets.symmetric(vertical: 5), child: SizedBox( height: 35, - child: ElevatedButton( - onPressed: () async { - _tempPosition.value = Duration( - seconds: - defaultSkipIntroLength + _currentPosition.value.inSeconds, - ); - await _player.seek( - Duration( - seconds: - _currentPosition.value.inSeconds + defaultSkipIntroLength, - ), - ); - _tempPosition.value = null; - }, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - "+$defaultSkipIntroLength", - style: const TextStyle(fontWeight: FontWeight.w100), - ), - ), + child: ValueListenableBuilder( + valueListenable: _customButton, + builder: (context, value, child) => (value?.visible ?? true) + ? ElevatedButton( + onPressed: + value?.onPress ?? + () async { + _tempPosition.value = Duration( + seconds: + defaultSkipIntroLength + + _currentPosition.value.inSeconds, + ); + await _player.seek( + Duration( + seconds: + _currentPosition.value.inSeconds + + defaultSkipIntroLength, + ), + ); + _tempPosition.value = null; + }, + onLongPress: value?.onLongPress, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + value != null + ? value.currentTitle + : "+$defaultSkipIntroLength", + style: const TextStyle(fontWeight: FontWeight.w100), + ), + ), + ) + : Container(), + ), + ), + ); + } + + Widget _chapterMarkWidget() { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 5), + child: SizedBox( + height: 35, + child: ValueListenableBuilder( + valueListenable: _currentChapterMark, + builder: (context, value, child) => value != null + ? PopupMenuButton( + tooltip: '', + itemBuilder: (context) => _chapterMarks.value + .map( + (mark) => PopupMenuItem( + value: mark.$2, + child: Text( + "${mark.$1} - ${Duration(milliseconds: mark.$2).label()}", + ), + onTap: () => + _player.seek(Duration(milliseconds: mark.$2)), + ), + ) + .toList(), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "${_chapterMarks.value[value].$1} - ${Duration(milliseconds: _chapterMarks.value[value].$2).label()}", + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + ), + ), + ) + : Container(), ), ), ); @@ -870,7 +1579,11 @@ class _AnimeStreamPageState extends riv.ConsumerState padding: const EdgeInsets.symmetric(horizontal: 8), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [_seekToWidget(), _buildSettingsButtons(context)], + children: [ + _seekToWidget(), + _chapterMarkWidget(), + _buildSettingsButtons(context), + ], ), ), ], @@ -1014,6 +1727,7 @@ class _AnimeStreamPageState extends riv.ConsumerState controller: _controller, ), ), + _chapterMarkWidget(), ], ), _buildSettingsButtons(context), @@ -1023,6 +1737,111 @@ class _AnimeStreamPageState extends riv.ConsumerState ); } + List _buildMpvSettingsButton(BuildContext context) { + return [ + PopupMenuButton( + tooltip: 'Shaders', + icon: const Icon(Icons.high_quality, color: Colors.white), + itemBuilder: (context) => + [ + ("Anime4K: Mode A (Fast)", "set_anime_a"), + ("Anime4K: Mode B (Fast)", "set_anime_b"), + ("Anime4K: Mode C (Fast)", "set_anime_c"), + ("Anime4K: Mode A+A (Fast)", "set_anime_aa"), + ("Anime4K: Mode B+B (Fast)", "set_anime_bb"), + ("Anime4K: Mode C+A (Fast)", "set_anime_ca"), + ("Anime4K: Mode A (HQ)", "set_anime_hq_a"), + ("Anime4K: Mode B (HQ)", "set_anime_hq_b"), + ("Anime4K: Mode C (HQ)", "set_anime_hq_c"), + ("Anime4K: Mode A+A (HQ)", "set_anime_hq_aa"), + ("Anime4K: Mode B+B (HQ)", "set_anime_hq_bb"), + ("Anime4K: Mode C+A (HQ)", "set_anime_hq_ca"), + ("AMD FSR", "set_fsr"), + ("Luma Upscaling", "set_luma"), + ("Qualcomm Snapdragon GSR", "set_snapdragon"), + ("NVIDIA Image Scaling", "set_nvidia"), + ("Clear GLSL shaders", "clear_anime"), + ] + .map( + (mode) => PopupMenuItem( + value: mode.$1, + child: Text( + mode.$1, + style: TextStyle( + fontWeight: _selectedShader.value == mode.$1 + ? FontWeight.w900 + : FontWeight.normal, + ), + ), + onTap: () { + (_player.platform as NativePlayer).command([ + "script-message", + mode.$2, + ]); + }, + ), + ) + .toList(), + ), + PopupMenuButton( + tooltip: 'Stats', + icon: const Icon(Icons.memory, color: Colors.white), + itemBuilder: (context) => + [ + ("Stats Toggle", "stats/display-stats-toggle"), + ("Stats Page 1", "stats/display-page-1"), + ("Stats Page 2", "stats/display-page-2"), + ("Stats Page 3", "stats/display-page-3"), + ("Stats Page 4", "stats/display-page-4"), + ("Stats Page 5", "stats/display-page-5"), + ] + .map( + (mode) => PopupMenuItem( + value: mode.$1, + child: Text( + mode.$1, + style: TextStyle( + fontWeight: _selectedShader.value == mode.$1 + ? FontWeight.w900 + : FontWeight.normal, + ), + ), + onTap: () { + (_player.platform as NativePlayer).command([ + "script-binding", + mode.$2, + ]); + }, + ), + ) + .toList(), + ), + ValueListenableBuilder( + valueListenable: _customButtons, + builder: (context, value, child) => value != null + ? PopupMenuButton( + tooltip: context.l10n.custom_buttons, + icon: const Icon(Icons.terminal, color: Colors.white), + itemBuilder: (context) => value + .map( + (btn) => PopupMenuItem( + value: btn.title!, + child: Text(btn.title!), + onTap: () { + (_player.platform as NativePlayer).command([ + "script-message", + "call_button_${btn.id}", + ]); + }, + ), + ) + .toList(), + ) + : Container(), + ), + ]; + } + /// helper method for _mobileBottomButtonBar() and _desktopBottomButtonBar() Widget _buildSettingsButtons(BuildContext context) { final isFullscreen = ref.watch(fullscreenProvider); @@ -1033,6 +1852,7 @@ class _AnimeStreamPageState extends riv.ConsumerState onPressed: () => _videoSettingDraggableMenu(context), icon: const Icon(Icons.video_settings, color: Colors.white), ), + if (useMpvConfig) ..._buildMpvSettingsButton(context), PopupMenuButton( tooltip: '', // Remove default tooltip "Show menu" for consistency icon: const Icon(Icons.speed, color: Colors.white), @@ -1159,53 +1979,6 @@ class _AnimeStreamPageState extends riv.ConsumerState } }, ), - // IconButton( - // onPressed: () { - // showDialog( - // context: context, - // builder: (context) { - // return AlertDialog( - // scrollable: true, - // title: Text("Player Settings"), - // content: SizedBox( - // width: context.width(0.8), - // child: Column( - // crossAxisAlignment: - // CrossAxisAlignment.start, - // children: [ - // SwitchListTile( - // value: false, - // title: Text( - // "Enable Volume and Brightness Gestures", - // style: TextStyle( - // color: Theme.of(context) - // .textTheme - // .bodyLarge! - // .color! - // .withValues(alpha: 0.9), - // fontSize: 14), - // ), - // onChanged: (value) {}), - // SwitchListTile( - // value: false, - // title: Text( - // "Enable Horizonal Seek Gestures", - // style: TextStyle( - // color: Theme.of(context) - // .textTheme - // .bodyLarge! - // .color! - // .withValues(alpha: 0.9), - // fontSize: 14), - // ), - // onChanged: (value) {}), - // ], - // ), - // ), - // ); - // }); - // }, - // icon: Icon(Icons.adaptive.more)) ], ), ], @@ -1259,6 +2032,7 @@ class _AnimeStreamPageState extends riv.ConsumerState }, defaultSkipIntroLength: skipIntroLength, desktopFullScreenPlayer: widget.desktopFullScreenPlayer, + chapterMarks: _chapterMarks, ) : MobileControllerWidget( videoController: _controller, @@ -1269,6 +2043,7 @@ class _AnimeStreamPageState extends riv.ConsumerState doubleSpeed: (value) { _isDoubleSpeed.value = value ?? false; }, + chapterMarks: _chapterMarks, ), controller: _controller, width: context.width(1), @@ -1482,13 +2257,22 @@ class _AnimeStreamPageState extends riv.ConsumerState format: "image/png", includeLibassSubtitles: _includeSubtitles, ); - await Share.shareXFiles([ - XFile.fromData( - imageBytes!, - name: name, - mimeType: 'image/png', - ), - ]); + if (context.mounted) { + final box = + context.findRenderObject() as RenderBox?; + await Share.shareXFiles( + [ + XFile.fromData( + imageBytes!, + name: name, + mimeType: 'image/png', + ), + ], + sharePositionOrigin: + box!.localToGlobal(Offset.zero) & + box.size, + ); + } }, ), button( diff --git a/lib/modules/anime/providers/anime_player_controller_provider.g.dart b/lib/modules/anime/providers/anime_player_controller_provider.g.dart index 7dcd7ad8..5ca0995e 100644 --- a/lib/modules/anime/providers/anime_player_controller_provider.g.dart +++ b/lib/modules/anime/providers/anime_player_controller_provider.g.dart @@ -34,9 +34,7 @@ abstract class _$AnimeStreamController extends BuildlessAutoDisposeNotifier { late final Chapter episode; - void build({ - required Chapter episode, - }); + void build({required Chapter episode}); } /// See also [AnimeStreamController]. @@ -49,21 +47,15 @@ class AnimeStreamControllerFamily extends Family { const AnimeStreamControllerFamily(); /// See also [AnimeStreamController]. - AnimeStreamControllerProvider call({ - required Chapter episode, - }) { - return AnimeStreamControllerProvider( - episode: episode, - ); + AnimeStreamControllerProvider call({required Chapter episode}) { + return AnimeStreamControllerProvider(episode: episode); } @override AnimeStreamControllerProvider getProviderOverride( covariant AnimeStreamControllerProvider provider, ) { - return call( - episode: provider.episode, - ); + return call(episode: provider.episode); } static const Iterable? _dependencies = null; @@ -85,21 +77,19 @@ class AnimeStreamControllerFamily extends Family { class AnimeStreamControllerProvider extends AutoDisposeNotifierProviderImpl { /// See also [AnimeStreamController]. - AnimeStreamControllerProvider({ - required Chapter episode, - }) : this._internal( - () => AnimeStreamController()..episode = episode, - from: animeStreamControllerProvider, - name: r'animeStreamControllerProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$animeStreamControllerHash, - dependencies: AnimeStreamControllerFamily._dependencies, - allTransitiveDependencies: - AnimeStreamControllerFamily._allTransitiveDependencies, - episode: episode, - ); + AnimeStreamControllerProvider({required Chapter episode}) + : this._internal( + () => AnimeStreamController()..episode = episode, + from: animeStreamControllerProvider, + name: r'animeStreamControllerProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$animeStreamControllerHash, + dependencies: AnimeStreamControllerFamily._dependencies, + allTransitiveDependencies: + AnimeStreamControllerFamily._allTransitiveDependencies, + episode: episode, + ); AnimeStreamControllerProvider._internal( super._createNotifier, { @@ -114,12 +104,8 @@ class AnimeStreamControllerProvider final Chapter episode; @override - void runNotifierBuild( - covariant AnimeStreamController notifier, - ) { - return notifier.build( - episode: episode, - ); + void runNotifierBuild(covariant AnimeStreamController notifier) { + return notifier.build(episode: episode); } @override @@ -140,7 +126,7 @@ class AnimeStreamControllerProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _AnimeStreamControllerProviderElement(this); } @@ -173,5 +159,6 @@ class _AnimeStreamControllerProviderElement @override Chapter get episode => (origin as AnimeStreamControllerProvider).episode; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/anime/providers/state_provider.g.dart b/lib/modules/anime/providers/state_provider.g.dart index 5f6ac99d..b97a147a 100644 --- a/lib/modules/anime/providers/state_provider.g.dart +++ b/lib/modules/anime/providers/state_provider.g.dart @@ -11,16 +11,19 @@ String _$subtitleSettingsStateHash() => /// See also [SubtitleSettingsState]. @ProviderFor(SubtitleSettingsState) -final subtitleSettingsStateProvider = AutoDisposeNotifierProvider< - SubtitleSettingsState, PlayerSubtitleSettings>.internal( - SubtitleSettingsState.new, - name: r'subtitleSettingsStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$subtitleSettingsStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final subtitleSettingsStateProvider = + AutoDisposeNotifierProvider< + SubtitleSettingsState, + PlayerSubtitleSettings + >.internal( + SubtitleSettingsState.new, + name: r'subtitleSettingsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$subtitleSettingsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$SubtitleSettingsState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/anime/widgets/custom_seekbar.dart b/lib/modules/anime/widgets/custom_seekbar.dart index 38bf4e01..e4305c83 100644 --- a/lib/modules/anime/widgets/custom_seekbar.dart +++ b/lib/modules/anime/widgets/custom_seekbar.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'dart:math'; import 'package:flutter/material.dart'; +import 'package:mangayomi/modules/anime/widgets/custom_track_shape.dart'; import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video_controls/src/controls/extensions/duration.dart'; @@ -9,6 +10,7 @@ class CustomSeekBar extends StatefulWidget { final Duration? delta; final Function(Duration)? onSeekStart; final Function(Duration)? onSeekEnd; + final ValueNotifier> chapterMarks; const CustomSeekBar({ super.key, @@ -16,6 +18,7 @@ class CustomSeekBar extends StatefulWidget { this.onSeekEnd, required this.player, this.delta, + required this.chapterMarks, }); @override @@ -90,6 +93,14 @@ class CustomSeekBarState extends State { data: SliderTheme.of(context).copyWith( trackHeight: isDesktop ? null : 3, overlayShape: const RoundSliderOverlayShape(overlayRadius: 5.0), + trackShape: CustomTrackShape( + currentPosition: clampedValue, + bufferPosition: max(buffer.inMilliseconds.toDouble(), 0), + maxValue: maxValue < 1 ? 1 : maxValue, + minValue: 0, + chapterMarks: widget.chapterMarks.value, + chapterMarkWidth: 10, + ), ), child: Slider( max: maxValue, diff --git a/lib/modules/anime/widgets/custom_track_shape.dart b/lib/modules/anime/widgets/custom_track_shape.dart new file mode 100644 index 00000000..a7796248 --- /dev/null +++ b/lib/modules/anime/widgets/custom_track_shape.dart @@ -0,0 +1,200 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +class CustomTrackShape extends SliderTrackShape { + final double maxValue; + final double minValue; + final double currentPosition; + final double bufferPosition; + final List<(String, int)> chapterMarks; + final double chapterMarkWidth; + double trackWidth; + + CustomTrackShape({ + required this.maxValue, + required this.minValue, + required this.currentPosition, + required this.bufferPosition, + required this.chapterMarks, + this.chapterMarkWidth = 3, + this.trackWidth = 5, + }); + + @override + Rect getPreferredRect({ + required RenderBox parentBox, + Offset offset = Offset.zero, + required SliderThemeData sliderTheme, + bool? isEnabled, + bool? isDiscrete, + }) { + final double thumbWidth = sliderTheme.thumbShape! + .getPreferredSize(isEnabled ?? true, isDiscrete ?? false) + .width; + final double trackHeight = sliderTheme.trackHeight!; + + final double trackTop = + offset.dy + (parentBox.size.height - trackHeight) / 2; + final double trackLeft = offset.dx + thumbWidth / 2; + trackWidth = parentBox.size.width - thumbWidth; + + return Rect.fromLTWH(trackLeft, trackTop, trackWidth, trackHeight); + } + + @override + void paint( + PaintingContext context, + Offset offset, { + required RenderBox parentBox, + required SliderThemeData sliderTheme, + required Animation enableAnimation, + required Offset thumbCenter, + Offset? secondaryOffset, + bool? isEnabled, + bool? isDiscrete, + required TextDirection textDirection, + }) { + if (sliderTheme.trackHeight == 0) return; + final Rect trackRect = getPreferredRect( + parentBox: parentBox, + offset: offset, + sliderTheme: sliderTheme, + isEnabled: isEnabled, + isDiscrete: isDiscrete, + ); + double currentPositionWidth = (trackWidth / maxValue) * currentPosition; + double bufferPositionWidth = (trackWidth / maxValue) * bufferPosition; + + _drawActiveThumb(context, sliderTheme, trackRect, currentPositionWidth); + _drawBufferThumb( + context, + sliderTheme, + trackRect, + currentPositionWidth, + bufferPositionWidth, + ); + _drawInactiveThumb(context, sliderTheme, trackRect, currentPositionWidth); + + for (final mark in chapterMarks) { + double markPositionWidth = (trackWidth / maxValue) * mark.$2; + _drawChapterMark(context, sliderTheme, trackRect, markPositionWidth); + } + } + + void _drawActiveThumb( + PaintingContext context, + SliderThemeData sliderTheme, + Rect trackRect, + double currentPositionWidth, + ) { + final Paint defaultPathPaint = Paint() + ..color = sliderTheme.activeTrackColor! + ..style = PaintingStyle.fill; + + final defaultPathSegment = Path() + ..addRect( + Rect.fromPoints( + Offset(trackRect.left, trackRect.top), + Offset(trackRect.left + currentPositionWidth, trackRect.bottom), + ), + ) + ..lineTo(trackRect.left, trackRect.bottom) + ..arcTo( + Rect.fromPoints( + Offset(trackRect.left + 5, trackRect.top), + Offset(trackRect.left - 5, trackRect.bottom), + ), + -pi * 3 / 2, + pi, + false, + ); + + context.canvas.drawPath(defaultPathSegment, defaultPathPaint); + } + + void _drawBufferThumb( + PaintingContext context, + SliderThemeData sliderTheme, + Rect trackRect, + double currentPositionWidth, + double bufferPositionWidth, + ) { + final Paint defaultPathPaint = Paint() + ..color = sliderTheme.secondaryActiveTrackColor! + ..style = PaintingStyle.fill; + + final defaultPathSegment = Path() + ..addRect( + Rect.fromPoints( + Offset(trackRect.left + currentPositionWidth, trackRect.top), + Offset(trackRect.left + bufferPositionWidth, trackRect.bottom), + ), + ) + ..lineTo(trackRect.left, trackRect.bottom) + ..arcTo( + Rect.fromPoints( + Offset(trackRect.left + 5, trackRect.top), + Offset(trackRect.left - 5, trackRect.bottom), + ), + -pi * 3 / 2, + pi, + false, + ); + + context.canvas.drawPath(defaultPathSegment, defaultPathPaint); + } + + void _drawInactiveThumb( + PaintingContext context, + SliderThemeData sliderTheme, + Rect trackRect, + double currentPositionWidth, + ) { + final unselectedPathPaint = Paint() + ..style = PaintingStyle.fill + ..color = sliderTheme.inactiveTrackColor!; + + final unselectedPathSegment = Path() + ..addRect( + Rect.fromPoints( + Offset(trackRect.right, trackRect.top), + Offset(trackRect.left + currentPositionWidth, trackRect.bottom), + ), + ) + ..addArc( + Rect.fromPoints( + Offset(trackRect.right - 5, trackRect.bottom), + Offset(trackRect.right + 5, trackRect.top), + ), + -pi / 2, + pi, + ); + + context.canvas.drawPath(unselectedPathSegment, unselectedPathPaint); + } + + void _drawChapterMark( + PaintingContext context, + SliderThemeData sliderTheme, + Rect trackRect, + double markPositionWidth, + ) { + final Paint borderPaint = Paint() + ..color = Colors.white + ..style = PaintingStyle.fill; + + final pathSegmentSelected = Path() + ..addRect( + Rect.fromPoints( + Offset(trackRect.left + markPositionWidth, trackRect.top), + Offset( + trackRect.left + markPositionWidth + chapterMarkWidth, + trackRect.bottom, + ), + ), + ); + + context.canvas.drawPath(pathSegmentSelected, borderPaint); + } +} diff --git a/lib/modules/anime/widgets/desktop.dart b/lib/modules/anime/widgets/desktop.dart index eadc18be..d3754a9c 100644 --- a/lib/modules/anime/widgets/desktop.dart +++ b/lib/modules/anime/widgets/desktop.dart @@ -9,6 +9,7 @@ import 'package:mangayomi/modules/anime/providers/anime_player_controller_provid import 'package:mangayomi/modules/anime/widgets/custom_seekbar.dart'; import 'package:mangayomi/modules/anime/widgets/subtitle_view.dart'; import 'package:mangayomi/modules/more/settings/player/providers/player_state_provider.dart'; +import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video.dart'; import 'package:media_kit_video/media_kit_video_controls/src/controls/extensions/duration.dart'; import 'package:window_manager/window_manager.dart'; @@ -24,6 +25,7 @@ class DesktopControllerWidget extends ConsumerStatefulWidget { final Widget seekToWidget; final int defaultSkipIntroLength; final void Function(bool) desktopFullScreenPlayer; + final ValueNotifier> chapterMarks; const DesktopControllerWidget({ super.key, required this.videoController, @@ -36,6 +38,7 @@ class DesktopControllerWidget extends ConsumerStatefulWidget { required this.doubleSpeed, required this.defaultSkipIntroLength, required this.desktopFullScreenPlayer, + required this.chapterMarks, }); @override @@ -215,6 +218,48 @@ class _DesktopControllerWidgetState final desktopFullScreenPlayer = widget.desktopFullScreenPlayer; await _changeFullScreen(ref, desktopFullScreenPlayer, value: false); }, + const SingleActivator(LogicalKeyboardKey.digit0, control: true): () { + (widget.videoController.player.platform as NativePlayer).command([ + "script-message", + "clear_anime", + ]); + }, + const SingleActivator(LogicalKeyboardKey.digit1, control: true): () { + (widget.videoController.player.platform as NativePlayer).command([ + "script-message", + "set_anime_a", + ]); + }, + const SingleActivator(LogicalKeyboardKey.digit2, control: true): () { + (widget.videoController.player.platform as NativePlayer).command([ + "script-message", + "set_anime_b", + ]); + }, + const SingleActivator(LogicalKeyboardKey.digit3, control: true): () { + (widget.videoController.player.platform as NativePlayer).command([ + "script-message", + "set_anime_c", + ]); + }, + const SingleActivator(LogicalKeyboardKey.digit4, control: true): () { + (widget.videoController.player.platform as NativePlayer).command([ + "script-message", + "set_anime_aa", + ]); + }, + const SingleActivator(LogicalKeyboardKey.digit5, control: true): () { + (widget.videoController.player.platform as NativePlayer).command([ + "script-message", + "set_anime_bb", + ]); + }, + const SingleActivator(LogicalKeyboardKey.digit6, control: true): () { + (widget.videoController.player.platform as NativePlayer).command([ + "script-message", + "set_anime_ca", + ]); + }, }, child: Stack( children: [ @@ -439,6 +484,7 @@ class _DesktopControllerWidgetState widget.tempDuration(null); }, player: widget.videoController.player, + chapterMarks: widget.chapterMarks, ), ), ), diff --git a/lib/modules/anime/widgets/mobile.dart b/lib/modules/anime/widgets/mobile.dart index 7c234099..c797973e 100644 --- a/lib/modules/anime/widgets/mobile.dart +++ b/lib/modules/anime/widgets/mobile.dart @@ -24,6 +24,7 @@ class MobileControllerWidget extends ConsumerStatefulWidget { final Widget topButtonBarWidget; final GlobalKey videoStatekey; final Widget bottomButtonBarWidget; + final ValueNotifier> chapterMarks; const MobileControllerWidget({ super.key, required this.videoController, @@ -32,6 +33,7 @@ class MobileControllerWidget extends ConsumerStatefulWidget { required this.streamController, required this.videoStatekey, required this.doubleSpeed, + required this.chapterMarks, }); @override @@ -464,6 +466,7 @@ class _MobileControllerWidgetState }); }, player: widget.videoController.player, + chapterMarks: widget.chapterMarks, ), ), widget.bottomButtonBarWidget, @@ -491,6 +494,7 @@ class _MobileControllerWidgetState child: CustomSeekBar( delta: _seekBarDeltaValueNotifier, player: widget.videoController.player, + chapterMarks: widget.chapterMarks, ), ), ], diff --git a/lib/modules/anime/widgets/search_subtitles.dart b/lib/modules/anime/widgets/search_subtitles.dart new file mode 100644 index 00000000..6df11742 --- /dev/null +++ b/lib/modules/anime/widgets/search_subtitles.dart @@ -0,0 +1,439 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/eval/model/m_bridge.dart'; +import 'package:mangayomi/models/chapter.dart'; +import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; +import 'package:mangayomi/modules/widgets/error_text.dart'; +import 'package:mangayomi/modules/widgets/progress_center.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/providers/storage_provider.dart'; +import 'package:mangayomi/services/fetch_subtitles.dart'; +import 'package:mangayomi/services/http/m_client.dart'; +import 'package:mangayomi/services/http/rhttp/src/model/settings.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; +import 'package:mangayomi/utils/log/logger.dart'; +import 'package:path/path.dart' as path; +import 'package:super_sliver_list/super_sliver_list.dart'; + +class SubtitlesWidgetSearch extends ConsumerStatefulWidget { + final Chapter chapter; + final bool isLocal; + const SubtitlesWidgetSearch({ + required this.chapter, + required this.isLocal, + super.key, + }); + + @override + ConsumerState createState() => + _SubtitlesWidgetSearchState(); +} + +class _SubtitlesWidgetSearchState extends ConsumerState { + late final _controller = TextEditingController(text: query); + List titles = []; + List? episodes; + List? subtitles; + late String query = widget.chapter.manga.value?.name?.trim() ?? ""; + bool hide = false; + bool _isLoading = true; + String? _errorMsg; + + @override + initState() { + super.initState(); + _init(); + } + + _init() async { + await Future.delayed(const Duration(microseconds: 100)); + try { + titles = await fetchImdbTitles(query); + } catch (e) { + _errorMsg = e.toString(); + } + if (mounted) { + setState(() { + _isLoading = false; + }); + } + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Material( + color: Theme.of(context).scaffoldBackgroundColor, + borderRadius: const BorderRadius.only( + bottomLeft: Radius.circular(20), + bottomRight: Radius.circular(20), + ), + clipBehavior: Clip.antiAliasWithSaveLayer, + child: _isLoading + ? SizedBox( + height: context.height(0.3), + child: Padding( + padding: const EdgeInsets.all(20), + child: const ProgressCenter(), + ), + ) + : Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: SizedBox( + height: context.height(0.8), + child: Column( + mainAxisAlignment: _errorMsg != null + ? MainAxisAlignment.center + : MainAxisAlignment.start, + children: [ + if (subtitles != null || episodes != null) + IconButton( + onPressed: () { + setState(() { + if (subtitles != null) { + subtitles = null; + } else if (episodes != null) { + episodes = null; + } + }); + }, + icon: const Icon(Icons.keyboard_arrow_left), + ), + if (_errorMsg != null) + Padding( + padding: const EdgeInsets.all(30), + child: ErrorText(_errorMsg!), + ), + if (_errorMsg == null && !hide) + Flexible(child: _showImdbList(context)), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: TextFormField( + onTap: () { + if (Platform.isAndroid || Platform.isIOS) { + setState(() { + hide = true; + }); + } + }, + controller: _controller, + keyboardType: TextInputType.text, + onChanged: (d) { + setState(() { + query = d; + }); + }, + onFieldSubmitted: (d) async { + setState(() { + _isLoading = true; + _errorMsg = null; + subtitles = null; + episodes = null; + }); + try { + titles = await fetchImdbTitles(query); + } catch (e) { + _errorMsg = e.toString(); + hide = false; + } + + if (mounted) { + setState(() { + _isLoading = false; + hide = false; + }); + } + }, + decoration: InputDecoration( + isDense: true, + filled: true, + fillColor: Colors.transparent, + suffixIcon: query.isEmpty + ? null + : IconButton( + onPressed: () { + _controller.clear(); + }, + icon: const Icon(Icons.clear), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: context.primaryColor), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: context.primaryColor), + ), + border: OutlineInputBorder( + borderSide: BorderSide(color: context.primaryColor), + ), + ), + ), + ), + ], + ), + ), + ), + ); + } + + Widget _showImdbList(BuildContext context) { + return SuperListView.separated( + padding: const EdgeInsets.only(top: 20), + itemCount: subtitles?.length ?? episodes?.length ?? titles.length, + itemBuilder: (context, index) { + final isSubtitles = subtitles != null; + final isEpisodes = episodes != null; + return Padding( + padding: const EdgeInsets.only(top: 5), + child: InkWell( + onTap: () async { + if (isSubtitles) { + Navigator.pop(context, subtitles![index]); + } else { + setState(() { + _isLoading = true; + _errorMsg = null; + }); + try { + if (isEpisodes) { + subtitles = await fetchImdbSubtitles(episodes![index].id); + } else { + episodes = await fetchImdbEpisodes(titles[index].id); + if (episodes == null || episodes!.isEmpty) { + subtitles = await fetchImdbSubtitles(titles[index].id); + } + } + } catch (e) { + _errorMsg = e.toString(); + } + if (mounted) { + setState(() { + _isLoading = false; + }); + } + } + }, + child: Column( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (!isSubtitles && !isEpisodes) + Material( + borderRadius: BorderRadius.circular(5), + color: Colors.transparent, + clipBehavior: Clip.antiAliasWithSaveLayer, + child: Ink.image( + height: 120, + width: 80, + fit: BoxFit.cover, + image: titles[index].primaryImage != null + ? CustomExtendedNetworkImageProvider( + titles[index].primaryImage!, + ) + : const AssetImage('assets/transparent.png'), + ), + ), + const SizedBox(width: 10), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: context.width(0.6), + child: Text( + isSubtitles + ? "${subtitles![index].name} (${subtitles![index].displayLang}) - ${subtitles![index].format?.toUpperCase() ?? "Unknown"} - ${subtitles![index].encoding ?? "Unknown"}" + : isEpisodes + ? "S${episodes![index].season}E${episodes![index].episode}: ${episodes![index].title}" + : titles[index].primaryTitle, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + ), + if (!isSubtitles && !isEpisodes) + Row( + children: [ + const Text( + "Rating : ", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + ), + ), + Text( + titles[index].aggregateRating?.toStringAsFixed( + 2, + ) ?? + "?", + style: const TextStyle(fontSize: 12), + ), + ], + ), + if (!isSubtitles && !isEpisodes) + Row( + children: [ + const Text( + "Votes : ", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + ), + ), + Text( + titles[index].voteCount?.toString() ?? "?", + style: const TextStyle(fontSize: 12), + ), + ], + ), + if (!isSubtitles && !isEpisodes) + Row( + children: [ + const Text( + "Date : ", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + ), + ), + Text( + "${titles[index].startYear?.toString() ?? "?"} - ${titles[index].endYear?.toString() ?? "?"}", + style: const TextStyle(fontSize: 12), + ), + ], + ), + ], + ), + if (isSubtitles && widget.isLocal) + OutlinedButton.icon( + onPressed: () async => _downloadSubtitle(index), + label: Text(context.l10n.download), + icon: Icon(Icons.download_outlined), + ), + ], + ), + ], + ), + ), + ); + }, + separatorBuilder: (BuildContext context, int index) { + return const Divider(); + }, + ); + } + + Future _downloadSubtitle(int index) async { + botToast(context.l10n.started); + try { + final subtitle = subtitles![index]; + final storageProvider = StorageProvider(); + final chapterDirectory = (await storageProvider.getMangaChapterDirectory( + widget.chapter, + ))!; + final subtitleFile = File( + path.join( + '${chapterDirectory.path}_subtitles', + '${subtitle.language}.srt', + ), + ); + final client = MClient.httpClient( + settings: const ClientSettings( + throwOnStatusCode: false, + tlsSettings: TlsSettings(verifyCertificates: false), + ), + ); + await subtitleFile.create(recursive: true); + final response = await _withRetry( + () => client.get(Uri.parse(subtitle.url ?? '')), + ); + if (response.statusCode != 200) { + AppLogger.log( + 'Warning: Failed to download subtitle file: ${subtitle.language}', + ); + return; + } + AppLogger.log('Subtitle file downloaded: ${subtitle.language}'); + await subtitleFile.writeAsBytes(response.bodyBytes); + if (mounted) { + botToast(context.l10n.finished("")); + } + } catch (e) { + AppLogger.log("Failed to download subtitle:", logLevel: LogLevel.error); + AppLogger.log(e.toString(), logLevel: LogLevel.error); + if (mounted) { + botToast(context.l10n.failed); + } + } + } + + Future _withRetry(Future Function() operation) async { + int attempts = 0; + while (true) { + try { + attempts++; + return await operation(); + } catch (e) { + if (attempts >= 3) { + AppLogger.log("Request retries failed", logLevel: LogLevel.error); + } + } + } + } +} + +subtitlesSearchraggableMenu( + BuildContext context, { + required Chapter chapter, + required bool isLocal, +}) async { + var padding = MediaQuery.of(context).padding; + return await showDialog( + context: context, + builder: (context) => Scaffold( + backgroundColor: Colors.transparent, + body: SingleChildScrollView( + child: SizedBox( + height: context.height(1) - padding.top - padding.bottom, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Container( + decoration: BoxDecoration( + color: Theme.of(context).scaffoldBackgroundColor, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(20), + topRight: Radius.circular(20), + ), + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: IconButton( + onPressed: () { + Navigator.pop(context); + }, + icon: const Icon(Icons.clear), + ), + ), + ], + ), + ], + ), + ), + SubtitlesWidgetSearch(chapter: chapter, isLocal: isLocal), + ], + ), + ), + ), + ), + ); +} diff --git a/lib/modules/browse/browse_screen.dart b/lib/modules/browse/browse_screen.dart index 914a2048..bbc493e6 100644 --- a/lib/modules/browse/browse_screen.dart +++ b/lib/modules/browse/browse_screen.dart @@ -124,12 +124,14 @@ class _BrowseScreenState extends ConsumerState } else { context.push( '/globalSearch', - extra: - switch (_tabList[_tabBarController.index]) { - "manga" => ItemType.manga, - "anime" => ItemType.anime, - _ => ItemType.novel, - }, + extra: ( + null, + switch (_tabList[_tabBarController.index]) { + "manga" => ItemType.manga, + "anime" => ItemType.anime, + _ => ItemType.novel, + }, + ), ); } }, diff --git a/lib/modules/browse/extension/edit_code.dart b/lib/modules/browse/extension/edit_code.dart index 1c7430ec..c3ca0f6d 100644 --- a/lib/modules/browse/extension/edit_code.dart +++ b/lib/modules/browse/extension/edit_code.dart @@ -9,6 +9,7 @@ import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/source.dart'; import 'package:mangayomi/modules/manga/home/widget/filter_widget.dart'; import 'package:mangayomi/modules/more/settings/appearance/providers/app_font_family.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/services/get_detail.dart'; import 'package:mangayomi/services/get_filter_list.dart'; @@ -314,6 +315,7 @@ class _CodeEditorPageState extends ConsumerState { if (source != null) { final service = getExtensionService( source!, + ref.read(androidProxyServerStateProvider), ); try { diff --git a/lib/modules/browse/extension/extension_screen.dart b/lib/modules/browse/extension/extension_screen.dart index 56cbff6f..aad2a77e 100644 --- a/lib/modules/browse/extension/extension_screen.dart +++ b/lib/modules/browse/extension/extension_screen.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter_qjs/quickjs/ffi.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:mangayomi/modules/widgets/custom_sliver_grouped_list_view.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/source.dart'; @@ -66,6 +68,9 @@ class _ExtensionScreenState extends ConsumerState { final streamExtensions = ref.watch( getExtensionsStreamProvider(widget.itemType), ); + final repositories = ref.watch( + extensionsRepoStateProvider(widget.itemType), + ); final l10n = l10nLocalizations(context)!; @@ -92,6 +97,12 @@ class _ExtensionScreenState extends ConsumerState { final notInstalledEntries = []; for (var element in filteredData) { + if (repositories + .firstWhereOrNull((e) => e == element.repo) + ?.hidden ?? + false) { + continue; + } final isLatestVersion = element.version == element.versionLast; if (compareVersions( diff --git a/lib/modules/browse/extension/providers/extension_preferences_providers.dart b/lib/modules/browse/extension/providers/extension_preferences_providers.dart index 397c0c9b..b4d0b222 100644 --- a/lib/modules/browse/extension/providers/extension_preferences_providers.dart +++ b/lib/modules/browse/extension/providers/extension_preferences_providers.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:isar/isar.dart'; import 'package:mangayomi/eval/model/source_preference.dart'; import 'package:mangayomi/main.dart'; @@ -11,6 +13,22 @@ void setPreferenceSetting(SourcePreference sourcePreference, Source source) { .keyEqualTo(sourcePreference.key) .findFirstSync(); isar.writeTxnSync(() { + if (source.sourceCodeLanguage == SourceCodeLanguage.mihon && + source.preferenceList != null) { + final prefs = (jsonDecode(source.preferenceList!) as List) + .map((e) => SourcePreference.fromJson(e)) + .toList(); + final idx = prefs.indexWhere((e) => e.key == sourcePreference.key); + if (idx != -1) { + prefs[idx] = sourcePreference..id = null; + isar.sources.putSync( + source + ..preferenceList = jsonEncode( + prefs.map((e) => e.toJson()).toList(), + ), + ); + } + } if (sourcePref != null) { isar.sourcePreferences.putSync(sourcePreference); } else { diff --git a/lib/modules/browse/extension/providers/extensions_provider.dart b/lib/modules/browse/extension/providers/extensions_provider.dart index c889032a..0d77bf54 100644 --- a/lib/modules/browse/extension/providers/extensions_provider.dart +++ b/lib/modules/browse/extension/providers/extensions_provider.dart @@ -1,6 +1,7 @@ import 'package:isar/isar.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/manga.dart'; +import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/source.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -12,6 +13,11 @@ Stream> getExtensionsStream(Ref ref, ItemType itemType) async* { .filter() .idIsNotNull() .and() + .group( + (q) => q.repoIsNull().or().repo( + (q) => q.hiddenIsNull().or().hiddenEqualTo(false), + ), + ) .isActiveEqualTo(true) .itemTypeEqualTo(itemType) .watch(fireImmediately: true); diff --git a/lib/modules/browse/extension/providers/extensions_provider.g.dart b/lib/modules/browse/extension/providers/extensions_provider.g.dart index 555d91b1..87a285f5 100644 --- a/lib/modules/browse/extension/providers/extensions_provider.g.dart +++ b/lib/modules/browse/extension/providers/extensions_provider.g.dart @@ -7,7 +7,7 @@ part of 'extensions_provider.dart'; // ************************************************************************** String _$getExtensionsStreamHash() => - r'3c5d6625c40c222f25fc8141df078dd46bcc762f'; + r'af34092ebf31c784010110af746e3ee2731297bd'; /// Copied from Dart SDK class _SystemHash { @@ -40,21 +40,15 @@ class GetExtensionsStreamFamily extends Family>> { const GetExtensionsStreamFamily(); /// See also [getExtensionsStream]. - GetExtensionsStreamProvider call( - ItemType itemType, - ) { - return GetExtensionsStreamProvider( - itemType, - ); + GetExtensionsStreamProvider call(ItemType itemType) { + return GetExtensionsStreamProvider(itemType); } @override GetExtensionsStreamProvider getProviderOverride( covariant GetExtensionsStreamProvider provider, ) { - return call( - provider.itemType, - ); + return call(provider.itemType); } static const Iterable? _dependencies = null; @@ -76,24 +70,19 @@ class GetExtensionsStreamFamily extends Family>> { class GetExtensionsStreamProvider extends AutoDisposeStreamProvider> { /// See also [getExtensionsStream]. - GetExtensionsStreamProvider( - ItemType itemType, - ) : this._internal( - (ref) => getExtensionsStream( - ref as GetExtensionsStreamRef, - itemType, - ), - from: getExtensionsStreamProvider, - name: r'getExtensionsStreamProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getExtensionsStreamHash, - dependencies: GetExtensionsStreamFamily._dependencies, - allTransitiveDependencies: - GetExtensionsStreamFamily._allTransitiveDependencies, - itemType: itemType, - ); + GetExtensionsStreamProvider(ItemType itemType) + : this._internal( + (ref) => getExtensionsStream(ref as GetExtensionsStreamRef, itemType), + from: getExtensionsStreamProvider, + name: r'getExtensionsStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getExtensionsStreamHash, + dependencies: GetExtensionsStreamFamily._dependencies, + allTransitiveDependencies: + GetExtensionsStreamFamily._allTransitiveDependencies, + itemType: itemType, + ); GetExtensionsStreamProvider._internal( super._createNotifier, { @@ -159,5 +148,6 @@ class _GetExtensionsStreamProviderElement @override ItemType get itemType => (origin as GetExtensionsStreamProvider).itemType; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/browse/extension/widgets/extension_list_tile_widget.dart b/lib/modules/browse/extension/widgets/extension_list_tile_widget.dart index 7d706d83..6da6eb78 100644 --- a/lib/modules/browse/extension/widgets/extension_list_tile_widget.dart +++ b/lib/modules/browse/extension/widgets/extension_list_tile_widget.dart @@ -1,7 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; +import 'package:isar/isar.dart'; +import 'package:mangayomi/eval/model/source_preference.dart'; +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/changed.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/services/fetch_item_sources.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/services/fetch_sources_list.dart'; @@ -56,24 +61,126 @@ class _ExtensionListTileWidgetState } Widget _buildTrailingButton(BuildContext context, String label) { - return TextButton( - onPressed: _isLoading - ? null - : () { - if (!_updateAvailable && _sourceNotEmpty) { - context.push('/extension_detail', extra: widget.source); - } else { - _handleSourceFetch(); - } - }, - child: _isLoading - ? const SizedBox( - height: 20, - width: 20, - child: CircularProgressIndicator(strokeWidth: 2.0), - ) - : Text(label), - ); + final isInstall = label == context.l10n.install; + final isUpdate = label == context.l10n.update; + return _isLoading + ? const SizedBox( + height: 20, + width: 20, + child: CircularProgressIndicator(strokeWidth: 2.0), + ) + : Row( + mainAxisSize: MainAxisSize.min, + children: [ + TextButton( + onPressed: _isLoading + ? null + : () { + if (!_updateAvailable && _sourceNotEmpty) { + context.push( + '/extension_detail', + extra: widget.source, + ); + } else { + _handleSourceFetch(); + } + }, + child: Icon( + isInstall + ? Icons.download_outlined + : isUpdate + ? Icons.system_update_alt_outlined + : Icons.settings_outlined, + size: 24, + ), + ), + if (_sourceNotEmpty) + TextButton( + onPressed: () { + showDialog( + context: context, + builder: (ctx) { + return AlertDialog( + title: Text(widget.source.name!), + content: Text( + ctx.l10n.uninstall_extension(widget.source.name!), + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + Navigator.pop(ctx); + }, + child: Text(ctx.l10n.cancel), + ), + const SizedBox(width: 15), + TextButton( + onPressed: () { + final sourcePrefsIds = isar + .sourcePreferences + .filter() + .sourceIdEqualTo(widget.source.id!) + .findAllSync() + .map((e) => e.id!) + .toList(); + final sourcePrefsStringIds = isar + .sourcePreferenceStringValues + .filter() + .sourceIdEqualTo(widget.source.id!) + .findAllSync() + .map((e) => e.id) + .toList(); + isar.writeTxnSync(() { + if (widget.source.isObsolete ?? false) { + isar.sources.deleteSync( + widget.source.id!, + ); + ref + .read( + synchingProvider( + syncId: 1, + ).notifier, + ) + .addChangedPart( + ActionType.removeExtension, + widget.source.id, + "{}", + false, + ); + } else { + isar.sources.putSync( + widget.source + ..sourceCode = "" + ..isAdded = false + ..isPinned = false + ..updatedAt = DateTime.now() + .millisecondsSinceEpoch, + ); + } + isar.sourcePreferences.deleteAllSync( + sourcePrefsIds, + ); + isar.sourcePreferenceStringValues + .deleteAllSync(sourcePrefsStringIds); + }); + + Navigator.pop(ctx); + }, + child: Text(ctx.l10n.ok), + ), + ], + ), + ], + ); + }, + ); + }, + child: Icon(Icons.delete_outline, size: 24), + ), + ], + ); } @override diff --git a/lib/modules/browse/extension/widgets/source_preference_widget.dart b/lib/modules/browse/extension/widgets/source_preference_widget.dart index 405fd935..0a534fd5 100644 --- a/lib/modules/browse/extension/widgets/source_preference_widget.dart +++ b/lib/modules/browse/extension/widgets/source_preference_widget.dart @@ -45,15 +45,15 @@ class _SourcePreferenceWidgetState extends State { showDialog( context: context, builder: (context) => EditTextDialogWidget( - text: pref.value!, + text: pref.value ?? "", onChanged: (value) { setState(() { pref.value = value; }); setPreferenceSetting(preference, widget.source); }, - dialogTitle: pref.dialogTitle!, - dialogMessage: pref.dialogMessage!, + dialogTitle: pref.dialogTitle ?? "", + dialogMessage: pref.dialogMessage ?? "", ), ); }, @@ -127,23 +127,25 @@ class _SourcePreferenceWidgetState extends State { ), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: pref.entries!.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: index, - groupValue: pref.valueIndex, - onChanged: (value) { - Navigator.pop(context, index); - }, - title: Row( - children: [Text(pref.entries![index])], - ), - ); + child: RadioGroup( + groupValue: pref.valueIndex, + onChanged: (value) { + Navigator.pop(context, value); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: pref.entries!.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: index, + title: Row( + children: [Text(pref.entries![index])], + ), + ); + }, + ), ), ), actions: [ diff --git a/lib/modules/browse/global_search/global_search_screen.dart b/lib/modules/browse/global_search/global_search_screen.dart index f3b357a3..7b3f2e6a 100644 --- a/lib/modules/browse/global_search/global_search_screen.dart +++ b/lib/modules/browse/global_search/global_search_screen.dart @@ -24,15 +24,16 @@ import 'package:mangayomi/modules/widgets/manga_image_card_widget.dart'; import 'package:super_sliver_list/super_sliver_list.dart'; class GlobalSearchScreen extends ConsumerStatefulWidget { + final String? search; final ItemType itemType; - const GlobalSearchScreen({required this.itemType, super.key}); + const GlobalSearchScreen({this.search, required this.itemType, super.key}); @override ConsumerState createState() => _GlobalSearchScreenState(); } class _GlobalSearchScreenState extends ConsumerState { - String query = ""; + String _query = ""; final _textEditingController = TextEditingController(); late final List sourceList = ref.read(onlyIncludePinnedSourceStateProvider) @@ -50,8 +51,17 @@ class _GlobalSearchScreenState extends ConsumerState { .and() .itemTypeEqualTo(widget.itemType) .findAllSync(); + + @override + void initState() { + super.initState(); + _textEditingController.text = widget.search ?? ""; + } + @override Widget build(BuildContext context) { + final query = _query.isNotEmpty ? _query : widget.search ?? ""; + return Scaffold( appBar: AppBar( leading: Container(), @@ -62,27 +72,27 @@ class _GlobalSearchScreenState extends ConsumerState { Navigator.pop(context); }, onFieldSubmitted: (value) async { - if (!(query == _textEditingController.text)) { + if (!(_query == _textEditingController.text)) { setState(() { - query = ""; + _query = ""; }); await Future.delayed(const Duration(milliseconds: 10)); setState(() { - query = value; + _query = value; }); } }, onSuffixPressed: () { _textEditingController.clear(); setState(() { - query = ""; + _query = ""; }); }, controller: _textEditingController, ), ], ), - body: query.isNotEmpty + body: _query.isNotEmpty || widget.search != null ? SuperListView.builder( itemCount: sourceList.length, extentPrecalculationPolicy: SuperPrecalculationPolicy(), @@ -90,7 +100,11 @@ class _GlobalSearchScreenState extends ConsumerState { final source = sourceList[index]; return SizedBox( height: 260, - child: SourceSearchScreen(query: query, source: source), + child: SourceSearchScreen( + key: ValueKey(query), + query: query, + source: source, + ), ); }, ) @@ -105,7 +119,7 @@ class _GlobalSearchScreenState extends ConsumerState { } } -class SourceSearchScreen extends StatefulWidget { +class SourceSearchScreen extends ConsumerStatefulWidget { final String query; final Source source; @@ -116,10 +130,10 @@ class SourceSearchScreen extends StatefulWidget { }); @override - State createState() => _SourceSearchScreenState(); + ConsumerState createState() => _SourceSearchScreenState(); } -class _SourceSearchScreenState extends State { +class _SourceSearchScreenState extends ConsumerState { @override void initState() { super.initState(); @@ -132,11 +146,13 @@ class _SourceSearchScreenState extends State { _init() async { try { _errorMessage = ""; - pages = await search( - source: widget.source, - page: 1, - query: widget.query, - filterList: [], + pages = await ref.read( + searchProvider( + source: widget.source, + page: 1, + query: widget.query, + filterList: [], + ).future, ); if (mounted) { setState(() { @@ -247,6 +263,7 @@ class _MangaGlobalImageCardState extends ConsumerState itemType: widget.source.itemType, useMaterialRoute: true, source: widget.source.name!, + sourceId: widget.source.id, ); }, child: StreamBuilder( @@ -282,6 +299,7 @@ class _MangaGlobalImageCardState extends ConsumerState headersProvider( source: widget.source.name!, lang: widget.source.lang!, + sourceId: widget.source.id, ), ), imageUrl: toImgUrl( diff --git a/lib/modules/calendar/calendar_screen.dart b/lib/modules/calendar/calendar_screen.dart new file mode 100644 index 00000000..74eb218d --- /dev/null +++ b/lib/modules/calendar/calendar_screen.dart @@ -0,0 +1,430 @@ +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; +import 'package:isar/isar.dart'; +import 'package:mangayomi/models/chapter.dart'; +import 'package:mangayomi/models/manga.dart'; +import 'package:mangayomi/modules/calendar/providers/calendar_provider.dart'; +import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; +import 'package:mangayomi/modules/widgets/custom_sliver_grouped_list_view.dart'; +import 'package:mangayomi/modules/widgets/progress_center.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/utils/constant.dart'; +import 'package:mangayomi/utils/date.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; +import 'package:mangayomi/utils/headers.dart'; +import 'package:table_calendar/table_calendar.dart'; + +class CalendarScreen extends ConsumerStatefulWidget { + final ItemType? itemType; + const CalendarScreen({super.key, this.itemType}); + + @override + ConsumerState createState() => _CalendarScreenState(); +} + +class _CalendarScreenState extends ConsumerState { + late final ValueNotifier> _selectedEntries; + CalendarFormat _calendarFormat = CalendarFormat.month; + RangeSelectionMode _rangeSelectionMode = RangeSelectionMode.toggledOff; + final firstDay = DateTime.now(); + final lastDay = DateTime.now().add(const Duration(days: 1000)); + DateTime _focusedDay = DateTime.now(); + DateTime? _selectedDay; + DateTime? _rangeStart; + DateTime? _rangeEnd; + late ItemType? itemType = widget.itemType ?? ItemType.manga; + + @override + void initState() { + super.initState(); + _selectedDay = _focusedDay; + _selectedEntries = ValueNotifier([]); + } + + @override + void dispose() { + _selectedEntries.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + final locale = ref.watch(l10nLocaleStateProvider); + final data = ref.watch(getCalendarStreamProvider(itemType: itemType)); + return Scaffold( + appBar: AppBar(title: Text(l10n.calendar)), + body: data.when( + data: (data) { + if (_selectedDay != null) { + _selectedEntries.value = _getEntriesForDay(_selectedDay!, data); + } + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: CustomScrollView( + slivers: [ + SliverToBoxAdapter( + child: Column( + children: [ + ListTile( + title: Padding( + padding: const EdgeInsets.symmetric(vertical: 3), + child: Row( + children: [ + Icon( + Icons.warning_amber_outlined, + color: context.secondaryColor, + ), + const SizedBox(width: 10), + Flexible( + child: Text( + l10n.calendar_info, + softWrap: true, + overflow: TextOverflow.clip, + style: TextStyle( + fontSize: 13, + color: context.secondaryColor, + ), + ), + ), + ], + ), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: Row( + children: [ + Expanded( + child: SegmentedButton( + emptySelectionAllowed: true, + showSelectedIcon: false, + style: TextButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(50), + ), + ), + segments: [ + ButtonSegment( + value: ItemType.manga.index, + label: Padding( + padding: const EdgeInsets.all(12), + child: Text(l10n.manga), + ), + ), + ButtonSegment( + value: ItemType.anime.index, + label: Padding( + padding: const EdgeInsets.all(12), + child: Text(l10n.anime), + ), + ), + ButtonSegment( + value: ItemType.novel.index, + label: Padding( + padding: const EdgeInsets.all(12), + child: Text(l10n.novel), + ), + ), + ], + selected: {itemType?.index}, + onSelectionChanged: (newSelection) { + if (newSelection.isNotEmpty && + newSelection.first != null) { + setState(() { + itemType = + ItemType.values[newSelection.first!]; + }); + } + }, + ), + ), + ], + ), + ), + TableCalendar( + firstDay: firstDay, + lastDay: lastDay, + focusedDay: _focusedDay, + locale: locale.toLanguageTag(), + selectedDayPredicate: (day) => + isSameDay(_selectedDay, day), + rangeStartDay: _rangeStart, + rangeEndDay: _rangeEnd, + calendarFormat: _calendarFormat, + rangeSelectionMode: _rangeSelectionMode, + eventLoader: (day) => _getEntriesForDay(day, data), + startingDayOfWeek: StartingDayOfWeek.monday, + calendarStyle: CalendarStyle( + outsideDaysVisible: true, + weekendTextStyle: TextStyle( + color: context.primaryColor, + ), + ), + onDaySelected: (selectedDay, focusedDay) => + _onDaySelected(selectedDay, focusedDay, data), + onRangeSelected: (start, end, focusedDay) => + _onRangeSelected(start, end, focusedDay, data), + onFormatChanged: (format) { + if (_calendarFormat != format) { + setState(() { + _calendarFormat = format; + }); + } + }, + onPageChanged: (focusedDay) { + _focusedDay = focusedDay; + }, + ), + const SizedBox(height: 15), + ], + ), + ), + ValueListenableBuilder>( + valueListenable: _selectedEntries, + builder: (context, value, _) { + return CustomSliverGroupedListView( + elements: value, + groupBy: (element) { + return dateFormat( + _selectedDay?.millisecondsSinceEpoch.toString() ?? + DateTime.now() + .add(Duration(days: element.smartUpdateDays!)) + .millisecondsSinceEpoch + .toString(), + context: context, + ref: ref, + forHistoryValue: true, + useRelativeTimesTamps: false, + ); + }, + groupSeparatorBuilder: (String groupByValue) => Padding( + padding: const EdgeInsets.only(bottom: 8, left: 12), + child: Row( + children: [ + Text( + "${dateFormat(null, context: context, stringDate: groupByValue, ref: ref, useRelativeTimesTamps: true, showInDaysFuture: true)} - ${dateFormat(null, context: context, stringDate: groupByValue, ref: ref, useRelativeTimesTamps: false)}", + ), + ], + ), + ), + itemBuilder: (context, element) { + return CalendarListTileWidget( + manga: element, + selectedDay: _selectedDay, + ); + }, + order: GroupedListOrder.ASC, + ); + }, + ), + SliverToBoxAdapter(child: const SizedBox(height: 15)), + ], + ), + ); + }, + error: (Object error, StackTrace stackTrace) { + return Center( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text(l10n.calendar_no_data, textAlign: TextAlign.center), + ), + ); + }, + loading: () { + return const ProgressCenter(); + }, + ), + ); + } + + List _getEntriesForDay(DateTime day, List data) { + return data.where((e) { + final lastChapter = e.chapters + .filter() + .sortByDateUploadDesc() + .findFirstSync(); + final lastDate = int.tryParse(lastChapter?.dateUpload ?? ""); + final start = lastDate != null + ? DateTime.fromMillisecondsSinceEpoch(lastDate) + : DateTime.now(); + final temp = start.add(Duration(days: e.smartUpdateDays!)); + final predictedDay = "${temp.year}-${temp.month}-${temp.day}"; + final selectedDay = "${day.year}-${day.month}-${day.day}"; + return predictedDay == selectedDay; + }).toList(); + } + + List _getEntriesForRange( + DateTime start, + DateTime end, + List data, + ) { + final days = _daysInRange(start, end); + + return [for (final d in days) ..._getEntriesForDay(d, data)]; + } + + void _onDaySelected( + DateTime selectedDay, + DateTime focusedDay, + List data, + ) { + if (!isSameDay(_selectedDay, selectedDay)) { + setState(() { + _selectedDay = selectedDay; + _focusedDay = focusedDay; + _rangeStart = null; + _rangeEnd = null; + _rangeSelectionMode = RangeSelectionMode.toggledOff; + }); + + _selectedEntries.value = _getEntriesForDay(selectedDay, data); + } + } + + void _onRangeSelected( + DateTime? start, + DateTime? end, + DateTime focusedDay, + List data, + ) { + setState(() { + _selectedDay = null; + _focusedDay = focusedDay; + _rangeStart = start; + _rangeEnd = end; + _rangeSelectionMode = RangeSelectionMode.toggledOn; + }); + + if (start != null && end != null) { + _selectedEntries.value = _getEntriesForRange(start, end, data); + } else if (start != null) { + _selectedEntries.value = _getEntriesForDay(start, data); + } else if (end != null) { + _selectedEntries.value = _getEntriesForDay(end, data); + } + } + + List _daysInRange(DateTime first, DateTime last) { + final dayCount = last.difference(first).inDays + 1; + return List.generate( + dayCount, + (index) => DateTime.utc(first.year, first.month, first.day + index), + ); + } +} + +class CalendarListTileWidget extends ConsumerWidget { + final Manga manga; + final DateTime? selectedDay; + const CalendarListTileWidget({ + required this.manga, + required this.selectedDay, + super.key, + }); + + @override + Widget build(BuildContext context, WidgetRef ref) { + return Material( + borderRadius: BorderRadius.circular(5), + color: Colors.transparent, + clipBehavior: Clip.antiAliasWithSaveLayer, + child: InkWell( + onTap: () => context.push('/manga-reader/detail', extra: manga.id), + onLongPress: () {}, + onSecondaryTap: () {}, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 13, vertical: 5), + child: Container( + height: 45, + decoration: BoxDecoration(borderRadius: BorderRadius.circular(5)), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(5), + child: Material( + child: GestureDetector( + onTap: () { + context.push( + '/manga-reader/detail', + extra: manga.id, + ); + }, + child: Ink.image( + fit: BoxFit.cover, + width: 40, + height: 45, + image: manga.customCoverImage != null + ? MemoryImage( + manga.customCoverImage as Uint8List, + ) + as ImageProvider + : CustomExtendedNetworkImageProvider( + toImgUrl( + manga.customCoverFromTracker ?? + manga.imageUrl!, + ), + headers: ref.watch( + headersProvider( + source: manga.source!, + lang: manga.lang!, + sourceId: manga.sourceId, + ), + ), + ), + child: InkWell(child: Container()), + ), + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + manga.name!, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 14, + color: Theme.of( + context, + ).textTheme.bodyLarge!.color, + ), + ), + Text( + context.l10n.n_chapters( + manga.chapters.countSync(), + ), + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 11, + fontStyle: FontStyle.italic, + color: context.secondaryColor, + ), + ), + ], + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/modules/calendar/providers/calendar_provider.dart b/lib/modules/calendar/providers/calendar_provider.dart new file mode 100644 index 00000000..821751d0 --- /dev/null +++ b/lib/modules/calendar/providers/calendar_provider.dart @@ -0,0 +1,23 @@ +import 'package:isar/isar.dart'; +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/manga.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +part 'calendar_provider.g.dart'; + +@riverpod +Stream> getCalendarStream(Ref ref, {ItemType? itemType}) async* { + yield* isar.mangas + .filter() + .idIsNotNull() + .favoriteEqualTo(true) + .itemTypeEqualTo(itemType ?? ItemType.manga) + .anyOf([ + Status.ongoing, + Status.unknown, + Status.publishingFinished, + ], (q, status) => q.statusEqualTo(status)) + .smartUpdateDaysIsNotNull() + .smartUpdateDaysGreaterThan(0) + .watch(fireImmediately: true); +} diff --git a/lib/modules/calendar/providers/calendar_provider.g.dart b/lib/modules/calendar/providers/calendar_provider.g.dart new file mode 100644 index 00000000..7c66e3ed --- /dev/null +++ b/lib/modules/calendar/providers/calendar_provider.g.dart @@ -0,0 +1,152 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'calendar_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$getCalendarStreamHash() => r'850d81742f8ac5ce88175732c0edf57a7a9295d4'; + +/// Copied from Dart SDK +class _SystemHash { + _SystemHash._(); + + static int combine(int hash, int value) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + value); + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); + return hash ^ (hash >> 6); + } + + static int finish(int hash) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); + // ignore: parameter_assignments + hash = hash ^ (hash >> 11); + return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + } +} + +/// See also [getCalendarStream]. +@ProviderFor(getCalendarStream) +const getCalendarStreamProvider = GetCalendarStreamFamily(); + +/// See also [getCalendarStream]. +class GetCalendarStreamFamily extends Family>> { + /// See also [getCalendarStream]. + const GetCalendarStreamFamily(); + + /// See also [getCalendarStream]. + GetCalendarStreamProvider call({ItemType? itemType}) { + return GetCalendarStreamProvider(itemType: itemType); + } + + @override + GetCalendarStreamProvider getProviderOverride( + covariant GetCalendarStreamProvider provider, + ) { + return call(itemType: provider.itemType); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'getCalendarStreamProvider'; +} + +/// See also [getCalendarStream]. +class GetCalendarStreamProvider extends AutoDisposeStreamProvider> { + /// See also [getCalendarStream]. + GetCalendarStreamProvider({ItemType? itemType}) + : this._internal( + (ref) => + getCalendarStream(ref as GetCalendarStreamRef, itemType: itemType), + from: getCalendarStreamProvider, + name: r'getCalendarStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getCalendarStreamHash, + dependencies: GetCalendarStreamFamily._dependencies, + allTransitiveDependencies: + GetCalendarStreamFamily._allTransitiveDependencies, + itemType: itemType, + ); + + GetCalendarStreamProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.itemType, + }) : super.internal(); + + final ItemType? itemType; + + @override + Override overrideWith( + Stream> Function(GetCalendarStreamRef provider) create, + ) { + return ProviderOverride( + origin: this, + override: GetCalendarStreamProvider._internal( + (ref) => create(ref as GetCalendarStreamRef), + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + itemType: itemType, + ), + ); + } + + @override + AutoDisposeStreamProviderElement> createElement() { + return _GetCalendarStreamProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is GetCalendarStreamProvider && other.itemType == itemType; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, itemType.hashCode); + + return _SystemHash.finish(hash); + } +} + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +mixin GetCalendarStreamRef on AutoDisposeStreamProviderRef> { + /// The parameter `itemType` of this provider. + ItemType? get itemType; +} + +class _GetCalendarStreamProviderElement + extends AutoDisposeStreamProviderElement> + with GetCalendarStreamRef { + _GetCalendarStreamProviderElement(super.provider); + + @override + ItemType? get itemType => (origin as GetCalendarStreamProvider).itemType; +} + +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/history/history_screen.dart b/lib/modules/history/history_screen.dart index 029e0c51..0c8d3c65 100644 --- a/lib/modules/history/history_screen.dart +++ b/lib/modules/history/history_screen.dart @@ -64,7 +64,6 @@ class _HistoryScreenState extends ConsumerState } bool _isSearch = false; - // List _entriesData = []; // TODO. The variable is never used/modified @override Widget build(BuildContext context) { final hideItems = ref.watch(hideItemsStateProvider); @@ -403,7 +402,11 @@ class _HistoryTabState extends ConsumerState ? Image.memory(manga.customCoverImage as Uint8List) : cachedCompressedNetworkImage( headers: ref.watch( - headersProvider(source: manga.source!, lang: manga.lang!), + headersProvider( + source: manga.source!, + lang: manga.lang!, + sourceId: manga.sourceId, + ), ), imageUrl: toImgUrl( manga.customCoverFromTracker ?? manga.imageUrl ?? "", @@ -451,26 +454,21 @@ class _HistoryTabState extends ConsumerState ) async { await manga.chapters.load(); final chapters = manga.chapters; - await isar.writeTxn(() async { - await isar.historys.delete(deleteId!); + isar.writeTxnSync(() { + isar.historys.deleteSync(deleteId!); for (var chapter in chapters) { - await isar.chapters.delete(chapter.id!); - await ref + isar.chapters.deleteSync(chapter.id!); + ref .read(synchingProvider(syncId: 1).notifier) - .addChangedPartAsync( - ActionType.removeChapter, - chapter.id, - "{}", - false, - ); + .addChangedPart(ActionType.removeChapter, chapter.id, "{}", false); } - await isar.mangas.delete(manga.id!); - await ref + isar.mangas.deleteSync(manga.id!); + ref .read(synchingProvider(syncId: 1).notifier) - .addChangedPartAsync(ActionType.removeHistory, deleteId, "{}", false); - await ref + .addChangedPart(ActionType.removeHistory, deleteId, "{}", false); + ref .read(synchingProvider(syncId: 1).notifier) - .addChangedPartAsync(ActionType.removeItem, manga.id, "{}", false); + .addChangedPart(ActionType.removeItem, manga.id, "{}", false); }); if (context.mounted) { Navigator.pop(context); diff --git a/lib/modules/history/providers/isar_providers.g.dart b/lib/modules/history/providers/isar_providers.g.dart index 41a4934f..813a7a40 100644 --- a/lib/modules/history/providers/isar_providers.g.dart +++ b/lib/modules/history/providers/isar_providers.g.dart @@ -44,20 +44,14 @@ class GetAllHistoryStreamFamily extends Family>> { required ItemType itemType, String search = "", }) { - return GetAllHistoryStreamProvider( - itemType: itemType, - search: search, - ); + return GetAllHistoryStreamProvider(itemType: itemType, search: search); } @override GetAllHistoryStreamProvider getProviderOverride( covariant GetAllHistoryStreamProvider provider, ) { - return call( - itemType: provider.itemType, - search: provider.search, - ); + return call(itemType: provider.itemType, search: provider.search); } static const Iterable? _dependencies = null; @@ -79,27 +73,24 @@ class GetAllHistoryStreamFamily extends Family>> { class GetAllHistoryStreamProvider extends AutoDisposeStreamProvider> { /// See also [getAllHistoryStream]. - GetAllHistoryStreamProvider({ - required ItemType itemType, - String search = "", - }) : this._internal( - (ref) => getAllHistoryStream( - ref as GetAllHistoryStreamRef, - itemType: itemType, - search: search, - ), - from: getAllHistoryStreamProvider, - name: r'getAllHistoryStreamProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getAllHistoryStreamHash, - dependencies: GetAllHistoryStreamFamily._dependencies, - allTransitiveDependencies: - GetAllHistoryStreamFamily._allTransitiveDependencies, + GetAllHistoryStreamProvider({required ItemType itemType, String search = ""}) + : this._internal( + (ref) => getAllHistoryStream( + ref as GetAllHistoryStreamRef, itemType: itemType, search: search, - ); + ), + from: getAllHistoryStreamProvider, + name: r'getAllHistoryStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getAllHistoryStreamHash, + dependencies: GetAllHistoryStreamFamily._dependencies, + allTransitiveDependencies: + GetAllHistoryStreamFamily._allTransitiveDependencies, + itemType: itemType, + search: search, + ); GetAllHistoryStreamProvider._internal( super._createNotifier, { @@ -194,20 +185,14 @@ class GetAllUpdateStreamFamily extends Family>> { required ItemType itemType, String search = "", }) { - return GetAllUpdateStreamProvider( - itemType: itemType, - search: search, - ); + return GetAllUpdateStreamProvider(itemType: itemType, search: search); } @override GetAllUpdateStreamProvider getProviderOverride( covariant GetAllUpdateStreamProvider provider, ) { - return call( - itemType: provider.itemType, - search: provider.search, - ); + return call(itemType: provider.itemType, search: provider.search); } static const Iterable? _dependencies = null; @@ -229,27 +214,24 @@ class GetAllUpdateStreamFamily extends Family>> { class GetAllUpdateStreamProvider extends AutoDisposeStreamProvider> { /// See also [getAllUpdateStream]. - GetAllUpdateStreamProvider({ - required ItemType itemType, - String search = "", - }) : this._internal( - (ref) => getAllUpdateStream( - ref as GetAllUpdateStreamRef, - itemType: itemType, - search: search, - ), - from: getAllUpdateStreamProvider, - name: r'getAllUpdateStreamProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getAllUpdateStreamHash, - dependencies: GetAllUpdateStreamFamily._dependencies, - allTransitiveDependencies: - GetAllUpdateStreamFamily._allTransitiveDependencies, + GetAllUpdateStreamProvider({required ItemType itemType, String search = ""}) + : this._internal( + (ref) => getAllUpdateStream( + ref as GetAllUpdateStreamRef, itemType: itemType, search: search, - ); + ), + from: getAllUpdateStreamProvider, + name: r'getAllUpdateStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getAllUpdateStreamHash, + dependencies: GetAllUpdateStreamFamily._dependencies, + allTransitiveDependencies: + GetAllUpdateStreamFamily._allTransitiveDependencies, + itemType: itemType, + search: search, + ); GetAllUpdateStreamProvider._internal( super._createNotifier, { @@ -326,5 +308,6 @@ class _GetAllUpdateStreamProviderElement @override String get search => (origin as GetAllUpdateStreamProvider).search; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/library/library_screen.dart b/lib/modules/library/library_screen.dart index 971a3c12..bdaa0e0b 100644 --- a/lib/modules/library/library_screen.dart +++ b/lib/modules/library/library_screen.dart @@ -18,10 +18,13 @@ import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/update.dart'; import 'package:mangayomi/modules/library/providers/add_torrent.dart'; import 'package:mangayomi/modules/library/providers/local_archive.dart'; +import 'package:mangayomi/modules/manga/detail/providers/state_providers.dart'; import 'package:mangayomi/modules/manga/detail/providers/update_manga_detail_providers.dart'; import 'package:mangayomi/modules/more/categories/providers/isar_providers.dart'; +import 'package:mangayomi/modules/more/providers/downloaded_only_state_provider.dart'; import 'package:mangayomi/modules/more/settings/appearance/providers/theme_mode_state_provider.dart'; import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; +import 'package:mangayomi/modules/widgets/bottom_select_bar.dart'; import 'package:mangayomi/modules/widgets/category_selection_dialog.dart'; import 'package:mangayomi/modules/widgets/custom_draggable_tabbar.dart'; import 'package:mangayomi/modules/widgets/manga_image_card_widget.dart'; @@ -134,6 +137,7 @@ class _LibraryScreenState extends ConsumerState final withoutCategories = ref.watch( getAllMangaWithoutCategoriesStreamProvider(itemType: widget.itemType), ); + final downloadedOnly = ref.watch(downloadedOnlyStateProvider); final mangaAll = ref.watch( getAllMangaStreamProvider( categoryId: null, @@ -247,6 +251,7 @@ class _LibraryScreenState extends ConsumerState ref: ref, localSource: localSource, settings: settings, + downloadedOnly: downloadedOnly, ); } if (tabCount > 0 && @@ -279,6 +284,7 @@ class _LibraryScreenState extends ConsumerState startedFilterType: startedFilterType, bookmarkedFilterType: bookmarkedFilterType, sortType: sortType, + downloadedOnly: downloadedOnly, ); final withoutCategoryNumberOfItemsList = _filterAndSortManga( @@ -288,6 +294,7 @@ class _LibraryScreenState extends ConsumerState startedFilterType: startedFilterType, bookmarkedFilterType: bookmarkedFilterType, sortType: sortType, + downloadedOnly: downloadedOnly, ); return DefaultTabController( @@ -370,6 +377,8 @@ class _LibraryScreenState extends ConsumerState categoryId: entr[i - 1].id!, settings: settings, + downloadedOnly: + downloadedOnly, ), ], ), @@ -396,6 +405,8 @@ class _LibraryScreenState extends ConsumerState continueReaderBtn, categoryId: entr[i].id!, settings: settings, + downloadedOnly: + downloadedOnly, ), ], ), @@ -432,6 +443,8 @@ class _LibraryScreenState extends ConsumerState ref: ref, localSource: localSource, settings: settings, + downloadedOnly: + downloadedOnly, ) : _bodyWithCatories( categoryId: @@ -454,6 +467,8 @@ class _LibraryScreenState extends ConsumerState ref: ref, localSource: localSource, settings: settings, + downloadedOnly: + downloadedOnly, ), if (withoutCategory.isEmpty) for ( @@ -481,6 +496,7 @@ class _LibraryScreenState extends ConsumerState ref: ref, localSource: localSource, settings: settings, + downloadedOnly: downloadedOnly, ), ], ), @@ -501,6 +517,7 @@ class _LibraryScreenState extends ConsumerState startedFilterType: startedFilterType, bookmarkedFilterType: bookmarkedFilterType, sortType: sortType, + downloadedOnly: downloadedOnly, ); return Scaffold( appBar: _appBar( @@ -526,6 +543,7 @@ class _LibraryScreenState extends ConsumerState ref: ref, localSource: localSource, settings: settings, + downloadedOnly: downloadedOnly, ), ); }, @@ -554,159 +572,85 @@ class _LibraryScreenState extends ConsumerState return const ProgressCenter(); }, ), - bottomNavigationBar: Consumer( - builder: (context, ref, child) { - final isLongPressed = ref.watch(isLongPressedMangaStateProvider); - final color = Theme.of(context).textTheme.bodyLarge!.color!; + bottomNavigationBar: Builder( + builder: (context) { final mangaIds = ref.watch(mangasListStateProvider); - return AnimatedContainer( - curve: Curves.easeIn, - decoration: BoxDecoration( - color: context.primaryColor.withValues(alpha: 0.2), - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(20), - topRight: Radius.circular(20), + final color = Theme.of(context).textTheme.bodyLarge!.color!; + return BottomSelectBar( + isVisible: ref.watch(isLongPressedStateProvider), + actions: [ + BottomSelectButton( + icon: Icon(Icons.label_outline_rounded, color: color), + onPressed: () { + final mangaIdsList = ref.watch(mangasListStateProvider); + final List bulkMangas = mangaIdsList + .map((id) => isar.mangas.getSync(id)!) + .toList(); + showCategorySelectionDialog( + context: context, + ref: ref, + itemType: widget.itemType, + bulkMangas: bulkMangas, + ); + }, ), - ), - duration: const Duration(milliseconds: 100), - height: isLongPressed ? 70 : 0, - width: context.width(1), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - shadowColor: Colors.transparent, - elevation: 0, - backgroundColor: Colors.transparent, - ), - onPressed: () { - final mangaIdsList = ref.watch( - mangasListStateProvider, - ); - final List bulkMangas = mangaIdsList - .map((id) => isar.mangas.getSync(id)!) - .toList(); - showCategorySelectionDialog( - context: context, - ref: ref, - itemType: widget.itemType, - bulkMangas: bulkMangas, - ); - }, - child: Icon( - Icons.label_outline_rounded, - color: color, - ), + BottomSelectButton( + icon: Icon(Icons.done_all_sharp, color: color), + onPressed: () { + ref + .read( + mangasSetIsReadStateProvider( + mangaIds: mangaIds, + markAsRead: true, + ).notifier, + ) + .set(); + ref.invalidate( + getAllMangaWithoutCategoriesStreamProvider( + itemType: widget.itemType, ), - ), - ), - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - backgroundColor: Colors.transparent, - shadowColor: Colors.transparent, - ), - onPressed: () { - ref - .read( - mangasSetIsReadStateProvider( - mangaIds: mangaIds, - ).notifier, - ) - .set(); - ref.invalidate( - getAllMangaWithoutCategoriesStreamProvider( - itemType: widget.itemType, - ), - ); - ref.invalidate( - getAllMangaStreamProvider( - categoryId: null, - itemType: widget.itemType, - ), - ); - }, - child: Icon(Icons.done_all_sharp, color: color), + ); + ref.invalidate( + getAllMangaStreamProvider( + categoryId: null, + itemType: widget.itemType, ), - ), - ), - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - backgroundColor: Colors.transparent, - shadowColor: Colors.transparent, - ), - onPressed: () { - ref - .read( - mangasSetUnReadStateProvider( - mangaIds: mangaIds, - ).notifier, - ) - .set(); - ref.invalidate( - getAllMangaWithoutCategoriesStreamProvider( - itemType: widget.itemType, - ), - ); - ref.invalidate( - getAllMangaStreamProvider( - categoryId: null, - itemType: widget.itemType, - ), - ); - }, - child: Icon(Icons.remove_done_sharp, color: color), + ); + }, + ), + BottomSelectButton( + icon: Icon(Icons.remove_done_sharp, color: color), + onPressed: () { + ref + .read( + mangasSetIsReadStateProvider( + mangaIds: mangaIds, + markAsRead: false, + ).notifier, + ) + .set(); + ref.invalidate( + getAllMangaWithoutCategoriesStreamProvider( + itemType: widget.itemType, ), - ), - ), - // Expanded( - // child: SizedBox( - // height: 70, - // child: ElevatedButton( - // style: ElevatedButton.styleFrom( - // elevation: 0, - // backgroundColor: Colors.transparent, - // shadowColor: Colors.transparent, - // ), - // onPressed: () {}, - // child: Icon( - // Icons.download_outlined, - // color: color, - // )), - // ), - // ), - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - backgroundColor: Colors.transparent, - shadowColor: Colors.transparent, - ), - onPressed: () { - _deleteManga(); - }, - child: Icon( - Icons.delete_outline_outlined, - color: color, - ), + ); + ref.invalidate( + getAllMangaStreamProvider( + categoryId: null, + itemType: widget.itemType, ), - ), - ), - ], - ), + ); + }, + ), + // BottomBarAction( + // icon: Icon(Icons.download_outlined, color: color), + // onPressed: () {} + // ), + BottomSelectButton( + icon: Icon(Icons.delete_outline_outlined, color: color), + onPressed: () => _deleteManga(), + ), + ], ); }, ), @@ -731,6 +675,7 @@ class _LibraryScreenState extends ConsumerState required bool continueReaderBtn, required int categoryId, required Settings settings, + required bool downloadedOnly, }) { final mangas = ref.watch( getAllMangaStreamProvider( @@ -755,6 +700,7 @@ class _LibraryScreenState extends ConsumerState startedFilterType: startedFilterType, bookmarkedFilterType: bookmarkedFilterType, sortType: sortType!, + downloadedOnly: downloadedOnly, ); return CircleAvatar( backgroundColor: Theme.of(context).focusColor, @@ -791,6 +737,7 @@ class _LibraryScreenState extends ConsumerState required WidgetRef ref, required DisplayType displayType, required Settings settings, + required bool downloadedOnly, }) { final l10n = l10nLocalizations(context)!; final mangas = ref.watch( @@ -818,6 +765,7 @@ class _LibraryScreenState extends ConsumerState startedFilterType: startedFilterType, bookmarkedFilterType: bookmarkedFilterType, sortType: sortType!, + downloadedOnly: downloadedOnly, ); if (entries.isNotEmpty) { final entriesManga = reverse ? entries.reversed.toList() : entries; @@ -875,6 +823,7 @@ class _LibraryScreenState extends ConsumerState required WidgetRef ref, bool withoutCategories = false, required Settings settings, + required bool downloadedOnly, }) { final sortType = ref .watch( @@ -907,6 +856,7 @@ class _LibraryScreenState extends ConsumerState startedFilterType: startedFilterType, bookmarkedFilterType: bookmarkedFilterType, sortType: sortType ?? 0, + downloadedOnly: downloadedOnly, ); if (entries.isNotEmpty) { final entriesManga = reverse ? entries.reversed.toList() : entries; @@ -970,6 +920,7 @@ class _LibraryScreenState extends ConsumerState required int startedFilterType, required int bookmarkedFilterType, required int sortType, + bool downloadedOnly = false, }) { List? mangas; final searchQuery = _textEditingController.text; @@ -984,7 +935,7 @@ class _LibraryScreenState extends ConsumerState .where((element) { // Filter by download List list = []; - if (downloadFilterType == 1) { + if (downloadFilterType == 1 || downloadedOnly) { for (var chap in element.chapters) { final modelChapDownload = isar.downloads .filter() @@ -1206,7 +1157,7 @@ class _LibraryScreenState extends ConsumerState ref.read(mangasListStateProvider.notifier).clear(); ref - .read(isLongPressedMangaStateProvider.notifier) + .read(isLongPressedStateProvider.notifier) .update(false); if (mounted) { Navigator.pop(context); @@ -1859,7 +1810,7 @@ class _LibraryScreenState extends ConsumerState int? categoryId, Settings settings, ) { - final isLongPressed = ref.watch(isLongPressedMangaStateProvider); + final isLongPressed = ref.watch(isLongPressedStateProvider); final mangaIdsList = ref.watch(mangasListStateProvider); final manga = categoryId == null ? ref.watch( @@ -1888,7 +1839,7 @@ class _LibraryScreenState extends ConsumerState ref.read(mangasListStateProvider.notifier).clear(); ref - .read(isLongPressedMangaStateProvider.notifier) + .read(isLongPressedStateProvider.notifier) .update(!isLongPressed); }, icon: const Icon(Icons.clear), @@ -1913,7 +1864,7 @@ class _LibraryScreenState extends ConsumerState .selectSome(manga); } ref - .read(isLongPressedMangaStateProvider.notifier) + .read(isLongPressedStateProvider.notifier) .update(false); } else { for (var manga in data) { @@ -2069,6 +2020,7 @@ class _LibraryScreenState extends ConsumerState lang: randomManga.lang!, mangaM: randomManga, source: randomManga.source!, + sourceId: randomManga.sourceId, ); }); } else if (value == 2) { diff --git a/lib/modules/library/providers/add_torrent.dart b/lib/modules/library/providers/add_torrent.dart index 38632e83..a8f88b1a 100644 --- a/lib/modules/library/providers/add_torrent.dart +++ b/lib/modules/library/providers/add_torrent.dart @@ -51,6 +51,7 @@ Future addTorrentFromUrlOrFromFile( isLocalArchive: true, artist: '', updatedAt: dateNow, + sourceId: null, ); if (url != null) { diff --git a/lib/modules/library/providers/add_torrent.g.dart b/lib/modules/library/providers/add_torrent.g.dart index 5bb915b0..23b1e14e 100644 --- a/lib/modules/library/providers/add_torrent.g.dart +++ b/lib/modules/library/providers/add_torrent.g.dart @@ -7,7 +7,7 @@ part of 'add_torrent.dart'; // ************************************************************************** String _$addTorrentFromUrlOrFromFileHash() => - r'ca841c87c01dd9e9254b99b3223ac67d775ba5b2'; + r'a54f90b6708b13eeb8fed098691f9a79dbab50fd'; /// Copied from Dart SDK class _SystemHash { @@ -45,22 +45,14 @@ class AddTorrentFromUrlOrFromFileFamily extends Family { required bool init, String? url, }) { - return AddTorrentFromUrlOrFromFileProvider( - mManga, - init: init, - url: url, - ); + return AddTorrentFromUrlOrFromFileProvider(mManga, init: init, url: url); } @override AddTorrentFromUrlOrFromFileProvider getProviderOverride( covariant AddTorrentFromUrlOrFromFileProvider provider, ) { - return call( - provider.mManga, - init: provider.init, - url: provider.url, - ); + return call(provider.mManga, init: provider.init, url: provider.url); } static const Iterable? _dependencies = null; @@ -87,25 +79,24 @@ class AddTorrentFromUrlOrFromFileProvider required bool init, String? url, }) : this._internal( - (ref) => addTorrentFromUrlOrFromFile( - ref as AddTorrentFromUrlOrFromFileRef, - mManga, - init: init, - url: url, - ), - from: addTorrentFromUrlOrFromFileProvider, - name: r'addTorrentFromUrlOrFromFileProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$addTorrentFromUrlOrFromFileHash, - dependencies: AddTorrentFromUrlOrFromFileFamily._dependencies, - allTransitiveDependencies: - AddTorrentFromUrlOrFromFileFamily._allTransitiveDependencies, - mManga: mManga, - init: init, - url: url, - ); + (ref) => addTorrentFromUrlOrFromFile( + ref as AddTorrentFromUrlOrFromFileRef, + mManga, + init: init, + url: url, + ), + from: addTorrentFromUrlOrFromFileProvider, + name: r'addTorrentFromUrlOrFromFileProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$addTorrentFromUrlOrFromFileHash, + dependencies: AddTorrentFromUrlOrFromFileFamily._dependencies, + allTransitiveDependencies: + AddTorrentFromUrlOrFromFileFamily._allTransitiveDependencies, + mManga: mManga, + init: init, + url: url, + ); AddTorrentFromUrlOrFromFileProvider._internal( super._createNotifier, { @@ -192,5 +183,6 @@ class _AddTorrentFromUrlOrFromFileProviderElement @override String? get url => (origin as AddTorrentFromUrlOrFromFileProvider).url; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/library/providers/file_scanner.dart b/lib/modules/library/providers/file_scanner.dart index fde40b0e..ea1a37db 100644 --- a/lib/modules/library/providers/file_scanner.dart +++ b/lib/modules/library/providers/file_scanner.dart @@ -130,6 +130,7 @@ Future scanLocalLibrary(Ref ref) async { itemType: itemType, dateAdded: dateNow, lastUpdate: dateNow, + sourceId: null, ); newMangas++; } diff --git a/lib/modules/library/providers/file_scanner.g.dart b/lib/modules/library/providers/file_scanner.g.dart index c964774a..02d8d8bf 100644 --- a/lib/modules/library/providers/file_scanner.g.dart +++ b/lib/modules/library/providers/file_scanner.g.dart @@ -6,7 +6,7 @@ part of 'file_scanner.dart'; // RiverpodGenerator // ************************************************************************** -String _$scanLocalLibraryHash() => r'7e028c45097e5802ee974d9f0c5a2bc540bba91c'; +String _$scanLocalLibraryHash() => r'efbad9aa5fa4233e260a2e132389c23b40ef515a'; /// Scans `Mangayomi/local` folder (if exists) for Mangas/Animes and imports in library. /// diff --git a/lib/modules/library/providers/isar_providers.g.dart b/lib/modules/library/providers/isar_providers.g.dart index 6f13f7a5..d102ebbe 100644 --- a/lib/modules/library/providers/isar_providers.g.dart +++ b/lib/modules/library/providers/isar_providers.g.dart @@ -53,10 +53,7 @@ class GetAllMangaStreamFamily extends Family>> { GetAllMangaStreamProvider getProviderOverride( covariant GetAllMangaStreamProvider provider, ) { - return call( - categoryId: provider.categoryId, - itemType: provider.itemType, - ); + return call(categoryId: provider.categoryId, itemType: provider.itemType); } static const Iterable? _dependencies = null; @@ -81,23 +78,22 @@ class GetAllMangaStreamProvider extends AutoDisposeStreamProvider> { required int? categoryId, required ItemType itemType, }) : this._internal( - (ref) => getAllMangaStream( - ref as GetAllMangaStreamRef, - categoryId: categoryId, - itemType: itemType, - ), - from: getAllMangaStreamProvider, - name: r'getAllMangaStreamProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getAllMangaStreamHash, - dependencies: GetAllMangaStreamFamily._dependencies, - allTransitiveDependencies: - GetAllMangaStreamFamily._allTransitiveDependencies, - categoryId: categoryId, - itemType: itemType, - ); + (ref) => getAllMangaStream( + ref as GetAllMangaStreamRef, + categoryId: categoryId, + itemType: itemType, + ), + from: getAllMangaStreamProvider, + name: r'getAllMangaStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getAllMangaStreamHash, + dependencies: GetAllMangaStreamFamily._dependencies, + allTransitiveDependencies: + GetAllMangaStreamFamily._allTransitiveDependencies, + categoryId: categoryId, + itemType: itemType, + ); GetAllMangaStreamProvider._internal( super._createNotifier, { @@ -193,18 +189,14 @@ class GetAllMangaWithoutCategoriesStreamFamily GetAllMangaWithoutCategoriesStreamProvider call({ required ItemType itemType, }) { - return GetAllMangaWithoutCategoriesStreamProvider( - itemType: itemType, - ); + return GetAllMangaWithoutCategoriesStreamProvider(itemType: itemType); } @override GetAllMangaWithoutCategoriesStreamProvider getProviderOverride( covariant GetAllMangaWithoutCategoriesStreamProvider provider, ) { - return call( - itemType: provider.itemType, - ); + return call(itemType: provider.itemType); } static const Iterable? _dependencies = null; @@ -226,24 +218,22 @@ class GetAllMangaWithoutCategoriesStreamFamily class GetAllMangaWithoutCategoriesStreamProvider extends AutoDisposeStreamProvider> { /// See also [getAllMangaWithoutCategoriesStream]. - GetAllMangaWithoutCategoriesStreamProvider({ - required ItemType itemType, - }) : this._internal( - (ref) => getAllMangaWithoutCategoriesStream( - ref as GetAllMangaWithoutCategoriesStreamRef, - itemType: itemType, - ), - from: getAllMangaWithoutCategoriesStreamProvider, - name: r'getAllMangaWithoutCategoriesStreamProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getAllMangaWithoutCategoriesStreamHash, - dependencies: GetAllMangaWithoutCategoriesStreamFamily._dependencies, - allTransitiveDependencies: GetAllMangaWithoutCategoriesStreamFamily - ._allTransitiveDependencies, + GetAllMangaWithoutCategoriesStreamProvider({required ItemType itemType}) + : this._internal( + (ref) => getAllMangaWithoutCategoriesStream( + ref as GetAllMangaWithoutCategoriesStreamRef, itemType: itemType, - ); + ), + from: getAllMangaWithoutCategoriesStreamProvider, + name: r'getAllMangaWithoutCategoriesStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getAllMangaWithoutCategoriesStreamHash, + dependencies: GetAllMangaWithoutCategoriesStreamFamily._dependencies, + allTransitiveDependencies: + GetAllMangaWithoutCategoriesStreamFamily._allTransitiveDependencies, + itemType: itemType, + ); GetAllMangaWithoutCategoriesStreamProvider._internal( super._createNotifier, { @@ -260,7 +250,7 @@ class GetAllMangaWithoutCategoriesStreamProvider @override Override overrideWith( Stream> Function(GetAllMangaWithoutCategoriesStreamRef provider) - create, + create, ) { return ProviderOverride( origin: this, @@ -320,14 +310,14 @@ String _$getSettingsStreamHash() => r'c5a51e0e3473b25d2365025832a27ed2cc029b27'; @ProviderFor(getSettingsStream) final getSettingsStreamProvider = AutoDisposeStreamProvider>.internal( - getSettingsStream, - name: r'getSettingsStreamProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$getSettingsStreamHash, - dependencies: null, - allTransitiveDependencies: null, -); + getSettingsStream, + name: r'getSettingsStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getSettingsStreamHash, + dependencies: null, + allTransitiveDependencies: null, + ); @Deprecated('Will be removed in 3.0. Use Ref instead') // ignore: unused_element diff --git a/lib/modules/library/providers/library_state_provider.dart b/lib/modules/library/providers/library_state_provider.dart index 175c737c..a6c91ae7 100644 --- a/lib/modules/library/providers/library_state_provider.dart +++ b/lib/modules/library/providers/library_state_provider.dart @@ -3,6 +3,7 @@ import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/settings.dart'; +import 'package:mangayomi/modules/manga/detail/providers/state_providers.dart'; import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; @@ -785,7 +786,7 @@ class MangasListState extends _$MangasListState { newList.add(value.id!); } if (newList.isEmpty) { - ref.read(isLongPressedMangaStateProvider.notifier).update(false); + ref.read(isLongPressedStateProvider.notifier).update(false); } state = newList; } @@ -814,65 +815,24 @@ class MangasListState extends _$MangasListState { } } -@riverpod -class IsLongPressedMangaState extends _$IsLongPressedMangaState { - @override - bool build() { - return false; - } - - void update(bool value) { - state = value; - } -} - @riverpod class MangasSetIsReadState extends _$MangasSetIsReadState { @override - void build({required List mangaIds}) {} + void build({required List mangaIds, required bool markAsRead}) {} void set() { final allChapters = []; final allMangas = []; + final now = DateTime.now().millisecondsSinceEpoch; for (var mangaid in mangaIds) { final manga = isar.mangas.getSync(mangaid)!; final chapters = manga.chapters; - if (chapters.isNotEmpty) { - chapters.last.updateTrackChapterRead(ref); - for (var chapter in chapters) { - chapter.isRead = true; - chapter.lastPageRead = "1"; - chapter.updatedAt = DateTime.now().millisecondsSinceEpoch; - chapter.manga.value = manga; - allChapters.add(chapter); - } - allMangas.add(manga); - } - } - - isar.writeTxnSync(() { - isar.chapters.putAllSync(allChapters); - isar.mangas.putAllSync(allMangas); - }); - - ref.read(isLongPressedMangaStateProvider.notifier).update(false); - ref.read(mangasListStateProvider.notifier).clear(); - } -} - -@riverpod -class MangasSetUnReadState extends _$MangasSetUnReadState { - @override - void build({required List mangaIds}) {} - - void set() { - final allChapters = []; - final allMangas = []; - for (var mangaid in mangaIds) { - final manga = isar.mangas.getSync(mangaid)!; - for (var chapter in manga.chapters) { - chapter.isRead = false; - chapter.updatedAt = DateTime.now().millisecondsSinceEpoch; + if (chapters.isEmpty) continue; + if (markAsRead) chapters.last.updateTrackChapterRead(ref); + for (var chapter in chapters) { + chapter.isRead = markAsRead; + if (markAsRead) chapter.lastPageRead = "1"; + chapter.updatedAt = now; chapter.manga.value = manga; allChapters.add(chapter); } @@ -884,7 +844,7 @@ class MangasSetUnReadState extends _$MangasSetUnReadState { isar.mangas.putAllSync(allMangas); }); - ref.read(isLongPressedMangaStateProvider.notifier).update(false); + ref.read(isLongPressedStateProvider.notifier).update(false); ref.read(mangasListStateProvider.notifier).clear(); } } diff --git a/lib/modules/library/providers/library_state_provider.g.dart b/lib/modules/library/providers/library_state_provider.g.dart index 6f33272d..a0845ee9 100644 --- a/lib/modules/library/providers/library_state_provider.g.dart +++ b/lib/modules/library/providers/library_state_provider.g.dart @@ -35,10 +35,7 @@ abstract class _$LibraryDisplayTypeState late final ItemType itemType; late final Settings settings; - DisplayType build({ - required ItemType itemType, - required Settings settings, - }); + DisplayType build({required ItemType itemType, required Settings settings}); } /// See also [LibraryDisplayTypeState]. @@ -65,10 +62,7 @@ class LibraryDisplayTypeStateFamily extends Family { LibraryDisplayTypeStateProvider getProviderOverride( covariant LibraryDisplayTypeStateProvider provider, ) { - return call( - itemType: provider.itemType, - settings: provider.settings, - ); + return call(itemType: provider.itemType, settings: provider.settings); } static const Iterable? _dependencies = null; @@ -87,28 +81,28 @@ class LibraryDisplayTypeStateFamily extends Family { } /// See also [LibraryDisplayTypeState]. -class LibraryDisplayTypeStateProvider extends AutoDisposeNotifierProviderImpl< - LibraryDisplayTypeState, DisplayType> { +class LibraryDisplayTypeStateProvider + extends + AutoDisposeNotifierProviderImpl { /// See also [LibraryDisplayTypeState]. LibraryDisplayTypeStateProvider({ required ItemType itemType, required Settings settings, }) : this._internal( - () => LibraryDisplayTypeState() - ..itemType = itemType - ..settings = settings, - from: libraryDisplayTypeStateProvider, - name: r'libraryDisplayTypeStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$libraryDisplayTypeStateHash, - dependencies: LibraryDisplayTypeStateFamily._dependencies, - allTransitiveDependencies: - LibraryDisplayTypeStateFamily._allTransitiveDependencies, - itemType: itemType, - settings: settings, - ); + () => LibraryDisplayTypeState() + ..itemType = itemType + ..settings = settings, + from: libraryDisplayTypeStateProvider, + name: r'libraryDisplayTypeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$libraryDisplayTypeStateHash, + dependencies: LibraryDisplayTypeStateFamily._dependencies, + allTransitiveDependencies: + LibraryDisplayTypeStateFamily._allTransitiveDependencies, + itemType: itemType, + settings: settings, + ); LibraryDisplayTypeStateProvider._internal( super._createNotifier, { @@ -125,13 +119,8 @@ class LibraryDisplayTypeStateProvider extends AutoDisposeNotifierProviderImpl< final Settings settings; @override - DisplayType runNotifierBuild( - covariant LibraryDisplayTypeState notifier, - ) { - return notifier.build( - itemType: itemType, - settings: settings, - ); + DisplayType runNotifierBuild(covariant LibraryDisplayTypeState notifier) { + return notifier.build(itemType: itemType, settings: settings); } @override @@ -155,7 +144,7 @@ class LibraryDisplayTypeStateProvider extends AutoDisposeNotifierProviderImpl< @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _LibraryDisplayTypeStateProviderElement(this); } @@ -188,8 +177,9 @@ mixin LibraryDisplayTypeStateRef } class _LibraryDisplayTypeStateProviderElement - extends AutoDisposeNotifierProviderElement with LibraryDisplayTypeStateRef { + extends + AutoDisposeNotifierProviderElement + with LibraryDisplayTypeStateRef { _LibraryDisplayTypeStateProviderElement(super.provider); @override @@ -205,9 +195,7 @@ abstract class _$LibraryGridSizeState extends BuildlessAutoDisposeNotifier { late final ItemType itemType; - int? build({ - required ItemType itemType, - }); + int? build({required ItemType itemType}); } /// See also [LibraryGridSizeState]. @@ -220,21 +208,15 @@ class LibraryGridSizeStateFamily extends Family { const LibraryGridSizeStateFamily(); /// See also [LibraryGridSizeState]. - LibraryGridSizeStateProvider call({ - required ItemType itemType, - }) { - return LibraryGridSizeStateProvider( - itemType: itemType, - ); + LibraryGridSizeStateProvider call({required ItemType itemType}) { + return LibraryGridSizeStateProvider(itemType: itemType); } @override LibraryGridSizeStateProvider getProviderOverride( covariant LibraryGridSizeStateProvider provider, ) { - return call( - itemType: provider.itemType, - ); + return call(itemType: provider.itemType); } static const Iterable? _dependencies = null; @@ -256,21 +238,19 @@ class LibraryGridSizeStateFamily extends Family { class LibraryGridSizeStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [LibraryGridSizeState]. - LibraryGridSizeStateProvider({ - required ItemType itemType, - }) : this._internal( - () => LibraryGridSizeState()..itemType = itemType, - from: libraryGridSizeStateProvider, - name: r'libraryGridSizeStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$libraryGridSizeStateHash, - dependencies: LibraryGridSizeStateFamily._dependencies, - allTransitiveDependencies: - LibraryGridSizeStateFamily._allTransitiveDependencies, - itemType: itemType, - ); + LibraryGridSizeStateProvider({required ItemType itemType}) + : this._internal( + () => LibraryGridSizeState()..itemType = itemType, + from: libraryGridSizeStateProvider, + name: r'libraryGridSizeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$libraryGridSizeStateHash, + dependencies: LibraryGridSizeStateFamily._dependencies, + allTransitiveDependencies: + LibraryGridSizeStateFamily._allTransitiveDependencies, + itemType: itemType, + ); LibraryGridSizeStateProvider._internal( super._createNotifier, { @@ -285,12 +265,8 @@ class LibraryGridSizeStateProvider final ItemType itemType; @override - int? runNotifierBuild( - covariant LibraryGridSizeState notifier, - ) { - return notifier.build( - itemType: itemType, - ); + int? runNotifierBuild(covariant LibraryGridSizeState notifier) { + return notifier.build(itemType: itemType); } @override @@ -311,7 +287,7 @@ class LibraryGridSizeStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _LibraryGridSizeStateProviderElement(this); } @@ -418,23 +394,22 @@ class MangaFilterDownloadedStateProvider required ItemType itemType, required Settings settings, }) : this._internal( - () => MangaFilterDownloadedState() - ..mangaList = mangaList - ..itemType = itemType - ..settings = settings, - from: mangaFilterDownloadedStateProvider, - name: r'mangaFilterDownloadedStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangaFilterDownloadedStateHash, - dependencies: MangaFilterDownloadedStateFamily._dependencies, - allTransitiveDependencies: - MangaFilterDownloadedStateFamily._allTransitiveDependencies, - mangaList: mangaList, - itemType: itemType, - settings: settings, - ); + () => MangaFilterDownloadedState() + ..mangaList = mangaList + ..itemType = itemType + ..settings = settings, + from: mangaFilterDownloadedStateProvider, + name: r'mangaFilterDownloadedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mangaFilterDownloadedStateHash, + dependencies: MangaFilterDownloadedStateFamily._dependencies, + allTransitiveDependencies: + MangaFilterDownloadedStateFamily._allTransitiveDependencies, + mangaList: mangaList, + itemType: itemType, + settings: settings, + ); MangaFilterDownloadedStateProvider._internal( super._createNotifier, { @@ -453,9 +428,7 @@ class MangaFilterDownloadedStateProvider final Settings settings; @override - int runNotifierBuild( - covariant MangaFilterDownloadedState notifier, - ) { + int runNotifierBuild(covariant MangaFilterDownloadedState notifier) { return notifier.build( mangaList: mangaList, itemType: itemType, @@ -486,7 +459,7 @@ class MangaFilterDownloadedStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _MangaFilterDownloadedStateProviderElement(this); } @@ -611,23 +584,22 @@ class MangaFilterUnreadStateProvider required ItemType itemType, required Settings settings, }) : this._internal( - () => MangaFilterUnreadState() - ..mangaList = mangaList - ..itemType = itemType - ..settings = settings, - from: mangaFilterUnreadStateProvider, - name: r'mangaFilterUnreadStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangaFilterUnreadStateHash, - dependencies: MangaFilterUnreadStateFamily._dependencies, - allTransitiveDependencies: - MangaFilterUnreadStateFamily._allTransitiveDependencies, - mangaList: mangaList, - itemType: itemType, - settings: settings, - ); + () => MangaFilterUnreadState() + ..mangaList = mangaList + ..itemType = itemType + ..settings = settings, + from: mangaFilterUnreadStateProvider, + name: r'mangaFilterUnreadStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mangaFilterUnreadStateHash, + dependencies: MangaFilterUnreadStateFamily._dependencies, + allTransitiveDependencies: + MangaFilterUnreadStateFamily._allTransitiveDependencies, + mangaList: mangaList, + itemType: itemType, + settings: settings, + ); MangaFilterUnreadStateProvider._internal( super._createNotifier, { @@ -646,9 +618,7 @@ class MangaFilterUnreadStateProvider final Settings settings; @override - int runNotifierBuild( - covariant MangaFilterUnreadState notifier, - ) { + int runNotifierBuild(covariant MangaFilterUnreadState notifier) { return notifier.build( mangaList: mangaList, itemType: itemType, @@ -679,7 +649,7 @@ class MangaFilterUnreadStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _MangaFilterUnreadStateProviderElement(this); } @@ -802,23 +772,22 @@ class MangaFilterStartedStateProvider required ItemType itemType, required Settings settings, }) : this._internal( - () => MangaFilterStartedState() - ..mangaList = mangaList - ..itemType = itemType - ..settings = settings, - from: mangaFilterStartedStateProvider, - name: r'mangaFilterStartedStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangaFilterStartedStateHash, - dependencies: MangaFilterStartedStateFamily._dependencies, - allTransitiveDependencies: - MangaFilterStartedStateFamily._allTransitiveDependencies, - mangaList: mangaList, - itemType: itemType, - settings: settings, - ); + () => MangaFilterStartedState() + ..mangaList = mangaList + ..itemType = itemType + ..settings = settings, + from: mangaFilterStartedStateProvider, + name: r'mangaFilterStartedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mangaFilterStartedStateHash, + dependencies: MangaFilterStartedStateFamily._dependencies, + allTransitiveDependencies: + MangaFilterStartedStateFamily._allTransitiveDependencies, + mangaList: mangaList, + itemType: itemType, + settings: settings, + ); MangaFilterStartedStateProvider._internal( super._createNotifier, { @@ -837,9 +806,7 @@ class MangaFilterStartedStateProvider final Settings settings; @override - int runNotifierBuild( - covariant MangaFilterStartedState notifier, - ) { + int runNotifierBuild(covariant MangaFilterStartedState notifier) { return notifier.build( mangaList: mangaList, itemType: itemType, @@ -870,7 +837,7 @@ class MangaFilterStartedStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _MangaFilterStartedStateProviderElement(this); } @@ -993,23 +960,22 @@ class MangaFilterBookmarkedStateProvider required ItemType itemType, required Settings settings, }) : this._internal( - () => MangaFilterBookmarkedState() - ..mangaList = mangaList - ..itemType = itemType - ..settings = settings, - from: mangaFilterBookmarkedStateProvider, - name: r'mangaFilterBookmarkedStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangaFilterBookmarkedStateHash, - dependencies: MangaFilterBookmarkedStateFamily._dependencies, - allTransitiveDependencies: - MangaFilterBookmarkedStateFamily._allTransitiveDependencies, - mangaList: mangaList, - itemType: itemType, - settings: settings, - ); + () => MangaFilterBookmarkedState() + ..mangaList = mangaList + ..itemType = itemType + ..settings = settings, + from: mangaFilterBookmarkedStateProvider, + name: r'mangaFilterBookmarkedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mangaFilterBookmarkedStateHash, + dependencies: MangaFilterBookmarkedStateFamily._dependencies, + allTransitiveDependencies: + MangaFilterBookmarkedStateFamily._allTransitiveDependencies, + mangaList: mangaList, + itemType: itemType, + settings: settings, + ); MangaFilterBookmarkedStateProvider._internal( super._createNotifier, { @@ -1028,9 +994,7 @@ class MangaFilterBookmarkedStateProvider final Settings settings; @override - int runNotifierBuild( - covariant MangaFilterBookmarkedState notifier, - ) { + int runNotifierBuild(covariant MangaFilterBookmarkedState notifier) { return notifier.build( mangaList: mangaList, itemType: itemType, @@ -1061,7 +1025,7 @@ class MangaFilterBookmarkedStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _MangaFilterBookmarkedStateProviderElement(this); } @@ -1186,23 +1150,22 @@ class MangasFilterResultStateProvider required ItemType itemType, required Settings settings, }) : this._internal( - () => MangasFilterResultState() - ..mangaList = mangaList - ..itemType = itemType - ..settings = settings, - from: mangasFilterResultStateProvider, - name: r'mangasFilterResultStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangasFilterResultStateHash, - dependencies: MangasFilterResultStateFamily._dependencies, - allTransitiveDependencies: - MangasFilterResultStateFamily._allTransitiveDependencies, - mangaList: mangaList, - itemType: itemType, - settings: settings, - ); + () => MangasFilterResultState() + ..mangaList = mangaList + ..itemType = itemType + ..settings = settings, + from: mangasFilterResultStateProvider, + name: r'mangasFilterResultStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mangasFilterResultStateHash, + dependencies: MangasFilterResultStateFamily._dependencies, + allTransitiveDependencies: + MangasFilterResultStateFamily._allTransitiveDependencies, + mangaList: mangaList, + itemType: itemType, + settings: settings, + ); MangasFilterResultStateProvider._internal( super._createNotifier, { @@ -1221,9 +1184,7 @@ class MangasFilterResultStateProvider final Settings settings; @override - bool runNotifierBuild( - covariant MangasFilterResultState notifier, - ) { + bool runNotifierBuild(covariant MangasFilterResultState notifier) { return notifier.build( mangaList: mangaList, itemType: itemType, @@ -1254,7 +1215,7 @@ class MangasFilterResultStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _MangasFilterResultStateProviderElement(this); } @@ -1312,10 +1273,7 @@ abstract class _$LibraryShowCategoryTabsState late final ItemType itemType; late final Settings settings; - bool build({ - required ItemType itemType, - required Settings settings, - }); + bool build({required ItemType itemType, required Settings settings}); } /// See also [LibraryShowCategoryTabsState]. @@ -1343,10 +1301,7 @@ class LibraryShowCategoryTabsStateFamily extends Family { LibraryShowCategoryTabsStateProvider getProviderOverride( covariant LibraryShowCategoryTabsStateProvider provider, ) { - return call( - itemType: provider.itemType, - settings: provider.settings, - ); + return call(itemType: provider.itemType, settings: provider.settings); } static const Iterable? _dependencies = null; @@ -1366,28 +1321,27 @@ class LibraryShowCategoryTabsStateFamily extends Family { /// See also [LibraryShowCategoryTabsState]. class LibraryShowCategoryTabsStateProvider - extends AutoDisposeNotifierProviderImpl { + extends + AutoDisposeNotifierProviderImpl { /// See also [LibraryShowCategoryTabsState]. LibraryShowCategoryTabsStateProvider({ required ItemType itemType, required Settings settings, }) : this._internal( - () => LibraryShowCategoryTabsState() - ..itemType = itemType - ..settings = settings, - from: libraryShowCategoryTabsStateProvider, - name: r'libraryShowCategoryTabsStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$libraryShowCategoryTabsStateHash, - dependencies: LibraryShowCategoryTabsStateFamily._dependencies, - allTransitiveDependencies: - LibraryShowCategoryTabsStateFamily._allTransitiveDependencies, - itemType: itemType, - settings: settings, - ); + () => LibraryShowCategoryTabsState() + ..itemType = itemType + ..settings = settings, + from: libraryShowCategoryTabsStateProvider, + name: r'libraryShowCategoryTabsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$libraryShowCategoryTabsStateHash, + dependencies: LibraryShowCategoryTabsStateFamily._dependencies, + allTransitiveDependencies: + LibraryShowCategoryTabsStateFamily._allTransitiveDependencies, + itemType: itemType, + settings: settings, + ); LibraryShowCategoryTabsStateProvider._internal( super._createNotifier, { @@ -1404,13 +1358,8 @@ class LibraryShowCategoryTabsStateProvider final Settings settings; @override - bool runNotifierBuild( - covariant LibraryShowCategoryTabsState notifier, - ) { - return notifier.build( - itemType: itemType, - settings: settings, - ); + bool runNotifierBuild(covariant LibraryShowCategoryTabsState notifier) { + return notifier.build(itemType: itemType, settings: settings); } @override @@ -1434,7 +1383,7 @@ class LibraryShowCategoryTabsStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _LibraryShowCategoryTabsStateProviderElement(this); } @@ -1466,8 +1415,9 @@ mixin LibraryShowCategoryTabsStateRef on AutoDisposeNotifierProviderRef { } class _LibraryShowCategoryTabsStateProviderElement - extends AutoDisposeNotifierProviderElement with LibraryShowCategoryTabsStateRef { + extends + AutoDisposeNotifierProviderElement + with LibraryShowCategoryTabsStateRef { _LibraryShowCategoryTabsStateProviderElement(super.provider); @override @@ -1486,10 +1436,7 @@ abstract class _$LibraryDownloadedChaptersState late final ItemType itemType; late final Settings settings; - bool build({ - required ItemType itemType, - required Settings settings, - }); + bool build({required ItemType itemType, required Settings settings}); } /// See also [LibraryDownloadedChaptersState]. @@ -1517,10 +1464,7 @@ class LibraryDownloadedChaptersStateFamily extends Family { LibraryDownloadedChaptersStateProvider getProviderOverride( covariant LibraryDownloadedChaptersStateProvider provider, ) { - return call( - itemType: provider.itemType, - settings: provider.settings, - ); + return call(itemType: provider.itemType, settings: provider.settings); } static const Iterable? _dependencies = null; @@ -1540,28 +1484,27 @@ class LibraryDownloadedChaptersStateFamily extends Family { /// See also [LibraryDownloadedChaptersState]. class LibraryDownloadedChaptersStateProvider - extends AutoDisposeNotifierProviderImpl { + extends + AutoDisposeNotifierProviderImpl { /// See also [LibraryDownloadedChaptersState]. LibraryDownloadedChaptersStateProvider({ required ItemType itemType, required Settings settings, }) : this._internal( - () => LibraryDownloadedChaptersState() - ..itemType = itemType - ..settings = settings, - from: libraryDownloadedChaptersStateProvider, - name: r'libraryDownloadedChaptersStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$libraryDownloadedChaptersStateHash, - dependencies: LibraryDownloadedChaptersStateFamily._dependencies, - allTransitiveDependencies: - LibraryDownloadedChaptersStateFamily._allTransitiveDependencies, - itemType: itemType, - settings: settings, - ); + () => LibraryDownloadedChaptersState() + ..itemType = itemType + ..settings = settings, + from: libraryDownloadedChaptersStateProvider, + name: r'libraryDownloadedChaptersStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$libraryDownloadedChaptersStateHash, + dependencies: LibraryDownloadedChaptersStateFamily._dependencies, + allTransitiveDependencies: + LibraryDownloadedChaptersStateFamily._allTransitiveDependencies, + itemType: itemType, + settings: settings, + ); LibraryDownloadedChaptersStateProvider._internal( super._createNotifier, { @@ -1578,13 +1521,8 @@ class LibraryDownloadedChaptersStateProvider final Settings settings; @override - bool runNotifierBuild( - covariant LibraryDownloadedChaptersState notifier, - ) { - return notifier.build( - itemType: itemType, - settings: settings, - ); + bool runNotifierBuild(covariant LibraryDownloadedChaptersState notifier) { + return notifier.build(itemType: itemType, settings: settings); } @override @@ -1608,7 +1546,7 @@ class LibraryDownloadedChaptersStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _LibraryDownloadedChaptersStateProviderElement(this); } @@ -1641,8 +1579,9 @@ mixin LibraryDownloadedChaptersStateRef } class _LibraryDownloadedChaptersStateProviderElement - extends AutoDisposeNotifierProviderElement with LibraryDownloadedChaptersStateRef { + extends + AutoDisposeNotifierProviderElement + with LibraryDownloadedChaptersStateRef { _LibraryDownloadedChaptersStateProviderElement(super.provider); @override @@ -1661,10 +1600,7 @@ abstract class _$LibraryLanguageState late final ItemType itemType; late final Settings settings; - bool build({ - required ItemType itemType, - required Settings settings, - }); + bool build({required ItemType itemType, required Settings settings}); } /// See also [LibraryLanguageState]. @@ -1681,20 +1617,14 @@ class LibraryLanguageStateFamily extends Family { required ItemType itemType, required Settings settings, }) { - return LibraryLanguageStateProvider( - itemType: itemType, - settings: settings, - ); + return LibraryLanguageStateProvider(itemType: itemType, settings: settings); } @override LibraryLanguageStateProvider getProviderOverride( covariant LibraryLanguageStateProvider provider, ) { - return call( - itemType: provider.itemType, - settings: provider.settings, - ); + return call(itemType: provider.itemType, settings: provider.settings); } static const Iterable? _dependencies = null; @@ -1720,21 +1650,20 @@ class LibraryLanguageStateProvider required ItemType itemType, required Settings settings, }) : this._internal( - () => LibraryLanguageState() - ..itemType = itemType - ..settings = settings, - from: libraryLanguageStateProvider, - name: r'libraryLanguageStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$libraryLanguageStateHash, - dependencies: LibraryLanguageStateFamily._dependencies, - allTransitiveDependencies: - LibraryLanguageStateFamily._allTransitiveDependencies, - itemType: itemType, - settings: settings, - ); + () => LibraryLanguageState() + ..itemType = itemType + ..settings = settings, + from: libraryLanguageStateProvider, + name: r'libraryLanguageStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$libraryLanguageStateHash, + dependencies: LibraryLanguageStateFamily._dependencies, + allTransitiveDependencies: + LibraryLanguageStateFamily._allTransitiveDependencies, + itemType: itemType, + settings: settings, + ); LibraryLanguageStateProvider._internal( super._createNotifier, { @@ -1751,13 +1680,8 @@ class LibraryLanguageStateProvider final Settings settings; @override - bool runNotifierBuild( - covariant LibraryLanguageState notifier, - ) { - return notifier.build( - itemType: itemType, - settings: settings, - ); + bool runNotifierBuild(covariant LibraryLanguageState notifier) { + return notifier.build(itemType: itemType, settings: settings); } @override @@ -1781,7 +1705,7 @@ class LibraryLanguageStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _LibraryLanguageStateProviderElement(this); } @@ -1831,10 +1755,7 @@ abstract class _$LibraryLocalSourceState late final ItemType itemType; late final Settings settings; - bool build({ - required ItemType itemType, - required Settings settings, - }); + bool build({required ItemType itemType, required Settings settings}); } /// See also [LibraryLocalSourceState]. @@ -1861,10 +1782,7 @@ class LibraryLocalSourceStateFamily extends Family { LibraryLocalSourceStateProvider getProviderOverride( covariant LibraryLocalSourceStateProvider provider, ) { - return call( - itemType: provider.itemType, - settings: provider.settings, - ); + return call(itemType: provider.itemType, settings: provider.settings); } static const Iterable? _dependencies = null; @@ -1890,21 +1808,20 @@ class LibraryLocalSourceStateProvider required ItemType itemType, required Settings settings, }) : this._internal( - () => LibraryLocalSourceState() - ..itemType = itemType - ..settings = settings, - from: libraryLocalSourceStateProvider, - name: r'libraryLocalSourceStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$libraryLocalSourceStateHash, - dependencies: LibraryLocalSourceStateFamily._dependencies, - allTransitiveDependencies: - LibraryLocalSourceStateFamily._allTransitiveDependencies, - itemType: itemType, - settings: settings, - ); + () => LibraryLocalSourceState() + ..itemType = itemType + ..settings = settings, + from: libraryLocalSourceStateProvider, + name: r'libraryLocalSourceStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$libraryLocalSourceStateHash, + dependencies: LibraryLocalSourceStateFamily._dependencies, + allTransitiveDependencies: + LibraryLocalSourceStateFamily._allTransitiveDependencies, + itemType: itemType, + settings: settings, + ); LibraryLocalSourceStateProvider._internal( super._createNotifier, { @@ -1921,13 +1838,8 @@ class LibraryLocalSourceStateProvider final Settings settings; @override - bool runNotifierBuild( - covariant LibraryLocalSourceState notifier, - ) { - return notifier.build( - itemType: itemType, - settings: settings, - ); + bool runNotifierBuild(covariant LibraryLocalSourceState notifier) { + return notifier.build(itemType: itemType, settings: settings); } @override @@ -1951,7 +1863,7 @@ class LibraryLocalSourceStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _LibraryLocalSourceStateProviderElement(this); } @@ -2001,10 +1913,7 @@ abstract class _$LibraryShowNumbersOfItemsState late final ItemType itemType; late final Settings settings; - bool build({ - required ItemType itemType, - required Settings settings, - }); + bool build({required ItemType itemType, required Settings settings}); } /// See also [LibraryShowNumbersOfItemsState]. @@ -2032,10 +1941,7 @@ class LibraryShowNumbersOfItemsStateFamily extends Family { LibraryShowNumbersOfItemsStateProvider getProviderOverride( covariant LibraryShowNumbersOfItemsStateProvider provider, ) { - return call( - itemType: provider.itemType, - settings: provider.settings, - ); + return call(itemType: provider.itemType, settings: provider.settings); } static const Iterable? _dependencies = null; @@ -2055,28 +1961,27 @@ class LibraryShowNumbersOfItemsStateFamily extends Family { /// See also [LibraryShowNumbersOfItemsState]. class LibraryShowNumbersOfItemsStateProvider - extends AutoDisposeNotifierProviderImpl { + extends + AutoDisposeNotifierProviderImpl { /// See also [LibraryShowNumbersOfItemsState]. LibraryShowNumbersOfItemsStateProvider({ required ItemType itemType, required Settings settings, }) : this._internal( - () => LibraryShowNumbersOfItemsState() - ..itemType = itemType - ..settings = settings, - from: libraryShowNumbersOfItemsStateProvider, - name: r'libraryShowNumbersOfItemsStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$libraryShowNumbersOfItemsStateHash, - dependencies: LibraryShowNumbersOfItemsStateFamily._dependencies, - allTransitiveDependencies: - LibraryShowNumbersOfItemsStateFamily._allTransitiveDependencies, - itemType: itemType, - settings: settings, - ); + () => LibraryShowNumbersOfItemsState() + ..itemType = itemType + ..settings = settings, + from: libraryShowNumbersOfItemsStateProvider, + name: r'libraryShowNumbersOfItemsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$libraryShowNumbersOfItemsStateHash, + dependencies: LibraryShowNumbersOfItemsStateFamily._dependencies, + allTransitiveDependencies: + LibraryShowNumbersOfItemsStateFamily._allTransitiveDependencies, + itemType: itemType, + settings: settings, + ); LibraryShowNumbersOfItemsStateProvider._internal( super._createNotifier, { @@ -2093,13 +1998,8 @@ class LibraryShowNumbersOfItemsStateProvider final Settings settings; @override - bool runNotifierBuild( - covariant LibraryShowNumbersOfItemsState notifier, - ) { - return notifier.build( - itemType: itemType, - settings: settings, - ); + bool runNotifierBuild(covariant LibraryShowNumbersOfItemsState notifier) { + return notifier.build(itemType: itemType, settings: settings); } @override @@ -2123,7 +2023,7 @@ class LibraryShowNumbersOfItemsStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _LibraryShowNumbersOfItemsStateProviderElement(this); } @@ -2156,8 +2056,9 @@ mixin LibraryShowNumbersOfItemsStateRef } class _LibraryShowNumbersOfItemsStateProviderElement - extends AutoDisposeNotifierProviderElement with LibraryShowNumbersOfItemsStateRef { + extends + AutoDisposeNotifierProviderElement + with LibraryShowNumbersOfItemsStateRef { _LibraryShowNumbersOfItemsStateProviderElement(super.provider); @override @@ -2176,10 +2077,7 @@ abstract class _$LibraryShowContinueReadingButtonState late final ItemType itemType; late final Settings settings; - bool build({ - required ItemType itemType, - required Settings settings, - }); + bool build({required ItemType itemType, required Settings settings}); } /// See also [LibraryShowContinueReadingButtonState]. @@ -2207,10 +2105,7 @@ class LibraryShowContinueReadingButtonStateFamily extends Family { LibraryShowContinueReadingButtonStateProvider getProviderOverride( covariant LibraryShowContinueReadingButtonStateProvider provider, ) { - return call( - itemType: provider.itemType, - settings: provider.settings, - ); + return call(itemType: provider.itemType, settings: provider.settings); } static const Iterable? _dependencies = null; @@ -2230,29 +2125,31 @@ class LibraryShowContinueReadingButtonStateFamily extends Family { /// See also [LibraryShowContinueReadingButtonState]. class LibraryShowContinueReadingButtonStateProvider - extends AutoDisposeNotifierProviderImpl< - LibraryShowContinueReadingButtonState, bool> { + extends + AutoDisposeNotifierProviderImpl< + LibraryShowContinueReadingButtonState, + bool + > { /// See also [LibraryShowContinueReadingButtonState]. LibraryShowContinueReadingButtonStateProvider({ required ItemType itemType, required Settings settings, }) : this._internal( - () => LibraryShowContinueReadingButtonState() - ..itemType = itemType - ..settings = settings, - from: libraryShowContinueReadingButtonStateProvider, - name: r'libraryShowContinueReadingButtonStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$libraryShowContinueReadingButtonStateHash, - dependencies: - LibraryShowContinueReadingButtonStateFamily._dependencies, - allTransitiveDependencies: LibraryShowContinueReadingButtonStateFamily - ._allTransitiveDependencies, - itemType: itemType, - settings: settings, - ); + () => LibraryShowContinueReadingButtonState() + ..itemType = itemType + ..settings = settings, + from: libraryShowContinueReadingButtonStateProvider, + name: r'libraryShowContinueReadingButtonStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$libraryShowContinueReadingButtonStateHash, + dependencies: + LibraryShowContinueReadingButtonStateFamily._dependencies, + allTransitiveDependencies: LibraryShowContinueReadingButtonStateFamily + ._allTransitiveDependencies, + itemType: itemType, + settings: settings, + ); LibraryShowContinueReadingButtonStateProvider._internal( super._createNotifier, { @@ -2272,15 +2169,13 @@ class LibraryShowContinueReadingButtonStateProvider bool runNotifierBuild( covariant LibraryShowContinueReadingButtonState notifier, ) { - return notifier.build( - itemType: itemType, - settings: settings, - ); + return notifier.build(itemType: itemType, settings: settings); } @override Override overrideWith( - LibraryShowContinueReadingButtonState Function() create) { + LibraryShowContinueReadingButtonState Function() create, + ) { return ProviderOverride( origin: this, override: LibraryShowContinueReadingButtonStateProvider._internal( @@ -2299,8 +2194,11 @@ class LibraryShowContinueReadingButtonStateProvider } @override - AutoDisposeNotifierProviderElement createElement() { + AutoDisposeNotifierProviderElement< + LibraryShowContinueReadingButtonState, + bool + > + createElement() { return _LibraryShowContinueReadingButtonStateProviderElement(this); } @@ -2333,9 +2231,12 @@ mixin LibraryShowContinueReadingButtonStateRef } class _LibraryShowContinueReadingButtonStateProviderElement - extends AutoDisposeNotifierProviderElement< - LibraryShowContinueReadingButtonState, - bool> with LibraryShowContinueReadingButtonStateRef { + extends + AutoDisposeNotifierProviderElement< + LibraryShowContinueReadingButtonState, + bool + > + with LibraryShowContinueReadingButtonStateRef { _LibraryShowContinueReadingButtonStateProviderElement(super.provider); @override @@ -2384,10 +2285,7 @@ class SortLibraryMangaStateFamily extends Family { SortLibraryMangaStateProvider getProviderOverride( covariant SortLibraryMangaStateProvider provider, ) { - return call( - itemType: provider.itemType, - settings: provider.settings, - ); + return call(itemType: provider.itemType, settings: provider.settings); } static const Iterable? _dependencies = null; @@ -2406,28 +2304,31 @@ class SortLibraryMangaStateFamily extends Family { } /// See also [SortLibraryMangaState]. -class SortLibraryMangaStateProvider extends AutoDisposeNotifierProviderImpl< - SortLibraryMangaState, SortLibraryManga> { +class SortLibraryMangaStateProvider + extends + AutoDisposeNotifierProviderImpl< + SortLibraryMangaState, + SortLibraryManga + > { /// See also [SortLibraryMangaState]. SortLibraryMangaStateProvider({ required ItemType itemType, required Settings settings, }) : this._internal( - () => SortLibraryMangaState() - ..itemType = itemType - ..settings = settings, - from: sortLibraryMangaStateProvider, - name: r'sortLibraryMangaStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$sortLibraryMangaStateHash, - dependencies: SortLibraryMangaStateFamily._dependencies, - allTransitiveDependencies: - SortLibraryMangaStateFamily._allTransitiveDependencies, - itemType: itemType, - settings: settings, - ); + () => SortLibraryMangaState() + ..itemType = itemType + ..settings = settings, + from: sortLibraryMangaStateProvider, + name: r'sortLibraryMangaStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$sortLibraryMangaStateHash, + dependencies: SortLibraryMangaStateFamily._dependencies, + allTransitiveDependencies: + SortLibraryMangaStateFamily._allTransitiveDependencies, + itemType: itemType, + settings: settings, + ); SortLibraryMangaStateProvider._internal( super._createNotifier, { @@ -2444,13 +2345,8 @@ class SortLibraryMangaStateProvider extends AutoDisposeNotifierProviderImpl< final Settings settings; @override - SortLibraryManga runNotifierBuild( - covariant SortLibraryMangaState notifier, - ) { - return notifier.build( - itemType: itemType, - settings: settings, - ); + SortLibraryManga runNotifierBuild(covariant SortLibraryMangaState notifier) { + return notifier.build(itemType: itemType, settings: settings); } @override @@ -2474,7 +2370,7 @@ class SortLibraryMangaStateProvider extends AutoDisposeNotifierProviderImpl< @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _SortLibraryMangaStateProviderElement(this); } @@ -2507,8 +2403,12 @@ mixin SortLibraryMangaStateRef } class _SortLibraryMangaStateProviderElement - extends AutoDisposeNotifierProviderElement with SortLibraryMangaStateRef { + extends + AutoDisposeNotifierProviderElement< + SortLibraryMangaState, + SortLibraryManga + > + with SortLibraryMangaStateRef { _SortLibraryMangaStateProviderElement(super.provider); @override @@ -2517,49 +2417,31 @@ class _SortLibraryMangaStateProviderElement Settings get settings => (origin as SortLibraryMangaStateProvider).settings; } -String _$mangasListStateHash() => r'ad1cc419dfd3793bfc8c90f3ce8b7726561dd9ad'; +String _$mangasListStateHash() => r'bbd2e3600ec22a774b1774ae3c221815e52bfef6'; /// See also [MangasListState]. @ProviderFor(MangasListState) final mangasListStateProvider = AutoDisposeNotifierProvider>.internal( - MangasListState.new, - name: r'mangasListStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangasListStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + MangasListState.new, + name: r'mangasListStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mangasListStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$MangasListState = AutoDisposeNotifier>; -String _$isLongPressedMangaStateHash() => - r'f77076b0335e92df26a75ea0c338d4214a330184'; - -/// See also [IsLongPressedMangaState]. -@ProviderFor(IsLongPressedMangaState) -final isLongPressedMangaStateProvider = - AutoDisposeNotifierProvider.internal( - IsLongPressedMangaState.new, - name: r'isLongPressedMangaStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$isLongPressedMangaStateHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef _$IsLongPressedMangaState = AutoDisposeNotifier; String _$mangasSetIsReadStateHash() => - r'8f4f7f22ea8e82cf2370fb997033e1a4ec03168f'; + r'2a1b1005e2ed5068d36188a3fb969d21b64bfef6'; abstract class _$MangasSetIsReadState extends BuildlessAutoDisposeNotifier { late final List mangaIds; + late final bool markAsRead; - void build({ - required List mangaIds, - }); + void build({required List mangaIds, required bool markAsRead}); } /// See also [MangasSetIsReadState]. @@ -2574,9 +2456,11 @@ class MangasSetIsReadStateFamily extends Family { /// See also [MangasSetIsReadState]. MangasSetIsReadStateProvider call({ required List mangaIds, + required bool markAsRead, }) { return MangasSetIsReadStateProvider( mangaIds: mangaIds, + markAsRead: markAsRead, ); } @@ -2584,9 +2468,7 @@ class MangasSetIsReadStateFamily extends Family { MangasSetIsReadStateProvider getProviderOverride( covariant MangasSetIsReadStateProvider provider, ) { - return call( - mangaIds: provider.mangaIds, - ); + return call(mangaIds: provider.mangaIds, markAsRead: provider.markAsRead); } static const Iterable? _dependencies = null; @@ -2610,19 +2492,22 @@ class MangasSetIsReadStateProvider /// See also [MangasSetIsReadState]. MangasSetIsReadStateProvider({ required List mangaIds, + required bool markAsRead, }) : this._internal( - () => MangasSetIsReadState()..mangaIds = mangaIds, - from: mangasSetIsReadStateProvider, - name: r'mangasSetIsReadStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangasSetIsReadStateHash, - dependencies: MangasSetIsReadStateFamily._dependencies, - allTransitiveDependencies: - MangasSetIsReadStateFamily._allTransitiveDependencies, - mangaIds: mangaIds, - ); + () => MangasSetIsReadState() + ..mangaIds = mangaIds + ..markAsRead = markAsRead, + from: mangasSetIsReadStateProvider, + name: r'mangasSetIsReadStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mangasSetIsReadStateHash, + dependencies: MangasSetIsReadStateFamily._dependencies, + allTransitiveDependencies: + MangasSetIsReadStateFamily._allTransitiveDependencies, + mangaIds: mangaIds, + markAsRead: markAsRead, + ); MangasSetIsReadStateProvider._internal( super._createNotifier, { @@ -2632,17 +2517,15 @@ class MangasSetIsReadStateProvider required super.debugGetCreateSourceHash, required super.from, required this.mangaIds, + required this.markAsRead, }) : super.internal(); final List mangaIds; + final bool markAsRead; @override - void runNotifierBuild( - covariant MangasSetIsReadState notifier, - ) { - return notifier.build( - mangaIds: mangaIds, - ); + void runNotifierBuild(covariant MangasSetIsReadState notifier) { + return notifier.build(mangaIds: mangaIds, markAsRead: markAsRead); } @override @@ -2650,32 +2533,38 @@ class MangasSetIsReadStateProvider return ProviderOverride( origin: this, override: MangasSetIsReadStateProvider._internal( - () => create()..mangaIds = mangaIds, + () => create() + ..mangaIds = mangaIds + ..markAsRead = markAsRead, from: from, name: null, dependencies: null, allTransitiveDependencies: null, debugGetCreateSourceHash: null, mangaIds: mangaIds, + markAsRead: markAsRead, ), ); } @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _MangasSetIsReadStateProviderElement(this); } @override bool operator ==(Object other) { - return other is MangasSetIsReadStateProvider && other.mangaIds == mangaIds; + return other is MangasSetIsReadStateProvider && + other.mangaIds == mangaIds && + other.markAsRead == markAsRead; } @override int get hashCode { var hash = _SystemHash.combine(0, runtimeType.hashCode); hash = _SystemHash.combine(hash, mangaIds.hashCode); + hash = _SystemHash.combine(hash, markAsRead.hashCode); return _SystemHash.finish(hash); } @@ -2686,6 +2575,9 @@ class MangasSetIsReadStateProvider mixin MangasSetIsReadStateRef on AutoDisposeNotifierProviderRef { /// The parameter `mangaIds` of this provider. List get mangaIds; + + /// The parameter `markAsRead` of this provider. + bool get markAsRead; } class _MangasSetIsReadStateProviderElement @@ -2695,153 +2587,9 @@ class _MangasSetIsReadStateProviderElement @override List get mangaIds => (origin as MangasSetIsReadStateProvider).mangaIds; + @override + bool get markAsRead => (origin as MangasSetIsReadStateProvider).markAsRead; } -String _$mangasSetUnReadStateHash() => - r'09ddd287b110fd76494f9f56bd5cf76f58936f1f'; - -abstract class _$MangasSetUnReadState - extends BuildlessAutoDisposeNotifier { - late final List mangaIds; - - void build({ - required List mangaIds, - }); -} - -/// See also [MangasSetUnReadState]. -@ProviderFor(MangasSetUnReadState) -const mangasSetUnReadStateProvider = MangasSetUnReadStateFamily(); - -/// See also [MangasSetUnReadState]. -class MangasSetUnReadStateFamily extends Family { - /// See also [MangasSetUnReadState]. - const MangasSetUnReadStateFamily(); - - /// See also [MangasSetUnReadState]. - MangasSetUnReadStateProvider call({ - required List mangaIds, - }) { - return MangasSetUnReadStateProvider( - mangaIds: mangaIds, - ); - } - - @override - MangasSetUnReadStateProvider getProviderOverride( - covariant MangasSetUnReadStateProvider provider, - ) { - return call( - mangaIds: provider.mangaIds, - ); - } - - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'mangasSetUnReadStateProvider'; -} - -/// See also [MangasSetUnReadState]. -class MangasSetUnReadStateProvider - extends AutoDisposeNotifierProviderImpl { - /// See also [MangasSetUnReadState]. - MangasSetUnReadStateProvider({ - required List mangaIds, - }) : this._internal( - () => MangasSetUnReadState()..mangaIds = mangaIds, - from: mangasSetUnReadStateProvider, - name: r'mangasSetUnReadStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangasSetUnReadStateHash, - dependencies: MangasSetUnReadStateFamily._dependencies, - allTransitiveDependencies: - MangasSetUnReadStateFamily._allTransitiveDependencies, - mangaIds: mangaIds, - ); - - MangasSetUnReadStateProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.mangaIds, - }) : super.internal(); - - final List mangaIds; - - @override - void runNotifierBuild( - covariant MangasSetUnReadState notifier, - ) { - return notifier.build( - mangaIds: mangaIds, - ); - } - - @override - Override overrideWith(MangasSetUnReadState Function() create) { - return ProviderOverride( - origin: this, - override: MangasSetUnReadStateProvider._internal( - () => create()..mangaIds = mangaIds, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - mangaIds: mangaIds, - ), - ); - } - - @override - AutoDisposeNotifierProviderElement - createElement() { - return _MangasSetUnReadStateProviderElement(this); - } - - @override - bool operator ==(Object other) { - return other is MangasSetUnReadStateProvider && other.mangaIds == mangaIds; - } - - @override - int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, mangaIds.hashCode); - - return _SystemHash.finish(hash); - } -} - -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin MangasSetUnReadStateRef on AutoDisposeNotifierProviderRef { - /// The parameter `mangaIds` of this provider. - List get mangaIds; -} - -class _MangasSetUnReadStateProviderElement - extends AutoDisposeNotifierProviderElement - with MangasSetUnReadStateRef { - _MangasSetUnReadStateProviderElement(super.provider); - - @override - List get mangaIds => (origin as MangasSetUnReadStateProvider).mangaIds; -} // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/library/providers/local_archive.dart b/lib/modules/library/providers/local_archive.dart index 14510238..eab3c3b3 100644 --- a/lib/modules/library/providers/local_archive.dart +++ b/lib/modules/library/providers/local_archive.dart @@ -48,6 +48,7 @@ Future importArchivesFromFile( isLocalArchive: true, artist: '', updatedAt: dateNow, + sourceId: null, ); for (var file in result.files.reversed.toList()) { diff --git a/lib/modules/library/providers/local_archive.g.dart b/lib/modules/library/providers/local_archive.g.dart index 254f479c..38f0a118 100644 --- a/lib/modules/library/providers/local_archive.g.dart +++ b/lib/modules/library/providers/local_archive.g.dart @@ -7,7 +7,7 @@ part of 'local_archive.dart'; // ************************************************************************** String _$importArchivesFromFileHash() => - r'4d92aaade0544f76214030364433f91d27570b5a'; + r'784b9d45958695faffdf04ee7c105c9b486122de'; /// Copied from Dart SDK class _SystemHash { @@ -87,25 +87,24 @@ class ImportArchivesFromFileProvider required ItemType itemType, required bool init, }) : this._internal( - (ref) => importArchivesFromFile( - ref as ImportArchivesFromFileRef, - mManga, - itemType: itemType, - init: init, - ), - from: importArchivesFromFileProvider, - name: r'importArchivesFromFileProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$importArchivesFromFileHash, - dependencies: ImportArchivesFromFileFamily._dependencies, - allTransitiveDependencies: - ImportArchivesFromFileFamily._allTransitiveDependencies, - mManga: mManga, - itemType: itemType, - init: init, - ); + (ref) => importArchivesFromFile( + ref as ImportArchivesFromFileRef, + mManga, + itemType: itemType, + init: init, + ), + from: importArchivesFromFileProvider, + name: r'importArchivesFromFileProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$importArchivesFromFileHash, + dependencies: ImportArchivesFromFileFamily._dependencies, + allTransitiveDependencies: + ImportArchivesFromFileFamily._allTransitiveDependencies, + mManga: mManga, + itemType: itemType, + init: init, + ); ImportArchivesFromFileProvider._internal( super._createNotifier, { @@ -192,5 +191,6 @@ class _ImportArchivesFromFileProviderElement @override bool get init => (origin as ImportArchivesFromFileProvider).init; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/library/widgets/library_gridview_widget.dart b/lib/modules/library/widgets/library_gridview_widget.dart index 5bec0f2e..1dd9d73b 100644 --- a/lib/modules/library/widgets/library_gridview_widget.dart +++ b/lib/modules/library/widgets/library_gridview_widget.dart @@ -9,6 +9,7 @@ import 'package:mangayomi/models/history.dart'; import 'package:mangayomi/modules/library/providers/isar_providers.dart'; import 'package:mangayomi/modules/library/providers/library_state_provider.dart'; import 'package:mangayomi/models/manga.dart'; +import 'package:mangayomi/modules/manga/detail/providers/state_providers.dart'; import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; import 'package:mangayomi/utils/constant.dart'; @@ -52,7 +53,7 @@ class _LibraryGridViewWidgetState extends State { Widget build(BuildContext context) { return Consumer( builder: (context, ref, child) { - final isLongPressed = ref.watch(isLongPressedMangaStateProvider); + final isLongPressed = ref.watch(isLongPressedStateProvider); final itemType = widget.itemType; final gridSize = ref.watch( @@ -93,6 +94,7 @@ class _LibraryGridViewWidgetState extends State { headersProvider( source: entry.source!, lang: entry.lang!, + sourceId: entry.sourceId, ), ), ), @@ -109,6 +111,7 @@ class _LibraryGridViewWidgetState extends State { lang: entry.lang!, mangaM: entry, source: entry.source!, + sourceId: entry.sourceId, ); if (context.mounted) { ref.invalidate( @@ -430,7 +433,7 @@ class _LibraryGridViewWidgetState extends State { ) { if (!isLongPressed) { ref.read(mangasListStateProvider.notifier).update(entry); - ref.read(isLongPressedMangaStateProvider.notifier).update(!isLongPressed); + ref.read(isLongPressedStateProvider.notifier).update(!isLongPressed); } else { ref.read(mangasListStateProvider.notifier).update(entry); } diff --git a/lib/modules/library/widgets/library_listview_widget.dart b/lib/modules/library/widgets/library_listview_widget.dart index 7306e15d..ccbaf0a0 100644 --- a/lib/modules/library/widgets/library_listview_widget.dart +++ b/lib/modules/library/widgets/library_listview_widget.dart @@ -9,6 +9,7 @@ import 'package:mangayomi/models/history.dart'; import 'package:mangayomi/modules/library/providers/isar_providers.dart'; import 'package:mangayomi/modules/library/providers/library_state_provider.dart'; import 'package:mangayomi/models/manga.dart'; +import 'package:mangayomi/modules/manga/detail/providers/state_providers.dart'; import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; import 'package:mangayomi/utils/constant.dart'; @@ -44,7 +45,7 @@ class LibraryListViewWidget extends StatelessWidget { bool isLocalArchive = entry.isLocalArchive ?? false; return Consumer( builder: (context, ref, child) { - final isLongPressed = ref.watch(isLongPressedMangaStateProvider); + final isLongPressed = ref.watch(isLongPressedStateProvider); return Material( borderRadius: BorderRadius.circular(5), color: Colors.transparent, @@ -61,6 +62,7 @@ class LibraryListViewWidget extends StatelessWidget { lang: entry.lang!, mangaM: entry, source: entry.source!, + sourceId: entry.sourceId, ); ref.invalidate( getAllMangaWithoutCategoriesStreamProvider( @@ -80,7 +82,7 @@ class LibraryListViewWidget extends StatelessWidget { ref.read(mangasListStateProvider.notifier).update(entry); ref - .read(isLongPressedMangaStateProvider.notifier) + .read(isLongPressedStateProvider.notifier) .update(!isLongPressed); } else { ref.read(mangasListStateProvider.notifier).update(entry); @@ -91,7 +93,7 @@ class LibraryListViewWidget extends StatelessWidget { ref.read(mangasListStateProvider.notifier).update(entry); ref - .read(isLongPressedMangaStateProvider.notifier) + .read(isLongPressedStateProvider.notifier) .update(!isLongPressed); } else { ref.read(mangasListStateProvider.notifier).update(entry); @@ -139,6 +141,7 @@ class LibraryListViewWidget extends StatelessWidget { headersProvider( source: entry.source!, lang: entry.lang!, + sourceId: entry.sourceId, ), ), ), diff --git a/lib/modules/main_view/main_screen.dart b/lib/modules/main_view/main_screen.dart index add15f8d..38c58e30 100644 --- a/lib/modules/main_view/main_screen.dart +++ b/lib/modules/main_view/main_screen.dart @@ -11,6 +11,7 @@ import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/update.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/modules/more/providers/downloaded_only_state_provider.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/widgets/loading_icon.dart'; @@ -23,7 +24,7 @@ import 'package:mangayomi/router/router.dart'; import 'package:mangayomi/services/fetch_sources_list.dart'; import 'package:mangayomi/services/sync_server.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; -import 'package:mangayomi/modules/library/providers/library_state_provider.dart'; +import 'package:mangayomi/modules/manga/detail/providers/state_providers.dart'; import 'package:mangayomi/modules/more/providers/incognito_mode_state_provider.dart'; final libLocationRegex = RegExp(r"^/(Manga|Anime|Novel)Library$"); @@ -239,10 +240,16 @@ class _MainScreenState extends ConsumerState { } final incognitoMode = ref.watch(incognitoModeStateProvider); - final isLongPressed = ref.watch(isLongPressedMangaStateProvider); + final downloadedOnly = ref.watch(downloadedOnlyStateProvider); + final isLongPressed = ref.watch(isLongPressedStateProvider); return Column( children: [ + if (!isReadingScreen) + _DownloadedOnlyBar( + downloadedOnly: downloadedOnly, + l10n: l10n, + ), if (!isReadingScreen) _IncognitoModeBar(incognitoMode: incognitoMode, l10n: l10n), Flexible( @@ -526,6 +533,45 @@ class _MainScreenState extends ConsumerState { } } +class _DownloadedOnlyBar extends StatelessWidget { + const _DownloadedOnlyBar({required this.downloadedOnly, required this.l10n}); + + final bool downloadedOnly; + final dynamic l10n; + + @override + Widget build(BuildContext context) { + return Material( + child: AnimatedContainer( + height: downloadedOnly + ? Platform.isAndroid || Platform.isIOS + ? MediaQuery.of(context).padding.top * 2 + : 50 + : 0, + curve: Curves.easeIn, + duration: const Duration(milliseconds: 150), + color: context.secondaryColor, + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + l10n.downloaded_only, + style: TextStyle( + color: Colors.white, + fontFamily: GoogleFonts.aBeeZee().fontFamily, + ), + ), + ), + ], + ), + ), + ); + } +} + class _IncognitoModeBar extends StatelessWidget { const _IncognitoModeBar({required this.incognitoMode, required this.l10n}); diff --git a/lib/modules/main_view/providers/migration.g.dart b/lib/modules/main_view/providers/migration.g.dart index 740c5b32..dada02b0 100644 --- a/lib/modules/main_view/providers/migration.g.dart +++ b/lib/modules/main_view/providers/migration.g.dart @@ -13,8 +13,9 @@ String _$migrationHash() => r'2a82120544e693a3162da887a3ca1b3066f3799f'; final migrationProvider = AutoDisposeFutureProvider.internal( migration, name: r'migrationProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') ? null : _$migrationHash, + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$migrationHash, dependencies: null, allTransitiveDependencies: null, ); diff --git a/lib/modules/manga/archive_reader/providers/archive_reader_providers.g.dart b/lib/modules/manga/archive_reader/providers/archive_reader_providers.g.dart index d960195b..1c3a57e9 100644 --- a/lib/modules/manga/archive_reader/providers/archive_reader_providers.g.dart +++ b/lib/modules/manga/archive_reader/providers/archive_reader_providers.g.dart @@ -36,27 +36,24 @@ const getArchivesDataFromDirectoryProvider = GetArchivesDataFromDirectoryFamily(); /// See also [getArchivesDataFromDirectory]. -class GetArchivesDataFromDirectoryFamily extends Family< - AsyncValue>> { +class GetArchivesDataFromDirectoryFamily + extends + Family< + AsyncValue> + > { /// See also [getArchivesDataFromDirectory]. const GetArchivesDataFromDirectoryFamily(); /// See also [getArchivesDataFromDirectory]. - GetArchivesDataFromDirectoryProvider call( - String path, - ) { - return GetArchivesDataFromDirectoryProvider( - path, - ); + GetArchivesDataFromDirectoryProvider call(String path) { + return GetArchivesDataFromDirectoryProvider(path); } @override GetArchivesDataFromDirectoryProvider getProviderOverride( covariant GetArchivesDataFromDirectoryProvider provider, ) { - return call( - provider.path, - ); + return call(provider.path); } static const Iterable? _dependencies = null; @@ -75,27 +72,28 @@ class GetArchivesDataFromDirectoryFamily extends Family< } /// See also [getArchivesDataFromDirectory]. -class GetArchivesDataFromDirectoryProvider extends AutoDisposeFutureProvider< - List<(String, LocalExtensionType, Uint8List, String)>> { +class GetArchivesDataFromDirectoryProvider + extends + AutoDisposeFutureProvider< + List<(String, LocalExtensionType, Uint8List, String)> + > { /// See also [getArchivesDataFromDirectory]. - GetArchivesDataFromDirectoryProvider( - String path, - ) : this._internal( - (ref) => getArchivesDataFromDirectory( - ref as GetArchivesDataFromDirectoryRef, - path, - ), - from: getArchivesDataFromDirectoryProvider, - name: r'getArchivesDataFromDirectoryProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getArchivesDataFromDirectoryHash, - dependencies: GetArchivesDataFromDirectoryFamily._dependencies, - allTransitiveDependencies: - GetArchivesDataFromDirectoryFamily._allTransitiveDependencies, - path: path, - ); + GetArchivesDataFromDirectoryProvider(String path) + : this._internal( + (ref) => getArchivesDataFromDirectory( + ref as GetArchivesDataFromDirectoryRef, + path, + ), + from: getArchivesDataFromDirectoryProvider, + name: r'getArchivesDataFromDirectoryProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getArchivesDataFromDirectoryHash, + dependencies: GetArchivesDataFromDirectoryFamily._dependencies, + allTransitiveDependencies: + GetArchivesDataFromDirectoryFamily._allTransitiveDependencies, + path: path, + ); GetArchivesDataFromDirectoryProvider._internal( super._createNotifier, { @@ -112,8 +110,9 @@ class GetArchivesDataFromDirectoryProvider extends AutoDisposeFutureProvider< @override Override overrideWith( FutureOr> Function( - GetArchivesDataFromDirectoryRef provider) - create, + GetArchivesDataFromDirectoryRef provider, + ) + create, ) { return ProviderOverride( origin: this, @@ -131,7 +130,9 @@ class GetArchivesDataFromDirectoryProvider extends AutoDisposeFutureProvider< @override AutoDisposeFutureProviderElement< - List<(String, LocalExtensionType, Uint8List, String)>> createElement() { + List<(String, LocalExtensionType, Uint8List, String)> + > + createElement() { return _GetArchivesDataFromDirectoryProviderElement(this); } @@ -151,15 +152,20 @@ class GetArchivesDataFromDirectoryProvider extends AutoDisposeFutureProvider< @Deprecated('Will be removed in 3.0. Use Ref instead') // ignore: unused_element -mixin GetArchivesDataFromDirectoryRef on AutoDisposeFutureProviderRef< - List<(String, LocalExtensionType, Uint8List, String)>> { +mixin GetArchivesDataFromDirectoryRef + on + AutoDisposeFutureProviderRef< + List<(String, LocalExtensionType, Uint8List, String)> + > { /// The parameter `path` of this provider. String get path; } class _GetArchivesDataFromDirectoryProviderElement - extends AutoDisposeFutureProviderElement< - List<(String, LocalExtensionType, Uint8List, String)>> + extends + AutoDisposeFutureProviderElement< + List<(String, LocalExtensionType, Uint8List, String)> + > with GetArchivesDataFromDirectoryRef { _GetArchivesDataFromDirectoryProviderElement(super.provider); @@ -181,21 +187,15 @@ class GetArchiveDataFromDirectoryFamily const GetArchiveDataFromDirectoryFamily(); /// See also [getArchiveDataFromDirectory]. - GetArchiveDataFromDirectoryProvider call( - String path, - ) { - return GetArchiveDataFromDirectoryProvider( - path, - ); + GetArchiveDataFromDirectoryProvider call(String path) { + return GetArchiveDataFromDirectoryProvider(path); } @override GetArchiveDataFromDirectoryProvider getProviderOverride( covariant GetArchiveDataFromDirectoryProvider provider, ) { - return call( - provider.path, - ); + return call(provider.path); } static const Iterable? _dependencies = null; @@ -217,24 +217,22 @@ class GetArchiveDataFromDirectoryFamily class GetArchiveDataFromDirectoryProvider extends AutoDisposeFutureProvider> { /// See also [getArchiveDataFromDirectory]. - GetArchiveDataFromDirectoryProvider( - String path, - ) : this._internal( - (ref) => getArchiveDataFromDirectory( - ref as GetArchiveDataFromDirectoryRef, - path, - ), - from: getArchiveDataFromDirectoryProvider, - name: r'getArchiveDataFromDirectoryProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getArchiveDataFromDirectoryHash, - dependencies: GetArchiveDataFromDirectoryFamily._dependencies, - allTransitiveDependencies: - GetArchiveDataFromDirectoryFamily._allTransitiveDependencies, - path: path, - ); + GetArchiveDataFromDirectoryProvider(String path) + : this._internal( + (ref) => getArchiveDataFromDirectory( + ref as GetArchiveDataFromDirectoryRef, + path, + ), + from: getArchiveDataFromDirectoryProvider, + name: r'getArchiveDataFromDirectoryProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getArchiveDataFromDirectoryHash, + dependencies: GetArchiveDataFromDirectoryFamily._dependencies, + allTransitiveDependencies: + GetArchiveDataFromDirectoryFamily._allTransitiveDependencies, + path: path, + ); GetArchiveDataFromDirectoryProvider._internal( super._createNotifier, { @@ -251,8 +249,9 @@ class GetArchiveDataFromDirectoryProvider @override Override overrideWith( FutureOr> Function( - GetArchiveDataFromDirectoryRef provider) - create, + GetArchiveDataFromDirectoryRef provider, + ) + create, ) { return ProviderOverride( origin: this, @@ -312,27 +311,22 @@ String _$getArchivesDataFromFileHash() => const getArchivesDataFromFileProvider = GetArchivesDataFromFileFamily(); /// See also [getArchivesDataFromFile]. -class GetArchivesDataFromFileFamily extends Family< - AsyncValue<(String, LocalExtensionType, Uint8List, String)>> { +class GetArchivesDataFromFileFamily + extends + Family> { /// See also [getArchivesDataFromFile]. const GetArchivesDataFromFileFamily(); /// See also [getArchivesDataFromFile]. - GetArchivesDataFromFileProvider call( - String path, - ) { - return GetArchivesDataFromFileProvider( - path, - ); + GetArchivesDataFromFileProvider call(String path) { + return GetArchivesDataFromFileProvider(path); } @override GetArchivesDataFromFileProvider getProviderOverride( covariant GetArchivesDataFromFileProvider provider, ) { - return call( - provider.path, - ); + return call(provider.path); } static const Iterable? _dependencies = null; @@ -351,27 +345,26 @@ class GetArchivesDataFromFileFamily extends Family< } /// See also [getArchivesDataFromFile]. -class GetArchivesDataFromFileProvider extends AutoDisposeFutureProvider< - (String, LocalExtensionType, Uint8List, String)> { +class GetArchivesDataFromFileProvider + extends + AutoDisposeFutureProvider< + (String, LocalExtensionType, Uint8List, String) + > { /// See also [getArchivesDataFromFile]. - GetArchivesDataFromFileProvider( - String path, - ) : this._internal( - (ref) => getArchivesDataFromFile( - ref as GetArchivesDataFromFileRef, - path, - ), - from: getArchivesDataFromFileProvider, - name: r'getArchivesDataFromFileProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getArchivesDataFromFileHash, - dependencies: GetArchivesDataFromFileFamily._dependencies, - allTransitiveDependencies: - GetArchivesDataFromFileFamily._allTransitiveDependencies, - path: path, - ); + GetArchivesDataFromFileProvider(String path) + : this._internal( + (ref) => + getArchivesDataFromFile(ref as GetArchivesDataFromFileRef, path), + from: getArchivesDataFromFileProvider, + name: r'getArchivesDataFromFileProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getArchivesDataFromFileHash, + dependencies: GetArchivesDataFromFileFamily._dependencies, + allTransitiveDependencies: + GetArchivesDataFromFileFamily._allTransitiveDependencies, + path: path, + ); GetArchivesDataFromFileProvider._internal( super._createNotifier, { @@ -388,8 +381,9 @@ class GetArchivesDataFromFileProvider extends AutoDisposeFutureProvider< @override Override overrideWith( FutureOr<(String, LocalExtensionType, Uint8List, String)> Function( - GetArchivesDataFromFileRef provider) - create, + GetArchivesDataFromFileRef provider, + ) + create, ) { return ProviderOverride( origin: this, @@ -407,7 +401,9 @@ class GetArchivesDataFromFileProvider extends AutoDisposeFutureProvider< @override AutoDisposeFutureProviderElement< - (String, LocalExtensionType, Uint8List, String)> createElement() { + (String, LocalExtensionType, Uint8List, String) + > + createElement() { return _GetArchivesDataFromFileProviderElement(this); } @@ -427,15 +423,20 @@ class GetArchivesDataFromFileProvider extends AutoDisposeFutureProvider< @Deprecated('Will be removed in 3.0. Use Ref instead') // ignore: unused_element -mixin GetArchivesDataFromFileRef on AutoDisposeFutureProviderRef< - (String, LocalExtensionType, Uint8List, String)> { +mixin GetArchivesDataFromFileRef + on + AutoDisposeFutureProviderRef< + (String, LocalExtensionType, Uint8List, String) + > { /// The parameter `path` of this provider. String get path; } class _GetArchivesDataFromFileProviderElement - extends AutoDisposeFutureProviderElement< - (String, LocalExtensionType, Uint8List, String)> + extends + AutoDisposeFutureProviderElement< + (String, LocalExtensionType, Uint8List, String) + > with GetArchivesDataFromFileRef { _GetArchivesDataFromFileProviderElement(super.provider); @@ -456,21 +457,15 @@ class GetArchiveDataFromFileFamily extends Family> { const GetArchiveDataFromFileFamily(); /// See also [getArchiveDataFromFile]. - GetArchiveDataFromFileProvider call( - String path, - ) { - return GetArchiveDataFromFileProvider( - path, - ); + GetArchiveDataFromFileProvider call(String path) { + return GetArchiveDataFromFileProvider(path); } @override GetArchiveDataFromFileProvider getProviderOverride( covariant GetArchiveDataFromFileProvider provider, ) { - return call( - provider.path, - ); + return call(provider.path); } static const Iterable? _dependencies = null; @@ -492,24 +487,19 @@ class GetArchiveDataFromFileFamily extends Family> { class GetArchiveDataFromFileProvider extends AutoDisposeFutureProvider { /// See also [getArchiveDataFromFile]. - GetArchiveDataFromFileProvider( - String path, - ) : this._internal( - (ref) => getArchiveDataFromFile( - ref as GetArchiveDataFromFileRef, - path, - ), - from: getArchiveDataFromFileProvider, - name: r'getArchiveDataFromFileProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getArchiveDataFromFileHash, - dependencies: GetArchiveDataFromFileFamily._dependencies, - allTransitiveDependencies: - GetArchiveDataFromFileFamily._allTransitiveDependencies, - path: path, - ); + GetArchiveDataFromFileProvider(String path) + : this._internal( + (ref) => getArchiveDataFromFile(ref as GetArchiveDataFromFileRef, path), + from: getArchiveDataFromFileProvider, + name: r'getArchiveDataFromFileProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getArchiveDataFromFileHash, + dependencies: GetArchiveDataFromFileFamily._dependencies, + allTransitiveDependencies: + GetArchiveDataFromFileFamily._allTransitiveDependencies, + path: path, + ); GetArchiveDataFromFileProvider._internal( super._createNotifier, { @@ -575,5 +565,6 @@ class _GetArchiveDataFromFileProviderElement @override String get path => (origin as GetArchiveDataFromFileProvider).path; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/manga/detail/manga_detail_view.dart b/lib/modules/manga/detail/manga_detail_view.dart index d0638106..1043c231 100644 --- a/lib/modules/manga/detail/manga_detail_view.dart +++ b/lib/modules/manga/detail/manga_detail_view.dart @@ -22,8 +22,11 @@ import 'package:mangayomi/modules/manga/detail/providers/track_state_providers.d import 'package:mangayomi/modules/manga/detail/widgets/tracker_search_widget.dart'; import 'package:mangayomi/modules/manga/detail/widgets/tracker_widget.dart'; import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart'; +import 'package:mangayomi/modules/more/providers/algorithm_weights_state_provider.dart'; import 'package:mangayomi/modules/more/settings/appearance/providers/pure_black_dark_mode_state_provider.dart'; import 'package:mangayomi/modules/more/settings/track/widgets/track_listile.dart'; +import 'package:mangayomi/modules/tracker_library/tracker_library_screen.dart'; +import 'package:mangayomi/modules/widgets/bottom_select_bar.dart'; import 'package:mangayomi/modules/widgets/category_selection_dialog.dart'; import 'package:mangayomi/modules/widgets/custom_draggable_tabbar.dart'; import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; @@ -101,8 +104,6 @@ class _MangaDetailViewState extends ConsumerState late final isLocalArchive = widget.manga!.isLocalArchive ?? false; @override Widget build(BuildContext context) { - final isLongPressed = ref.watch(isLongPressedStateProvider); - final chapterNameList = ref.watch(chaptersListStateProvider); final scanlators = ref.watch(scanlatorsFilterStateProvider(widget.manga!)); final reverse = ref .watch(sortChapterStateProvider(mangaId: widget.manga!.id!)) @@ -143,12 +144,7 @@ class _MangaDetailViewState extends ConsumerState filterScanlator: scanlators.$2, ); ref.read(chaptersListttStateProvider.notifier).set(chapters); - return _buildWidget( - chapters: chapters, - reverse: reverse, - chapterList: chapterNameList, - isLongPressed: isLongPressed, - ); + return _buildWidget(chapters: chapters, reverse: reverse); }, error: (Object error, StackTrace stackTrace) { return ErrorText(error); @@ -157,8 +153,6 @@ class _MangaDetailViewState extends ConsumerState return _buildWidget( chapters: widget.manga!.chapters.toList().reversed.toList(), reverse: reverse, - chapterList: chapterNameList, - isLongPressed: isLongPressed, ); }, ), @@ -267,9 +261,9 @@ class _MangaDetailViewState extends ConsumerState Widget _buildWidget({ required List chapters, required bool reverse, - required List chapterList, - required bool isLongPressed, }) { + final chapterList = ref.watch(chaptersListStateProvider); + final isLongPressed = ref.watch(isLongPressedStateProvider); final checkCategoryList = isar.categorys .filter() .idIsNotNull() @@ -299,6 +293,7 @@ class _MangaDetailViewState extends ConsumerState headersProvider( source: widget.manga!.source!, lang: widget.manga!.lang!, + sourceId: widget.manga!.sourceId, ), ), imageUrl: toImgUrl( @@ -367,7 +362,6 @@ class _MangaDetailViewState extends ConsumerState final isNotFiltering = ref.watch( chapterFilterResultStateProvider(manga: widget.manga!), ); - final isLongPressed = ref.watch(isLongPressedStateProvider); return isLongPressed ? Container( color: Theme.of(context).scaffoldBackgroundColor, @@ -634,6 +628,11 @@ class _MangaDetailViewState extends ConsumerState value: 3, child: Text(l10n.migrate), ), + if (!isLocalArchive) + PopupMenuItem( + value: 4, + child: Text(l10n.extension_settings), + ), ]; }, onSelected: (value) { @@ -653,14 +652,33 @@ class _MangaDetailViewState extends ConsumerState final source = getSource( widget.manga!.lang!, widget.manga!.source!, + widget.manga!.sourceId, ); final url = "${source!.baseUrl}${widget.manga!.link!.getUrlWithoutDomain}"; - Share.share(url); + final box = + context.findRenderObject() as RenderBox?; + Share.share( + url, + sharePositionOrigin: + box!.localToGlobal(Offset.zero) & + box.size, + ); break; case 3: context.push("/migrate", extra: widget.manga); break; + case 4: + final source = getSource( + widget.manga!.lang!, + widget.manga!.source!, + widget.manga!.sourceId, + ); + context.push( + '/extension_detail', + extra: source, + ); + break; } }, ), @@ -821,8 +839,8 @@ class _MangaDetailViewState extends ConsumerState ], ), ), - bottomNavigationBar: Consumer( - builder: (context, ref, child) { + bottomNavigationBar: Builder( + builder: (context) { final chap = ref.watch(chaptersListStateProvider); bool getLength1 = chap.length == 1; bool checkFirstBookmarked = @@ -830,353 +848,242 @@ class _MangaDetailViewState extends ConsumerState bool checkReadBookmarked = chap.isNotEmpty && chap.first.isRead! && getLength1; final l10n = l10nLocalizations(context)!; - return AnimatedContainer( - curve: Curves.easeIn, - decoration: BoxDecoration( - color: context.primaryColor.withValues(alpha: 0.2), - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(20), - topRight: Radius.circular(20), + final color = Theme.of(context).textTheme.bodyLarge!.color!; + return BottomSelectBar( + isVisible: isLongPressed, + actions: [ + BottomSelectButton( + icon: Icon( + checkFirstBookmarked + ? Icons.bookmark_remove_outlined + : Icons.bookmark_add_outlined, + color: color, + ), + onPressed: () { + final chapters = ref.watch(chaptersListStateProvider); + final List updatedChapters = []; + final now = DateTime.now().millisecondsSinceEpoch; + for (var chapter in chapters) { + chapter.isBookmarked = !chapter.isBookmarked!; + chapter.updatedAt = now; + chapter.manga.value = widget.manga; + updatedChapters.add(chapter); + } + isar.writeTxnSync(() { + isar.chapters.putAllSync(updatedChapters); + }); + ref + .read(isLongPressedStateProvider.notifier) + .update(false); + ref.read(chaptersListStateProvider.notifier).clear(); + }, ), - ), - duration: const Duration(milliseconds: 100), - height: isLongPressed ? 70 : 0, - width: context.width(1), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - backgroundColor: Colors.transparent, - shadowColor: Colors.transparent, - ), - onPressed: () { - final chapters = ref.watch( - chaptersListStateProvider, - ); - isar.writeTxnSync(() { - for (var chapter in chapters) { - chapter.isBookmarked = !chapter.isBookmarked!; - chapter.updatedAt = - DateTime.now().millisecondsSinceEpoch; - isar.chapters.putSync( - chapter..manga.value = widget.manga, - ); - chapter.manga.saveSync(); - } - }); - ref - .read(isLongPressedStateProvider.notifier) - .update(false); - ref - .read(chaptersListStateProvider.notifier) - .clear(); - }, - child: Icon( - checkFirstBookmarked - ? Icons.bookmark_remove_outlined - : Icons.bookmark_add_outlined, - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - ), + BottomSelectButton( + icon: Icon( + checkReadBookmarked + ? Icons.remove_done_sharp + : Icons.done_all_sharp, + color: color, ), - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - backgroundColor: Colors.transparent, - shadowColor: Colors.transparent, - ), - onPressed: () { - final chapters = ref.watch( - chaptersListStateProvider, - ); - isar.writeTxnSync(() { - for (var chapter in chapters) { - chapter.isRead = !chapter.isRead!; - if (!chapter.isRead!) { - chapter.lastPageRead = "1"; - } - chapter.updatedAt = - DateTime.now().millisecondsSinceEpoch; - isar.chapters.putSync( - chapter..manga.value = widget.manga, - ); - chapter.manga.saveSync(); - if (chapter.isRead!) { - chapter.updateTrackChapterRead(ref); - } - } - }); - ref - .read(isLongPressedStateProvider.notifier) - .update(false); - ref - .read(chaptersListStateProvider.notifier) - .clear(); - }, - child: Icon( - checkReadBookmarked - ? Icons.remove_done_sharp - : Icons.done_all_sharp, - color: Theme.of( - context, - ).textTheme.bodyLarge!.color!, - ), - ), - ), - ), - if (getLength1) - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - backgroundColor: Colors.transparent, - shadowColor: Colors.transparent, + onPressed: () { + final chapters = ref.watch(chaptersListStateProvider); + final List updatedChapters = []; + final now = DateTime.now().millisecondsSinceEpoch; + for (var chapter in chapters) { + chapter.isRead = !chapter.isRead!; + if (!chapter.isRead!) { + chapter.lastPageRead = "1"; + } + chapter.updatedAt = now; + chapter.manga.value = widget.manga; + updatedChapters.add(chapter); + if (chapter.isRead!) { + chapter.updateTrackChapterRead(ref); + } + } + isar.writeTxnSync(() { + isar.chapters.putAllSync(updatedChapters); + isar.mangas.putSync(widget.manga!); + }); + ref + .read(isLongPressedStateProvider.notifier) + .update(false); + ref.read(chaptersListStateProvider.notifier).clear(); + }, + ), + if (getLength1) + BottomSelectButton( + icon: Stack( + children: [ + Icon(Icons.done_outlined, color: color), + Positioned( + bottom: 0, + right: 0, + child: Icon( + Icons.arrow_downward_outlined, + size: 11, + color: color, ), - onPressed: () { - int index = chapters.indexOf(chap.first); - chapters[index + 1].updateTrackChapterRead(ref); - isar.writeTxnSync(() { - for ( - var i = index + 1; - i < chapters.length; - i++ - ) { - if (!chapters[i].isRead!) { - chapters[i].isRead = true; - chapters[i].lastPageRead = "1"; - chapters[i].updatedAt = - DateTime.now().millisecondsSinceEpoch; - isar.chapters.putSync( - chapters[i]..manga.value = widget.manga, - ); - chapters[i].manga.saveSync(); - } - } - ref - .read(isLongPressedStateProvider.notifier) - .update(false); - ref - .read(chaptersListStateProvider.notifier) - .clear(); - }); - }, - child: Stack( - children: [ - Icon( - Icons.done_outlined, - color: Theme.of( - context, - ).textTheme.bodyLarge!.color!, - ), - Positioned( - bottom: 0, - right: 0, - child: Icon( - Icons.arrow_downward_outlined, - size: 11, - color: Theme.of( - context, - ).textTheme.bodyLarge!.color!, - ), + ), + ], + ), + onPressed: () { + int index = chapters.indexOf(chap.first); + final List updatedChapters = []; + final now = DateTime.now().millisecondsSinceEpoch; + chapters[index + 1].updateTrackChapterRead(ref); + for (var i = index + 1; i < chapters.length; i++) { + final chapter = chapters[i]; + if (!chapter.isRead!) { + chapter.isRead = true; + chapter.lastPageRead = "1"; + chapter.updatedAt = now; + chapter.manga.value = widget.manga; + updatedChapters.add(chapter); + } + } + isar.writeTxnSync(() { + isar.chapters.putAllSync(updatedChapters); + isar.mangas.putSync(widget.manga!); + }); + ref + .read(isLongPressedStateProvider.notifier) + .update(false); + ref.read(chaptersListStateProvider.notifier).clear(); + }, + ), + if (!isLocalArchive) + BottomSelectButton( + icon: Icon(Icons.download_outlined, color: color), + onPressed: () { + for (var chapter in ref.watch( + chaptersListStateProvider, + )) { + final entries = isar.downloads + .filter() + .idEqualTo(chapter.id) + .findAllSync(); + if (entries.isEmpty || !entries.first.isDownload!) { + ref.read( + addDownloadToQueueProvider(chapter: chapter), + ); + } + } + ref.watch(processDownloadsProvider()); + + ref + .read(isLongPressedStateProvider.notifier) + .update(false); + ref.read(chaptersListStateProvider.notifier).clear(); + }, + ), + if (isLocalArchive) + BottomSelectButton( + icon: Icon(Icons.delete_outline_outlined, color: color), + onPressed: () { + final selectedChapters = ref.watch( + chaptersListStateProvider, + ); + final totalChapters = widget.manga!.chapters.length; + final isLastChapters = + selectedChapters.length == totalChapters; + final isAnime = widget.itemType == ItemType.anime; + final entryType = isAnime ? l10n.episode : l10n.chapter; + final pluralEntryType = isAnime + ? l10n.episodes + : l10n.chapters; + final mediaType = isAnime ? l10n.anime : l10n.manga; + final warningMessage = l10n.last_entry_delete_warning( + totalChapters, + entryType, + pluralEntryType, + mediaType, + ); + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text(l10n.delete_chapters), + content: isLastChapters + ? Row( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + const Icon( + Icons.warning_amber_rounded, + color: Colors.orange, + ), + const SizedBox(width: 12), + Expanded( + child: Text( + warningMessage, + style: TextStyle(color: Colors.red), + ), + ), + ], + ) + : null, + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text(l10n.cancel), + ), + const SizedBox(width: 15), + TextButton( + onPressed: () async { + final navigator = Navigator.of(context); + await isar.writeTxn(() async { + final idsToDelete = selectedChapters + .map((c) => c.id!) + .toList(); + await isar.chapters.deleteAll( + idsToDelete, + ); + }); + if (!mounted) return; + ref + .read( + isLongPressedStateProvider + .notifier, + ) + .update(false); + ref + .read( + chaptersListStateProvider + .notifier, + ) + .clear(); + navigator.pop(); + if (isLastChapters) { + navigator.pop(); + Future.delayed( + const Duration(milliseconds: 350), + () { + isar.writeTxn( + () => isar.mangas.delete( + widget.manga!.id!, + ), + ); + }, + ); + } + }, + child: Text(l10n.delete), + ), + ], ), ], - ), - ), - ), - ), - if (!isLocalArchive) - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - backgroundColor: Colors.transparent, - shadowColor: Colors.transparent, - ), - onPressed: () { - for (var chapter in ref.watch( - chaptersListStateProvider, - )) { - final entries = isar.downloads - .filter() - .idEqualTo(chapter.id) - .findAllSync(); - if (entries.isEmpty || - !entries.first.isDownload!) { - ref.read( - addDownloadToQueueProvider( - chapter: chapter, - ), - ); - } - } - ref.watch(processDownloadsProvider()); - - ref - .read(isLongPressedStateProvider.notifier) - .update(false); - ref - .read(chaptersListStateProvider.notifier) - .clear(); - }, - child: Icon( - Icons.download_outlined, - color: Theme.of( - context, - ).textTheme.bodyLarge!.color!, - ), - ), - ), - ), - if (isLocalArchive) - Expanded( - child: SizedBox( - height: 70, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - backgroundColor: Colors.transparent, - shadowColor: Colors.transparent, - ), - onPressed: () { - final selectedChapters = ref.watch( - chaptersListStateProvider, - ); - final totalChapters = - widget.manga!.chapters.length; - final isLastChapters = - selectedChapters.length == totalChapters; - final isAnime = widget.itemType == ItemType.anime; - final entryType = isAnime - ? l10n.episode - : l10n.chapter; - final pluralEntryType = isAnime - ? l10n.episodes - : l10n.chapters; - final mediaType = isAnime - ? l10n.anime - : l10n.manga; - final warningMessage = l10n - .last_entry_delete_warning( - totalChapters, - entryType, - pluralEntryType, - mediaType, - ); - showDialog( - context: context, - builder: (context) { - return AlertDialog( - title: Text(l10n.delete_chapters), - content: isLastChapters - ? Row( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - const Icon( - Icons.warning_amber_rounded, - color: Colors.orange, - ), - const SizedBox(width: 12), - Expanded( - child: Text( - warningMessage, - style: TextStyle( - color: Colors.red, - ), - ), - ), - ], - ) - : null, - actions: [ - Row( - mainAxisAlignment: - MainAxisAlignment.end, - children: [ - TextButton( - onPressed: () { - Navigator.pop(context); - }, - child: Text(l10n.cancel), - ), - const SizedBox(width: 15), - TextButton( - onPressed: () async { - final navigator = Navigator.of( - context, - ); - await isar.writeTxn(() async { - final idsToDelete = - selectedChapters - .map((c) => c.id!) - .toList(); - await isar.chapters.deleteAll( - idsToDelete, - ); - }); - if (!mounted) return; - ref - .read( - isLongPressedStateProvider - .notifier, - ) - .update(false); - ref - .read( - chaptersListStateProvider - .notifier, - ) - .clear(); - navigator.pop(); - if (isLastChapters) { - navigator.pop(); - Future.delayed( - const Duration( - milliseconds: 350, - ), - () { - isar.writeTxn( - () => isar.mangas.delete( - widget.manga!.id!, - ), - ); - }, - ); - } - }, - child: Text(l10n.delete), - ), - ], - ), - ], - ); - }, - ); - }, - child: Icon( - Icons.delete_outline_outlined, - color: Theme.of( - context, - ).textTheme.bodyLarge!.color!, - ), - ), - ), - ), - ], - ), + ); + }, + ); + }, + ), + ], ); }, ), @@ -1453,29 +1360,29 @@ class _MangaDetailViewState extends ConsumerState ), Consumer( builder: (context, ref, chil) { - return Column( - children: [ - RadioListTile( - dense: true, - title: Text(l10n.source_title), - value: "e", - groupValue: "e", - selected: true, - onChanged: (value) {}, - ), - RadioListTile( - dense: true, - title: Text( - widget.itemType != ItemType.anime - ? l10n.chapter_number - : l10n.episode_number, + return RadioGroup( + groupValue: "e", + onChanged: (value) {}, + child: Column( + children: [ + RadioListTile( + dense: true, + title: Text(l10n.source_title), + value: "e", + selected: true, ), - value: "ej", - groupValue: "e", - selected: false, - onChanged: (value) {}, - ), - ], + RadioListTile( + dense: true, + title: Text( + widget.itemType != ItemType.anime + ? l10n.chapter_number + : l10n.episode_number, + ), + value: "ej", + selected: false, + ), + ], + ), ); }, ), @@ -1609,6 +1516,7 @@ class _MangaDetailViewState extends ConsumerState final source = getSource( widget.manga!.lang!, widget.manga!.source!, + widget.manga!.sourceId, ); if (source == null) { botToast(l10n.source_not_added); @@ -1716,6 +1624,117 @@ class _MangaDetailViewState extends ConsumerState ), ), ), + const SizedBox(height: 15), + SizedBox( + width: context.width(1), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: OutlinedButton.icon( + style: ButtonStyle( + shape: WidgetStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30.0), + ), + ), + ), + onPressed: () { + final algorithmWeights = ref.read( + algorithmWeightsStateProvider, + ); + context.push( + "/recommendations", + extra: ( + widget.manga!.name, + widget.manga!.itemType, + algorithmWeights, + ), + ); + }, + label: Text(l10n.recommendations), + icon: Icon(Icons.arrow_right_alt_outlined), + ), + ), + ), + const SizedBox(height: 15), + if (widget.manga!.itemType == ItemType.anime) + SizedBox( + width: context.width(1), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: OutlinedButton.icon( + style: ButtonStyle( + shape: WidgetStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30.0), + ), + ), + ), + onPressed: () { + context.push( + "/watchOrder", + extra: (widget.manga!.name, null), + ); + }, + label: Text(l10n.watch_order), + icon: Icon(Icons.arrow_right_alt_outlined), + ), + ), + ), + if (widget.manga!.itemType == ItemType.anime) + StreamBuilder( + stream: isar.tracks + .filter() + .idIsNotNull() + .mangaIdEqualTo(widget.manga!.id!) + .watch(fireImmediately: true), + builder: (context, snapshot) { + List? trackRes = snapshot.hasData + ? snapshot.data + : []; + final isNotSupported = + trackRes?.firstOrNull?.syncId != + TrackerProviders.myAnimeList.syncId && + trackRes?.firstOrNull?.syncId != + TrackerProviders.anilist.syncId; + if ((trackRes?.isEmpty ?? true) || (isNotSupported)) { + return Container(); + } + return Column( + children: [ + const SizedBox(height: 15), + SizedBox( + width: context.width(1), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: OutlinedButton.icon( + style: ButtonStyle( + shape: WidgetStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + 30.0, + ), + ), + ), + ), + onPressed: () { + context.push( + "/watchOrder", + extra: ( + widget.manga!.name, + trackRes?.firstOrNull, + ), + ); + }, + label: Text(l10n.sequels), + icon: Icon(Icons.arrow_right_alt_outlined), + ), + ), + ), + ], + ); + }, + ), + const SizedBox(height: 15), if (!context.isTablet) Column( children: [ @@ -1812,6 +1831,7 @@ class _MangaDetailViewState extends ConsumerState headersProvider( source: widget.manga!.source!, lang: widget.manga!.lang!, + sourceId: widget.manga!.sourceId, ), ), ); @@ -1855,6 +1875,7 @@ class _MangaDetailViewState extends ConsumerState child: Row( children: [ Expanded(child: widget.action!), + Expanded(child: _smartUpdateDays()), Expanded( child: widget.itemType == ItemType.novel ? SizedBox.shrink() @@ -1873,6 +1894,7 @@ class _MangaDetailViewState extends ConsumerState final source = getSource( widget.manga!.lang!, widget.manga!.source!, + widget.manga!.sourceId, ); final url = "${source!.baseUrl}${widget.manga!.link!.getUrlWithoutDomain}"; @@ -1905,6 +1927,36 @@ class _MangaDetailViewState extends ConsumerState ); } + Widget _smartUpdateDays() { + return SizedBox( + child: ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + elevation: 0, + ), + onPressed: () => + context.push("/calendarScreen", extra: widget.manga!.itemType), + child: Column( + children: [ + Icon( + Icons.hourglass_empty, + size: 20, + color: context.secondaryColor, + ), + const SizedBox(height: 4), + Text( + widget.manga?.smartUpdateDays != null + ? context.l10n.n_days(widget.manga!.smartUpdateDays!) + : "N/A", + style: TextStyle(fontSize: 11, color: context.secondaryColor), + textAlign: TextAlign.center, + ), + ], + ), + ), + ); + } + /// Tracker button Widget _action() { return StreamBuilder( diff --git a/lib/modules/manga/detail/providers/isar_providers.g.dart b/lib/modules/manga/detail/providers/isar_providers.g.dart index 83a5fc70..b01028ea 100644 --- a/lib/modules/manga/detail/providers/isar_providers.g.dart +++ b/lib/modules/manga/detail/providers/isar_providers.g.dart @@ -40,21 +40,15 @@ class GetMangaDetailStreamFamily extends Family> { const GetMangaDetailStreamFamily(); /// See also [getMangaDetailStream]. - GetMangaDetailStreamProvider call({ - required int mangaId, - }) { - return GetMangaDetailStreamProvider( - mangaId: mangaId, - ); + GetMangaDetailStreamProvider call({required int mangaId}) { + return GetMangaDetailStreamProvider(mangaId: mangaId); } @override GetMangaDetailStreamProvider getProviderOverride( covariant GetMangaDetailStreamProvider provider, ) { - return call( - mangaId: provider.mangaId, - ); + return call(mangaId: provider.mangaId); } static const Iterable? _dependencies = null; @@ -75,24 +69,22 @@ class GetMangaDetailStreamFamily extends Family> { /// See also [getMangaDetailStream]. class GetMangaDetailStreamProvider extends AutoDisposeStreamProvider { /// See also [getMangaDetailStream]. - GetMangaDetailStreamProvider({ - required int mangaId, - }) : this._internal( - (ref) => getMangaDetailStream( - ref as GetMangaDetailStreamRef, - mangaId: mangaId, - ), - from: getMangaDetailStreamProvider, - name: r'getMangaDetailStreamProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getMangaDetailStreamHash, - dependencies: GetMangaDetailStreamFamily._dependencies, - allTransitiveDependencies: - GetMangaDetailStreamFamily._allTransitiveDependencies, + GetMangaDetailStreamProvider({required int mangaId}) + : this._internal( + (ref) => getMangaDetailStream( + ref as GetMangaDetailStreamRef, mangaId: mangaId, - ); + ), + from: getMangaDetailStreamProvider, + name: r'getMangaDetailStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getMangaDetailStreamHash, + dependencies: GetMangaDetailStreamFamily._dependencies, + allTransitiveDependencies: + GetMangaDetailStreamFamily._allTransitiveDependencies, + mangaId: mangaId, + ); GetMangaDetailStreamProvider._internal( super._createNotifier, { @@ -171,21 +163,15 @@ class GetChaptersStreamFamily extends Family>> { const GetChaptersStreamFamily(); /// See also [getChaptersStream]. - GetChaptersStreamProvider call({ - required int mangaId, - }) { - return GetChaptersStreamProvider( - mangaId: mangaId, - ); + GetChaptersStreamProvider call({required int mangaId}) { + return GetChaptersStreamProvider(mangaId: mangaId); } @override GetChaptersStreamProvider getProviderOverride( covariant GetChaptersStreamProvider provider, ) { - return call( - mangaId: provider.mangaId, - ); + return call(mangaId: provider.mangaId); } static const Iterable? _dependencies = null; @@ -207,24 +193,20 @@ class GetChaptersStreamFamily extends Family>> { class GetChaptersStreamProvider extends AutoDisposeStreamProvider> { /// See also [getChaptersStream]. - GetChaptersStreamProvider({ - required int mangaId, - }) : this._internal( - (ref) => getChaptersStream( - ref as GetChaptersStreamRef, - mangaId: mangaId, - ), - from: getChaptersStreamProvider, - name: r'getChaptersStreamProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getChaptersStreamHash, - dependencies: GetChaptersStreamFamily._dependencies, - allTransitiveDependencies: - GetChaptersStreamFamily._allTransitiveDependencies, - mangaId: mangaId, - ); + GetChaptersStreamProvider({required int mangaId}) + : this._internal( + (ref) => + getChaptersStream(ref as GetChaptersStreamRef, mangaId: mangaId), + from: getChaptersStreamProvider, + name: r'getChaptersStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getChaptersStreamHash, + dependencies: GetChaptersStreamFamily._dependencies, + allTransitiveDependencies: + GetChaptersStreamFamily._allTransitiveDependencies, + mangaId: mangaId, + ); GetChaptersStreamProvider._internal( super._createNotifier, { @@ -290,5 +272,6 @@ class _GetChaptersStreamProviderElement @override int get mangaId => (origin as GetChaptersStreamProvider).mangaId; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/manga/detail/providers/state_providers.g.dart b/lib/modules/manga/detail/providers/state_providers.g.dart index ee0d3d3f..47ae74c7 100644 --- a/lib/modules/manga/detail/providers/state_providers.g.dart +++ b/lib/modules/manga/detail/providers/state_providers.g.dart @@ -12,14 +12,14 @@ String _$chaptersListStateHash() => r'251609214d127964e84d4616d2c3a7afa4fd80b4'; @ProviderFor(ChaptersListState) final chaptersListStateProvider = AutoDisposeNotifierProvider>.internal( - ChaptersListState.new, - name: r'chaptersListStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$chaptersListStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + ChaptersListState.new, + name: r'chaptersListStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chaptersListStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$ChaptersListState = AutoDisposeNotifier>; String _$isLongPressedStateHash() => @@ -29,14 +29,14 @@ String _$isLongPressedStateHash() => @ProviderFor(IsLongPressedState) final isLongPressedStateProvider = AutoDisposeNotifierProvider.internal( - IsLongPressedState.new, - name: r'isLongPressedStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$isLongPressedStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + IsLongPressedState.new, + name: r'isLongPressedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$isLongPressedStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$IsLongPressedState = AutoDisposeNotifier; String _$isExtendedStateHash() => r'e386098118bdebf67d489a4a2f49b017e02b27bf'; @@ -45,14 +45,14 @@ String _$isExtendedStateHash() => r'e386098118bdebf67d489a4a2f49b017e02b27bf'; @ProviderFor(IsExtendedState) final isExtendedStateProvider = AutoDisposeNotifierProvider.internal( - IsExtendedState.new, - name: r'isExtendedStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$isExtendedStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + IsExtendedState.new, + name: r'isExtendedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$isExtendedStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$IsExtendedState = AutoDisposeNotifier; String _$sortChapterStateHash() => r'a6e547fd4badfa14ecb9270054c7e166dfc6e238'; @@ -82,9 +82,7 @@ abstract class _$SortChapterState extends BuildlessAutoDisposeNotifier { late final int mangaId; - SortChapter build({ - required int mangaId, - }); + SortChapter build({required int mangaId}); } /// See also [SortChapterState]. @@ -97,21 +95,15 @@ class SortChapterStateFamily extends Family { const SortChapterStateFamily(); /// See also [SortChapterState]. - SortChapterStateProvider call({ - required int mangaId, - }) { - return SortChapterStateProvider( - mangaId: mangaId, - ); + SortChapterStateProvider call({required int mangaId}) { + return SortChapterStateProvider(mangaId: mangaId); } @override SortChapterStateProvider getProviderOverride( covariant SortChapterStateProvider provider, ) { - return call( - mangaId: provider.mangaId, - ); + return call(mangaId: provider.mangaId); } static const Iterable? _dependencies = null; @@ -133,21 +125,19 @@ class SortChapterStateFamily extends Family { class SortChapterStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [SortChapterState]. - SortChapterStateProvider({ - required int mangaId, - }) : this._internal( - () => SortChapterState()..mangaId = mangaId, - from: sortChapterStateProvider, - name: r'sortChapterStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$sortChapterStateHash, - dependencies: SortChapterStateFamily._dependencies, - allTransitiveDependencies: - SortChapterStateFamily._allTransitiveDependencies, - mangaId: mangaId, - ); + SortChapterStateProvider({required int mangaId}) + : this._internal( + () => SortChapterState()..mangaId = mangaId, + from: sortChapterStateProvider, + name: r'sortChapterStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$sortChapterStateHash, + dependencies: SortChapterStateFamily._dependencies, + allTransitiveDependencies: + SortChapterStateFamily._allTransitiveDependencies, + mangaId: mangaId, + ); SortChapterStateProvider._internal( super._createNotifier, { @@ -162,12 +152,8 @@ class SortChapterStateProvider final int mangaId; @override - SortChapter runNotifierBuild( - covariant SortChapterState notifier, - ) { - return notifier.build( - mangaId: mangaId, - ); + SortChapter runNotifierBuild(covariant SortChapterState notifier) { + return notifier.build(mangaId: mangaId); } @override @@ -188,7 +174,7 @@ class SortChapterStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _SortChapterStateProviderElement(this); } @@ -229,9 +215,7 @@ abstract class _$ChapterFilterDownloadedState extends BuildlessAutoDisposeNotifier { late final int mangaId; - int build({ - required int mangaId, - }); + int build({required int mangaId}); } /// See also [ChapterFilterDownloadedState]. @@ -245,21 +229,15 @@ class ChapterFilterDownloadedStateFamily extends Family { const ChapterFilterDownloadedStateFamily(); /// See also [ChapterFilterDownloadedState]. - ChapterFilterDownloadedStateProvider call({ - required int mangaId, - }) { - return ChapterFilterDownloadedStateProvider( - mangaId: mangaId, - ); + ChapterFilterDownloadedStateProvider call({required int mangaId}) { + return ChapterFilterDownloadedStateProvider(mangaId: mangaId); } @override ChapterFilterDownloadedStateProvider getProviderOverride( covariant ChapterFilterDownloadedStateProvider provider, ) { - return call( - mangaId: provider.mangaId, - ); + return call(mangaId: provider.mangaId); } static const Iterable? _dependencies = null; @@ -281,21 +259,19 @@ class ChapterFilterDownloadedStateFamily extends Family { class ChapterFilterDownloadedStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [ChapterFilterDownloadedState]. - ChapterFilterDownloadedStateProvider({ - required int mangaId, - }) : this._internal( - () => ChapterFilterDownloadedState()..mangaId = mangaId, - from: chapterFilterDownloadedStateProvider, - name: r'chapterFilterDownloadedStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$chapterFilterDownloadedStateHash, - dependencies: ChapterFilterDownloadedStateFamily._dependencies, - allTransitiveDependencies: - ChapterFilterDownloadedStateFamily._allTransitiveDependencies, - mangaId: mangaId, - ); + ChapterFilterDownloadedStateProvider({required int mangaId}) + : this._internal( + () => ChapterFilterDownloadedState()..mangaId = mangaId, + from: chapterFilterDownloadedStateProvider, + name: r'chapterFilterDownloadedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chapterFilterDownloadedStateHash, + dependencies: ChapterFilterDownloadedStateFamily._dependencies, + allTransitiveDependencies: + ChapterFilterDownloadedStateFamily._allTransitiveDependencies, + mangaId: mangaId, + ); ChapterFilterDownloadedStateProvider._internal( super._createNotifier, { @@ -310,12 +286,8 @@ class ChapterFilterDownloadedStateProvider final int mangaId; @override - int runNotifierBuild( - covariant ChapterFilterDownloadedState notifier, - ) { - return notifier.build( - mangaId: mangaId, - ); + int runNotifierBuild(covariant ChapterFilterDownloadedState notifier) { + return notifier.build(mangaId: mangaId); } @override @@ -336,7 +308,7 @@ class ChapterFilterDownloadedStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _ChapterFilterDownloadedStateProviderElement(this); } @@ -363,8 +335,9 @@ mixin ChapterFilterDownloadedStateRef on AutoDisposeNotifierProviderRef { } class _ChapterFilterDownloadedStateProviderElement - extends AutoDisposeNotifierProviderElement with ChapterFilterDownloadedStateRef { + extends + AutoDisposeNotifierProviderElement + with ChapterFilterDownloadedStateRef { _ChapterFilterDownloadedStateProviderElement(super.provider); @override @@ -378,9 +351,7 @@ abstract class _$ChapterFilterUnreadState extends BuildlessAutoDisposeNotifier { late final int mangaId; - int build({ - required int mangaId, - }); + int build({required int mangaId}); } /// See also [ChapterFilterUnreadState]. @@ -393,21 +364,15 @@ class ChapterFilterUnreadStateFamily extends Family { const ChapterFilterUnreadStateFamily(); /// See also [ChapterFilterUnreadState]. - ChapterFilterUnreadStateProvider call({ - required int mangaId, - }) { - return ChapterFilterUnreadStateProvider( - mangaId: mangaId, - ); + ChapterFilterUnreadStateProvider call({required int mangaId}) { + return ChapterFilterUnreadStateProvider(mangaId: mangaId); } @override ChapterFilterUnreadStateProvider getProviderOverride( covariant ChapterFilterUnreadStateProvider provider, ) { - return call( - mangaId: provider.mangaId, - ); + return call(mangaId: provider.mangaId); } static const Iterable? _dependencies = null; @@ -429,21 +394,19 @@ class ChapterFilterUnreadStateFamily extends Family { class ChapterFilterUnreadStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [ChapterFilterUnreadState]. - ChapterFilterUnreadStateProvider({ - required int mangaId, - }) : this._internal( - () => ChapterFilterUnreadState()..mangaId = mangaId, - from: chapterFilterUnreadStateProvider, - name: r'chapterFilterUnreadStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$chapterFilterUnreadStateHash, - dependencies: ChapterFilterUnreadStateFamily._dependencies, - allTransitiveDependencies: - ChapterFilterUnreadStateFamily._allTransitiveDependencies, - mangaId: mangaId, - ); + ChapterFilterUnreadStateProvider({required int mangaId}) + : this._internal( + () => ChapterFilterUnreadState()..mangaId = mangaId, + from: chapterFilterUnreadStateProvider, + name: r'chapterFilterUnreadStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chapterFilterUnreadStateHash, + dependencies: ChapterFilterUnreadStateFamily._dependencies, + allTransitiveDependencies: + ChapterFilterUnreadStateFamily._allTransitiveDependencies, + mangaId: mangaId, + ); ChapterFilterUnreadStateProvider._internal( super._createNotifier, { @@ -458,12 +421,8 @@ class ChapterFilterUnreadStateProvider final int mangaId; @override - int runNotifierBuild( - covariant ChapterFilterUnreadState notifier, - ) { - return notifier.build( - mangaId: mangaId, - ); + int runNotifierBuild(covariant ChapterFilterUnreadState notifier) { + return notifier.build(mangaId: mangaId); } @override @@ -484,7 +443,7 @@ class ChapterFilterUnreadStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _ChapterFilterUnreadStateProviderElement(this); } @@ -526,9 +485,7 @@ abstract class _$ChapterFilterBookmarkedState extends BuildlessAutoDisposeNotifier { late final int mangaId; - int build({ - required int mangaId, - }); + int build({required int mangaId}); } /// See also [ChapterFilterBookmarkedState]. @@ -542,21 +499,15 @@ class ChapterFilterBookmarkedStateFamily extends Family { const ChapterFilterBookmarkedStateFamily(); /// See also [ChapterFilterBookmarkedState]. - ChapterFilterBookmarkedStateProvider call({ - required int mangaId, - }) { - return ChapterFilterBookmarkedStateProvider( - mangaId: mangaId, - ); + ChapterFilterBookmarkedStateProvider call({required int mangaId}) { + return ChapterFilterBookmarkedStateProvider(mangaId: mangaId); } @override ChapterFilterBookmarkedStateProvider getProviderOverride( covariant ChapterFilterBookmarkedStateProvider provider, ) { - return call( - mangaId: provider.mangaId, - ); + return call(mangaId: provider.mangaId); } static const Iterable? _dependencies = null; @@ -578,21 +529,19 @@ class ChapterFilterBookmarkedStateFamily extends Family { class ChapterFilterBookmarkedStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [ChapterFilterBookmarkedState]. - ChapterFilterBookmarkedStateProvider({ - required int mangaId, - }) : this._internal( - () => ChapterFilterBookmarkedState()..mangaId = mangaId, - from: chapterFilterBookmarkedStateProvider, - name: r'chapterFilterBookmarkedStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$chapterFilterBookmarkedStateHash, - dependencies: ChapterFilterBookmarkedStateFamily._dependencies, - allTransitiveDependencies: - ChapterFilterBookmarkedStateFamily._allTransitiveDependencies, - mangaId: mangaId, - ); + ChapterFilterBookmarkedStateProvider({required int mangaId}) + : this._internal( + () => ChapterFilterBookmarkedState()..mangaId = mangaId, + from: chapterFilterBookmarkedStateProvider, + name: r'chapterFilterBookmarkedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chapterFilterBookmarkedStateHash, + dependencies: ChapterFilterBookmarkedStateFamily._dependencies, + allTransitiveDependencies: + ChapterFilterBookmarkedStateFamily._allTransitiveDependencies, + mangaId: mangaId, + ); ChapterFilterBookmarkedStateProvider._internal( super._createNotifier, { @@ -607,12 +556,8 @@ class ChapterFilterBookmarkedStateProvider final int mangaId; @override - int runNotifierBuild( - covariant ChapterFilterBookmarkedState notifier, - ) { - return notifier.build( - mangaId: mangaId, - ); + int runNotifierBuild(covariant ChapterFilterBookmarkedState notifier) { + return notifier.build(mangaId: mangaId); } @override @@ -633,7 +578,7 @@ class ChapterFilterBookmarkedStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _ChapterFilterBookmarkedStateProviderElement(this); } @@ -660,8 +605,9 @@ mixin ChapterFilterBookmarkedStateRef on AutoDisposeNotifierProviderRef { } class _ChapterFilterBookmarkedStateProviderElement - extends AutoDisposeNotifierProviderElement with ChapterFilterBookmarkedStateRef { + extends + AutoDisposeNotifierProviderElement + with ChapterFilterBookmarkedStateRef { _ChapterFilterBookmarkedStateProviderElement(super.provider); @override @@ -675,9 +621,7 @@ abstract class _$ChapterFilterResultState extends BuildlessAutoDisposeNotifier { late final Manga manga; - bool build({ - required Manga manga, - }); + bool build({required Manga manga}); } /// See also [ChapterFilterResultState]. @@ -690,21 +634,15 @@ class ChapterFilterResultStateFamily extends Family { const ChapterFilterResultStateFamily(); /// See also [ChapterFilterResultState]. - ChapterFilterResultStateProvider call({ - required Manga manga, - }) { - return ChapterFilterResultStateProvider( - manga: manga, - ); + ChapterFilterResultStateProvider call({required Manga manga}) { + return ChapterFilterResultStateProvider(manga: manga); } @override ChapterFilterResultStateProvider getProviderOverride( covariant ChapterFilterResultStateProvider provider, ) { - return call( - manga: provider.manga, - ); + return call(manga: provider.manga); } static const Iterable? _dependencies = null; @@ -726,21 +664,19 @@ class ChapterFilterResultStateFamily extends Family { class ChapterFilterResultStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [ChapterFilterResultState]. - ChapterFilterResultStateProvider({ - required Manga manga, - }) : this._internal( - () => ChapterFilterResultState()..manga = manga, - from: chapterFilterResultStateProvider, - name: r'chapterFilterResultStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$chapterFilterResultStateHash, - dependencies: ChapterFilterResultStateFamily._dependencies, - allTransitiveDependencies: - ChapterFilterResultStateFamily._allTransitiveDependencies, - manga: manga, - ); + ChapterFilterResultStateProvider({required Manga manga}) + : this._internal( + () => ChapterFilterResultState()..manga = manga, + from: chapterFilterResultStateProvider, + name: r'chapterFilterResultStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chapterFilterResultStateHash, + dependencies: ChapterFilterResultStateFamily._dependencies, + allTransitiveDependencies: + ChapterFilterResultStateFamily._allTransitiveDependencies, + manga: manga, + ); ChapterFilterResultStateProvider._internal( super._createNotifier, { @@ -755,12 +691,8 @@ class ChapterFilterResultStateProvider final Manga manga; @override - bool runNotifierBuild( - covariant ChapterFilterResultState notifier, - ) { - return notifier.build( - manga: manga, - ); + bool runNotifierBuild(covariant ChapterFilterResultState notifier) { + return notifier.build(manga: manga); } @override @@ -781,7 +713,7 @@ class ChapterFilterResultStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _ChapterFilterResultStateProviderElement(this); } @@ -822,9 +754,7 @@ abstract class _$ChapterSetIsBookmarkState extends BuildlessAutoDisposeNotifier { late final Manga manga; - void build({ - required Manga manga, - }); + void build({required Manga manga}); } /// See also [ChapterSetIsBookmarkState]. @@ -837,21 +767,15 @@ class ChapterSetIsBookmarkStateFamily extends Family { const ChapterSetIsBookmarkStateFamily(); /// See also [ChapterSetIsBookmarkState]. - ChapterSetIsBookmarkStateProvider call({ - required Manga manga, - }) { - return ChapterSetIsBookmarkStateProvider( - manga: manga, - ); + ChapterSetIsBookmarkStateProvider call({required Manga manga}) { + return ChapterSetIsBookmarkStateProvider(manga: manga); } @override ChapterSetIsBookmarkStateProvider getProviderOverride( covariant ChapterSetIsBookmarkStateProvider provider, ) { - return call( - manga: provider.manga, - ); + return call(manga: provider.manga); } static const Iterable? _dependencies = null; @@ -873,21 +797,19 @@ class ChapterSetIsBookmarkStateFamily extends Family { class ChapterSetIsBookmarkStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [ChapterSetIsBookmarkState]. - ChapterSetIsBookmarkStateProvider({ - required Manga manga, - }) : this._internal( - () => ChapterSetIsBookmarkState()..manga = manga, - from: chapterSetIsBookmarkStateProvider, - name: r'chapterSetIsBookmarkStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$chapterSetIsBookmarkStateHash, - dependencies: ChapterSetIsBookmarkStateFamily._dependencies, - allTransitiveDependencies: - ChapterSetIsBookmarkStateFamily._allTransitiveDependencies, - manga: manga, - ); + ChapterSetIsBookmarkStateProvider({required Manga manga}) + : this._internal( + () => ChapterSetIsBookmarkState()..manga = manga, + from: chapterSetIsBookmarkStateProvider, + name: r'chapterSetIsBookmarkStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chapterSetIsBookmarkStateHash, + dependencies: ChapterSetIsBookmarkStateFamily._dependencies, + allTransitiveDependencies: + ChapterSetIsBookmarkStateFamily._allTransitiveDependencies, + manga: manga, + ); ChapterSetIsBookmarkStateProvider._internal( super._createNotifier, { @@ -902,12 +824,8 @@ class ChapterSetIsBookmarkStateProvider final Manga manga; @override - void runNotifierBuild( - covariant ChapterSetIsBookmarkState notifier, - ) { - return notifier.build( - manga: manga, - ); + void runNotifierBuild(covariant ChapterSetIsBookmarkState notifier) { + return notifier.build(manga: manga); } @override @@ -928,7 +846,7 @@ class ChapterSetIsBookmarkStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _ChapterSetIsBookmarkStateProviderElement(this); } @@ -969,9 +887,7 @@ abstract class _$ChapterSetIsReadState extends BuildlessAutoDisposeNotifier { late final Manga manga; - void build({ - required Manga manga, - }); + void build({required Manga manga}); } /// See also [ChapterSetIsReadState]. @@ -984,21 +900,15 @@ class ChapterSetIsReadStateFamily extends Family { const ChapterSetIsReadStateFamily(); /// See also [ChapterSetIsReadState]. - ChapterSetIsReadStateProvider call({ - required Manga manga, - }) { - return ChapterSetIsReadStateProvider( - manga: manga, - ); + ChapterSetIsReadStateProvider call({required Manga manga}) { + return ChapterSetIsReadStateProvider(manga: manga); } @override ChapterSetIsReadStateProvider getProviderOverride( covariant ChapterSetIsReadStateProvider provider, ) { - return call( - manga: provider.manga, - ); + return call(manga: provider.manga); } static const Iterable? _dependencies = null; @@ -1020,21 +930,19 @@ class ChapterSetIsReadStateFamily extends Family { class ChapterSetIsReadStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [ChapterSetIsReadState]. - ChapterSetIsReadStateProvider({ - required Manga manga, - }) : this._internal( - () => ChapterSetIsReadState()..manga = manga, - from: chapterSetIsReadStateProvider, - name: r'chapterSetIsReadStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$chapterSetIsReadStateHash, - dependencies: ChapterSetIsReadStateFamily._dependencies, - allTransitiveDependencies: - ChapterSetIsReadStateFamily._allTransitiveDependencies, - manga: manga, - ); + ChapterSetIsReadStateProvider({required Manga manga}) + : this._internal( + () => ChapterSetIsReadState()..manga = manga, + from: chapterSetIsReadStateProvider, + name: r'chapterSetIsReadStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chapterSetIsReadStateHash, + dependencies: ChapterSetIsReadStateFamily._dependencies, + allTransitiveDependencies: + ChapterSetIsReadStateFamily._allTransitiveDependencies, + manga: manga, + ); ChapterSetIsReadStateProvider._internal( super._createNotifier, { @@ -1049,12 +957,8 @@ class ChapterSetIsReadStateProvider final Manga manga; @override - void runNotifierBuild( - covariant ChapterSetIsReadState notifier, - ) { - return notifier.build( - manga: manga, - ); + void runNotifierBuild(covariant ChapterSetIsReadState notifier) { + return notifier.build(manga: manga); } @override @@ -1075,7 +979,7 @@ class ChapterSetIsReadStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _ChapterSetIsReadStateProviderElement(this); } @@ -1116,9 +1020,7 @@ abstract class _$ChapterSetDownloadState extends BuildlessAutoDisposeNotifier { late final Manga manga; - void build({ - required Manga manga, - }); + void build({required Manga manga}); } /// See also [ChapterSetDownloadState]. @@ -1131,21 +1033,15 @@ class ChapterSetDownloadStateFamily extends Family { const ChapterSetDownloadStateFamily(); /// See also [ChapterSetDownloadState]. - ChapterSetDownloadStateProvider call({ - required Manga manga, - }) { - return ChapterSetDownloadStateProvider( - manga: manga, - ); + ChapterSetDownloadStateProvider call({required Manga manga}) { + return ChapterSetDownloadStateProvider(manga: manga); } @override ChapterSetDownloadStateProvider getProviderOverride( covariant ChapterSetDownloadStateProvider provider, ) { - return call( - manga: provider.manga, - ); + return call(manga: provider.manga); } static const Iterable? _dependencies = null; @@ -1167,21 +1063,19 @@ class ChapterSetDownloadStateFamily extends Family { class ChapterSetDownloadStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [ChapterSetDownloadState]. - ChapterSetDownloadStateProvider({ - required Manga manga, - }) : this._internal( - () => ChapterSetDownloadState()..manga = manga, - from: chapterSetDownloadStateProvider, - name: r'chapterSetDownloadStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$chapterSetDownloadStateHash, - dependencies: ChapterSetDownloadStateFamily._dependencies, - allTransitiveDependencies: - ChapterSetDownloadStateFamily._allTransitiveDependencies, - manga: manga, - ); + ChapterSetDownloadStateProvider({required Manga manga}) + : this._internal( + () => ChapterSetDownloadState()..manga = manga, + from: chapterSetDownloadStateProvider, + name: r'chapterSetDownloadStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chapterSetDownloadStateHash, + dependencies: ChapterSetDownloadStateFamily._dependencies, + allTransitiveDependencies: + ChapterSetDownloadStateFamily._allTransitiveDependencies, + manga: manga, + ); ChapterSetDownloadStateProvider._internal( super._createNotifier, { @@ -1196,12 +1090,8 @@ class ChapterSetDownloadStateProvider final Manga manga; @override - void runNotifierBuild( - covariant ChapterSetDownloadState notifier, - ) { - return notifier.build( - manga: manga, - ); + void runNotifierBuild(covariant ChapterSetDownloadState notifier) { + return notifier.build(manga: manga); } @override @@ -1222,7 +1112,7 @@ class ChapterSetDownloadStateProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _ChapterSetDownloadStateProviderElement(this); } @@ -1263,26 +1153,27 @@ String _$chaptersListttStateHash() => @ProviderFor(ChaptersListttState) final chaptersListttStateProvider = AutoDisposeNotifierProvider>.internal( - ChaptersListttState.new, - name: r'chaptersListttStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$chaptersListttStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + ChaptersListttState.new, + name: r'chaptersListttStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$chaptersListttStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$ChaptersListttState = AutoDisposeNotifier>; String _$scanlatorsFilterStateHash() => r'8da89864801cd7620029d28cfb3f9bee3c67cba8'; -abstract class _$ScanlatorsFilterState extends BuildlessAutoDisposeNotifier< - (List, List, List)> { +abstract class _$ScanlatorsFilterState + extends + BuildlessAutoDisposeNotifier< + (List, List, List) + > { late final Manga manga; - (List, List, List) build( - Manga manga, - ); + (List, List, List) build(Manga manga); } /// See also [ScanlatorsFilterState]. @@ -1296,21 +1187,15 @@ class ScanlatorsFilterStateFamily const ScanlatorsFilterStateFamily(); /// See also [ScanlatorsFilterState]. - ScanlatorsFilterStateProvider call( - Manga manga, - ) { - return ScanlatorsFilterStateProvider( - manga, - ); + ScanlatorsFilterStateProvider call(Manga manga) { + return ScanlatorsFilterStateProvider(manga); } @override ScanlatorsFilterStateProvider getProviderOverride( covariant ScanlatorsFilterStateProvider provider, ) { - return call( - provider.manga, - ); + return call(provider.manga); } static const Iterable? _dependencies = null; @@ -1329,24 +1214,26 @@ class ScanlatorsFilterStateFamily } /// See also [ScanlatorsFilterState]. -class ScanlatorsFilterStateProvider extends AutoDisposeNotifierProviderImpl< - ScanlatorsFilterState, (List, List, List)> { +class ScanlatorsFilterStateProvider + extends + AutoDisposeNotifierProviderImpl< + ScanlatorsFilterState, + (List, List, List) + > { /// See also [ScanlatorsFilterState]. - ScanlatorsFilterStateProvider( - Manga manga, - ) : this._internal( - () => ScanlatorsFilterState()..manga = manga, - from: scanlatorsFilterStateProvider, - name: r'scanlatorsFilterStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$scanlatorsFilterStateHash, - dependencies: ScanlatorsFilterStateFamily._dependencies, - allTransitiveDependencies: - ScanlatorsFilterStateFamily._allTransitiveDependencies, - manga: manga, - ); + ScanlatorsFilterStateProvider(Manga manga) + : this._internal( + () => ScanlatorsFilterState()..manga = manga, + from: scanlatorsFilterStateProvider, + name: r'scanlatorsFilterStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$scanlatorsFilterStateHash, + dependencies: ScanlatorsFilterStateFamily._dependencies, + allTransitiveDependencies: + ScanlatorsFilterStateFamily._allTransitiveDependencies, + manga: manga, + ); ScanlatorsFilterStateProvider._internal( super._createNotifier, { @@ -1364,9 +1251,7 @@ class ScanlatorsFilterStateProvider extends AutoDisposeNotifierProviderImpl< (List, List, List) runNotifierBuild( covariant ScanlatorsFilterState notifier, ) { - return notifier.build( - manga, - ); + return notifier.build(manga); } @override @@ -1386,8 +1271,11 @@ class ScanlatorsFilterStateProvider extends AutoDisposeNotifierProviderImpl< } @override - AutoDisposeNotifierProviderElement, List, List)> createElement() { + AutoDisposeNotifierProviderElement< + ScanlatorsFilterState, + (List, List, List) + > + createElement() { return _ScanlatorsFilterStateProviderElement(this); } @@ -1407,20 +1295,27 @@ class ScanlatorsFilterStateProvider extends AutoDisposeNotifierProviderImpl< @Deprecated('Will be removed in 3.0. Use Ref instead') // ignore: unused_element -mixin ScanlatorsFilterStateRef on AutoDisposeNotifierProviderRef< - (List, List, List)> { +mixin ScanlatorsFilterStateRef + on + AutoDisposeNotifierProviderRef< + (List, List, List) + > { /// The parameter `manga` of this provider. Manga get manga; } class _ScanlatorsFilterStateProviderElement - extends AutoDisposeNotifierProviderElement, List, List)> + extends + AutoDisposeNotifierProviderElement< + ScanlatorsFilterState, + (List, List, List) + > with ScanlatorsFilterStateRef { _ScanlatorsFilterStateProviderElement(super.provider); @override Manga get manga => (origin as ScanlatorsFilterStateProvider).manga; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/manga/detail/providers/track_state_providers.dart b/lib/modules/manga/detail/providers/track_state_providers.dart index 8dce1d4a..62a5023b 100644 --- a/lib/modules/manga/detail/providers/track_state_providers.dart +++ b/lib/modules/manga/detail/providers/track_state_providers.dart @@ -6,8 +6,11 @@ import 'package:mangayomi/models/track_search.dart'; import 'package:mangayomi/modules/more/settings/track/providers/track_providers.dart'; import 'package:mangayomi/modules/tracker_library/tracker_library_screen.dart'; import 'package:mangayomi/services/trackers/anilist.dart'; +import 'package:mangayomi/services/trackers/base_tracker.dart'; import 'package:mangayomi/services/trackers/kitsu.dart'; import 'package:mangayomi/services/trackers/myanimelist.dart'; +import 'package:mangayomi/services/trackers/simkl.dart'; +import 'package:mangayomi/services/trackers/trakt_tv.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'track_state_providers.g.dart'; @@ -18,7 +21,7 @@ class TrackState extends _$TrackState { return track!; } - dynamic getNotifier(int syncId) { + BaseTracker getNotifier(int syncId) { return switch (syncId) { 1 => ref.read( myAnimeListProvider(syncId: syncId, itemType: itemType).notifier, @@ -27,6 +30,10 @@ class TrackState extends _$TrackState { anilistProvider(syncId: syncId, itemType: itemType).notifier, ), 3 => ref.read(kitsuProvider(syncId: syncId, itemType: itemType).notifier), + 4 => ref.read(simklProvider(syncId: syncId, itemType: itemType).notifier), + 5 => ref.read( + traktTvProvider(syncId: syncId, itemType: itemType).notifier, + ), _ => throw Exception('Unsupported syncId: $syncId'), }; } @@ -106,13 +113,17 @@ class TrackState extends _$TrackState { ); final tracker = getNotifier(syncId); - if (syncId == 1) { + if (syncId == TrackerProviders.myAnimeList.syncId) { findManga = await tracker.findLibItem(newTrack, _isManga); - } else if (syncId == 2) { + } else if (syncId == TrackerProviders.anilist.syncId) { findManga = await tracker.findLibItem(newTrack, _isManga); findManga ??= await tracker.update(newTrack, _isManga); - } else if (syncId == 3) { + } else if (syncId == TrackerProviders.kitsu.syncId) { findManga = await tracker.update(newTrack, _isManga); + } else if (syncId == TrackerProviders.simkl.syncId) { + findManga = await tracker.findLibItem(newTrack, _isManga); + } else if (syncId == TrackerProviders.trakt.syncId) { + findManga = await tracker.findLibItem(newTrack, _isManga); } writeBack(findManga!); } @@ -158,6 +169,12 @@ class TrackState extends _$TrackState { final tracker = getNotifier(syncId); return await tracker.fetchUserData(isManga: _isManga); } + + Future checkRefresh() async { + final syncId = track!.syncId!; + final tracker = getNotifier(syncId); + return await tracker.checkRefresh(); + } } @riverpod diff --git a/lib/modules/manga/detail/providers/track_state_providers.g.dart b/lib/modules/manga/detail/providers/track_state_providers.g.dart index 480b14d7..fdc05271 100644 --- a/lib/modules/manga/detail/providers/track_state_providers.g.dart +++ b/lib/modules/manga/detail/providers/track_state_providers.g.dart @@ -6,7 +6,7 @@ part of 'track_state_providers.dart'; // RiverpodGenerator // ************************************************************************** -String _$trackStateHash() => r'b70770f8524a0d9059ffd3f52b42634c16672a0f'; +String _$trackStateHash() => r'19fcc38b559996509aa71645de9531bc4b2d4205'; /// Copied from Dart SDK class _SystemHash { @@ -33,10 +33,7 @@ abstract class _$TrackState extends BuildlessAutoDisposeNotifier { late final Track? track; late final ItemType? itemType; - Track build({ - Track? track, - required ItemType? itemType, - }); + Track build({Track? track, required ItemType? itemType}); } /// See also [TrackState]. @@ -49,24 +46,15 @@ class TrackStateFamily extends Family { const TrackStateFamily(); /// See also [TrackState]. - TrackStateProvider call({ - Track? track, - required ItemType? itemType, - }) { - return TrackStateProvider( - track: track, - itemType: itemType, - ); + TrackStateProvider call({Track? track, required ItemType? itemType}) { + return TrackStateProvider(track: track, itemType: itemType); } @override TrackStateProvider getProviderOverride( covariant TrackStateProvider provider, ) { - return call( - track: provider.track, - itemType: provider.itemType, - ); + return call(track: provider.track, itemType: provider.itemType); } static const Iterable? _dependencies = null; @@ -88,25 +76,21 @@ class TrackStateFamily extends Family { class TrackStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [TrackState]. - TrackStateProvider({ - Track? track, - required ItemType? itemType, - }) : this._internal( - () => TrackState() - ..track = track - ..itemType = itemType, - from: trackStateProvider, - name: r'trackStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$trackStateHash, - dependencies: TrackStateFamily._dependencies, - allTransitiveDependencies: - TrackStateFamily._allTransitiveDependencies, - track: track, - itemType: itemType, - ); + TrackStateProvider({Track? track, required ItemType? itemType}) + : this._internal( + () => TrackState() + ..track = track + ..itemType = itemType, + from: trackStateProvider, + name: r'trackStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$trackStateHash, + dependencies: TrackStateFamily._dependencies, + allTransitiveDependencies: TrackStateFamily._allTransitiveDependencies, + track: track, + itemType: itemType, + ); TrackStateProvider._internal( super._createNotifier, { @@ -123,13 +107,8 @@ class TrackStateProvider final ItemType? itemType; @override - Track runNotifierBuild( - covariant TrackState notifier, - ) { - return notifier.build( - track: track, - itemType: itemType, - ); + Track runNotifierBuild(covariant TrackState notifier) { + return notifier.build(track: track, itemType: itemType); } @override @@ -199,16 +178,19 @@ String _$lastTrackerLibraryLocationStateHash() => /// See also [LastTrackerLibraryLocationState]. @ProviderFor(LastTrackerLibraryLocationState) -final lastTrackerLibraryLocationStateProvider = AutoDisposeNotifierProvider< - LastTrackerLibraryLocationState, (int, bool)>.internal( - LastTrackerLibraryLocationState.new, - name: r'lastTrackerLibraryLocationStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$lastTrackerLibraryLocationStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final lastTrackerLibraryLocationStateProvider = + AutoDisposeNotifierProvider< + LastTrackerLibraryLocationState, + (int, bool) + >.internal( + LastTrackerLibraryLocationState.new, + name: r'lastTrackerLibraryLocationStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$lastTrackerLibraryLocationStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$LastTrackerLibraryLocationState = AutoDisposeNotifier<(int, bool)>; // ignore_for_file: type=lint diff --git a/lib/modules/manga/detail/providers/update_manga_detail_providers.dart b/lib/modules/manga/detail/providers/update_manga_detail_providers.dart index c5a16393..488a39b9 100644 --- a/lib/modules/manga/detail/providers/update_manga_detail_providers.dart +++ b/lib/modules/manga/detail/providers/update_manga_detail_providers.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:mangayomi/eval/model/m_bridge.dart'; import 'package:mangayomi/eval/model/m_manga.dart'; import 'package:mangayomi/main.dart'; @@ -5,6 +7,7 @@ import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/update.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/services/get_detail.dart'; +import 'package:mangayomi/utils/extensions/others.dart'; import 'package:mangayomi/utils/utils.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -22,10 +25,10 @@ Future updateMangaDetail( if (manga!.chapters.isNotEmpty && isInit) { return; } - final source = getSource(manga.lang!, manga.source!); + final source = getSource(manga.lang!, manga.source!, manga.sourceId); MManga getManga; - getManga = await ref.watch( + getManga = await ref.read( getDetailProvider(url: manga.link!, source: source!).future, ); @@ -36,9 +39,11 @@ Future updateMangaDetail( .toSet() .toList() ?? []; + final tempName = getManga.name?.trim().trimLeft().trimRight(); + final tempLink = getManga.link?.trim().trimLeft().trimRight(); manga ..imageUrl = getManga.imageUrl ?? manga.imageUrl - ..name = getManga.name?.trim().trimLeft().trimRight() ?? manga.name + ..name = tempName != null && tempName.isNotEmpty ? tempName : manga.name ..genre = (genre.isEmpty ? null : genre) ?? manga.genre ?? [] ..author = getManga.author?.trim().trimLeft().trimRight() ?? manga.author ?? "" @@ -51,7 +56,7 @@ Future updateMangaDetail( getManga.description?.trim().trimLeft().trimRight() ?? manga.description ?? "" - ..link = getManga.link?.trim().trimLeft().trimRight() ?? manga.link + ..link = tempLink != null && tempLink.isNotEmpty ? tempLink : manga.link ..source = manga.source ..lang = manga.lang ..itemType = source.itemType @@ -62,7 +67,7 @@ Future updateMangaDetail( return; } isar.writeTxnSync(() { - isar.mangas.putSync(manga); + final mangaId = isar.mangas.putSync(manga); manga.lastUpdate = DateTime.now().millisecondsSinceEpoch; List chapters = []; @@ -81,6 +86,11 @@ Future updateMangaDetail( scanlator: chaps[i].scanlator ?? '', mangaId: mangaId, updatedAt: DateTime.now().millisecondsSinceEpoch, + isFiller: chaps[i].isFiller, + thumbnailUrl: chaps[i].thumbnailUrl, + description: chaps[i].description, + downloadSize: chaps[i].downloadSize, + duration: chaps[i].duration, )..manga.value = manga; chapters.add(chapter); } @@ -115,10 +125,38 @@ Future updateMangaDetail( oldChap.url = newChap.url; oldChap.scanlator = newChap.scanlator; oldChap.updatedAt = DateTime.now().millisecondsSinceEpoch; + oldChap.isFiller = newChap.isFiller; + oldChap.thumbnailUrl = newChap.thumbnailUrl; + oldChap.description = newChap.description; + oldChap.downloadSize = newChap.downloadSize; + oldChap.duration = newChap.duration; isar.chapters.putSync(oldChap); oldChap.manga.saveSync(); } } + final List daysBetweenUploads = []; + for (var i = 0; i + 1 < chaps.length; i++) { + if (chaps[i].dateUpload != null && chaps[i + 1].dateUpload != null) { + final date1 = DateTime.fromMillisecondsSinceEpoch( + int.parse(chaps[i].dateUpload!), + ); + final date2 = DateTime.fromMillisecondsSinceEpoch( + int.parse(chaps[i + 1].dateUpload!), + ); + daysBetweenUploads.add(date1.difference(date2).abs().inDays); + } + } + if (daysBetweenUploads.isNotEmpty) { + final median = daysBetweenUploads.median(); + isar.mangas.putSync( + manga + ..id = mangaId + ..smartUpdateDays = max( + median, + daysBetweenUploads.arithmeticMean(), + ), + ); + } }); } catch (e, s) { if (showToast) botToast('$e\n$s'); diff --git a/lib/modules/manga/detail/providers/update_manga_detail_providers.g.dart b/lib/modules/manga/detail/providers/update_manga_detail_providers.g.dart index 637e1db6..e23eca1d 100644 --- a/lib/modules/manga/detail/providers/update_manga_detail_providers.g.dart +++ b/lib/modules/manga/detail/providers/update_manga_detail_providers.g.dart @@ -6,7 +6,7 @@ part of 'update_manga_detail_providers.dart'; // RiverpodGenerator // ************************************************************************** -String _$updateMangaDetailHash() => r'ce51918a48b315c3555b3de4e602bd998e00a992'; +String _$updateMangaDetailHash() => r'6e4faa1fe453df67182ff6698f1ca54a7fff2bea'; /// Copied from Dart SDK class _SystemHash { @@ -85,25 +85,24 @@ class UpdateMangaDetailProvider extends AutoDisposeFutureProvider { required bool isInit, bool showToast = true, }) : this._internal( - (ref) => updateMangaDetail( - ref as UpdateMangaDetailRef, - mangaId: mangaId, - isInit: isInit, - showToast: showToast, - ), - from: updateMangaDetailProvider, - name: r'updateMangaDetailProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$updateMangaDetailHash, - dependencies: UpdateMangaDetailFamily._dependencies, - allTransitiveDependencies: - UpdateMangaDetailFamily._allTransitiveDependencies, - mangaId: mangaId, - isInit: isInit, - showToast: showToast, - ); + (ref) => updateMangaDetail( + ref as UpdateMangaDetailRef, + mangaId: mangaId, + isInit: isInit, + showToast: showToast, + ), + from: updateMangaDetailProvider, + name: r'updateMangaDetailProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$updateMangaDetailHash, + dependencies: UpdateMangaDetailFamily._dependencies, + allTransitiveDependencies: + UpdateMangaDetailFamily._allTransitiveDependencies, + mangaId: mangaId, + isInit: isInit, + showToast: showToast, + ); UpdateMangaDetailProvider._internal( super._createNotifier, { @@ -190,5 +189,6 @@ class _UpdateMangaDetailProviderElement @override bool get showToast => (origin as UpdateMangaDetailProvider).showToast; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/manga/detail/widgets/chapter_list_tile_widget.dart b/lib/modules/manga/detail/widgets/chapter_list_tile_widget.dart index 8c7f9627..b189f3c1 100644 --- a/lib/modules/manga/detail/widgets/chapter_list_tile_widget.dart +++ b/lib/modules/manga/detail/widgets/chapter_list_tile_widget.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; +import 'package:mangayomi/modules/widgets/progress_center.dart'; +import 'package:mangayomi/utils/constant.dart'; import 'package:marquee/marquee.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/manga.dart'; @@ -10,6 +13,8 @@ import 'package:mangayomi/utils/extensions/chapter.dart'; import 'package:mangayomi/utils/extensions/string_extensions.dart'; import 'package:mangayomi/modules/manga/detail/providers/state_providers.dart'; import 'package:mangayomi/modules/manga/download/download_page_widget.dart'; +import 'package:photo_view/photo_view.dart'; +import 'package:photo_view/photo_view_gallery.dart'; class ChapterListTileWidget extends ConsumerWidget { final Chapter chapter; @@ -33,6 +38,9 @@ class ChapterListTileWidget extends ConsumerWidget { onLongPress: () => _handleInteraction(ref), onSecondaryTap: () => _handleInteraction(ref), child: ListTile( + tileColor: (chapter.isFiller ?? false) + ? context.primaryColor.withValues(alpha: 0.15) + : null, textColor: chapter.isRead! ? context.isLight ? Colors.black.withValues(alpha: 0.4) @@ -44,14 +52,43 @@ class ChapterListTileWidget extends ConsumerWidget { onTap: () async => _handleInteraction(ref, context), title: Row( children: [ + if (chapter.thumbnailUrl != null) + _thumbnailPreview(context, chapter.thumbnailUrl), chapter.isBookmarked! ? Icon(Icons.bookmark, size: 16, color: context.primaryColor) : Container(), - Flexible(child: _buildTitle(chapter.name!, context)), + chapter.description != null + ? Flexible( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTitle(chapter.name!, context), + Text( + chapter.description!, + style: const TextStyle(fontSize: 11), + overflow: TextOverflow.ellipsis, + ), + ], + ), + ) + : Flexible(child: _buildTitle(chapter.name!, context)), ], ), subtitle: Row( children: [ + if (chapter.isFiller ?? false) + Row( + children: [ + Icon(Icons.label, size: 16, color: context.primaryColor), + Text( + " Filler ", + style: TextStyle( + fontSize: 11, + color: context.primaryColor, + ), + ), + ], + ), if ((chapter.manga.value!.isLocalArchive ?? false) == false) Text( chapter.dateUpload == null || chapter.dateUpload!.isEmpty @@ -172,4 +209,62 @@ class ChapterListTileWidget extends ConsumerWidget { }, ); } + + Widget _thumbnailPreview(BuildContext context, String? imageUrl) { + final imageProvider = CustomExtendedNetworkImageProvider( + toImgUrl(imageUrl ?? ""), + ); + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 8), + child: GestureDetector( + onTap: () { + _openImage(context, imageProvider); + }, + child: SizedBox( + width: 50, + height: 65, + child: Container( + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(5)), + image: DecorationImage(image: imageProvider, fit: BoxFit.cover), + ), + ), + ), + ), + ); + } + + void _openImage(BuildContext context, ImageProvider imageProvider) { + showDialog( + context: context, + builder: (context) { + return Scaffold( + backgroundColor: Colors.transparent, + body: Stack( + children: [ + GestureDetector( + onTap: () => Navigator.pop(context), + child: PhotoViewGallery.builder( + backgroundDecoration: const BoxDecoration( + color: Colors.transparent, + ), + itemCount: 1, + builder: (context, index) { + return PhotoViewGalleryPageOptions( + imageProvider: imageProvider, + minScale: PhotoViewComputedScale.contained, + maxScale: 2.0, + ); + }, + loadingBuilder: (context, event) { + return const ProgressCenter(); + }, + ), + ), + ], + ), + ); + }, + ); + } } diff --git a/lib/modules/manga/detail/widgets/migrate_screen.dart b/lib/modules/manga/detail/widgets/migrate_screen.dart index 850a0c68..336049fd 100644 --- a/lib/modules/manga/detail/widgets/migrate_screen.dart +++ b/lib/modules/manga/detail/widgets/migrate_screen.dart @@ -140,7 +140,7 @@ class _MigrationScreenScreenState extends ConsumerState { } } -class MigrationSourceSearchScreen extends StatefulWidget { +class MigrationSourceSearchScreen extends ConsumerStatefulWidget { final String query; final Manga manga; final TrackSearch? trackSearch; @@ -155,12 +155,12 @@ class MigrationSourceSearchScreen extends StatefulWidget { }); @override - State createState() => + ConsumerState createState() => _MigrationSourceSearchScreenState(); } class _MigrationSourceSearchScreenState - extends State { + extends ConsumerState { @override void initState() { super.initState(); @@ -173,11 +173,13 @@ class _MigrationSourceSearchScreenState _init() async { try { _errorMessage = ""; - pages = await search( - source: widget.source, - page: 1, - query: widget.query, - filterList: [], + pages = await ref.read( + searchProvider( + source: widget.source, + page: 1, + query: widget.query, + filterList: [], + ).future, ); if (mounted) { setState(() { @@ -308,6 +310,7 @@ class _MigrationMangaGlobalImageCardState headersProvider( source: widget.source.name!, lang: widget.source.lang!, + sourceId: widget.source.id, ), ), imageUrl: toImgUrl( @@ -584,6 +587,7 @@ class _MigrationMangaGlobalImageCardState categories: categoryIds, dateAdded: DateTime.now().millisecondsSinceEpoch, updatedAt: DateTime.now().millisecondsSinceEpoch, + sourceId: widget.source.id, ); int mangaId = -1; isar.writeTxnSync(() { diff --git a/lib/modules/manga/detail/widgets/recommendation_screen.dart b/lib/modules/manga/detail/widgets/recommendation_screen.dart new file mode 100644 index 00000000..bca8b9d8 --- /dev/null +++ b/lib/modules/manga/detail/widgets/recommendation_screen.dart @@ -0,0 +1,383 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:mangayomi/models/manga.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; +import 'package:mangayomi/modules/widgets/progress_center.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/services/recommendation.dart'; +import 'package:mangayomi/utils/constant.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; +import 'package:marquee/marquee.dart'; +import 'package:photo_view/photo_view.dart'; +import 'package:photo_view/photo_view_gallery.dart'; +import 'package:super_sliver_list/super_sliver_list.dart'; + +class RecommendationScreen extends StatefulWidget { + final String name; + final ItemType itemType; + final AlgorithmWeights algorithmWeights; + + const RecommendationScreen({ + super.key, + required this.name, + required this.itemType, + required this.algorithmWeights, + }); + + @override + State createState() => _RecommendationScreenState(); +} + +class _RecommendationScreenState extends State { + String _errorMessage = ""; + bool _isLoading = true; + List? data; + + @override + void initState() { + super.initState(); + _init(); + } + + Future _init() async { + try { + _errorMessage = ""; + data = await getRecommendations( + widget.name, + widget.itemType, + widget.algorithmWeights, + ); + if (mounted) { + setState(() { + _isLoading = false; + }); + } + } catch (e) { + if (mounted) { + setState(() { + _errorMessage = e.toString(); + _isLoading = false; + }); + } + } + } + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + + return Scaffold( + appBar: AppBar(title: Text(l10n.recommendations)), + body: Padding( + padding: EdgeInsetsGeometry.all(5), + child: _isLoading + ? const Center(child: CircularProgressIndicator()) + : Builder( + builder: (context) { + if (_errorMessage.isNotEmpty) { + return Center(child: Text(_errorMessage)); + } + if (data != null && data!.isNotEmpty) { + return SuperListView.builder( + extentPrecalculationPolicy: SuperPrecalculationPolicy(), + itemCount: data!.length, + itemBuilder: (context, index) { + final recommendation = data![index]; + return ListTile( + onTap: () => context.push( + '/globalSearch', + extra: ( + recommendation.titleEnglish ?? + recommendation.titleRomaji ?? + recommendation.titleNative, + widget.itemType, + ), + ), + title: Row( + children: [ + if (recommendation.imgURLs.isNotEmpty) + _thumbnailPreview( + context, + recommendation.imgURLs.first, + ), + const SizedBox(width: 15), + recommendation.description != null + ? Flexible( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + _buildTitle( + recommendation.titleEnglish ?? + recommendation.titleRomaji ?? + recommendation.titleNative ?? + "", + context, + ), + Text( + recommendation.description!, + style: const TextStyle( + fontSize: 11, + ), + overflow: TextOverflow.clip, + ), + ], + ), + ) + : Flexible( + child: _buildTitle( + recommendation.titleEnglish ?? + recommendation.titleRomaji ?? + recommendation.titleNative ?? + "", + context, + ), + ), + ], + ), + subtitle: Padding( + padding: const EdgeInsets.symmetric(vertical: 15), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 12, + ), + child: recommendation.genres.isEmpty + ? const SizedBox(height: 15) + : context.isTablet + ? Wrap( + children: [ + for ( + var i = 0; + i < recommendation.genres.length; + i++ + ) + Padding( + padding: const EdgeInsets.only( + left: 2, + right: 2, + bottom: 5, + ), + child: SizedBox( + height: 30, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + elevation: 0, + backgroundColor: Colors + .grey + .withValues( + alpha: 0.2, + ), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular( + 5, + ), + ), + ), + onPressed: null, + child: Text( + recommendation.genres[i], + style: TextStyle( + fontSize: 11.5, + color: context.isLight + ? Colors.black + : Colors.white, + ), + ), + ), + ), + ), + ], + ) + : SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + for ( + var i = 0; + i < + recommendation + .genres + .length; + i++ + ) + Padding( + padding: + const EdgeInsets.only( + left: 2, + right: 2, + bottom: 5, + ), + child: SizedBox( + height: 30, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + elevation: 0, + backgroundColor: Colors + .grey + .withValues( + alpha: 0.2, + ), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular( + 5, + ), + ), + ), + onPressed: () {}, + child: Text( + recommendation + .genres[i], + style: TextStyle( + fontSize: 11.5, + color: context.isLight + ? Colors.black + : Colors.white, + ), + ), + ), + ), + ), + ], + ), + ), + ), + const SizedBox(width: 15), + Text( + "${recommendation.score}% ${l10n.recommendations_similar}", + style: TextStyle( + background: Paint() + ..color = Theme.of(context) + .scaffoldBackgroundColor + .withValues(alpha: 0.75) + ..strokeWidth = 30.0 + ..strokeJoin = StrokeJoin.round + ..style = PaintingStyle.stroke, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ); + }, + ); + } + return Center(child: Text(l10n.no_result)); + }, + ), + ), + ); + } + + Widget _buildTitle(String text, BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) { + // Make sure that (constraints.maxWidth - (35 + 5)) is strictly positive. + final double availableWidth = constraints.maxWidth - (35 + 5); + final textPainter = + TextPainter( + text: TextSpan(text: text, style: const TextStyle(fontSize: 13)), + maxLines: 1, + textDirection: TextDirection.ltr, + )..layout( + maxWidth: availableWidth > 0 ? availableWidth : 1.0, + ); // - Download icon size (download_page_widget.dart, Widget Build SizedBox width: 35) + + final isOverflowing = textPainter.didExceedMaxLines; + + if (isOverflowing) { + return SizedBox( + height: 20, + child: Marquee( + text: text, + style: const TextStyle(fontSize: 13, fontWeight: FontWeight.bold), + blankSpace: 40.0, + velocity: 30.0, + pauseAfterRound: const Duration(seconds: 1), + startPadding: 10.0, + ), + ); + } else { + return Text( + text, + style: const TextStyle(fontSize: 13, fontWeight: FontWeight.bold), + overflow: TextOverflow.ellipsis, + ); + } + }, + ); + } + + Widget _thumbnailPreview(BuildContext context, String? imageUrl) { + final imageProvider = CustomExtendedNetworkImageProvider( + toImgUrl(imageUrl ?? ""), + ); + return Padding( + padding: const EdgeInsets.all(3), + child: GestureDetector( + onTap: () { + _openImage(context, imageProvider); + }, + child: SizedBox( + width: 100, + height: 150, + child: Container( + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(5)), + image: DecorationImage(image: imageProvider, fit: BoxFit.cover), + ), + ), + ), + ), + ); + } + + void _openImage(BuildContext context, ImageProvider imageProvider) { + showDialog( + context: context, + builder: (context) { + return Scaffold( + backgroundColor: Colors.transparent, + body: Stack( + children: [ + GestureDetector( + onTap: () => Navigator.pop(context), + child: PhotoViewGallery.builder( + backgroundDecoration: const BoxDecoration( + color: Colors.transparent, + ), + itemCount: 1, + builder: (context, index) { + return PhotoViewGalleryPageOptions( + imageProvider: imageProvider, + minScale: PhotoViewComputedScale.contained, + maxScale: 2.0, + ); + }, + loadingBuilder: (context, event) { + return const ProgressCenter(); + }, + ), + ), + ], + ), + ); + }, + ); + } +} + +class SuperPrecalculationPolicy extends ExtentPrecalculationPolicy { + @override + bool shouldPrecalculateExtents(ExtentPrecalculationContext context) { + return context.numberOfItems < 100; + } +} diff --git a/lib/modules/manga/detail/widgets/tracker_widget.dart b/lib/modules/manga/detail/widgets/tracker_widget.dart index b91fe0e4..dab8bc26 100644 --- a/lib/modules/manga/detail/widgets/tracker_widget.dart +++ b/lib/modules/manga/detail/widgets/tracker_widget.dart @@ -170,50 +170,58 @@ class _TrackerWidgetState extends ConsumerState { title: Text(l10n!.status), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: ref - .read( - trackStateProvider( - track: widget.trackRes, - itemType: widget.itemType, - ).notifier, - ) - .getStatusList() - .length, - itemBuilder: (context, index) { - final status = ref + child: RadioGroup( + groupValue: toTrackStatus( + widget.trackRes.status, + widget.itemType, + widget.trackRes.syncId!, + ), + onChanged: (value) { + // Individual RadioListTile will handle the change + }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: ref .read( trackStateProvider( track: widget.trackRes, itemType: widget.itemType, ).notifier, ) - .getStatusList()[index]; - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: status, - groupValue: toTrackStatus( - widget.trackRes.status, - widget.itemType, - widget.trackRes.syncId!, - ), - onChanged: (value) { - ref - .read( - trackStateProvider( - track: widget.trackRes - ..status = status, - itemType: widget.itemType, - ).notifier, - ) - .updateManga(); - Navigator.pop(context); - }, - title: Text(getTrackStatus(status, context)), - ); - }, + .getStatusList() + .length, + itemBuilder: (context, index) { + final status = ref + .read( + trackStateProvider( + track: widget.trackRes, + itemType: widget.itemType, + ).notifier, + ) + .getStatusList()[index]; + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: status, + // ignore: deprecated_member_use + onChanged: (value) { + ref + .read( + trackStateProvider( + track: widget.trackRes + ..status = status, + itemType: widget.itemType, + ).notifier, + ) + .updateManga(); + Navigator.pop(context); + }, + title: Text( + getTrackStatus(status, context), + ), + ); + }, + ), ), ), actions: [ diff --git a/lib/modules/manga/detail/widgets/watch_order_screen.dart b/lib/modules/manga/detail/widgets/watch_order_screen.dart new file mode 100644 index 00000000..b59588dc --- /dev/null +++ b/lib/modules/manga/detail/widgets/watch_order_screen.dart @@ -0,0 +1,350 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:isar/isar.dart'; +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/manga.dart'; +import 'package:mangayomi/models/track.dart'; +import 'package:mangayomi/models/track_preference.dart'; +import 'package:mangayomi/modules/tracker_library/tracker_library_screen.dart'; +import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; +import 'package:mangayomi/modules/widgets/progress_center.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/services/fetch_watch_order.dart'; +import 'package:mangayomi/utils/constant.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; +import 'package:marquee/marquee.dart'; +import 'package:photo_view/photo_view.dart'; +import 'package:photo_view/photo_view_gallery.dart'; +import 'package:super_sliver_list/super_sliver_list.dart'; + +class WatchOrderScreen extends StatefulWidget { + final String name; + final Track? track; + + const WatchOrderScreen({super.key, required this.name, required this.track}); + + @override + State createState() => _WatchOrderScreenState(); +} + +class _WatchOrderScreenState extends State { + String _errorMessage = ""; + bool _isLoading = true; + List? sequels; + List? dataSearch; + List? data; + + bool get isSequels => widget.track != null; + + @override + void initState() { + super.initState(); + _init(); + } + + Future _init() async { + try { + _errorMessage = ""; + if (isSequels) { + final mediaId = widget.track!.mediaId!.toString(); + final mal = await isar.trackPreferences + .filter() + .syncIdEqualTo(TrackerProviders.myAnimeList.syncId) + .findFirst(); + final anilist = await isar.trackPreferences + .filter() + .syncIdEqualTo(TrackerProviders.anilist.syncId) + .findFirst(); + final data = await fetchSequels(mal?.username, anilist?.username); + sequels = data + .where((e) => e.reason.any((r) => r.id == mediaId)) + .toList(); + } else { + dataSearch = await searchWatchOrder(widget.name); + } + if (mounted) { + setState(() { + _isLoading = false; + }); + } + } catch (e) { + if (mounted) { + setState(() { + _errorMessage = e.toString(); + _isLoading = false; + }); + } + } + } + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + return Scaffold( + appBar: AppBar(title: Text(isSequels ? l10n.sequels : l10n.watch_order)), + body: Padding( + padding: EdgeInsetsGeometry.all(5), + child: _isLoading + ? const Center(child: CircularProgressIndicator()) + : Builder( + builder: (context) { + if (_errorMessage.isNotEmpty) { + return Center(child: Text(_errorMessage)); + } + return isSequels ? _buildSequels() : _buildWatchOrder(); + }, + ), + ), + ); + } + + Widget _buildSequels() { + if (sequels != null && sequels!.isNotEmpty) { + return SuperListView.builder( + extentPrecalculationPolicy: SuperPrecalculationPolicy(), + itemCount: sequels!.length, + itemBuilder: (context, index) { + final sequel = sequels![index]; + return StreamBuilder( + stream: isar.tracks + .filter() + .idIsNotNull() + .mediaIdEqualTo(int.tryParse(sequel.id)) + .or() + .mediaIdEqualTo(int.tryParse(sequel.anilistId ?? "")) + .watch(fireImmediately: true), + builder: (context, snapshot) { + final hasData = snapshot.hasData && snapshot.data!.isNotEmpty; + return ListTile( + onTap: () async { + context.push( + '/globalSearch', + extra: (sequel.title, ItemType.anime), + ); + }, + title: Row( + children: [ + _thumbnailPreview(context, sequel.image, hasData: hasData), + const SizedBox(width: 15), + Flexible( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTitle(sequel.title, context), + Text( + "${sequel.period} | ${sequel.type} | ${sequel.episodes} episodes | ★${sequel.score} (${sequel.scoreUsers})", + style: const TextStyle(fontSize: 11), + overflow: TextOverflow.clip, + ), + ], + ), + ), + ], + ), + ); + }, + ); + }, + ); + } + return Center(child: Text(context.l10n.no_result)); + } + + Widget _buildWatchOrder() { + final isSearch = dataSearch != null && dataSearch!.isNotEmpty; + final isWatchOrder = data != null && data!.isNotEmpty; + if (isSearch || isWatchOrder) { + return SuperListView.builder( + extentPrecalculationPolicy: SuperPrecalculationPolicy(), + itemCount: data?.length ?? dataSearch!.length, + itemBuilder: (context, index) { + final search = !isWatchOrder && isSearch ? dataSearch![index] : null; + final watchOrder = isWatchOrder ? data![index] : null; + return ListTile( + onTap: () async { + if (isWatchOrder) { + context.push( + '/globalSearch', + extra: ( + watchOrder!.nameEnglish ?? watchOrder.name, + ItemType.anime, + ), + ); + } else { + if (mounted) { + setState(() { + _isLoading = true; + _errorMessage = ""; + }); + data = await fetchWatchOrder(search!.id); + setState(() { + _isLoading = false; + }); + } + } + }, + title: Row( + children: [ + _thumbnailPreview(context, watchOrder?.image ?? search!.image), + const SizedBox(width: 15), + Flexible( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTitle(watchOrder?.name ?? search!.name, context), + if (watchOrder?.nameEnglish != null && + watchOrder?.nameEnglish != watchOrder?.text) + Text( + watchOrder!.nameEnglish!, + style: const TextStyle(fontSize: 11), + overflow: TextOverflow.clip, + ), + Text( + watchOrder?.text ?? "${search!.type} - ${search.year}", + style: const TextStyle(fontSize: 11), + overflow: TextOverflow.clip, + ), + ], + ), + ), + ], + ), + ); + }, + ); + } + return Center(child: Text(context.l10n.no_result)); + } + + Widget _buildTitle(String text, BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) { + // Make sure that (constraints.maxWidth - (35 + 5)) is strictly positive. + final double availableWidth = constraints.maxWidth - (35 + 5); + final textPainter = + TextPainter( + text: TextSpan(text: text, style: const TextStyle(fontSize: 13)), + maxLines: 1, + textDirection: TextDirection.ltr, + )..layout( + maxWidth: availableWidth > 0 ? availableWidth : 1.0, + ); // - Download icon size (download_page_widget.dart, Widget Build SizedBox width: 35) + + final isOverflowing = textPainter.didExceedMaxLines; + + if (isOverflowing) { + return SizedBox( + height: 20, + child: Marquee( + text: text, + style: const TextStyle(fontSize: 13, fontWeight: FontWeight.bold), + blankSpace: 40.0, + velocity: 30.0, + pauseAfterRound: const Duration(seconds: 1), + startPadding: 10.0, + ), + ); + } else { + return Text( + text, + style: const TextStyle(fontSize: 13, fontWeight: FontWeight.bold), + overflow: TextOverflow.ellipsis, + ); + } + }, + ); + } + + Widget _thumbnailPreview( + BuildContext context, + String? imageUrl, { + bool hasData = false, + }) { + final imageProvider = CustomExtendedNetworkImageProvider( + toImgUrl(imageUrl ?? ""), + ); + return Padding( + padding: const EdgeInsets.all(3), + child: GestureDetector( + onTap: () { + _openImage(context, imageProvider); + }, + child: Stack( + children: [ + SizedBox( + width: 100, + height: 150, + child: Container( + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(5)), + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + ), + ), + ), + ), + Container( + width: 100, + height: 150, + color: hasData ? Colors.black.withValues(alpha: 0.7) : null, + ), + if (hasData) + Positioned( + top: 0, + left: 0, + child: Padding( + padding: const EdgeInsets.all(4), + child: Icon( + Icons.collections_bookmark, + color: context.primaryColor, + ), + ), + ), + ], + ), + ), + ); + } + + void _openImage(BuildContext context, ImageProvider imageProvider) { + showDialog( + context: context, + builder: (context) { + return Scaffold( + backgroundColor: Colors.transparent, + body: Stack( + children: [ + GestureDetector( + onTap: () => Navigator.pop(context), + child: PhotoViewGallery.builder( + backgroundDecoration: const BoxDecoration( + color: Colors.transparent, + ), + itemCount: 1, + builder: (context, index) { + return PhotoViewGalleryPageOptions( + imageProvider: imageProvider, + minScale: PhotoViewComputedScale.contained, + maxScale: 2.0, + ); + }, + loadingBuilder: (context, event) { + return const ProgressCenter(); + }, + ), + ), + ], + ), + ); + }, + ); + } +} + +class SuperPrecalculationPolicy extends ExtentPrecalculationPolicy { + @override + bool shouldPrecalculateExtents(ExtentPrecalculationContext context) { + return context.numberOfItems < 100; + } +} diff --git a/lib/modules/manga/download/download_page_widget.dart b/lib/modules/manga/download/download_page_widget.dart index 312e61a3..c0b46a2c 100644 --- a/lib/modules/manga/download/download_page_widget.dart +++ b/lib/modules/manga/download/download_page_widget.dart @@ -25,7 +25,7 @@ class ChapterPageDownload extends ConsumerWidget { ref.read(downloadChapterProvider(chapter: chapter, useWifi: useWifi)); } - void _sendFile() async { + void _sendFile(BuildContext context) async { final storageProvider = StorageProvider(); final mangaDir = await storageProvider.getMangaMainDirectory(chapter); final path = await storageProvider.getMangaChapterDirectory( @@ -52,8 +52,13 @@ class ChapterPageDownload extends ConsumerWidget { } else { files = path!.listSync().map((e) => XFile(e.path)).toList(); } - if (files.isNotEmpty) { - Share.shareXFiles(files, text: chapter.name); + if (files.isNotEmpty && context.mounted) { + final box = context.findRenderObject() as RenderBox?; + Share.shareXFiles( + files, + text: chapter.name, + sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size, + ); } } @@ -123,7 +128,7 @@ class ChapterPageDownload extends ConsumerWidget { ), onSelected: (value) { if (value == 0) { - _sendFile(); + _sendFile(context); } else if (value == 1) { _deleteFile(download.id!); } diff --git a/lib/modules/manga/download/providers/convert_to_cbz.g.dart b/lib/modules/manga/download/providers/convert_to_cbz.g.dart index 000181b1..db166ef8 100644 --- a/lib/modules/manga/download/providers/convert_to_cbz.g.dart +++ b/lib/modules/manga/download/providers/convert_to_cbz.g.dart @@ -45,12 +45,7 @@ class ConvertToCBZFamily extends Family>> { String chapterName, List pageList, ) { - return ConvertToCBZProvider( - chapterDir, - mangaDir, - chapterName, - pageList, - ); + return ConvertToCBZProvider(chapterDir, mangaDir, chapterName, pageList); } @override @@ -89,27 +84,26 @@ class ConvertToCBZProvider extends AutoDisposeFutureProvider> { String chapterName, List pageList, ) : this._internal( - (ref) => convertToCBZ( - ref as ConvertToCBZRef, - chapterDir, - mangaDir, - chapterName, - pageList, - ), - from: convertToCBZProvider, - name: r'convertToCBZProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$convertToCBZHash, - dependencies: ConvertToCBZFamily._dependencies, - allTransitiveDependencies: - ConvertToCBZFamily._allTransitiveDependencies, - chapterDir: chapterDir, - mangaDir: mangaDir, - chapterName: chapterName, - pageList: pageList, - ); + (ref) => convertToCBZ( + ref as ConvertToCBZRef, + chapterDir, + mangaDir, + chapterName, + pageList, + ), + from: convertToCBZProvider, + name: r'convertToCBZProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$convertToCBZHash, + dependencies: ConvertToCBZFamily._dependencies, + allTransitiveDependencies: + ConvertToCBZFamily._allTransitiveDependencies, + chapterDir: chapterDir, + mangaDir: mangaDir, + chapterName: chapterName, + pageList: pageList, + ); ConvertToCBZProvider._internal( super._createNotifier, { @@ -206,5 +200,6 @@ class _ConvertToCBZProviderElement @override List get pageList => (origin as ConvertToCBZProvider).pageList; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/manga/download/providers/download_provider.dart b/lib/modules/manga/download/providers/download_provider.dart index c0086632..af375a4c 100644 --- a/lib/modules/manga/download/providers/download_provider.dart +++ b/lib/modules/manga/download/providers/download_provider.dart @@ -271,7 +271,11 @@ Future downloadChapter( final cookie = MClient.getCookiesPref(page.url); final headers = itemType == ItemType.manga ? ref.read( - headersProvider(source: manga.source!, lang: manga.lang!), + headersProvider( + source: manga.source!, + lang: manga.lang!, + sourceId: manga.sourceId, + ), ) : itemType == ItemType.anime ? videoHeader diff --git a/lib/modules/manga/download/providers/download_provider.g.dart b/lib/modules/manga/download/providers/download_provider.g.dart index c9b1a55f..04d6e22c 100644 --- a/lib/modules/manga/download/providers/download_provider.g.dart +++ b/lib/modules/manga/download/providers/download_provider.g.dart @@ -40,21 +40,15 @@ class AddDownloadToQueueFamily extends Family> { const AddDownloadToQueueFamily(); /// See also [addDownloadToQueue]. - AddDownloadToQueueProvider call({ - required Chapter chapter, - }) { - return AddDownloadToQueueProvider( - chapter: chapter, - ); + AddDownloadToQueueProvider call({required Chapter chapter}) { + return AddDownloadToQueueProvider(chapter: chapter); } @override AddDownloadToQueueProvider getProviderOverride( covariant AddDownloadToQueueProvider provider, ) { - return call( - chapter: provider.chapter, - ); + return call(chapter: provider.chapter); } static const Iterable? _dependencies = null; @@ -75,24 +69,20 @@ class AddDownloadToQueueFamily extends Family> { /// See also [addDownloadToQueue]. class AddDownloadToQueueProvider extends AutoDisposeFutureProvider { /// See also [addDownloadToQueue]. - AddDownloadToQueueProvider({ - required Chapter chapter, - }) : this._internal( - (ref) => addDownloadToQueue( - ref as AddDownloadToQueueRef, - chapter: chapter, - ), - from: addDownloadToQueueProvider, - name: r'addDownloadToQueueProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$addDownloadToQueueHash, - dependencies: AddDownloadToQueueFamily._dependencies, - allTransitiveDependencies: - AddDownloadToQueueFamily._allTransitiveDependencies, - chapter: chapter, - ); + AddDownloadToQueueProvider({required Chapter chapter}) + : this._internal( + (ref) => + addDownloadToQueue(ref as AddDownloadToQueueRef, chapter: chapter), + from: addDownloadToQueueProvider, + name: r'addDownloadToQueueProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$addDownloadToQueueHash, + dependencies: AddDownloadToQueueFamily._dependencies, + allTransitiveDependencies: + AddDownloadToQueueFamily._allTransitiveDependencies, + chapter: chapter, + ); AddDownloadToQueueProvider._internal( super._createNotifier, { @@ -151,14 +141,15 @@ mixin AddDownloadToQueueRef on AutoDisposeFutureProviderRef { } class _AddDownloadToQueueProviderElement - extends AutoDisposeFutureProviderElement with AddDownloadToQueueRef { + extends AutoDisposeFutureProviderElement + with AddDownloadToQueueRef { _AddDownloadToQueueProviderElement(super.provider); @override Chapter get chapter => (origin as AddDownloadToQueueProvider).chapter; } -String _$downloadChapterHash() => r'4d008f26f03bf21010742b73cf83643c61f66c2b'; +String _$downloadChapterHash() => r'5eb401736efdfb2990fda6e2d97160aaeb94aec1'; /// See also [downloadChapter]. @ProviderFor(downloadChapter) @@ -216,25 +207,24 @@ class DownloadChapterProvider extends AutoDisposeFutureProvider { bool? useWifi, void Function()? callback, }) : this._internal( - (ref) => downloadChapter( - ref as DownloadChapterRef, - chapter: chapter, - useWifi: useWifi, - callback: callback, - ), - from: downloadChapterProvider, - name: r'downloadChapterProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$downloadChapterHash, - dependencies: DownloadChapterFamily._dependencies, - allTransitiveDependencies: - DownloadChapterFamily._allTransitiveDependencies, - chapter: chapter, - useWifi: useWifi, - callback: callback, - ); + (ref) => downloadChapter( + ref as DownloadChapterRef, + chapter: chapter, + useWifi: useWifi, + callback: callback, + ), + from: downloadChapterProvider, + name: r'downloadChapterProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$downloadChapterHash, + dependencies: DownloadChapterFamily._dependencies, + allTransitiveDependencies: + DownloadChapterFamily._allTransitiveDependencies, + chapter: chapter, + useWifi: useWifi, + callback: callback, + ); DownloadChapterProvider._internal( super._createNotifier, { @@ -310,7 +300,8 @@ mixin DownloadChapterRef on AutoDisposeFutureProviderRef { } class _DownloadChapterProviderElement - extends AutoDisposeFutureProviderElement with DownloadChapterRef { + extends AutoDisposeFutureProviderElement + with DownloadChapterRef { _DownloadChapterProviderElement(super.provider); @override @@ -333,21 +324,15 @@ class ProcessDownloadsFamily extends Family> { const ProcessDownloadsFamily(); /// See also [processDownloads]. - ProcessDownloadsProvider call({ - bool? useWifi, - }) { - return ProcessDownloadsProvider( - useWifi: useWifi, - ); + ProcessDownloadsProvider call({bool? useWifi}) { + return ProcessDownloadsProvider(useWifi: useWifi); } @override ProcessDownloadsProvider getProviderOverride( covariant ProcessDownloadsProvider provider, ) { - return call( - useWifi: provider.useWifi, - ); + return call(useWifi: provider.useWifi); } static const Iterable? _dependencies = null; @@ -368,24 +353,19 @@ class ProcessDownloadsFamily extends Family> { /// See also [processDownloads]. class ProcessDownloadsProvider extends AutoDisposeFutureProvider { /// See also [processDownloads]. - ProcessDownloadsProvider({ - bool? useWifi, - }) : this._internal( - (ref) => processDownloads( - ref as ProcessDownloadsRef, - useWifi: useWifi, - ), - from: processDownloadsProvider, - name: r'processDownloadsProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$processDownloadsHash, - dependencies: ProcessDownloadsFamily._dependencies, - allTransitiveDependencies: - ProcessDownloadsFamily._allTransitiveDependencies, - useWifi: useWifi, - ); + ProcessDownloadsProvider({bool? useWifi}) + : this._internal( + (ref) => processDownloads(ref as ProcessDownloadsRef, useWifi: useWifi), + from: processDownloadsProvider, + name: r'processDownloadsProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$processDownloadsHash, + dependencies: ProcessDownloadsFamily._dependencies, + allTransitiveDependencies: + ProcessDownloadsFamily._allTransitiveDependencies, + useWifi: useWifi, + ); ProcessDownloadsProvider._internal( super._createNotifier, { @@ -444,11 +424,13 @@ mixin ProcessDownloadsRef on AutoDisposeFutureProviderRef { } class _ProcessDownloadsProviderElement - extends AutoDisposeFutureProviderElement with ProcessDownloadsRef { + extends AutoDisposeFutureProviderElement + with ProcessDownloadsRef { _ProcessDownloadsProviderElement(super.provider); @override bool? get useWifi => (origin as ProcessDownloadsProvider).useWifi; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/manga/home/manga_home_screen.dart b/lib/modules/manga/home/manga_home_screen.dart index 8d7f3797..c4dcfdba 100644 --- a/lib/modules/manga/home/manga_home_screen.dart +++ b/lib/modules/manga/home/manga_home_screen.dart @@ -238,38 +238,29 @@ class _MangaHomeScreenState extends ConsumerState { return [ PopupMenuItem( value: 0, - child: RadioListTile( - title: Text(context.l10n.comfortable_grid), - value: DisplayType.comfortableGrid, - groupValue: displayType, - onChanged: (a) { - context.pop(); - displayTypeNotifier.setMangaHomeDisplayType(a!); - }, - ), - ), - PopupMenuItem( - value: 1, - child: RadioListTile( - title: Text(context.l10n.compact_grid), - value: DisplayType.compactGrid, - groupValue: displayType, - onChanged: (a) { - context.pop(); - displayTypeNotifier.setMangaHomeDisplayType(a!); - }, - ), - ), - PopupMenuItem( - value: 2, - child: RadioListTile( - title: Text(context.l10n.list), - value: DisplayType.list, + child: RadioGroup( groupValue: displayType, onChanged: (a) { context.pop(); displayTypeNotifier.setMangaHomeDisplayType(a!); }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + RadioListTile( + title: Text(context.l10n.comfortable_grid), + value: DisplayType.comfortableGrid, + ), + RadioListTile( + title: Text(context.l10n.compact_grid), + value: DisplayType.compactGrid, + ), + RadioListTile( + title: Text(context.l10n.list), + value: DisplayType.list, + ), + ], + ), ), ), ]; diff --git a/lib/modules/manga/home/providers/state_provider.g.dart b/lib/modules/manga/home/providers/state_provider.g.dart index a4e0c874..fdf8bac5 100644 --- a/lib/modules/manga/home/providers/state_provider.g.dart +++ b/lib/modules/manga/home/providers/state_provider.g.dart @@ -11,16 +11,19 @@ String _$mangaHomeDisplayTypeStateHash() => /// See also [MangaHomeDisplayTypeState]. @ProviderFor(MangaHomeDisplayTypeState) -final mangaHomeDisplayTypeStateProvider = AutoDisposeNotifierProvider< - MangaHomeDisplayTypeState, DisplayType>.internal( - MangaHomeDisplayTypeState.new, - name: r'mangaHomeDisplayTypeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$mangaHomeDisplayTypeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final mangaHomeDisplayTypeStateProvider = + AutoDisposeNotifierProvider< + MangaHomeDisplayTypeState, + DisplayType + >.internal( + MangaHomeDisplayTypeState.new, + name: r'mangaHomeDisplayTypeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mangaHomeDisplayTypeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$MangaHomeDisplayTypeState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/manga/reader/double_columm_view_center.dart b/lib/modules/manga/reader/double_columm_view_center.dart index bdc7de15..39d4eda8 100644 --- a/lib/modules/manga/reader/double_columm_view_center.dart +++ b/lib/modules/manga/reader/double_columm_view_center.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/manga/reader/image_view_paged.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/modules/manga/reader/widgets/circular_progress_indicator_animate_rotate.dart'; import 'package:mangayomi/modules/manga/reader/widgets/transition_view_paged.dart'; import 'package:mangayomi/modules/more/settings/reader/reader_screen.dart'; diff --git a/lib/modules/manga/reader/double_columm_view_vertical.dart b/lib/modules/manga/reader/double_columm_view_vertical.dart index 7d08bd72..cf01cbd1 100644 --- a/lib/modules/manga/reader/double_columm_view_vertical.dart +++ b/lib/modules/manga/reader/double_columm_view_vertical.dart @@ -2,7 +2,7 @@ import 'package:extended_image/extended_image.dart'; import 'package:flutter/material.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/manga/reader/image_view_paged.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/modules/manga/reader/widgets/circular_progress_indicator_animate_rotate.dart'; import 'package:mangayomi/modules/manga/reader/widgets/transition_view_vertical.dart'; import 'package:mangayomi/modules/more/settings/reader/reader_screen.dart'; diff --git a/lib/modules/manga/reader/image_view_paged.dart b/lib/modules/manga/reader/image_view_paged.dart index 82e828b4..3d765d42 100644 --- a/lib/modules/manga/reader/image_view_paged.dart +++ b/lib/modules/manga/reader/image_view_paged.dart @@ -2,7 +2,7 @@ import 'package:extended_image/extended_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/modules/manga/reader/widgets/color_filter_widget.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; import 'package:mangayomi/utils/extensions/others.dart'; diff --git a/lib/modules/manga/reader/image_view_vertical.dart b/lib/modules/manga/reader/image_view_vertical.dart index a7a95a16..b505826a 100644 --- a/lib/modules/manga/reader/image_view_vertical.dart +++ b/lib/modules/manga/reader/image_view_vertical.dart @@ -2,7 +2,7 @@ import 'package:extended_image/extended_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/modules/manga/reader/widgets/color_filter_widget.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; diff --git a/lib/modules/manga/reader/providers/color_filter_provider.g.dart b/lib/modules/manga/reader/providers/color_filter_provider.g.dart index c8258663..5dea2ff9 100644 --- a/lib/modules/manga/reader/providers/color_filter_provider.g.dart +++ b/lib/modules/manga/reader/providers/color_filter_provider.g.dart @@ -11,16 +11,19 @@ String _$customColorFilterStateHash() => /// See also [CustomColorFilterState]. @ProviderFor(CustomColorFilterState) -final customColorFilterStateProvider = AutoDisposeNotifierProvider< - CustomColorFilterState, CustomColorFilter?>.internal( - CustomColorFilterState.new, - name: r'customColorFilterStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$customColorFilterStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final customColorFilterStateProvider = + AutoDisposeNotifierProvider< + CustomColorFilterState, + CustomColorFilter? + >.internal( + CustomColorFilterState.new, + name: r'customColorFilterStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$customColorFilterStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$CustomColorFilterState = AutoDisposeNotifier; String _$enableCustomColorFilterStateHash() => @@ -30,14 +33,14 @@ String _$enableCustomColorFilterStateHash() => @ProviderFor(EnableCustomColorFilterState) final enableCustomColorFilterStateProvider = AutoDisposeNotifierProvider.internal( - EnableCustomColorFilterState.new, - name: r'enableCustomColorFilterStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$enableCustomColorFilterStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + EnableCustomColorFilterState.new, + name: r'enableCustomColorFilterStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$enableCustomColorFilterStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$EnableCustomColorFilterState = AutoDisposeNotifier; String _$colorFilterBlendModeStateHash() => @@ -45,16 +48,19 @@ String _$colorFilterBlendModeStateHash() => /// See also [ColorFilterBlendModeState]. @ProviderFor(ColorFilterBlendModeState) -final colorFilterBlendModeStateProvider = AutoDisposeNotifierProvider< - ColorFilterBlendModeState, ColorFilterBlendMode>.internal( - ColorFilterBlendModeState.new, - name: r'colorFilterBlendModeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$colorFilterBlendModeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final colorFilterBlendModeStateProvider = + AutoDisposeNotifierProvider< + ColorFilterBlendModeState, + ColorFilterBlendMode + >.internal( + ColorFilterBlendModeState.new, + name: r'colorFilterBlendModeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$colorFilterBlendModeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$ColorFilterBlendModeState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/manga/reader/providers/crop_borders_provider.dart b/lib/modules/manga/reader/providers/crop_borders_provider.dart index dad45c99..33c63d57 100644 --- a/lib/modules/manga/reader/providers/crop_borders_provider.dart +++ b/lib/modules/manga/reader/providers/crop_borders_provider.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:isolate'; import 'package:flutter/foundation.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/src/rust/api/image.dart'; import 'package:mangayomi/src/rust/frb_generated.dart'; import 'package:mangayomi/utils/extensions/others.dart'; diff --git a/lib/modules/manga/reader/providers/crop_borders_provider.g.dart b/lib/modules/manga/reader/providers/crop_borders_provider.g.dart index e90bc38f..1d839ce9 100644 --- a/lib/modules/manga/reader/providers/crop_borders_provider.g.dart +++ b/lib/modules/manga/reader/providers/crop_borders_provider.g.dart @@ -43,20 +43,14 @@ class CropBordersFamily extends Family> { required UChapDataPreload data, required bool cropBorder, }) { - return CropBordersProvider( - data: data, - cropBorder: cropBorder, - ); + return CropBordersProvider(data: data, cropBorder: cropBorder); } @override CropBordersProvider getProviderOverride( covariant CropBordersProvider provider, ) { - return call( - data: provider.data, - cropBorder: provider.cropBorder, - ); + return call(data: provider.data, cropBorder: provider.cropBorder); } static const Iterable? _dependencies = null; @@ -81,23 +75,22 @@ class CropBordersProvider extends FutureProvider { required UChapDataPreload data, required bool cropBorder, }) : this._internal( - (ref) => cropBorders( - ref as CropBordersRef, - data: data, - cropBorder: cropBorder, - ), - from: cropBordersProvider, - name: r'cropBordersProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$cropBordersHash, - dependencies: CropBordersFamily._dependencies, - allTransitiveDependencies: - CropBordersFamily._allTransitiveDependencies, - data: data, - cropBorder: cropBorder, - ); + (ref) => cropBorders( + ref as CropBordersRef, + data: data, + cropBorder: cropBorder, + ), + from: cropBordersProvider, + name: r'cropBordersProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$cropBordersHash, + dependencies: CropBordersFamily._dependencies, + allTransitiveDependencies: + CropBordersFamily._allTransitiveDependencies, + data: data, + cropBorder: cropBorder, + ); CropBordersProvider._internal( super._createNotifier, { @@ -173,5 +166,6 @@ class _CropBordersProviderElement extends FutureProviderElement @override bool get cropBorder => (origin as CropBordersProvider).cropBorder; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/manga/reader/providers/reader_controller_provider.g.dart b/lib/modules/manga/reader/providers/reader_controller_provider.g.dart index 753d9d00..35ac8a22 100644 --- a/lib/modules/manga/reader/providers/reader_controller_provider.g.dart +++ b/lib/modules/manga/reader/providers/reader_controller_provider.g.dart @@ -32,9 +32,7 @@ class _SystemHash { abstract class _$CurrentIndex extends BuildlessAutoDisposeNotifier { late final Chapter chapter; - int build( - Chapter chapter, - ); + int build(Chapter chapter); } /// See also [CurrentIndex]. @@ -47,21 +45,15 @@ class CurrentIndexFamily extends Family { const CurrentIndexFamily(); /// See also [CurrentIndex]. - CurrentIndexProvider call( - Chapter chapter, - ) { - return CurrentIndexProvider( - chapter, - ); + CurrentIndexProvider call(Chapter chapter) { + return CurrentIndexProvider(chapter); } @override CurrentIndexProvider getProviderOverride( covariant CurrentIndexProvider provider, ) { - return call( - provider.chapter, - ); + return call(provider.chapter); } static const Iterable? _dependencies = null; @@ -83,21 +75,19 @@ class CurrentIndexFamily extends Family { class CurrentIndexProvider extends AutoDisposeNotifierProviderImpl { /// See also [CurrentIndex]. - CurrentIndexProvider( - Chapter chapter, - ) : this._internal( - () => CurrentIndex()..chapter = chapter, - from: currentIndexProvider, - name: r'currentIndexProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$currentIndexHash, - dependencies: CurrentIndexFamily._dependencies, - allTransitiveDependencies: - CurrentIndexFamily._allTransitiveDependencies, - chapter: chapter, - ); + CurrentIndexProvider(Chapter chapter) + : this._internal( + () => CurrentIndex()..chapter = chapter, + from: currentIndexProvider, + name: r'currentIndexProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$currentIndexHash, + dependencies: CurrentIndexFamily._dependencies, + allTransitiveDependencies: + CurrentIndexFamily._allTransitiveDependencies, + chapter: chapter, + ); CurrentIndexProvider._internal( super._createNotifier, { @@ -112,12 +102,8 @@ class CurrentIndexProvider final Chapter chapter; @override - int runNotifierBuild( - covariant CurrentIndex notifier, - ) { - return notifier.build( - chapter, - ); + int runNotifierBuild(covariant CurrentIndex notifier) { + return notifier.build(chapter); } @override @@ -176,9 +162,7 @@ String _$readerControllerHash() => r'8b2995dcf849eddff308a105a2e06c9534096fac'; abstract class _$ReaderController extends BuildlessAutoDisposeNotifier { late final Chapter chapter; - void build({ - required Chapter chapter, - }); + void build({required Chapter chapter}); } /// See also [ReaderController]. @@ -191,21 +175,15 @@ class ReaderControllerFamily extends Family { const ReaderControllerFamily(); /// See also [ReaderController]. - ReaderControllerProvider call({ - required Chapter chapter, - }) { - return ReaderControllerProvider( - chapter: chapter, - ); + ReaderControllerProvider call({required Chapter chapter}) { + return ReaderControllerProvider(chapter: chapter); } @override ReaderControllerProvider getProviderOverride( covariant ReaderControllerProvider provider, ) { - return call( - chapter: provider.chapter, - ); + return call(chapter: provider.chapter); } static const Iterable? _dependencies = null; @@ -227,21 +205,19 @@ class ReaderControllerFamily extends Family { class ReaderControllerProvider extends AutoDisposeNotifierProviderImpl { /// See also [ReaderController]. - ReaderControllerProvider({ - required Chapter chapter, - }) : this._internal( - () => ReaderController()..chapter = chapter, - from: readerControllerProvider, - name: r'readerControllerProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$readerControllerHash, - dependencies: ReaderControllerFamily._dependencies, - allTransitiveDependencies: - ReaderControllerFamily._allTransitiveDependencies, - chapter: chapter, - ); + ReaderControllerProvider({required Chapter chapter}) + : this._internal( + () => ReaderController()..chapter = chapter, + from: readerControllerProvider, + name: r'readerControllerProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$readerControllerHash, + dependencies: ReaderControllerFamily._dependencies, + allTransitiveDependencies: + ReaderControllerFamily._allTransitiveDependencies, + chapter: chapter, + ); ReaderControllerProvider._internal( super._createNotifier, { @@ -256,12 +232,8 @@ class ReaderControllerProvider final Chapter chapter; @override - void runNotifierBuild( - covariant ReaderController notifier, - ) { - return notifier.build( - chapter: chapter, - ); + void runNotifierBuild(covariant ReaderController notifier) { + return notifier.build(chapter: chapter); } @override @@ -314,5 +286,6 @@ class _ReaderControllerProviderElement @override Chapter get chapter => (origin as ReaderControllerProvider).chapter; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/manga/reader/reader_view.dart b/lib/modules/manga/reader/reader_view.dart index 08a78c99..ca06c9b7 100644 --- a/lib/modules/manga/reader/reader_view.dart +++ b/lib/modules/manga/reader/reader_view.dart @@ -12,14 +12,16 @@ import 'package:mangayomi/eval/model/m_bridge.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/manga.dart'; -import 'package:mangayomi/models/page.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/anime/widgets/desktop.dart'; import 'package:mangayomi/modules/manga/reader/providers/crop_borders_provider.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/modules/manga/reader/widgets/btn_chapter_list_dialog.dart'; import 'package:mangayomi/modules/manga/reader/double_columm_view_center.dart'; import 'package:mangayomi/modules/manga/reader/providers/color_filter_provider.dart'; import 'package:mangayomi/modules/manga/reader/widgets/color_filter_widget.dart'; +import 'package:mangayomi/modules/manga/reader/widgets/custom_popup_menu_button.dart'; +import 'package:mangayomi/modules/manga/reader/widgets/custom_value_indicator_shape.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; import 'package:mangayomi/modules/widgets/custom_draggable_tabbar.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; @@ -399,13 +401,21 @@ class _MangaChapterPageGalleryState context.l10n.share, Icons.share_outlined, () async { - await Share.shareXFiles([ - XFile.fromData( - imageBytes, - name: name, - mimeType: 'image/png', - ), - ]); + if (context.mounted) { + final box = + context.findRenderObject() as RenderBox?; + await Share.shareXFiles( + [ + XFile.fromData( + imageBytes, + name: name, + mimeType: 'image/png', + ), + ], + sharePositionOrigin: + box!.localToGlobal(Offset.zero) & box.size, + ); + } }, ), button( @@ -640,7 +650,7 @@ class _MangaChapterPageGalleryState reverse: _isReverseHorizontal, physics: const ClampingScrollPhysics(), canScrollPage: (_) { - return _horizontalScaleValue == 1.0; + return true; }, itemBuilder: (context, index) { if (index < _uChapDataPreload.length && @@ -693,9 +703,7 @@ class _MangaChapterPageGalleryState reverse: _isReverseHorizontal, physics: const ClampingScrollPhysics(), canScrollPage: (gestureDetails) { - return gestureDetails != null - ? !(gestureDetails.totalScale! > 1.0) - : true; + return true; }, itemBuilder: (BuildContext context, int index) { if (_uChapDataPreload[index] @@ -1487,7 +1495,11 @@ class _MangaChapterPageGalleryState IconButton( onPressed: () async { final manga = chapter.manga.value!; - final source = getSource(manga.lang!, manga.source!)!; + final source = getSource( + manga.lang!, + manga.source!, + manga.sourceId, + )!; final url = "${source.baseUrl}${chapter.url!.getUrlWithoutDomain}"; Map data = { @@ -1633,7 +1645,7 @@ class _MangaChapterPageGalleryState return SliderTheme( data: SliderTheme.of(context).copyWith( valueIndicatorShape: - _CustomValueIndicatorShape( + CustomValueIndicatorShape( tranform: _isReverseHorizontal, ), overlayShape: @@ -2504,190 +2516,3 @@ class _MangaChapterPageGalleryState } } } - -class UChapDataPreload { - Chapter? chapter; - Directory? directory; - PageUrl? pageUrl; - bool? isLocale; - Uint8List? archiveImage; - int? index; - GetChapterPagesModel? chapterUrlModel; - int? pageIndex; - Uint8List? cropImage; - bool isTransitionPage; - Chapter? nextChapter; - String? mangaName; - bool? isLastChapter; - - UChapDataPreload( - this.chapter, - this.directory, - this.pageUrl, - this.isLocale, - this.archiveImage, - this.index, - this.chapterUrlModel, - this.pageIndex, { - this.cropImage, - this.isTransitionPage = false, - this.nextChapter, - this.mangaName, - this.isLastChapter = false, - }); - - UChapDataPreload.transition({ - required Chapter currentChapter, - required this.nextChapter, - required String this.mangaName, - required int this.pageIndex, - this.isLastChapter = false, - }) : chapter = currentChapter, - isTransitionPage = true, - directory = null, - pageUrl = null, - isLocale = null, - archiveImage = null, - index = null, - chapterUrlModel = null, - cropImage = null; -} - -class CustomPopupMenuButton extends StatelessWidget { - final String label; - final String title; - final ValueChanged onSelected; - final T value; - final List list; - final String Function(T) itemText; - const CustomPopupMenuButton({ - super.key, - required this.label, - required this.title, - required this.onSelected, - required this.value, - required this.list, - required this.itemText, - }); - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: PopupMenuButton( - popUpAnimationStyle: popupAnimationStyle, - tooltip: "", - offset: Offset.fromDirection(1), - color: Colors.black, - onSelected: onSelected, - itemBuilder: (context) => [ - for (var d in list) - PopupMenuItem( - value: d, - child: Row( - children: [ - Icon( - Icons.check, - color: d == value ? Colors.white : Colors.transparent, - ), - const SizedBox(width: 7), - Text( - itemText(d), - style: const TextStyle(color: Colors.white), - ), - ], - ), - ), - ], - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 15), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Flexible( - child: Text( - label, - style: TextStyle( - color: Theme.of( - context, - ).textTheme.bodyLarge!.color!.withValues(alpha: 0.9), - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - ), - Row( - children: [ - Text(title), - const SizedBox(width: 20), - const Icon(Icons.keyboard_arrow_down_outlined), - ], - ), - ], - ), - ), - ), - ); - } -} - -class _CustomValueIndicatorShape extends SliderComponentShape { - final _indicatorShape = const PaddleSliderValueIndicatorShape(); - final bool tranform; - const _CustomValueIndicatorShape({this.tranform = false}); - @override - Size getPreferredSize(bool isEnabled, bool isDiscrete) { - return const Size(40, 40); - } - - @override - void paint( - PaintingContext context, - Offset center, { - required Animation activationAnimation, - required Animation enableAnimation, - required bool isDiscrete, - required TextPainter labelPainter, - required RenderBox parentBox, - required SliderThemeData sliderTheme, - required TextDirection textDirection, - required double value, - required double textScaleFactor, - required Size sizeWithOverflow, - }) { - final textSpan = TextSpan( - text: labelPainter.text?.toPlainText(), - style: sliderTheme.valueIndicatorTextStyle, - ); - - final textPainter = TextPainter( - text: textSpan, - textAlign: labelPainter.textAlign, - textDirection: textDirection, - ); - - textPainter.layout(); - - context.canvas.save(); - context.canvas.translate(center.dx, center.dy); - context.canvas.scale(tranform ? -1.0 : 1.0, 1.0); - context.canvas.translate(-center.dx, -center.dy); - - _indicatorShape.paint( - context, - center, - activationAnimation: activationAnimation, - enableAnimation: enableAnimation, - labelPainter: textPainter, - parentBox: parentBox, - sliderTheme: sliderTheme, - value: value, - textScaleFactor: textScaleFactor, - sizeWithOverflow: sizeWithOverflow, - isDiscrete: isDiscrete, - textDirection: textDirection, - ); - - context.canvas.restore(); - } -} diff --git a/lib/modules/manga/reader/u_chap_data_preload.dart b/lib/modules/manga/reader/u_chap_data_preload.dart new file mode 100644 index 00000000..68b7f1f4 --- /dev/null +++ b/lib/modules/manga/reader/u_chap_data_preload.dart @@ -0,0 +1,54 @@ +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:mangayomi/models/chapter.dart'; +import 'package:mangayomi/models/page.dart'; +import 'package:mangayomi/services/get_chapter_pages.dart'; + +class UChapDataPreload { + Chapter? chapter; + Directory? directory; + PageUrl? pageUrl; + bool? isLocale; + Uint8List? archiveImage; + int? index; + GetChapterPagesModel? chapterUrlModel; + int? pageIndex; + Uint8List? cropImage; + bool isTransitionPage; + Chapter? nextChapter; + String? mangaName; + bool? isLastChapter; + + UChapDataPreload( + this.chapter, + this.directory, + this.pageUrl, + this.isLocale, + this.archiveImage, + this.index, + this.chapterUrlModel, + this.pageIndex, { + this.cropImage, + this.isTransitionPage = false, + this.nextChapter, + this.mangaName, + this.isLastChapter = false, + }); + + UChapDataPreload.transition({ + required Chapter currentChapter, + required this.nextChapter, + required String this.mangaName, + required int this.pageIndex, + this.isLastChapter = false, + }) : chapter = currentChapter, + isTransitionPage = true, + directory = null, + pageUrl = null, + isLocale = null, + archiveImage = null, + index = null, + chapterUrlModel = null, + cropImage = null; +} diff --git a/lib/modules/manga/reader/virtual_scrolling/virtual_manga_list.dart b/lib/modules/manga/reader/virtual_scrolling/virtual_manga_list.dart index 22274bcc..43bfd4dd 100644 --- a/lib/modules/manga/reader/virtual_scrolling/virtual_manga_list.dart +++ b/lib/modules/manga/reader/virtual_scrolling/virtual_manga_list.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/modules/manga/reader/virtual_scrolling/virtual_page_manager.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart' as reader; import 'package:mangayomi/modules/manga/reader/image_view_vertical.dart'; import 'package:mangayomi/modules/manga/reader/double_columm_view_vertical.dart'; import 'package:mangayomi/modules/manga/reader/widgets/transition_view_vertical.dart'; @@ -21,7 +21,7 @@ class VirtualMangaList extends ConsumerStatefulWidget { final double minCacheExtent; final int initialScrollIndex; final ScrollPhysics physics; - final Function(reader.UChapDataPreload data) onLongPressData; + final Function(UChapDataPreload data) onLongPressData; final Function(bool) onFailedToLoadImage; final BackgroundColor backgroundColor; final bool isDoublePageMode; @@ -215,7 +215,7 @@ class _VirtualMangaListState extends ConsumerState { final int index1 = index * 2 - 1; final int index2 = index1 + 1; - final List datas = index == 0 + final List datas = index == 0 ? [widget.pageManager.getOriginalPage(0), null] : [ index1 < widget.pageManager.pageCount diff --git a/lib/modules/manga/reader/virtual_scrolling/virtual_page_manager.dart b/lib/modules/manga/reader/virtual_scrolling/virtual_page_manager.dart index c954eeb8..38ce27b5 100644 --- a/lib/modules/manga/reader/virtual_scrolling/virtual_page_manager.dart +++ b/lib/modules/manga/reader/virtual_scrolling/virtual_page_manager.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'dart:math'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart' as reader; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; /// Page loading states for virtual scrolling enum PageLoadState { notLoaded, loading, loaded, error, cached } @@ -10,7 +10,7 @@ enum PageLoadState { notLoaded, loading, loaded, error, cached } /// Virtual page information for tracking state class VirtualPageInfo { final int index; - final reader.UChapDataPreload originalData; + final UChapDataPreload originalData; PageLoadState loadState; DateTime? lastAccessTime; Object? error; @@ -56,7 +56,7 @@ class VirtualPageConfig { /// Manages virtual page loading and memory optimization class VirtualPageManager extends ChangeNotifier { - final List _originalPages; + final List _originalPages; final VirtualPageConfig config; final Map _pageInfoMap = {}; final Set _preloadQueue = {}; @@ -65,7 +65,7 @@ class VirtualPageManager extends ChangeNotifier { Timer? _cleanupTimer; VirtualPageManager({ - required List pages, + required List pages, this.config = const VirtualPageConfig(), }) : _originalPages = List.from(pages) { _initializePages(); @@ -108,7 +108,7 @@ class VirtualPageManager extends ChangeNotifier { } /// Get original page data - reader.UChapDataPreload? getOriginalPage(int index) { + UChapDataPreload? getOriginalPage(int index) { if (index < 0 || index >= _originalPages.length) return null; return _originalPages[index]; } diff --git a/lib/modules/manga/reader/virtual_scrolling/virtual_reader_view.dart b/lib/modules/manga/reader/virtual_scrolling/virtual_reader_view.dart index 136a90b6..b1aa41de 100644 --- a/lib/modules/manga/reader/virtual_scrolling/virtual_reader_view.dart +++ b/lib/modules/manga/reader/virtual_scrolling/virtual_reader_view.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view_gallery.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; @@ -7,11 +8,10 @@ import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/modules/manga/reader/virtual_scrolling/virtual_page_manager.dart'; import 'package:mangayomi/modules/manga/reader/virtual_scrolling/virtual_manga_list.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart' as reader; /// Provides virtual page manager instances final virtualPageManagerProvider = - Provider.family>(( + Provider.family>(( ref, pages, ) { @@ -20,7 +20,7 @@ final virtualPageManagerProvider = /// Main widget for virtual reading that replaces ScrollablePositionedList class VirtualReaderView extends ConsumerStatefulWidget { - final List pages; + final List pages; final ItemScrollController itemScrollController; final ScrollOffsetController scrollOffsetController; final ItemPositionsListener itemPositionsListener; @@ -28,7 +28,7 @@ class VirtualReaderView extends ConsumerStatefulWidget { final double minCacheExtent; final int initialScrollIndex; final ScrollPhysics physics; - final Function(reader.UChapDataPreload data) onLongPressData; + final Function(UChapDataPreload data) onLongPressData; final Function(bool) onFailedToLoadImage; final BackgroundColor backgroundColor; final bool isDoublePageMode; @@ -169,10 +169,10 @@ mixin VirtualPageManagerMixin } /// Override this method to provide the pages list - List getPages(); + List getPages(); /// Call this when pages change - void updateVirtualPages(List newPages) { + void updateVirtualPages(List newPages) { _virtualPageManager?.dispose(); _virtualPageManager = VirtualPageManager(pages: newPages); } diff --git a/lib/modules/manga/reader/widgets/custom_popup_menu_button.dart b/lib/modules/manga/reader/widgets/custom_popup_menu_button.dart new file mode 100644 index 00000000..4f29e069 --- /dev/null +++ b/lib/modules/manga/reader/widgets/custom_popup_menu_button.dart @@ -0,0 +1,80 @@ +import 'package:flutter/material.dart'; +import 'package:mangayomi/utils/global_style.dart'; + +class CustomPopupMenuButton extends StatelessWidget { + final String label; + final String title; + final ValueChanged onSelected; + final T value; + final List list; + final String Function(T) itemText; + const CustomPopupMenuButton({ + super.key, + required this.label, + required this.title, + required this.onSelected, + required this.value, + required this.list, + required this.itemText, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: PopupMenuButton( + popUpAnimationStyle: popupAnimationStyle, + tooltip: "", + offset: Offset.fromDirection(1), + color: Colors.black, + onSelected: onSelected, + itemBuilder: (context) => [ + for (var d in list) + PopupMenuItem( + value: d, + child: Row( + children: [ + Icon( + Icons.check, + color: d == value ? Colors.white : Colors.transparent, + ), + const SizedBox(width: 7), + Text( + itemText(d), + style: const TextStyle(color: Colors.white), + ), + ], + ), + ), + ], + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible( + child: Text( + label, + style: TextStyle( + color: Theme.of( + context, + ).textTheme.bodyLarge!.color!.withValues(alpha: 0.9), + ), + overflow: TextOverflow.ellipsis, + maxLines: 1, + ), + ), + Row( + children: [ + Text(title), + const SizedBox(width: 20), + const Icon(Icons.keyboard_arrow_down_outlined), + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/modules/manga/reader/widgets/custom_value_indicator_shape.dart b/lib/modules/manga/reader/widgets/custom_value_indicator_shape.dart new file mode 100644 index 00000000..ddda1f93 --- /dev/null +++ b/lib/modules/manga/reader/widgets/custom_value_indicator_shape.dart @@ -0,0 +1,62 @@ +import 'package:flutter/material.dart'; + +class CustomValueIndicatorShape extends SliderComponentShape { + final _indicatorShape = const PaddleSliderValueIndicatorShape(); + final bool tranform; + const CustomValueIndicatorShape({this.tranform = false}); + @override + Size getPreferredSize(bool isEnabled, bool isDiscrete) { + return const Size(40, 40); + } + + @override + void paint( + PaintingContext context, + Offset center, { + required Animation activationAnimation, + required Animation enableAnimation, + required bool isDiscrete, + required TextPainter labelPainter, + required RenderBox parentBox, + required SliderThemeData sliderTheme, + required TextDirection textDirection, + required double value, + required double textScaleFactor, + required Size sizeWithOverflow, + }) { + final textSpan = TextSpan( + text: labelPainter.text?.toPlainText(), + style: sliderTheme.valueIndicatorTextStyle, + ); + + final textPainter = TextPainter( + text: textSpan, + textAlign: labelPainter.textAlign, + textDirection: textDirection, + ); + + textPainter.layout(); + + context.canvas.save(); + context.canvas.translate(center.dx, center.dy); + context.canvas.scale(tranform ? -1.0 : 1.0, 1.0); + context.canvas.translate(-center.dx, -center.dy); + + _indicatorShape.paint( + context, + center, + activationAnimation: activationAnimation, + enableAnimation: enableAnimation, + labelPainter: textPainter, + parentBox: parentBox, + sliderTheme: sliderTheme, + value: value, + textScaleFactor: textScaleFactor, + sizeWithOverflow: sizeWithOverflow, + isDiscrete: isDiscrete, + textDirection: textDirection, + ); + + context.canvas.restore(); + } +} diff --git a/lib/modules/manga/reader/widgets/transition_view_paged.dart b/lib/modules/manga/reader/widgets/transition_view_paged.dart index 96abcd4d..57f8bb75 100644 --- a/lib/modules/manga/reader/widgets/transition_view_paged.dart +++ b/lib/modules/manga/reader/widgets/transition_view_paged.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/modules/manga/reader/widgets/chapter_transition_page.dart'; class TransitionViewPaged extends ConsumerWidget { diff --git a/lib/modules/manga/reader/widgets/transition_view_vertical.dart b/lib/modules/manga/reader/widgets/transition_view_vertical.dart index 2ea9f674..2a80e717 100644 --- a/lib/modules/manga/reader/widgets/transition_view_vertical.dart +++ b/lib/modules/manga/reader/widgets/transition_view_vertical.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; import 'package:mangayomi/modules/manga/reader/widgets/chapter_transition_page.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; diff --git a/lib/modules/more/about/about_screen.dart b/lib/modules/more/about/about_screen.dart index c401dfd1..098e3cbd 100644 --- a/lib/modules/more/about/about_screen.dart +++ b/lib/modules/more/about/about_screen.dart @@ -1,12 +1,19 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:mangayomi/eval/model/m_bridge.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/more/about/providers/check_for_update.dart'; import 'package:mangayomi/modules/more/about/providers/get_package_info.dart'; import 'package:mangayomi/modules/widgets/progress_center.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/providers/storage_provider.dart'; +import 'package:path/path.dart' as path; +import 'package:share_plus/share_plus.dart'; import 'package:url_launcher/url_launcher.dart'; class AboutScreen extends ConsumerWidget { @@ -73,6 +80,35 @@ class AboutScreen extends ConsumerWidget { }, title: Text(l10n.check_for_update), ), + ListTile( + onTap: () async { + final storage = StorageProvider(); + final directory = await storage.getDefaultDirectory(); + final file = File( + path.join(directory!.path, 'logs.txt'), + ); + if (await file.exists()) { + if (Platform.isLinux) { + await Clipboard.setData( + ClipboardData(text: file.path), + ); + } + if (context.mounted) { + final box = + context.findRenderObject() as RenderBox?; + Share.shareXFiles( + [XFile(file.path)], + text: "log.txt", + sharePositionOrigin: + box!.localToGlobal(Offset.zero) & box.size, + ); + } + } else { + botToast(l10n.no_app_logs); + } + }, + title: Text(l10n.share_app_logs), + ), // ListTile( // onTap: () {}, // title: const Text("What's news"), diff --git a/lib/modules/more/about/providers/check_for_update.g.dart b/lib/modules/more/about/providers/check_for_update.g.dart index a1f5b632..3fbcfa6b 100644 --- a/lib/modules/more/about/providers/check_for_update.g.dart +++ b/lib/modules/more/about/providers/check_for_update.g.dart @@ -39,24 +39,15 @@ class CheckForUpdateFamily extends Family> { const CheckForUpdateFamily(); /// See also [checkForUpdate]. - CheckForUpdateProvider call({ - BuildContext? context, - bool? manualUpdate, - }) { - return CheckForUpdateProvider( - context: context, - manualUpdate: manualUpdate, - ); + CheckForUpdateProvider call({BuildContext? context, bool? manualUpdate}) { + return CheckForUpdateProvider(context: context, manualUpdate: manualUpdate); } @override CheckForUpdateProvider getProviderOverride( covariant CheckForUpdateProvider provider, ) { - return call( - context: provider.context, - manualUpdate: provider.manualUpdate, - ); + return call(context: provider.context, manualUpdate: provider.manualUpdate); } static const Iterable? _dependencies = null; @@ -77,27 +68,24 @@ class CheckForUpdateFamily extends Family> { /// See also [checkForUpdate]. class CheckForUpdateProvider extends AutoDisposeFutureProvider { /// See also [checkForUpdate]. - CheckForUpdateProvider({ - BuildContext? context, - bool? manualUpdate, - }) : this._internal( - (ref) => checkForUpdate( - ref as CheckForUpdateRef, - context: context, - manualUpdate: manualUpdate, - ), - from: checkForUpdateProvider, - name: r'checkForUpdateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$checkForUpdateHash, - dependencies: CheckForUpdateFamily._dependencies, - allTransitiveDependencies: - CheckForUpdateFamily._allTransitiveDependencies, + CheckForUpdateProvider({BuildContext? context, bool? manualUpdate}) + : this._internal( + (ref) => checkForUpdate( + ref as CheckForUpdateRef, context: context, manualUpdate: manualUpdate, - ); + ), + from: checkForUpdateProvider, + name: r'checkForUpdateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$checkForUpdateHash, + dependencies: CheckForUpdateFamily._dependencies, + allTransitiveDependencies: + CheckForUpdateFamily._allTransitiveDependencies, + context: context, + manualUpdate: manualUpdate, + ); CheckForUpdateProvider._internal( super._createNotifier, { @@ -165,7 +153,8 @@ mixin CheckForUpdateRef on AutoDisposeFutureProviderRef { } class _CheckForUpdateProviderElement - extends AutoDisposeFutureProviderElement with CheckForUpdateRef { + extends AutoDisposeFutureProviderElement + with CheckForUpdateRef { _CheckForUpdateProviderElement(super.provider); @override diff --git a/lib/modules/more/about/providers/download_file_screen.dart b/lib/modules/more/about/providers/download_file_screen.dart index 23b90b0c..7bd504bc 100644 --- a/lib/modules/more/about/providers/download_file_screen.dart +++ b/lib/modules/more/about/providers/download_file_screen.dart @@ -25,9 +25,9 @@ class DownloadFileScreen extends ConsumerStatefulWidget { class _DownloadFileScreenState extends ConsumerState { int _total = 0; int _received = 0; - late http.StreamedResponse _response; + http.StreamedResponse? _response; final List _bytes = []; - late StreamSubscription>? _subscription; + StreamSubscription>? _subscription; @override void dispose() { @@ -131,8 +131,8 @@ class _DownloadFileScreenState extends ConsumerState { return; } _response = await http.Client().send(http.Request('GET', Uri.parse(url))); - _total = _response.contentLength ?? 0; - _subscription = _response.stream.listen((value) { + _total = _response?.contentLength ?? 0; + _subscription = _response?.stream.listen((value) { setState(() { _bytes.addAll(value); _received += value.length; diff --git a/lib/modules/more/categories/providers/isar_providers.g.dart b/lib/modules/more/categories/providers/isar_providers.g.dart index 83069840..b6f818a0 100644 --- a/lib/modules/more/categories/providers/isar_providers.g.dart +++ b/lib/modules/more/categories/providers/isar_providers.g.dart @@ -40,21 +40,15 @@ class GetMangaCategorieStreamFamily extends Family>> { const GetMangaCategorieStreamFamily(); /// See also [getMangaCategorieStream]. - GetMangaCategorieStreamProvider call({ - required ItemType itemType, - }) { - return GetMangaCategorieStreamProvider( - itemType: itemType, - ); + GetMangaCategorieStreamProvider call({required ItemType itemType}) { + return GetMangaCategorieStreamProvider(itemType: itemType); } @override GetMangaCategorieStreamProvider getProviderOverride( covariant GetMangaCategorieStreamProvider provider, ) { - return call( - itemType: provider.itemType, - ); + return call(itemType: provider.itemType); } static const Iterable? _dependencies = null; @@ -76,24 +70,22 @@ class GetMangaCategorieStreamFamily extends Family>> { class GetMangaCategorieStreamProvider extends AutoDisposeStreamProvider> { /// See also [getMangaCategorieStream]. - GetMangaCategorieStreamProvider({ - required ItemType itemType, - }) : this._internal( - (ref) => getMangaCategorieStream( - ref as GetMangaCategorieStreamRef, - itemType: itemType, - ), - from: getMangaCategorieStreamProvider, - name: r'getMangaCategorieStreamProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getMangaCategorieStreamHash, - dependencies: GetMangaCategorieStreamFamily._dependencies, - allTransitiveDependencies: - GetMangaCategorieStreamFamily._allTransitiveDependencies, + GetMangaCategorieStreamProvider({required ItemType itemType}) + : this._internal( + (ref) => getMangaCategorieStream( + ref as GetMangaCategorieStreamRef, itemType: itemType, - ); + ), + from: getMangaCategorieStreamProvider, + name: r'getMangaCategorieStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getMangaCategorieStreamHash, + dependencies: GetMangaCategorieStreamFamily._dependencies, + allTransitiveDependencies: + GetMangaCategorieStreamFamily._allTransitiveDependencies, + itemType: itemType, + ); GetMangaCategorieStreamProvider._internal( super._createNotifier, { @@ -161,5 +153,6 @@ class _GetMangaCategorieStreamProviderElement @override ItemType get itemType => (origin as GetMangaCategorieStreamProvider).itemType; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/data_and_storage/create_backup.dart b/lib/modules/more/data_and_storage/create_backup.dart index a8fe6178..32582fb4 100644 --- a/lib/modules/more/data_and_storage/create_backup.dart +++ b/lib/modules/more/data_and_storage/create_backup.dart @@ -222,6 +222,7 @@ List<(String, int)> _getSettingsList(BuildContext context) { final l10n = context.l10n; return [ (l10n.app_settings, 6), + (l10n.custom_buttons, 10), (l10n.sources_settings, 7), (l10n.include_sensitive_settings, 8), ]; diff --git a/lib/modules/more/data_and_storage/data_and_storage.dart b/lib/modules/more/data_and_storage/data_and_storage.dart index f02a0432..e2cb352f 100644 --- a/lib/modules/more/data_and_storage/data_and_storage.dart +++ b/lib/modules/more/data_and_storage/data_and_storage.dart @@ -39,50 +39,48 @@ class DataAndStorage extends ConsumerWidget { title: Text(l10n.download_location), content: SizedBox( width: context.width(0.8), - child: SuperListView( - shrinkWrap: true, - children: [ - RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: downloadLocationState.$2.isEmpty - ? downloadLocationState.$1 - : downloadLocationState.$2, - groupValue: downloadLocationState.$1, - onChanged: (value) { + child: RadioGroup( + groupValue: downloadLocationState.$2.isEmpty + ? downloadLocationState.$1 + : downloadLocationState.$2, + onChanged: (value) async { + if (value == downloadLocationState.$1) { + ref + .read(downloadLocationStateProvider.notifier) + .set(""); + Navigator.pop(context); + } else { + String? result = await FilePicker.platform + .getDirectoryPath(); + + if (result != null) { ref .read( downloadLocationStateProvider.notifier, ) - .set(""); - Navigator.pop(context); - }, - title: Text(downloadLocationState.$1), - ), - RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: downloadLocationState.$2.isEmpty - ? downloadLocationState.$1 - : downloadLocationState.$2, - groupValue: downloadLocationState.$2, - onChanged: (value) async { - String? result = await FilePicker.platform - .getDirectoryPath(); - - if (result != null) { - ref - .read( - downloadLocationStateProvider.notifier, - ) - .set(result); - } else {} - if (!context.mounted) return; - Navigator.pop(context); - }, - title: Text(l10n.custom_location), - ), - ], + .set(result); + } else {} + if (!context.mounted) return; + Navigator.pop(context); + } + }, + child: SuperListView( + shrinkWrap: true, + children: [ + RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: downloadLocationState.$1, + title: Text(downloadLocationState.$1), + ), + RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: downloadLocationState.$2, + title: Text(l10n.custom_location), + ), + ], + ), ), ), actions: [ @@ -275,24 +273,26 @@ class DataAndStorage extends ConsumerWidget { title: Text(l10n.backup_frequency), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: list.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: index, - groupValue: backupFrequency, - onChanged: (value) { - ref - .read(backupFrequencyStateProvider.notifier) - .set(value!); - Navigator.pop(context); - }, - title: Row(children: [Text(list[index])]), - ); + child: RadioGroup( + groupValue: backupFrequency, + onChanged: (value) { + ref + .read(backupFrequencyStateProvider.notifier) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: list.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: index, + title: Row(children: [Text(list[index])]), + ); + }, + ), ), ), actions: [ diff --git a/lib/modules/more/data_and_storage/providers/auto_backup.dart b/lib/modules/more/data_and_storage/providers/auto_backup.dart index 04a4b83f..f1b106aa 100644 --- a/lib/modules/more/data_and_storage/providers/auto_backup.dart +++ b/lib/modules/more/data_and_storage/providers/auto_backup.dart @@ -26,7 +26,7 @@ class BackupFrequencyOptionsState extends _$BackupFrequencyOptionsState { @override List build() { return isar.settings.getSync(227)!.backupListOptions ?? - [0, 1, 2, 3, 4, 5, 6, 7]; + [0, 1, 2, 3, 4, 5, 6, 7, 10]; } void set(List values) { diff --git a/lib/modules/more/data_and_storage/providers/auto_backup.g.dart b/lib/modules/more/data_and_storage/providers/auto_backup.g.dart index 2e4fe90a..c75ce92f 100644 --- a/lib/modules/more/data_and_storage/providers/auto_backup.g.dart +++ b/lib/modules/more/data_and_storage/providers/auto_backup.g.dart @@ -30,31 +30,34 @@ String _$backupFrequencyStateHash() => @ProviderFor(BackupFrequencyState) final backupFrequencyStateProvider = AutoDisposeNotifierProvider.internal( - BackupFrequencyState.new, - name: r'backupFrequencyStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$backupFrequencyStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + BackupFrequencyState.new, + name: r'backupFrequencyStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$backupFrequencyStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$BackupFrequencyState = AutoDisposeNotifier; String _$backupFrequencyOptionsStateHash() => - r'477541f3b59fe662ea3471400ff62066ea7e2196'; + r'9aa31bef65e0e2f20b306ed17ff058df2f24a635'; /// See also [BackupFrequencyOptionsState]. @ProviderFor(BackupFrequencyOptionsState) -final backupFrequencyOptionsStateProvider = AutoDisposeNotifierProvider< - BackupFrequencyOptionsState, List>.internal( - BackupFrequencyOptionsState.new, - name: r'backupFrequencyOptionsStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$backupFrequencyOptionsStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final backupFrequencyOptionsStateProvider = + AutoDisposeNotifierProvider< + BackupFrequencyOptionsState, + List + >.internal( + BackupFrequencyOptionsState.new, + name: r'backupFrequencyOptionsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$backupFrequencyOptionsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$BackupFrequencyOptionsState = AutoDisposeNotifier>; String _$autoBackupLocationStateHash() => @@ -62,16 +65,19 @@ String _$autoBackupLocationStateHash() => /// See also [AutoBackupLocationState]. @ProviderFor(AutoBackupLocationState) -final autoBackupLocationStateProvider = AutoDisposeNotifierProvider< - AutoBackupLocationState, (String, String)>.internal( - AutoBackupLocationState.new, - name: r'autoBackupLocationStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$autoBackupLocationStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final autoBackupLocationStateProvider = + AutoDisposeNotifierProvider< + AutoBackupLocationState, + (String, String) + >.internal( + AutoBackupLocationState.new, + name: r'autoBackupLocationStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$autoBackupLocationStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$AutoBackupLocationState = AutoDisposeNotifier<(String, String)>; // ignore_for_file: type=lint diff --git a/lib/modules/more/data_and_storage/providers/backup.dart b/lib/modules/more/data_and_storage/providers/backup.dart index 4d8eff07..eb312edd 100644 --- a/lib/modules/more/data_and_storage/providers/backup.dart +++ b/lib/modules/more/data_and_storage/providers/backup.dart @@ -8,6 +8,7 @@ import 'package:mangayomi/eval/model/source_preference.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/category.dart'; import 'package:mangayomi/models/chapter.dart'; +import 'package:mangayomi/models/custom_button.dart'; import 'package:mangayomi/models/download.dart'; import 'package:mangayomi/models/history.dart'; import 'package:mangayomi/models/manga.dart'; @@ -131,6 +132,15 @@ Future doBackUp( .toList(); datas.addAll({"extensions": res}); } + if (list.contains(10)) { + final res = isar.customButtons + .filter() + .idIsNotNull() + .findAllSync() + .map((e) => e.toJson()) + .toList(); + datas.addAll({"customButtons": res}); + } final regExp = RegExp(r'[^a-zA-Z0-9 .()\-\s]'); final name = 'mangayomi_${DateTime.now().toString().replaceAll(regExp, '_').replaceAll(' ', '_')}'; @@ -166,9 +176,13 @@ Future doBackUp( alignment: Alignment.topLeft, child: ElevatedButton( onPressed: () { - Share.shareXFiles([ - XFile(p.join(path, "$name.backup")), - ], text: "$name.backup"); + final box = context.findRenderObject() as RenderBox?; + Share.shareXFiles( + [XFile(p.join(path, "$name.backup"))], + text: "$name.backup", + sharePositionOrigin: + box!.localToGlobal(Offset.zero) & box.size, + ); }, child: Text(context.l10n.share), ), diff --git a/lib/modules/more/data_and_storage/providers/backup.g.dart b/lib/modules/more/data_and_storage/providers/backup.g.dart index 1e5352d5..41b66ba0 100644 --- a/lib/modules/more/data_and_storage/providers/backup.g.dart +++ b/lib/modules/more/data_and_storage/providers/backup.g.dart @@ -6,7 +6,7 @@ part of 'backup.dart'; // RiverpodGenerator // ************************************************************************** -String _$doBackUpHash() => r'ad907e7ff4cd9f05bb3fa2da0fd1a1f1d2c23258'; +String _$doBackUpHash() => r'd16d5b6e5ed2c20988fa2d49842524d70ac0ed0d'; /// Copied from Dart SDK class _SystemHash { @@ -44,17 +44,11 @@ class DoBackUpFamily extends Family> { required String path, required BuildContext? context, }) { - return DoBackUpProvider( - list: list, - path: path, - context: context, - ); + return DoBackUpProvider(list: list, path: path, context: context); } @override - DoBackUpProvider getProviderOverride( - covariant DoBackUpProvider provider, - ) { + DoBackUpProvider getProviderOverride(covariant DoBackUpProvider provider) { return call( list: provider.list, path: provider.path, @@ -85,24 +79,23 @@ class DoBackUpProvider extends AutoDisposeFutureProvider { required String path, required BuildContext? context, }) : this._internal( - (ref) => doBackUp( - ref as DoBackUpRef, - list: list, - path: path, - context: context, - ), - from: doBackUpProvider, - name: r'doBackUpProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$doBackUpHash, - dependencies: DoBackUpFamily._dependencies, - allTransitiveDependencies: DoBackUpFamily._allTransitiveDependencies, - list: list, - path: path, - context: context, - ); + (ref) => doBackUp( + ref as DoBackUpRef, + list: list, + path: path, + context: context, + ), + from: doBackUpProvider, + name: r'doBackUpProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$doBackUpHash, + dependencies: DoBackUpFamily._dependencies, + allTransitiveDependencies: DoBackUpFamily._allTransitiveDependencies, + list: list, + path: path, + context: context, + ); DoBackUpProvider._internal( super._createNotifier, { @@ -121,9 +114,7 @@ class DoBackUpProvider extends AutoDisposeFutureProvider { final BuildContext? context; @override - Override overrideWith( - FutureOr Function(DoBackUpRef provider) create, - ) { + Override overrideWith(FutureOr Function(DoBackUpRef provider) create) { return ProviderOverride( origin: this, override: DoBackUpProvider._internal( @@ -188,5 +179,6 @@ class _DoBackUpProviderElement extends AutoDisposeFutureProviderElement @override BuildContext? get context => (origin as DoBackUpProvider).context; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/data_and_storage/providers/restore.dart b/lib/modules/more/data_and_storage/providers/restore.dart index e193279f..15a12c23 100644 --- a/lib/modules/more/data_and_storage/providers/restore.dart +++ b/lib/modules/more/data_and_storage/providers/restore.dart @@ -9,6 +9,7 @@ import 'package:mangayomi/eval/model/source_preference.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/category.dart'; import 'package:mangayomi/models/chapter.dart'; +import 'package:mangayomi/models/custom_button.dart'; import 'package:mangayomi/models/download.dart'; import 'package:mangayomi/models/update.dart'; import 'package:mangayomi/models/history.dart'; @@ -155,6 +156,9 @@ void restoreBackup(Ref ref, Map backup, {bool full = true}) { final updates = (backup["updates"] as List?) ?.map((e) => Update.fromJson(e)) .toList(); + final customButtons = (backup["customButtons"] as List?) + ?.map((e) => CustomButton.fromJson(e)) + .toList(); isar.writeTxnSync(() { isar.mangas.clearSync(); @@ -245,8 +249,11 @@ void restoreBackup(Ref ref, Map backup, {bool full = true}) { if (settings != null) { isar.settings.putAllSync(settings); } + isar.customButtons.clearSync(); + if (customButtons != null) { + isar.customButtons.putAllSync(customButtons); + } _invalidateCommonState(ref); - ref.read(routerCurrentLocationStateProvider.notifier).refresh(); } }); } catch (e) { @@ -325,6 +332,7 @@ void restoreKotatsuBackup(Ref ref, Archive archive) { categories: [favourite["category_id"]], itemType: ItemType.manga, favorite: true, + sourceId: null, ); isar.mangas.putSync(manga); } @@ -395,6 +403,7 @@ void restoreTachiBkBackup(Ref ref, String path, BackupType bkType) { favorite: true, dateAdded: tempManga.dateAdded * 1000, lastUpdate: tempManga.lastModifiedAt * 1000, + sourceId: null, ); if (bkType == BackupType.neko) { manga.source = "MangaDex"; @@ -474,6 +483,7 @@ void restoreTachiBkBackup(Ref ref, String path, BackupType bkType) { favorite: true, dateAdded: tempAnime.dateAdded * 1000, lastUpdate: tempAnime.lastModifiedAt * 1000, + sourceId: null, ); isar.mangas.putSync(anime); History? history; @@ -532,6 +542,7 @@ void _invalidateCommonState(Ref ref) { ref.invalidate(extensionsRepoStateProvider(ItemType.manga)); ref.invalidate(extensionsRepoStateProvider(ItemType.anime)); ref.invalidate(extensionsRepoStateProvider(ItemType.novel)); + ref.read(routerCurrentLocationStateProvider.notifier).refresh(); } Status _convertStatusFromTachiBk(int idx) { diff --git a/lib/modules/more/data_and_storage/providers/restore.g.dart b/lib/modules/more/data_and_storage/providers/restore.g.dart index 8917a896..ac32ac18 100644 --- a/lib/modules/more/data_and_storage/providers/restore.g.dart +++ b/lib/modules/more/data_and_storage/providers/restore.g.dart @@ -43,20 +43,12 @@ class DoRestoreFamily extends Family { required String path, required BuildContext context, }) { - return DoRestoreProvider( - path: path, - context: context, - ); + return DoRestoreProvider(path: path, context: context); } @override - DoRestoreProvider getProviderOverride( - covariant DoRestoreProvider provider, - ) { - return call( - path: provider.path, - context: provider.context, - ); + DoRestoreProvider getProviderOverride(covariant DoRestoreProvider provider) { + return call(path: provider.path, context: provider.context); } static const Iterable? _dependencies = null; @@ -77,26 +69,19 @@ class DoRestoreFamily extends Family { /// See also [doRestore]. class DoRestoreProvider extends AutoDisposeProvider { /// See also [doRestore]. - DoRestoreProvider({ - required String path, - required BuildContext context, - }) : this._internal( - (ref) => doRestore( - ref as DoRestoreRef, - path: path, - context: context, - ), - from: doRestoreProvider, - name: r'doRestoreProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$doRestoreHash, - dependencies: DoRestoreFamily._dependencies, - allTransitiveDependencies: DoRestoreFamily._allTransitiveDependencies, - path: path, - context: context, - ); + DoRestoreProvider({required String path, required BuildContext context}) + : this._internal( + (ref) => doRestore(ref as DoRestoreRef, path: path, context: context), + from: doRestoreProvider, + name: r'doRestoreProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$doRestoreHash, + dependencies: DoRestoreFamily._dependencies, + allTransitiveDependencies: DoRestoreFamily._allTransitiveDependencies, + path: path, + context: context, + ); DoRestoreProvider._internal( super._createNotifier, { @@ -113,9 +98,7 @@ class DoRestoreProvider extends AutoDisposeProvider { final BuildContext context; @override - Override overrideWith( - void Function(DoRestoreRef provider) create, - ) { + Override overrideWith(void Function(DoRestoreRef provider) create) { return ProviderOverride( origin: this, override: DoRestoreProvider._internal( @@ -173,7 +156,7 @@ class _DoRestoreProviderElement extends AutoDisposeProviderElement BuildContext get context => (origin as DoRestoreProvider).context; } -String _$restoreBackupHash() => r'2f440cfc5359e15bfd3887d27b38ecaf881404c6'; +String _$restoreBackupHash() => r'adc705e1e65dedcc919a525d7bd14f6451620c43'; /// See also [restoreBackup]. @ProviderFor(restoreBackup) @@ -185,24 +168,15 @@ class RestoreBackupFamily extends Family { const RestoreBackupFamily(); /// See also [restoreBackup]. - RestoreBackupProvider call( - Map backup, { - bool full = true, - }) { - return RestoreBackupProvider( - backup, - full: full, - ); + RestoreBackupProvider call(Map backup, {bool full = true}) { + return RestoreBackupProvider(backup, full: full); } @override RestoreBackupProvider getProviderOverride( covariant RestoreBackupProvider provider, ) { - return call( - provider.backup, - full: provider.full, - ); + return call(provider.backup, full: provider.full); } static const Iterable? _dependencies = null; @@ -223,27 +197,20 @@ class RestoreBackupFamily extends Family { /// See also [restoreBackup]. class RestoreBackupProvider extends AutoDisposeProvider { /// See also [restoreBackup]. - RestoreBackupProvider( - Map backup, { - bool full = true, - }) : this._internal( - (ref) => restoreBackup( - ref as RestoreBackupRef, - backup, - full: full, - ), - from: restoreBackupProvider, - name: r'restoreBackupProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$restoreBackupHash, - dependencies: RestoreBackupFamily._dependencies, - allTransitiveDependencies: - RestoreBackupFamily._allTransitiveDependencies, - backup: backup, - full: full, - ); + RestoreBackupProvider(Map backup, {bool full = true}) + : this._internal( + (ref) => restoreBackup(ref as RestoreBackupRef, backup, full: full), + from: restoreBackupProvider, + name: r'restoreBackupProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$restoreBackupHash, + dependencies: RestoreBackupFamily._dependencies, + allTransitiveDependencies: + RestoreBackupFamily._allTransitiveDependencies, + backup: backup, + full: full, + ); RestoreBackupProvider._internal( super._createNotifier, { @@ -260,9 +227,7 @@ class RestoreBackupProvider extends AutoDisposeProvider { final bool full; @override - Override overrideWith( - void Function(RestoreBackupRef provider) create, - ) { + Override overrideWith(void Function(RestoreBackupRef provider) create) { return ProviderOverride( origin: this, override: RestoreBackupProvider._internal( @@ -321,7 +286,7 @@ class _RestoreBackupProviderElement extends AutoDisposeProviderElement } String _$restoreKotatsuBackupHash() => - r'e927f6a196a0349285fecbd84f30c2a9125998b2'; + r'4b43cb1719527b3030b9966e5ef662c29435425d'; /// See also [restoreKotatsuBackup]. @ProviderFor(restoreKotatsuBackup) @@ -333,21 +298,15 @@ class RestoreKotatsuBackupFamily extends Family { const RestoreKotatsuBackupFamily(); /// See also [restoreKotatsuBackup]. - RestoreKotatsuBackupProvider call( - Archive archive, - ) { - return RestoreKotatsuBackupProvider( - archive, - ); + RestoreKotatsuBackupProvider call(Archive archive) { + return RestoreKotatsuBackupProvider(archive); } @override RestoreKotatsuBackupProvider getProviderOverride( covariant RestoreKotatsuBackupProvider provider, ) { - return call( - provider.archive, - ); + return call(provider.archive); } static const Iterable? _dependencies = null; @@ -368,24 +327,19 @@ class RestoreKotatsuBackupFamily extends Family { /// See also [restoreKotatsuBackup]. class RestoreKotatsuBackupProvider extends AutoDisposeProvider { /// See also [restoreKotatsuBackup]. - RestoreKotatsuBackupProvider( - Archive archive, - ) : this._internal( - (ref) => restoreKotatsuBackup( - ref as RestoreKotatsuBackupRef, - archive, - ), - from: restoreKotatsuBackupProvider, - name: r'restoreKotatsuBackupProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$restoreKotatsuBackupHash, - dependencies: RestoreKotatsuBackupFamily._dependencies, - allTransitiveDependencies: - RestoreKotatsuBackupFamily._allTransitiveDependencies, - archive: archive, - ); + RestoreKotatsuBackupProvider(Archive archive) + : this._internal( + (ref) => restoreKotatsuBackup(ref as RestoreKotatsuBackupRef, archive), + from: restoreKotatsuBackupProvider, + name: r'restoreKotatsuBackupProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$restoreKotatsuBackupHash, + dependencies: RestoreKotatsuBackupFamily._dependencies, + allTransitiveDependencies: + RestoreKotatsuBackupFamily._allTransitiveDependencies, + archive: archive, + ); RestoreKotatsuBackupProvider._internal( super._createNotifier, { @@ -444,7 +398,8 @@ mixin RestoreKotatsuBackupRef on AutoDisposeProviderRef { } class _RestoreKotatsuBackupProviderElement - extends AutoDisposeProviderElement with RestoreKotatsuBackupRef { + extends AutoDisposeProviderElement + with RestoreKotatsuBackupRef { _RestoreKotatsuBackupProviderElement(super.provider); @override @@ -452,7 +407,7 @@ class _RestoreKotatsuBackupProviderElement } String _$restoreTachiBkBackupHash() => - r'ae971c2630393df773eb1d64214b4daefb080b95'; + r'54434eaa9dc875d03ffb1dcf62ad2d7971649d61'; /// See also [restoreTachiBkBackup]. @ProviderFor(restoreTachiBkBackup) @@ -464,24 +419,15 @@ class RestoreTachiBkBackupFamily extends Family { const RestoreTachiBkBackupFamily(); /// See also [restoreTachiBkBackup]. - RestoreTachiBkBackupProvider call( - String path, - BackupType bkType, - ) { - return RestoreTachiBkBackupProvider( - path, - bkType, - ); + RestoreTachiBkBackupProvider call(String path, BackupType bkType) { + return RestoreTachiBkBackupProvider(path, bkType); } @override RestoreTachiBkBackupProvider getProviderOverride( covariant RestoreTachiBkBackupProvider provider, ) { - return call( - provider.path, - provider.bkType, - ); + return call(provider.path, provider.bkType); } static const Iterable? _dependencies = null; @@ -502,27 +448,21 @@ class RestoreTachiBkBackupFamily extends Family { /// See also [restoreTachiBkBackup]. class RestoreTachiBkBackupProvider extends AutoDisposeProvider { /// See also [restoreTachiBkBackup]. - RestoreTachiBkBackupProvider( - String path, - BackupType bkType, - ) : this._internal( - (ref) => restoreTachiBkBackup( - ref as RestoreTachiBkBackupRef, - path, - bkType, - ), - from: restoreTachiBkBackupProvider, - name: r'restoreTachiBkBackupProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$restoreTachiBkBackupHash, - dependencies: RestoreTachiBkBackupFamily._dependencies, - allTransitiveDependencies: - RestoreTachiBkBackupFamily._allTransitiveDependencies, - path: path, - bkType: bkType, - ); + RestoreTachiBkBackupProvider(String path, BackupType bkType) + : this._internal( + (ref) => + restoreTachiBkBackup(ref as RestoreTachiBkBackupRef, path, bkType), + from: restoreTachiBkBackupProvider, + name: r'restoreTachiBkBackupProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$restoreTachiBkBackupHash, + dependencies: RestoreTachiBkBackupFamily._dependencies, + allTransitiveDependencies: + RestoreTachiBkBackupFamily._allTransitiveDependencies, + path: path, + bkType: bkType, + ); RestoreTachiBkBackupProvider._internal( super._createNotifier, { @@ -590,7 +530,8 @@ mixin RestoreTachiBkBackupRef on AutoDisposeProviderRef { } class _RestoreTachiBkBackupProviderElement - extends AutoDisposeProviderElement with RestoreTachiBkBackupRef { + extends AutoDisposeProviderElement + with RestoreTachiBkBackupRef { _RestoreTachiBkBackupProviderElement(super.provider); @override @@ -598,5 +539,6 @@ class _RestoreTachiBkBackupProviderElement @override BackupType get bkType => (origin as RestoreTachiBkBackupProvider).bkType; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/data_and_storage/providers/storage_usage.g.dart b/lib/modules/more/data_and_storage/providers/storage_usage.g.dart index d8aecde6..3b83d55b 100644 --- a/lib/modules/more/data_and_storage/providers/storage_usage.g.dart +++ b/lib/modules/more/data_and_storage/providers/storage_usage.g.dart @@ -13,14 +13,14 @@ String _$totalChapterCacheSizeStateHash() => @ProviderFor(TotalChapterCacheSizeState) final totalChapterCacheSizeStateProvider = AutoDisposeNotifierProvider.internal( - TotalChapterCacheSizeState.new, - name: r'totalChapterCacheSizeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$totalChapterCacheSizeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + TotalChapterCacheSizeState.new, + name: r'totalChapterCacheSizeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$totalChapterCacheSizeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$TotalChapterCacheSizeState = AutoDisposeNotifier; String _$clearChapterCacheOnAppLaunchStateHash() => @@ -28,16 +28,19 @@ String _$clearChapterCacheOnAppLaunchStateHash() => /// See also [ClearChapterCacheOnAppLaunchState]. @ProviderFor(ClearChapterCacheOnAppLaunchState) -final clearChapterCacheOnAppLaunchStateProvider = AutoDisposeNotifierProvider< - ClearChapterCacheOnAppLaunchState, bool>.internal( - ClearChapterCacheOnAppLaunchState.new, - name: r'clearChapterCacheOnAppLaunchStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$clearChapterCacheOnAppLaunchStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final clearChapterCacheOnAppLaunchStateProvider = + AutoDisposeNotifierProvider< + ClearChapterCacheOnAppLaunchState, + bool + >.internal( + ClearChapterCacheOnAppLaunchState.new, + name: r'clearChapterCacheOnAppLaunchStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$clearChapterCacheOnAppLaunchStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$ClearChapterCacheOnAppLaunchState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/more_screen.dart b/lib/modules/more/more_screen.dart index 34227e00..6be50fa1 100644 --- a/lib/modules/more/more_screen.dart +++ b/lib/modules/more/more_screen.dart @@ -1,15 +1,24 @@ import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; +import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; +import 'package:mangayomi/modules/more/widgets/downloaded_only_widget.dart'; import 'package:mangayomi/modules/more/widgets/incognito_mode_widget.dart'; import 'package:mangayomi/modules/more/widgets/list_tile_widget.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; -class MoreScreen extends StatelessWidget { +class MoreScreen extends ConsumerStatefulWidget { const MoreScreen({super.key}); + @override + ConsumerState createState() => MoreScreenState(); +} + +class MoreScreenState extends ConsumerState { @override Widget build(BuildContext context) { final l10n = l10nLocalizations(context); + final hiddenItems = ref.watch(hideItemsStateProvider); return Scaffold( body: SingleChildScrollView( child: Column( @@ -37,8 +46,17 @@ class MoreScreen extends StatelessWidget { // onChanged: (value) {}, // ), // ), + const DownloadedOnlyWidget(), const IncognitoModeWidget(), const Divider(), + if (hiddenItems.contains("/history")) + ListTileWidget( + onTap: () { + context.push('/history'); + }, + icon: Icons.history, + title: l10n!.history, + ), ListTileWidget( onTap: () { context.push('/downloadQueue'); @@ -60,6 +78,13 @@ class MoreScreen extends StatelessWidget { icon: Icons.query_stats_outlined, title: l10n.statistics, ), + ListTileWidget( + onTap: () { + context.push('/calendarScreen'); + }, + icon: Icons.calendar_month_outlined, + title: l10n.calendar, + ), ListTileWidget( onTap: () { context.push('/dataAndStorage'); diff --git a/lib/modules/more/providers/algorithm_weights_state_provider.dart b/lib/modules/more/providers/algorithm_weights_state_provider.dart new file mode 100644 index 00000000..cfe4b2ba --- /dev/null +++ b/lib/modules/more/providers/algorithm_weights_state_provider.dart @@ -0,0 +1,35 @@ +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +part 'algorithm_weights_state_provider.g.dart'; + +@riverpod +class AlgorithmWeightsState extends _$AlgorithmWeightsState { + @override + AlgorithmWeights build() { + return isar.settings.getSync(227)!.algorithmWeights ?? AlgorithmWeights(); + } + + void set(AlgorithmWeights value) { + final settings = isar.settings.getSync(227)!; + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings + ..algorithmWeights = state + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } + + void setWeights({int? genre, int? setting, int? synopsis, int? theme}) { + set( + AlgorithmWeights( + genre: genre ?? state.genre, + setting: setting ?? state.setting, + synopsis: synopsis ?? state.synopsis, + theme: theme ?? state.theme, + ), + ); + } +} diff --git a/lib/modules/more/providers/algorithm_weights_state_provider.g.dart b/lib/modules/more/providers/algorithm_weights_state_provider.g.dart new file mode 100644 index 00000000..7eb3187e --- /dev/null +++ b/lib/modules/more/providers/algorithm_weights_state_provider.g.dart @@ -0,0 +1,30 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'algorithm_weights_state_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$algorithmWeightsStateHash() => + r'5c20cb9b195a73161b485e082ad024b138c3da9c'; + +/// See also [AlgorithmWeightsState]. +@ProviderFor(AlgorithmWeightsState) +final algorithmWeightsStateProvider = + AutoDisposeNotifierProvider< + AlgorithmWeightsState, + AlgorithmWeights + >.internal( + AlgorithmWeightsState.new, + name: r'algorithmWeightsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$algorithmWeightsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$AlgorithmWeightsState = AutoDisposeNotifier; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/providers/downloaded_only_state_provider.dart b/lib/modules/more/providers/downloaded_only_state_provider.dart new file mode 100644 index 00000000..92760ca4 --- /dev/null +++ b/lib/modules/more/providers/downloaded_only_state_provider.dart @@ -0,0 +1,24 @@ +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +part 'downloaded_only_state_provider.g.dart'; + +@riverpod +class DownloadedOnlyState extends _$DownloadedOnlyState { + @override + bool build() { + return isar.settings.getSync(227)!.downloadedOnlyMode ?? false; + } + + void setDownloadedOnly(bool value) { + final settings = isar.settings.getSync(227)!; + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings + ..downloadedOnlyMode = state + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} diff --git a/lib/modules/more/providers/downloaded_only_state_provider.g.dart b/lib/modules/more/providers/downloaded_only_state_provider.g.dart new file mode 100644 index 00000000..25102793 --- /dev/null +++ b/lib/modules/more/providers/downloaded_only_state_provider.g.dart @@ -0,0 +1,27 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'downloaded_only_state_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$downloadedOnlyStateHash() => + r'09c451617c435ca59554546f5d3090d20c961bfe'; + +/// See also [DownloadedOnlyState]. +@ProviderFor(DownloadedOnlyState) +final downloadedOnlyStateProvider = + AutoDisposeNotifierProvider.internal( + DownloadedOnlyState.new, + name: r'downloadedOnlyStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$downloadedOnlyStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$DownloadedOnlyState = AutoDisposeNotifier; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/providers/incognito_mode_state_provider.dart b/lib/modules/more/providers/incognito_mode_state_provider.dart index 87cbdd80..3bf04479 100644 --- a/lib/modules/more/providers/incognito_mode_state_provider.dart +++ b/lib/modules/more/providers/incognito_mode_state_provider.dart @@ -7,7 +7,7 @@ part 'incognito_mode_state_provider.g.dart'; class IncognitoModeState extends _$IncognitoModeState { @override bool build() { - return isar.settings.getSync(227)!.incognitoMode!; + return isar.settings.getSync(227)!.incognitoMode ?? false; } void setIncognitoMode(bool value) { diff --git a/lib/modules/more/providers/incognito_mode_state_provider.g.dart b/lib/modules/more/providers/incognito_mode_state_provider.g.dart index c5e77e99..65fb08a7 100644 --- a/lib/modules/more/providers/incognito_mode_state_provider.g.dart +++ b/lib/modules/more/providers/incognito_mode_state_provider.g.dart @@ -7,20 +7,20 @@ part of 'incognito_mode_state_provider.dart'; // ************************************************************************** String _$incognitoModeStateHash() => - r'149c4dcbc434fb6efc883e196392320bdc7c0821'; + r'3858256a820eef632d3df57533f2aad14f555b22'; /// See also [IncognitoModeState]. @ProviderFor(IncognitoModeState) final incognitoModeStateProvider = AutoDisposeNotifierProvider.internal( - IncognitoModeState.new, - name: r'incognitoModeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$incognitoModeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + IncognitoModeState.new, + name: r'incognitoModeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$incognitoModeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$IncognitoModeState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/appearance/appearance_screen.dart b/lib/modules/more/settings/appearance/appearance_screen.dart index ab0e009f..c9712e31 100644 --- a/lib/modules/more/settings/appearance/appearance_screen.dart +++ b/lib/modules/more/settings/appearance/appearance_screen.dart @@ -146,25 +146,29 @@ class AppearanceScreen extends ConsumerWidget { title: Text(l10n.app_language), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: AppLocalizations.supportedLocales.length, - itemBuilder: (context, index) { - final locale = AppLocalizations.supportedLocales[index]; - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: locale, - groupValue: l10nLocale, - onChanged: (value) { - ref - .read(l10nLocaleStateProvider.notifier) - .setLocale(locale); - Navigator.pop(context); - }, - title: Text(completeLanguageName(locale.toLanguageTag())), - ); + child: RadioGroup( + groupValue: l10nLocale, + onChanged: (value) { + ref + .read(l10nLocaleStateProvider.notifier) + .setLocale(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: AppLocalizations.supportedLocales.length, + itemBuilder: (context, index) { + final locale = AppLocalizations.supportedLocales[index]; + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: locale, + title: Text( + completeLanguageName(locale.toLanguageTag()), + ), + ); + }, + ), ), ), actions: [ @@ -276,28 +280,29 @@ class AppearanceScreen extends ConsumerWidget { slivers: [ SliverPadding( padding: const EdgeInsets.all(0), - sliver: SuperSliverList.builder( - itemCount: values.length, - itemBuilder: (context, index) { - final value = values[index]; - return RadioListTile( - dense: true, - contentPadding: - const EdgeInsets.all(0), - value: value.value().fontFamily, - groupValue: appFontFamily, - onChanged: (value) { - ref - .read( - appFontFamilyProvider - .notifier, - ) - .set(value); - Navigator.pop(context); - }, - title: Text(value.key), - ); + sliver: RadioGroup( + groupValue: appFontFamily, + onChanged: (value) { + ref + .read( + appFontFamilyProvider.notifier, + ) + .set(value); + Navigator.pop(context); }, + child: SuperSliverList.builder( + itemCount: values.length, + itemBuilder: (context, index) { + final value = values[index]; + return RadioListTile( + dense: true, + contentPadding: + const EdgeInsets.all(0), + value: value.value().fontFamily, + title: Text(value.key), + ); + }, + ), ), ), ], @@ -364,28 +369,30 @@ class AppearanceScreen extends ConsumerWidget { title: Text(l10n.relative_timestamp), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: relativeTimestampsList(context).length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: index, - groupValue: relativeTimestamps, - onChanged: (value) { - ref - .read(relativeTimesTampsStateProvider.notifier) - .set(value!); - Navigator.pop(context); - }, - title: Row( - children: [ - Text(relativeTimestampsList(context)[index]), - ], - ), - ); + child: RadioGroup( + groupValue: relativeTimestamps, + onChanged: (value) { + ref + .read(relativeTimesTampsStateProvider.notifier) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: relativeTimestampsList(context).length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: index, + title: Row( + children: [ + Text(relativeTimestampsList(context)[index]), + ], + ), + ); + }, + ), ), ), actions: [ @@ -431,28 +438,30 @@ class AppearanceScreen extends ConsumerWidget { title: Text(l10n.date_format), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: dateFormatsList.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: dateFormatsList[index], - groupValue: dateFormatState, - onChanged: (value) { - ref.read(dateFormatStateProvider.notifier).set(value!); - Navigator.pop(context); - }, - title: Row( - children: [ - Text( - "${dateFormatsList[index]} (${dateFormat(context: context, DateTime.now().millisecondsSinceEpoch.toString(), useRelativeTimesTamps: false, dateFormat: dateFormatsList[index], ref: ref)})", - ), - ], - ), - ); + child: RadioGroup( + groupValue: dateFormatState, + onChanged: (value) { + ref.read(dateFormatStateProvider.notifier).set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: dateFormatsList.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: dateFormatsList[index], + title: Row( + children: [ + Text( + "${dateFormatsList[index]} (${dateFormat(context: context, DateTime.now().millisecondsSinceEpoch.toString(), useRelativeTimesTamps: false, dateFormat: dateFormatsList[index], ref: ref)})", + ), + ], + ), + ); + }, + ), ), ), actions: [ diff --git a/lib/modules/more/settings/appearance/custom_navigation_settings.dart b/lib/modules/more/settings/appearance/custom_navigation_settings.dart index 99718163..dfd3ced3 100644 --- a/lib/modules/more/settings/appearance/custom_navigation_settings.dart +++ b/lib/modules/more/settings/appearance/custom_navigation_settings.dart @@ -61,7 +61,6 @@ class _CustomNavigationSettingsState [ "/more", "/browse", - "/history", ].any((element) => element == navigation) ? null : (value) { diff --git a/lib/modules/more/settings/appearance/providers/app_font_family.g.dart b/lib/modules/more/settings/appearance/providers/app_font_family.g.dart index ae4f26da..1dfc605b 100644 --- a/lib/modules/more/settings/appearance/providers/app_font_family.g.dart +++ b/lib/modules/more/settings/appearance/providers/app_font_family.g.dart @@ -12,14 +12,14 @@ String _$appFontFamilyHash() => r'edc7d34d3b1aa149fdbd95fa0b07d9746b7279b1'; @ProviderFor(AppFontFamily) final appFontFamilyProvider = AutoDisposeNotifierProvider.internal( - AppFontFamily.new, - name: r'appFontFamilyProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$appFontFamilyHash, - dependencies: null, - allTransitiveDependencies: null, -); + AppFontFamily.new, + name: r'appFontFamilyProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$appFontFamilyHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$AppFontFamily = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/appearance/providers/blend_level_state_provider.g.dart b/lib/modules/more/settings/appearance/providers/blend_level_state_provider.g.dart index e81f2f27..ecba2e20 100644 --- a/lib/modules/more/settings/appearance/providers/blend_level_state_provider.g.dart +++ b/lib/modules/more/settings/appearance/providers/blend_level_state_provider.g.dart @@ -12,14 +12,14 @@ String _$blendLevelStateHash() => r'78024b3432868c3b901419bbd919c3f84a4cf713'; @ProviderFor(BlendLevelState) final blendLevelStateProvider = AutoDisposeNotifierProvider.internal( - BlendLevelState.new, - name: r'blendLevelStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$blendLevelStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + BlendLevelState.new, + name: r'blendLevelStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$blendLevelStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$BlendLevelState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/appearance/providers/date_format_state_provider.g.dart b/lib/modules/more/settings/appearance/providers/date_format_state_provider.g.dart index 10bcc13e..2b54cb10 100644 --- a/lib/modules/more/settings/appearance/providers/date_format_state_provider.g.dart +++ b/lib/modules/more/settings/appearance/providers/date_format_state_provider.g.dart @@ -12,14 +12,14 @@ String _$dateFormatStateHash() => r'9b11f72b8fa535b74873365618089dfca957e445'; @ProviderFor(DateFormatState) final dateFormatStateProvider = AutoDisposeNotifierProvider.internal( - DateFormatState.new, - name: r'dateFormatStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$dateFormatStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + DateFormatState.new, + name: r'dateFormatStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$dateFormatStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$DateFormatState = AutoDisposeNotifier; String _$relativeTimesTampsStateHash() => @@ -29,14 +29,14 @@ String _$relativeTimesTampsStateHash() => @ProviderFor(RelativeTimesTampsState) final relativeTimesTampsStateProvider = AutoDisposeNotifierProvider.internal( - RelativeTimesTampsState.new, - name: r'relativeTimesTampsStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$relativeTimesTampsStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + RelativeTimesTampsState.new, + name: r'relativeTimesTampsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$relativeTimesTampsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$RelativeTimesTampsState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/appearance/providers/flex_scheme_color_state_provider.g.dart b/lib/modules/more/settings/appearance/providers/flex_scheme_color_state_provider.g.dart index 997d1b1b..8f587b6c 100644 --- a/lib/modules/more/settings/appearance/providers/flex_scheme_color_state_provider.g.dart +++ b/lib/modules/more/settings/appearance/providers/flex_scheme_color_state_provider.g.dart @@ -13,14 +13,14 @@ String _$flexSchemeColorStateHash() => @ProviderFor(FlexSchemeColorState) final flexSchemeColorStateProvider = AutoDisposeNotifierProvider.internal( - FlexSchemeColorState.new, - name: r'flexSchemeColorStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$flexSchemeColorStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + FlexSchemeColorState.new, + name: r'flexSchemeColorStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$flexSchemeColorStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$FlexSchemeColorState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/appearance/providers/pure_black_dark_mode_state_provider.g.dart b/lib/modules/more/settings/appearance/providers/pure_black_dark_mode_state_provider.g.dart index 0ff37ab7..b70282e6 100644 --- a/lib/modules/more/settings/appearance/providers/pure_black_dark_mode_state_provider.g.dart +++ b/lib/modules/more/settings/appearance/providers/pure_black_dark_mode_state_provider.g.dart @@ -13,14 +13,14 @@ String _$pureBlackDarkModeStateHash() => @ProviderFor(PureBlackDarkModeState) final pureBlackDarkModeStateProvider = AutoDisposeNotifierProvider.internal( - PureBlackDarkModeState.new, - name: r'pureBlackDarkModeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$pureBlackDarkModeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + PureBlackDarkModeState.new, + name: r'pureBlackDarkModeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$pureBlackDarkModeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$PureBlackDarkModeState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/appearance/providers/theme_mode_state_provider.dart b/lib/modules/more/settings/appearance/providers/theme_mode_state_provider.dart index 6b661af3..bcbdfabf 100644 --- a/lib/modules/more/settings/appearance/providers/theme_mode_state_provider.dart +++ b/lib/modules/more/settings/appearance/providers/theme_mode_state_provider.dart @@ -1,5 +1,3 @@ -import 'dart:ui'; - import 'package:flutter/widgets.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/settings.dart'; diff --git a/lib/modules/more/settings/appearance/providers/theme_mode_state_provider.g.dart b/lib/modules/more/settings/appearance/providers/theme_mode_state_provider.g.dart index 8241fae7..eb0a6767 100644 --- a/lib/modules/more/settings/appearance/providers/theme_mode_state_provider.g.dart +++ b/lib/modules/more/settings/appearance/providers/theme_mode_state_provider.g.dart @@ -12,14 +12,14 @@ String _$themeModeStateHash() => r'f1a29fab544a04b3f1d9c269e08f5b83ec51e0c3'; @ProviderFor(ThemeModeState) final themeModeStateProvider = AutoDisposeNotifierProvider.internal( - ThemeModeState.new, - name: r'themeModeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$themeModeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + ThemeModeState.new, + name: r'themeModeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$themeModeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$ThemeModeState = AutoDisposeNotifier; String _$followSystemThemeStateHash() => @@ -29,14 +29,14 @@ String _$followSystemThemeStateHash() => @ProviderFor(FollowSystemThemeState) final followSystemThemeStateProvider = AutoDisposeNotifierProvider.internal( - FollowSystemThemeState.new, - name: r'followSystemThemeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$followSystemThemeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + FollowSystemThemeState.new, + name: r'followSystemThemeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$followSystemThemeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$FollowSystemThemeState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/browse/browse_screen.dart b/lib/modules/more/settings/browse/browse_screen.dart index cc9104ea..10dd7d26 100644 --- a/lib/modules/more/settings/browse/browse_screen.dart +++ b/lib/modules/more/settings/browse/browse_screen.dart @@ -10,16 +10,23 @@ import 'package:mangayomi/models/history.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/source.dart'; import 'package:mangayomi/models/update.dart'; +import 'package:mangayomi/modules/more/settings/player/custom_button_screen.dart'; import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; +import 'package:mangayomi/utils/log/logger.dart'; +import 'package:url_launcher/url_launcher.dart'; class BrowseSScreen extends ConsumerWidget { + static const apkUrl = + "https://github.com/Schnitzel5/ApkBridge/releases/latest"; + const BrowseSScreen({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { + final androidProxyServer = ref.watch(androidProxyServerStateProvider); final onlyIncludePinnedSource = ref.watch( onlyIncludePinnedSourceStateProvider, ); @@ -51,6 +58,37 @@ class BrowseSScreen extends ConsumerWidget { ], ), ), + ListTile( + onTap: () => _showAndroidProxyServerDialog( + context, + ref, + androidProxyServer, + ), + title: Text(l10n.android_proxy_server), + subtitle: Text( + androidProxyServer, + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + trailing: OutlinedButton.icon( + onPressed: () async { + if (!await launchUrl( + Uri.parse(apkUrl), + mode: LaunchMode.externalApplication, + )) { + AppLogger.log( + 'Could not launch $apkUrl', + logLevel: LogLevel.error, + ); + botToast('Could not launch $apkUrl'); + } + }, + label: Text(l10n.get_apk_bridge), + icon: const Icon(Icons.download_outlined), + ), + ), ListTile( onTap: () { context.push( @@ -146,6 +184,17 @@ class BrowseSScreen extends ConsumerWidget { ), ), ), + ListTile( + onTap: () => _showClearLibraryDialog(context, ref), + title: Text(l10n.clear_library), + subtitle: Text( + l10n.clear_library_desc, + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + ), if (checkForExtensionUpdates) SwitchListTile( value: autoUpdateExtensions, @@ -242,6 +291,82 @@ void _showClearAllSourcesDialog(BuildContext context, dynamic l10n) { ); } +void _showAndroidProxyServerDialog( + BuildContext context, + WidgetRef ref, + String proxyServer, +) { + final serverController = TextEditingController(text: proxyServer); + String server = proxyServer; + showDialog( + context: context, + builder: (context) => StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: Text( + context.l10n.android_proxy_server, + style: const TextStyle(fontSize: 30), + ), + content: SizedBox( + width: context.width(0.8), + height: context.height(0.3), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: TextFormField( + controller: serverController, + autofocus: true, + onChanged: (value) => setState(() { + server = value; + }), + decoration: InputDecoration( + hintText: + "Server IP (e.g., 10.0.0.5 or https://example.com)", + filled: false, + contentPadding: const EdgeInsets.all(12), + enabledBorder: OutlineInputBorder( + borderSide: const BorderSide(width: 0.4), + borderRadius: BorderRadius.circular(5), + ), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide(), + borderRadius: BorderRadius.circular(5), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(), + ), + ), + ), + ), + const SizedBox(height: 20), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: SizedBox( + width: context.width(1), + child: ElevatedButton( + onPressed: () { + ref + .read(androidProxyServerStateProvider.notifier) + .set(server); + Navigator.pop(context); + }, + child: Text(context.l10n.dialog_confirm), + ), + ), + ), + ], + ), + ), + ); + }, + ), + ); +} + void _showCleanNonLibraryDialog(BuildContext context, dynamic l10n) { showDialog( context: context, @@ -332,3 +457,146 @@ void _showCleanNonLibraryDialog(BuildContext context, dynamic l10n) { }, ); } + +void _showClearLibraryDialog(BuildContext context, WidgetRef ref) { + final itemTypes = ItemType.values.map((e) => e.name).toList(); + bool isInputError = true; + final textController = TextEditingController(); + showDialog( + context: context, + builder: (context) { + return StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: Column( + children: [ + Text(context.l10n.clear_library), + Text( + context.l10n.clear_library_input, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + ], + ), + content: SizedBox( + width: context.width(0.8), + child: CustomTextFormField( + controller: textController, + context: context, + isMissing: isInputError, + val: (text) => setState(() { + isInputError = + text.trim().isEmpty || + text.split(",").any((e) => !itemTypes.contains(e)); + }), + missing: (_) {}, + ), + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text( + context.l10n.cancel, + style: TextStyle(color: context.primaryColor), + ), + ), + TextButton( + onPressed: isInputError + ? null + : () { + final mangasList = isar.mangas + .filter() + .anyOf( + textController.text + .split(",") + .map( + (e) => switch (e) { + "manga" => ItemType.manga, + "anime" => ItemType.anime, + "novel" => ItemType.novel, + _ => null, + }, + ), + (q, element) => element == null + ? q.idIsNull() + : q.itemTypeEqualTo(element), + ) + .findAllSync(); + final provider = ref.read( + synchingProvider(syncId: 1).notifier, + ); + isar.writeTxnSync(() { + for (var manga in mangasList) { + final histories = isar.historys + .filter() + .mangaIdEqualTo(manga.id) + .findAllSync(); + for (var history in histories) { + isar.historys.deleteSync(history.id!); + provider.addChangedPart( + ActionType.removeHistory, + history.id, + "{}", + false, + ); + } + + for (var chapter in manga.chapters) { + final updates = isar.updates + .filter() + .mangaIdEqualTo(chapter.mangaId) + .chapterNameEqualTo(chapter.name) + .findAllSync(); + for (var update in updates) { + isar.updates.deleteSync(update.id!); + provider.addChangedPart( + ActionType.removeUpdate, + update.id, + "{}", + false, + ); + } + isar.chapters.deleteSync(chapter.id!); + provider.addChangedPart( + ActionType.removeChapter, + chapter.id, + "{}", + false, + ); + } + isar.mangas.deleteSync(manga.id!); + provider.addChangedPart( + ActionType.removeItem, + manga.id, + "{}", + false, + ); + } + }); + botToast( + context.l10n.cleaned_database(mangasList.length), + ); + Navigator.pop(context); + }, + child: Text( + context.l10n.ok, + style: TextStyle( + color: isInputError + ? context.secondaryColor + : context.primaryColor, + ), + ), + ), + ], + ), + ], + ); + }, + ); + }, + ); +} diff --git a/lib/modules/more/settings/browse/providers/browse_state_provider.dart b/lib/modules/more/settings/browse/providers/browse_state_provider.dart index f8619043..11cd882a 100644 --- a/lib/modules/more/settings/browse/providers/browse_state_provider.dart +++ b/lib/modules/more/settings/browse/providers/browse_state_provider.dart @@ -10,6 +10,39 @@ import 'package:mangayomi/services/http/m_client.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'browse_state_provider.g.dart'; +@riverpod +class AndroidProxyServerState extends _$AndroidProxyServerState { + @override + String build() { + String proxyServer = + isar.settings.getSync(227)!.androidProxyServer ?? + "http://127.0.0.1:8080"; + if (!proxyServer.startsWith("http")) { + proxyServer = "http://$proxyServer"; + } + if ((proxyServer.contains("localhost") || + RegExp( + r'^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(\.(?!$)|$)){4}$', + ).hasMatch(proxyServer.replaceAll("://", ":").split(":")[1])) && + proxyServer.split(":").length < 3) { + proxyServer = "$proxyServer:8080"; + } + return proxyServer; + } + + void set(String value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..androidProxyServer = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + @riverpod class OnlyIncludePinnedSourceState extends _$OnlyIncludePinnedSourceState { @override @@ -43,6 +76,16 @@ class ExtensionsRepoState extends _$ExtensionsRepoState { []; } + void setVisibility(Repo repo, bool hidden) { + final value = state.map((e) { + if (e == repo) { + e.hidden = hidden; + } + return e; + }).toList(); + set(value); + } + void set(List value) { final settings = isar.settings.getSync(227)!; state = value; diff --git a/lib/modules/more/settings/browse/providers/browse_state_provider.g.dart b/lib/modules/more/settings/browse/providers/browse_state_provider.g.dart index b892df7a..557f3a7e 100644 --- a/lib/modules/more/settings/browse/providers/browse_state_provider.g.dart +++ b/lib/modules/more/settings/browse/providers/browse_state_provider.g.dart @@ -39,21 +39,15 @@ class GetRepoInfosFamily extends Family> { const GetRepoInfosFamily(); /// See also [getRepoInfos]. - GetRepoInfosProvider call({ - required String jsonUrl, - }) { - return GetRepoInfosProvider( - jsonUrl: jsonUrl, - ); + GetRepoInfosProvider call({required String jsonUrl}) { + return GetRepoInfosProvider(jsonUrl: jsonUrl); } @override GetRepoInfosProvider getProviderOverride( covariant GetRepoInfosProvider provider, ) { - return call( - jsonUrl: provider.jsonUrl, - ); + return call(jsonUrl: provider.jsonUrl); } static const Iterable? _dependencies = null; @@ -74,24 +68,19 @@ class GetRepoInfosFamily extends Family> { /// See also [getRepoInfos]. class GetRepoInfosProvider extends AutoDisposeFutureProvider { /// See also [getRepoInfos]. - GetRepoInfosProvider({ - required String jsonUrl, - }) : this._internal( - (ref) => getRepoInfos( - ref as GetRepoInfosRef, - jsonUrl: jsonUrl, - ), - from: getRepoInfosProvider, - name: r'getRepoInfosProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getRepoInfosHash, - dependencies: GetRepoInfosFamily._dependencies, - allTransitiveDependencies: - GetRepoInfosFamily._allTransitiveDependencies, - jsonUrl: jsonUrl, - ); + GetRepoInfosProvider({required String jsonUrl}) + : this._internal( + (ref) => getRepoInfos(ref as GetRepoInfosRef, jsonUrl: jsonUrl), + from: getRepoInfosProvider, + name: r'getRepoInfosProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getRepoInfosHash, + dependencies: GetRepoInfosFamily._dependencies, + allTransitiveDependencies: + GetRepoInfosFamily._allTransitiveDependencies, + jsonUrl: jsonUrl, + ); GetRepoInfosProvider._internal( super._createNotifier, { @@ -150,13 +139,31 @@ mixin GetRepoInfosRef on AutoDisposeFutureProviderRef { } class _GetRepoInfosProviderElement - extends AutoDisposeFutureProviderElement with GetRepoInfosRef { + extends AutoDisposeFutureProviderElement + with GetRepoInfosRef { _GetRepoInfosProviderElement(super.provider); @override String get jsonUrl => (origin as GetRepoInfosProvider).jsonUrl; } +String _$androidProxyServerStateHash() => + r'3ac060f8a61added586dcefc889fa44c71263c5b'; + +/// See also [AndroidProxyServerState]. +@ProviderFor(AndroidProxyServerState) +final androidProxyServerStateProvider = + AutoDisposeNotifierProvider.internal( + AndroidProxyServerState.new, + name: r'androidProxyServerStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$androidProxyServerStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$AndroidProxyServerState = AutoDisposeNotifier; String _$onlyIncludePinnedSourceStateHash() => r'b9f707348d5d0f7abfa8e615c1d2b35c6dbd57f3'; @@ -164,26 +171,24 @@ String _$onlyIncludePinnedSourceStateHash() => @ProviderFor(OnlyIncludePinnedSourceState) final onlyIncludePinnedSourceStateProvider = AutoDisposeNotifierProvider.internal( - OnlyIncludePinnedSourceState.new, - name: r'onlyIncludePinnedSourceStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$onlyIncludePinnedSourceStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + OnlyIncludePinnedSourceState.new, + name: r'onlyIncludePinnedSourceStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$onlyIncludePinnedSourceStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$OnlyIncludePinnedSourceState = AutoDisposeNotifier; String _$extensionsRepoStateHash() => - r'5c23b8b7ecf83b253b76a2663a71c0c752e53a40'; + r'86edc9a3f78d72acda4b20a058031c345ee406eb'; abstract class _$ExtensionsRepoState extends BuildlessAutoDisposeNotifier> { late final ItemType itemType; - List build( - ItemType itemType, - ); + List build(ItemType itemType); } /// See also [ExtensionsRepoState]. @@ -196,21 +201,15 @@ class ExtensionsRepoStateFamily extends Family> { const ExtensionsRepoStateFamily(); /// See also [ExtensionsRepoState]. - ExtensionsRepoStateProvider call( - ItemType itemType, - ) { - return ExtensionsRepoStateProvider( - itemType, - ); + ExtensionsRepoStateProvider call(ItemType itemType) { + return ExtensionsRepoStateProvider(itemType); } @override ExtensionsRepoStateProvider getProviderOverride( covariant ExtensionsRepoStateProvider provider, ) { - return call( - provider.itemType, - ); + return call(provider.itemType); } static const Iterable? _dependencies = null; @@ -232,21 +231,19 @@ class ExtensionsRepoStateFamily extends Family> { class ExtensionsRepoStateProvider extends AutoDisposeNotifierProviderImpl> { /// See also [ExtensionsRepoState]. - ExtensionsRepoStateProvider( - ItemType itemType, - ) : this._internal( - () => ExtensionsRepoState()..itemType = itemType, - from: extensionsRepoStateProvider, - name: r'extensionsRepoStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$extensionsRepoStateHash, - dependencies: ExtensionsRepoStateFamily._dependencies, - allTransitiveDependencies: - ExtensionsRepoStateFamily._allTransitiveDependencies, - itemType: itemType, - ); + ExtensionsRepoStateProvider(ItemType itemType) + : this._internal( + () => ExtensionsRepoState()..itemType = itemType, + from: extensionsRepoStateProvider, + name: r'extensionsRepoStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$extensionsRepoStateHash, + dependencies: ExtensionsRepoStateFamily._dependencies, + allTransitiveDependencies: + ExtensionsRepoStateFamily._allTransitiveDependencies, + itemType: itemType, + ); ExtensionsRepoStateProvider._internal( super._createNotifier, { @@ -261,12 +258,8 @@ class ExtensionsRepoStateProvider final ItemType itemType; @override - List runNotifierBuild( - covariant ExtensionsRepoState notifier, - ) { - return notifier.build( - itemType, - ); + List runNotifierBuild(covariant ExtensionsRepoState notifier) { + return notifier.build(itemType); } @override @@ -287,7 +280,7 @@ class ExtensionsRepoStateProvider @override AutoDisposeNotifierProviderElement> - createElement() { + createElement() { return _ExtensionsRepoStateProviderElement(this); } @@ -328,14 +321,14 @@ String _$autoUpdateExtensionsStateHash() => @ProviderFor(AutoUpdateExtensionsState) final autoUpdateExtensionsStateProvider = AutoDisposeNotifierProvider.internal( - AutoUpdateExtensionsState.new, - name: r'autoUpdateExtensionsStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$autoUpdateExtensionsStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + AutoUpdateExtensionsState.new, + name: r'autoUpdateExtensionsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$autoUpdateExtensionsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$AutoUpdateExtensionsState = AutoDisposeNotifier; String _$checkForExtensionsUpdateStateHash() => @@ -345,14 +338,14 @@ String _$checkForExtensionsUpdateStateHash() => @ProviderFor(CheckForExtensionsUpdateState) final checkForExtensionsUpdateStateProvider = AutoDisposeNotifierProvider.internal( - CheckForExtensionsUpdateState.new, - name: r'checkForExtensionsUpdateStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$checkForExtensionsUpdateStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + CheckForExtensionsUpdateState.new, + name: r'checkForExtensionsUpdateStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$checkForExtensionsUpdateStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$CheckForExtensionsUpdateState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/browse/source_repositories.dart b/lib/modules/more/settings/browse/source_repositories.dart index 27039d62..ca019635 100644 --- a/lib/modules/more/settings/browse/source_repositories.dart +++ b/lib/modules/more/settings/browse/source_repositories.dart @@ -7,6 +7,8 @@ import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:mangayomi/modules/widgets/progress_center.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/services/fetch_item_sources.dart'; +import 'package:mangayomi/utils/cached_network.dart'; import 'package:super_sliver_list/super_sliver_list.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -19,8 +21,13 @@ class SourceRepositories extends ConsumerStatefulWidget { } class _SourceRepositoriesState extends ConsumerState { + final urlRegex = RegExp( + r'^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$', + ); List _entries = []; String urlInput = ""; + bool isRefreshing = false; + Future _launchInBrowser(Uri url) async { if (!await launchUrl(url, mode: LaunchMode.externalApplication)) { throw 'Could not launch $url'; @@ -41,6 +48,43 @@ class _SourceRepositoriesState extends ConsumerState { ItemType.anime => Text(l10n.manage_anime_repo_urls), _ => Text(l10n.manage_novel_repo_urls), }, + actions: [ + isRefreshing + ? const Padding( + padding: EdgeInsets.all(20.0), + child: SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator(strokeWidth: 3), + ), + ) + : Padding( + padding: EdgeInsets.all(8.0), + child: IconButton( + splashRadius: 20, + onPressed: () async { + setState(() { + isRefreshing = true; + }); + final result = await ref.refresh( + fetchItemSourcesListProvider( + id: null, + reFresh: true, + itemType: widget.itemType, + ).future, + ); + setState(() { + isRefreshing = false; + }); + return result; + }, + icon: Icon( + Icons.refresh, + color: Theme.of(context).hintColor, + ), + ), + ), + ], ), body: data.when( data: (data) { @@ -62,6 +106,12 @@ class _SourceRepositoriesState extends ConsumerState { itemCount: _entries.length, itemBuilder: (context, index) { final repo = _entries[index]; + final isHidden = repo.hidden ?? false; + final repoAvatar = urlRegex + .firstMatch(repo.jsonUrl ?? "") + ?.group(4) + ?.split("/") + .elementAtOrNull(1); return Padding( padding: const EdgeInsets.symmetric(horizontal: 8), child: Card( @@ -69,25 +119,53 @@ class _SourceRepositoriesState extends ConsumerState { padding: const EdgeInsets.symmetric(horizontal: 10), child: Column( children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 15, + Opacity( + opacity: isHidden ? 0.3 : 1, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + if (repoAvatar != null) + Padding( + padding: EdgeInsets.all(8.0), + child: cachedNetworkImage( + imageUrl: + "https://github.com/$repoAvatar.png?size=64", + fit: BoxFit.contain, + width: 64, + height: 64, + errorWidget: const Padding( + padding: EdgeInsets.symmetric( + horizontal: 8, + vertical: 15, + ), + child: Icon(Icons.label_outline_rounded), + ), + useCustomNetworkImage: false, + ), + ), + if (repoAvatar == null) + const Padding( + padding: EdgeInsets.symmetric( + horizontal: 8, + vertical: 15, + ), + child: Icon(Icons.label_outline_rounded), + ), + const SizedBox(width: 10), + Expanded( + child: Text( + repo.name ?? + repo.jsonUrl ?? + "Invalid source - remove it", + style: TextStyle( + decoration: isHidden + ? TextDecoration.lineThrough + : TextDecoration.none, + ), + ), ), - child: const Icon(Icons.label_outline_rounded), - ), - const SizedBox(width: 10), - Expanded( - child: Text( - repo.name ?? - repo.jsonUrl ?? - "Invalid source - remove it", - ), - ), - ], + ], + ), ), Row( mainAxisAlignment: MainAxisAlignment.end, @@ -112,72 +190,40 @@ class _SourceRepositoriesState extends ConsumerState { ), SizedBox(width: 10), IconButton( - onPressed: () { - showDialog( - context: context, - builder: (context) { - return StatefulBuilder( - builder: (context, setState) { - return AlertDialog( - title: Text( - l10n.remove_extensions_repo, - ), - content: Text( - l10n.remove_extensions_repo, - ), - actions: [ - Row( - mainAxisAlignment: - MainAxisAlignment.end, - children: [ - TextButton( - onPressed: () { - Navigator.pop(context); - }, - child: Text(l10n.cancel), - ), - const SizedBox(width: 15), - TextButton( - onPressed: () { - final mangaRepos = ref - .read( - extensionsRepoStateProvider( - widget.itemType, - ), - ) - .toList(); - mangaRepos.removeWhere( - (url) => - url == - _entries[index], - ); - ref - .read( - extensionsRepoStateProvider( - widget.itemType, - ).notifier, - ) - .set(mangaRepos); - ref.watch( - extensionsRepoStateProvider( - widget.itemType, - ), - ); - if (context.mounted) { - Navigator.pop(context); - } - }, - child: Text(l10n.ok), - ), - ], + onPressed: () => ref + .read( + extensionsRepoStateProvider( + widget.itemType, + ).notifier, + ) + .setVisibility(repo, !isHidden), + icon: Stack( + children: [ + const Icon(Icons.remove_red_eye_outlined), + if (!isHidden) + Positioned( + right: 8, + child: Transform.scale( + scaleX: 2.5, + child: const Row( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Text( + '\\', + style: TextStyle(fontSize: 17), ), ], - ); - }, - ); - }, - ); - }, + ), + ), + ), + ], + ), + ), + SizedBox(width: 10), + IconButton( + onPressed: () => + _showRemoveRepoDialog(context, index), icon: const Icon(Icons.delete_outlined), ), ], @@ -207,144 +253,7 @@ class _SourceRepositoriesState extends ConsumerState { }, ), floatingActionButton: FloatingActionButton.extended( - onPressed: () { - bool isLoading = false; - final controller = TextEditingController(); - showDialog( - context: context, - builder: (context) { - return SizedBox( - child: StatefulBuilder( - builder: (context, setState) { - return AlertDialog( - title: Text(l10n.add_extensions_repo), - content: TextFormField( - controller: controller, - autofocus: true, - keyboardType: TextInputType.url, - onChanged: (value) => setState(() {}), - validator: (value) { - if (value == null || value.isEmpty) { - return l10n.url_cannot_be_empty; - } - if (!value.endsWith('.json')) { - return l10n.url_must_end_with_dot_json; - } - try { - final uri = Uri.parse(value); - if (!uri.isAbsolute) { - return l10n.invalid_url_format; - } - return null; - } catch (e) { - return l10n.invalid_url_format; - } - }, - autovalidateMode: AutovalidateMode.onUserInteraction, - decoration: InputDecoration( - hintText: l10n.url_must_end_with_dot_json, - filled: false, - contentPadding: const EdgeInsets.all(12), - enabledBorder: OutlineInputBorder( - borderSide: const BorderSide(width: 0.4), - borderRadius: BorderRadius.circular(5), - ), - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide(), - borderRadius: BorderRadius.circular(5), - ), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(), - ), - ), - ), - actions: [ - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - TextButton( - onPressed: () { - Navigator.pop(context); - }, - child: Text(l10n.cancel), - ), - const SizedBox(width: 15), - StatefulBuilder( - builder: (context, setState) { - return TextButton( - onPressed: - controller.text.isEmpty || - !controller.text.endsWith(".json") - ? null - : () async { - setState(() => isLoading = true); - try { - final mangaRepos = ref - .read( - extensionsRepoStateProvider( - widget.itemType, - ), - ) - .toList(); - final repo = await ref.read( - getRepoInfosProvider( - jsonUrl: controller.text, - ).future, - ); - if (repo == null) { - botToast(l10n.unsupported_repo); - return; - } - mangaRepos.add(repo); - ref - .read( - extensionsRepoStateProvider( - widget.itemType, - ).notifier, - ) - .set(mangaRepos); - } catch (e, s) { - setState(() => isLoading = false); - botToast('$e\n$s'); - } - - if (context.mounted) { - Navigator.pop(context); - } - }, - child: isLoading - ? SizedBox( - height: 20, - width: 20, - child: CircularProgressIndicator(), - ) - : Text( - l10n.add, - style: TextStyle( - color: - controller.text.isEmpty || - !controller.text.endsWith( - ".json", - ) - ? Theme.of(context).primaryColor - .withValues(alpha: 0.2) - : null, - ), - ), - ); - }, - ), - ], - ), - ], - ); - }, - ), - ); - }, - ); - }, + onPressed: () => _showAddRepoDialog(context), label: Row( children: [ const Icon(Icons.add), @@ -355,4 +264,193 @@ class _SourceRepositoriesState extends ConsumerState { ), ); } + + _showRemoveRepoDialog(BuildContext context, int index) { + showDialog( + context: context, + builder: (context) { + return StatefulBuilder( + builder: (context, setState) { + final l10n = context.l10n; + return AlertDialog( + title: Text(l10n.remove_extensions_repo), + content: Text(l10n.remove_extensions_repo), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text(l10n.cancel), + ), + const SizedBox(width: 15), + TextButton( + onPressed: () { + final mangaRepos = ref + .read(extensionsRepoStateProvider(widget.itemType)) + .toList(); + mangaRepos.removeWhere((url) => url == _entries[index]); + ref + .read( + extensionsRepoStateProvider( + widget.itemType, + ).notifier, + ) + .set(mangaRepos); + ref.watch(extensionsRepoStateProvider(widget.itemType)); + if (context.mounted) { + Navigator.pop(context); + } + }, + child: Text(l10n.ok), + ), + ], + ), + ], + ); + }, + ); + }, + ); + } + + _showAddRepoDialog(BuildContext context) { + bool isLoading = false; + final controller = TextEditingController(); + showDialog( + context: context, + builder: (context) { + return SizedBox( + child: StatefulBuilder( + builder: (context, setState) { + final l10n = context.l10n; + return AlertDialog( + title: Text(l10n.add_extensions_repo), + content: TextFormField( + controller: controller, + autofocus: true, + keyboardType: TextInputType.url, + onChanged: (value) => setState(() {}), + validator: (value) { + if (value == null || value.isEmpty) { + return l10n.url_cannot_be_empty; + } + if (!value.endsWith('.json')) { + return l10n.url_must_end_with_dot_json; + } + try { + final uri = Uri.parse(value); + if (!uri.isAbsolute) { + return l10n.invalid_url_format; + } + return null; + } catch (e) { + return l10n.invalid_url_format; + } + }, + autovalidateMode: AutovalidateMode.onUserInteraction, + decoration: InputDecoration( + hintText: l10n.url_must_end_with_dot_json, + filled: false, + contentPadding: const EdgeInsets.all(12), + enabledBorder: OutlineInputBorder( + borderSide: const BorderSide(width: 0.4), + borderRadius: BorderRadius.circular(5), + ), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide(), + borderRadius: BorderRadius.circular(5), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(), + ), + ), + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text(l10n.cancel), + ), + const SizedBox(width: 15), + StatefulBuilder( + builder: (context, setState) { + return TextButton( + onPressed: + controller.text.isEmpty || + !controller.text.endsWith(".json") + ? null + : () async { + setState(() => isLoading = true); + try { + final mangaRepos = ref + .read( + extensionsRepoStateProvider( + widget.itemType, + ), + ) + .toList(); + final repo = await ref.read( + getRepoInfosProvider( + jsonUrl: controller.text, + ).future, + ); + if (repo == null) { + botToast(l10n.unsupported_repo); + return; + } + mangaRepos.add(repo); + ref + .read( + extensionsRepoStateProvider( + widget.itemType, + ).notifier, + ) + .set(mangaRepos); + } catch (e, s) { + setState(() => isLoading = false); + botToast('$e\n$s'); + } + + if (context.mounted) { + Navigator.pop(context); + } + }, + child: isLoading + ? SizedBox( + height: 20, + width: 20, + child: CircularProgressIndicator(), + ) + : Text( + l10n.add, + style: TextStyle( + color: + controller.text.isEmpty || + !controller.text.endsWith(".json") + ? Theme.of(context).primaryColor + .withValues(alpha: 0.2) + : null, + ), + ), + ); + }, + ), + ], + ), + ], + ); + }, + ), + ); + }, + ); + } } diff --git a/lib/modules/more/settings/downloads/providers/downloads_state_provider.g.dart b/lib/modules/more/settings/downloads/providers/downloads_state_provider.g.dart index c3da7aa6..a89fef39 100644 --- a/lib/modules/more/settings/downloads/providers/downloads_state_provider.g.dart +++ b/lib/modules/more/settings/downloads/providers/downloads_state_provider.g.dart @@ -12,14 +12,14 @@ String _$onlyOnWifiStateHash() => r'ea6df18bb5dc5019a00fca258d45cb0dfee0dffe'; @ProviderFor(OnlyOnWifiState) final onlyOnWifiStateProvider = AutoDisposeNotifierProvider.internal( - OnlyOnWifiState.new, - name: r'onlyOnWifiStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$onlyOnWifiStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + OnlyOnWifiState.new, + name: r'onlyOnWifiStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$onlyOnWifiStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$OnlyOnWifiState = AutoDisposeNotifier; String _$saveAsCBZArchiveStateHash() => @@ -29,14 +29,14 @@ String _$saveAsCBZArchiveStateHash() => @ProviderFor(SaveAsCBZArchiveState) final saveAsCBZArchiveStateProvider = AutoDisposeNotifierProvider.internal( - SaveAsCBZArchiveState.new, - name: r'saveAsCBZArchiveStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$saveAsCBZArchiveStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + SaveAsCBZArchiveState.new, + name: r'saveAsCBZArchiveStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$saveAsCBZArchiveStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$SaveAsCBZArchiveState = AutoDisposeNotifier; String _$downloadLocationStateHash() => @@ -44,16 +44,19 @@ String _$downloadLocationStateHash() => /// See also [DownloadLocationState]. @ProviderFor(DownloadLocationState) -final downloadLocationStateProvider = AutoDisposeNotifierProvider< - DownloadLocationState, (String, String)>.internal( - DownloadLocationState.new, - name: r'downloadLocationStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$downloadLocationStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final downloadLocationStateProvider = + AutoDisposeNotifierProvider< + DownloadLocationState, + (String, String) + >.internal( + DownloadLocationState.new, + name: r'downloadLocationStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$downloadLocationStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$DownloadLocationState = AutoDisposeNotifier<(String, String)>; String _$concurrentDownloadsStateHash() => @@ -63,14 +66,14 @@ String _$concurrentDownloadsStateHash() => @ProviderFor(ConcurrentDownloadsState) final concurrentDownloadsStateProvider = AutoDisposeNotifierProvider.internal( - ConcurrentDownloadsState.new, - name: r'concurrentDownloadsStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$concurrentDownloadsStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + ConcurrentDownloadsState.new, + name: r'concurrentDownloadsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$concurrentDownloadsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$ConcurrentDownloadsState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/general/general_screen.dart b/lib/modules/more/settings/general/general_screen.dart index 10cd91b6..1c69532c 100644 --- a/lib/modules/more/settings/general/general_screen.dart +++ b/lib/modules/more/settings/general/general_screen.dart @@ -1,15 +1,40 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:mangayomi/modules/more/providers/algorithm_weights_state_provider.dart'; import 'package:mangayomi/modules/more/settings/general/providers/general_state_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; -class GeneralScreen extends ConsumerWidget { +class GeneralScreen extends ConsumerStatefulWidget { const GeneralScreen({super.key}); @override - Widget build(BuildContext context, WidgetRef ref) { + ConsumerState createState() => _GeneralStateScreen(); +} + +class _GeneralStateScreen extends ConsumerState { + int _genre = 0; + int _setting = 0; + int _synopsis = 0; + int _theme = 0; + + @override + void initState() { + super.initState(); + final algorithmWeights = ref.read(algorithmWeightsStateProvider); + _genre = algorithmWeights.genre!; + _setting = algorithmWeights.setting!; + _synopsis = algorithmWeights.synopsis!; + _theme = algorithmWeights.theme!; + } + + @override + Widget build(BuildContext context) { final l10n = l10nLocalizations(context); + final customDns = ref.watch(customDnsStateProvider); final enableDiscordRpc = ref.watch(enableDiscordRpcStateProvider); final hideDiscordRpcInIncognito = ref.watch( hideDiscordRpcInIncognitoStateProvider, @@ -24,6 +49,207 @@ class GeneralScreen extends ConsumerWidget { body: SingleChildScrollView( child: Column( children: [ + ListTile( + onTap: () => _showCustomDnsDialog(context, ref, customDns), + title: Text(l10n.custom_dns), + subtitle: Text( + customDns, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + ), + Container( + margin: const EdgeInsets.all(20.0), + padding: const EdgeInsets.all(10.0), + decoration: BoxDecoration( + border: Border.all(width: 3.0, color: context.primaryColor), + borderRadius: BorderRadius.all(Radius.circular(5.0)), + ), + child: Column( + children: [ + Row( + children: [ + Text( + context.l10n.recommendations_weights, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(width: 20), + OutlinedButton.icon( + onPressed: () { + final defaultWeights = AlgorithmWeights(); + setState(() { + _genre = defaultWeights.genre!; + _setting = defaultWeights.setting!; + _synopsis = defaultWeights.synopsis!; + _theme = defaultWeights.theme!; + }); + ref + .read(algorithmWeightsStateProvider.notifier) + .set(defaultWeights); + }, + label: Text(context.l10n.reset), + icon: const Icon(Icons.restore), + ), + ], + ), + const SizedBox(height: 10), + Padding( + padding: EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(context.l10n.recommendations_weights_genre), + Text( + (_genre / 100).toStringAsFixed(2), + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + const SizedBox(height: 20), + SliderTheme( + data: SliderTheme.of(context).copyWith( + overlayShape: const RoundSliderOverlayShape( + overlayRadius: 5.0, + ), + ), + child: Slider.adaptive( + min: 0, + max: 100, + value: _genre.toDouble(), + onChanged: (value) { + HapticFeedback.vibrate(); + setState(() { + _genre = value.toInt(); + }); + }, + onChangeEnd: (value) => ref + .read(algorithmWeightsStateProvider.notifier) + .setWeights(genre: _genre), + ), + ), + ], + ), + ), + const SizedBox(height: 10), + Padding( + padding: EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(context.l10n.recommendations_weights_setting), + Text( + (_setting / 100).toStringAsFixed(2), + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + const SizedBox(height: 20), + SliderTheme( + data: SliderTheme.of(context).copyWith( + overlayShape: const RoundSliderOverlayShape( + overlayRadius: 5.0, + ), + ), + child: Slider.adaptive( + min: 0, + max: 100, + value: _setting.toDouble(), + onChanged: (value) { + HapticFeedback.vibrate(); + setState(() { + _setting = value.toInt(); + }); + }, + onChangeEnd: (value) => ref + .read(algorithmWeightsStateProvider.notifier) + .setWeights(setting: _setting), + ), + ), + ], + ), + ), + const SizedBox(height: 10), + Padding( + padding: EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(context.l10n.recommendations_weights_synopsis), + Text( + (_synopsis / 100).toStringAsFixed(2), + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + const SizedBox(height: 20), + SliderTheme( + data: SliderTheme.of(context).copyWith( + overlayShape: const RoundSliderOverlayShape( + overlayRadius: 5.0, + ), + ), + child: Slider.adaptive( + min: 0, + max: 100, + value: _synopsis.toDouble(), + onChanged: (value) { + HapticFeedback.vibrate(); + setState(() { + _synopsis = value.toInt(); + }); + }, + onChangeEnd: (value) => ref + .read(algorithmWeightsStateProvider.notifier) + .setWeights(synopsis: _synopsis), + ), + ), + ], + ), + ), + const SizedBox(height: 10), + Padding( + padding: EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(context.l10n.recommendations_weights_theme), + Text( + (_theme / 100).toStringAsFixed(2), + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + const SizedBox(height: 20), + SliderTheme( + data: SliderTheme.of(context).copyWith( + overlayShape: const RoundSliderOverlayShape( + overlayRadius: 5.0, + ), + ), + child: Slider.adaptive( + min: 0, + max: 100, + value: _theme.toDouble(), + onChanged: (value) { + HapticFeedback.vibrate(); + setState(() { + _theme = value.toInt(); + }); + }, + onChangeEnd: (value) => ref + .read(algorithmWeightsStateProvider.notifier) + .setWeights(theme: _theme), + ), + ), + ], + ), + ), + ], + ), + ), SwitchListTile( value: enableDiscordRpc, title: Text(l10n.enable_discord_rpc), @@ -73,4 +299,77 @@ class GeneralScreen extends ConsumerWidget { ), ); } + + void _showCustomDnsDialog( + BuildContext context, + WidgetRef ref, + String customDns, + ) { + final dnsController = TextEditingController(text: customDns); + String dns = customDns; + showDialog( + context: context, + builder: (context) => StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: Text( + context.l10n.custom_dns, + style: const TextStyle(fontSize: 30), + ), + content: SizedBox( + width: context.width(0.8), + height: context.height(0.3), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: TextFormField( + controller: dnsController, + autofocus: true, + onChanged: (value) => setState(() { + dns = value; + }), + decoration: InputDecoration( + hintText: "8.8.8.8", + filled: false, + contentPadding: const EdgeInsets.all(12), + enabledBorder: OutlineInputBorder( + borderSide: const BorderSide(width: 0.4), + borderRadius: BorderRadius.circular(5), + ), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide(), + borderRadius: BorderRadius.circular(5), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(), + ), + ), + ), + ), + const SizedBox(height: 20), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: SizedBox( + width: context.width(1), + child: ElevatedButton( + onPressed: () { + ref.read(customDnsStateProvider.notifier).set(dns); + Navigator.pop(context); + }, + child: Text(context.l10n.dialog_confirm), + ), + ), + ), + ], + ), + ), + ); + }, + ), + ); + } } diff --git a/lib/modules/more/settings/general/providers/general_state_provider.dart b/lib/modules/more/settings/general/providers/general_state_provider.dart index ee934757..0c3cbb26 100644 --- a/lib/modules/more/settings/general/providers/general_state_provider.dart +++ b/lib/modules/more/settings/general/providers/general_state_provider.dart @@ -3,6 +3,26 @@ import 'package:mangayomi/models/settings.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'general_state_provider.g.dart'; +@riverpod +class CustomDnsState extends _$CustomDnsState { + @override + String build() { + return isar.settings.getSync(227)!.customDns ?? ""; + } + + void set(String value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..customDns = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + @riverpod class EnableDiscordRpcState extends _$EnableDiscordRpcState { @override diff --git a/lib/modules/more/settings/general/providers/general_state_provider.g.dart b/lib/modules/more/settings/general/providers/general_state_provider.g.dart index 7f659f36..8022ce18 100644 --- a/lib/modules/more/settings/general/providers/general_state_provider.g.dart +++ b/lib/modules/more/settings/general/providers/general_state_provider.g.dart @@ -6,6 +6,22 @@ part of 'general_state_provider.dart'; // RiverpodGenerator // ************************************************************************** +String _$customDnsStateHash() => r'6061c64d742b3f873e54c1b9ef724b7c0b6350a2'; + +/// See also [CustomDnsState]. +@ProviderFor(CustomDnsState) +final customDnsStateProvider = + AutoDisposeNotifierProvider.internal( + CustomDnsState.new, + name: r'customDnsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$customDnsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$CustomDnsState = AutoDisposeNotifier; String _$enableDiscordRpcStateHash() => r'ab8ce3b29f5d94aedbc88dcb87c7c834648270f5'; @@ -13,14 +29,14 @@ String _$enableDiscordRpcStateHash() => @ProviderFor(EnableDiscordRpcState) final enableDiscordRpcStateProvider = AutoDisposeNotifierProvider.internal( - EnableDiscordRpcState.new, - name: r'enableDiscordRpcStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$enableDiscordRpcStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + EnableDiscordRpcState.new, + name: r'enableDiscordRpcStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$enableDiscordRpcStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$EnableDiscordRpcState = AutoDisposeNotifier; String _$hideDiscordRpcInIncognitoStateHash() => @@ -30,14 +46,14 @@ String _$hideDiscordRpcInIncognitoStateHash() => @ProviderFor(HideDiscordRpcInIncognitoState) final hideDiscordRpcInIncognitoStateProvider = AutoDisposeNotifierProvider.internal( - HideDiscordRpcInIncognitoState.new, - name: r'hideDiscordRpcInIncognitoStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$hideDiscordRpcInIncognitoStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + HideDiscordRpcInIncognitoState.new, + name: r'hideDiscordRpcInIncognitoStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$hideDiscordRpcInIncognitoStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$HideDiscordRpcInIncognitoState = AutoDisposeNotifier; String _$rpcShowReadingWatchingProgressStateHash() => @@ -45,16 +61,19 @@ String _$rpcShowReadingWatchingProgressStateHash() => /// See also [RpcShowReadingWatchingProgressState]. @ProviderFor(RpcShowReadingWatchingProgressState) -final rpcShowReadingWatchingProgressStateProvider = AutoDisposeNotifierProvider< - RpcShowReadingWatchingProgressState, bool>.internal( - RpcShowReadingWatchingProgressState.new, - name: r'rpcShowReadingWatchingProgressStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$rpcShowReadingWatchingProgressStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final rpcShowReadingWatchingProgressStateProvider = + AutoDisposeNotifierProvider< + RpcShowReadingWatchingProgressState, + bool + >.internal( + RpcShowReadingWatchingProgressState.new, + name: r'rpcShowReadingWatchingProgressStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$rpcShowReadingWatchingProgressStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$RpcShowReadingWatchingProgressState = AutoDisposeNotifier; String _$rpcShowTitleStateHash() => r'b784b58365a72b54cbe46b1582c97c2f9b8057a2'; @@ -63,14 +82,14 @@ String _$rpcShowTitleStateHash() => r'b784b58365a72b54cbe46b1582c97c2f9b8057a2'; @ProviderFor(RpcShowTitleState) final rpcShowTitleStateProvider = AutoDisposeNotifierProvider.internal( - RpcShowTitleState.new, - name: r'rpcShowTitleStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$rpcShowTitleStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + RpcShowTitleState.new, + name: r'rpcShowTitleStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$rpcShowTitleStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$RpcShowTitleState = AutoDisposeNotifier; String _$rpcShowCoverImageStateHash() => @@ -80,14 +99,14 @@ String _$rpcShowCoverImageStateHash() => @ProviderFor(RpcShowCoverImageState) final rpcShowCoverImageStateProvider = AutoDisposeNotifierProvider.internal( - RpcShowCoverImageState.new, - name: r'rpcShowCoverImageStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$rpcShowCoverImageStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + RpcShowCoverImageState.new, + name: r'rpcShowCoverImageStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$rpcShowCoverImageStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$RpcShowCoverImageState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/player/custom_button_screen.dart b/lib/modules/more/settings/player/custom_button_screen.dart new file mode 100644 index 00000000..785034a6 --- /dev/null +++ b/lib/modules/more/settings/player/custom_button_screen.dart @@ -0,0 +1,416 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:isar/isar.dart'; +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/custom_button.dart'; +import 'package:mangayomi/modules/more/settings/player/providers/custom_buttons_provider.dart'; +import 'package:mangayomi/modules/widgets/progress_center.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; + +class CustomButtonScreen extends ConsumerStatefulWidget { + const CustomButtonScreen({super.key}); + + @override + ConsumerState createState() => _CustomButtonScreenState(); +} + +class _CustomButtonScreenState extends ConsumerState { + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + final customButtons = ref.watch(getCustomButtonsStreamProvider); + return Scaffold( + appBar: AppBar(title: Text(l10n.custom_buttons_edit)), + body: customButtons.when( + data: (data) { + if (data.isEmpty) { + return Center( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + l10n.custom_buttons_edit, + textAlign: TextAlign.center, + ), + ), + ); + } + + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: ReorderableListView.builder( + buildDefaultDragHandles: false, + itemCount: data.length, + itemBuilder: (context, index) { + final customButton = data[index]; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + key: Key("custom_btn_col_${customButton.id}"), + children: [ + Row( + key: Key("custom_btn_row_${customButton.id}"), + children: [ + ReorderableDragStartListener( + index: index, + child: const Icon(Icons.drag_handle), + ), + Expanded( + child: Row( + key: Key("custom_btn_row1_${customButton.id}"), + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + children: [ + Expanded( + child: ListTile( + key: Key( + "custom_btn_tile_${customButton.id}", + ), + dense: true, + title: Text( + customButton.title!, + overflow: TextOverflow.ellipsis, + ), + ), + ), + IconButton( + onPressed: () async { + for (final button in data) { + button.isFavourite = + button.id == customButton.id; + } + await isar.writeTxn( + () async => + await isar.customButtons.putAll(data), + ); + }, + icon: Icon( + (customButton.isFavourite ?? false) + ? Icons.star + : Icons.star_border, + color: context.primaryColor, + ), + ), + IconButton( + onPressed: () async { + await _showEditForm(customButton); + }, + icon: Icon(Icons.mode_edit_outlined), + ), + IconButton( + onPressed: () async { + await _showDeleteButton(customButton); + }, + icon: Icon(Icons.delete_outline), + ), + ], + ), + ), + ], + ), + Text( + customButton.codePress ?? "", + overflow: TextOverflow.ellipsis, + ), + ], + ); + }, + onReorder: (oldIndex, newIndex) async { + if (oldIndex < newIndex) { + final draggedItemPos = data[oldIndex].pos; + for (var i = oldIndex; i < newIndex - 1; i++) { + data[i].pos = data[i + 1].pos; + } + data[newIndex - 1].pos = draggedItemPos; + } else { + final draggedItemPos = data[oldIndex].pos; + for (var i = oldIndex; i > newIndex; i--) { + data[i].pos = data[i - 1].pos; + } + data[newIndex].pos = draggedItemPos; + } + await isar.writeTxn( + () async => await isar.customButtons.putAll(data), + ); + }, + ), + ); + }, + error: (Object error, StackTrace stackTrace) { + return Center( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + l10n.custom_buttons_edit, + textAlign: TextAlign.center, + ), + ), + ); + }, + loading: () { + return const ProgressCenter(); + }, + ), + floatingActionButton: FloatingActionButton.extended( + onPressed: () async { + await _showEditForm(null); + }, + label: Row( + children: [ + const Icon(Icons.add), + const SizedBox(width: 10), + Text(l10n.add), + ], + ), + ), + ); + } + + Future _showEditForm(CustomButton? customButton) async { + bool isTitleMissing = customButton == null; + bool isCodePressMissing = customButton == null; + final titleController = TextEditingController( + text: customButton?.title ?? "", + ); + final codePressController = TextEditingController( + text: customButton?.codePress ?? "", + ); + final codeLongPressController = TextEditingController( + text: customButton?.codeLongPress ?? "", + ); + final codeStartupController = TextEditingController( + text: customButton?.codeStartup ?? "", + ); + await showDialog( + context: context, + builder: (context) { + return SizedBox( + child: StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: Text( + "${context.l10n.custom_buttons_add}${customButton != null ? " (ID: ${customButton.id})" : ""}", + ), + scrollable: true, + content: Column( + children: [ + const SizedBox(height: 20), + CustomTextFormField( + name: context.l10n.custom_buttons_text, + helperText: context.l10n.custom_buttons_text_req, + allowEnterNewLine: false, + controller: titleController, + context: context, + missing: (value) { + setState(() { + isTitleMissing = value; + }); + }, + isMissing: isTitleMissing, + val: (val) {}, + ), + const SizedBox(height: 20), + CustomTextFormField( + name: context.l10n.custom_buttons_js_code, + helperText: context.l10n.custom_buttons_js_code_req, + minLines: 4, + controller: codePressController, + context: context, + missing: (value) { + setState(() { + isCodePressMissing = value; + }); + }, + isMissing: isCodePressMissing, + val: (val) {}, + ), + const SizedBox(height: 20), + CustomTextFormField( + name: context.l10n.custom_buttons_js_code_long, + minLines: 4, + controller: codeLongPressController, + context: context, + missing: (value) {}, + isMissing: false, + val: (val) {}, + ), + const SizedBox(height: 20), + CustomTextFormField( + name: context.l10n.custom_buttons_startup, + minLines: 4, + controller: codeStartupController, + context: context, + missing: (value) {}, + isMissing: false, + val: (val) {}, + ), + ], + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text(context.l10n.cancel), + ), + const SizedBox(width: 15), + TextButton( + onPressed: isTitleMissing || isCodePressMissing + ? null + : () async { + final temp = await isar.customButtons + .filter() + .idEqualTo(customButton?.id) + .findFirst(); + final button = + temp ?? + CustomButton( + title: "", + codePress: "", + codeLongPress: "", + codeStartup: "", + pos: await isar.customButtons.count(), + ); + await isar.writeTxn(() async { + await isar.customButtons.put( + button + ..title = titleController.text + ..codePress = codePressController.text + ..codeLongPress = + codeLongPressController.text + ..codeStartup = + codeStartupController.text, + ); + }); + if (context.mounted) { + Navigator.pop(context); + } + }, + child: Text( + customButton == null + ? context.l10n.add + : context.l10n.edit, + style: TextStyle( + color: isTitleMissing || isCodePressMissing + ? Theme.of( + context, + ).primaryColor.withValues(alpha: 0.2) + : null, + ), + ), + ), + ], + ), + ], + ); + }, + ), + ); + }, + ); + } + + Future _showDeleteButton(CustomButton customButton) async { + await showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Text(context.l10n.custom_buttons_delete), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(context.l10n.cancel), + ), + const SizedBox(width: 15), + ElevatedButton( + onPressed: () async { + await isar.writeTxn( + () async => + await isar.customButtons.delete(customButton.id!), + ); + if (context.mounted) { + Navigator.pop(context, "ok"); + } + }, + child: Text(context.l10n.ok), + ), + ], + ), + ], + ); + }, + ); + } +} + +class CustomTextFormField extends StatelessWidget { + final TextEditingController controller; + final BuildContext context; + final Function(bool) missing; + final bool isMissing; + final String name; + final String helperText; + final int minLines; + final bool allowEnterNewLine; + final Function(String) val; + const CustomTextFormField({ + super.key, + required this.controller, + required this.context, + required this.missing, + required this.isMissing, + this.name = "", + this.helperText = "", + this.minLines = 1, + this.allowEnterNewLine = true, + required this.val, + }); + + @override + Widget build(BuildContext context) { + return TextFormField( + minLines: minLines, + maxLines: null, + controller: controller, + keyboardType: allowEnterNewLine + ? TextInputType.multiline + : TextInputType.text, + onChanged: (value) { + missing(controller.text.isEmpty); + val(value); + }, + onFieldSubmitted: (s) {}, + decoration: InputDecoration( + helperText: helperText, + helperStyle: TextStyle(color: isMissing ? Colors.red : null), + isDense: true, + label: Text( + name, + style: TextStyle(color: isMissing ? Colors.red : null), + ), + filled: true, + fillColor: Colors.transparent, + enabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: isMissing ? Colors.red : Theme.of(context).primaryColor, + ), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + color: isMissing ? Colors.red : Theme.of(context).primaryColor, + ), + ), + border: OutlineInputBorder( + borderSide: BorderSide( + color: isMissing ? Colors.red : Theme.of(context).primaryColor, + ), + ), + ), + ); + } +} diff --git a/lib/modules/more/settings/player/player_advanced_screen.dart b/lib/modules/more/settings/player/player_advanced_screen.dart new file mode 100644 index 00000000..acf70250 --- /dev/null +++ b/lib/modules/more/settings/player/player_advanced_screen.dart @@ -0,0 +1,137 @@ +import 'dart:io'; + +import 'package:archive/archive.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/modules/more/settings/player/providers/player_state_provider.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/providers/storage_provider.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; +import 'package:path/path.dart' as path; + +class PlayerAdvancedScreen extends ConsumerStatefulWidget { + const PlayerAdvancedScreen({super.key}); + + @override + ConsumerState createState() => + _PlayerAdvancedScreenState(); +} + +class _PlayerAdvancedScreenState extends ConsumerState { + @override + Widget build(BuildContext context) { + final useMpvConfig = ref.watch(useMpvConfigStateProvider); + + return Scaffold( + appBar: AppBar(title: Text(context.l10n.advanced)), + body: SingleChildScrollView( + child: Column( + children: [ + SwitchListTile( + value: useMpvConfig, + title: Text(context.l10n.enable_mpv), + subtitle: Text( + context.l10n.mpv_info, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + onChanged: (value) async { + if (value && !(await _checkMpvConfig(context))) { + return; + } + ref.read(useMpvConfigStateProvider.notifier).set(value); + }, + ), + ListTile( + onTap: () { + _checkMpvConfig(context, redownload: true); + }, + title: Text(context.l10n.mpv_redownload), + subtitle: Text( + context.l10n.mpv_redownload_info, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + ), + ], + ), + ), + ); + } + + Future _checkMpvConfig( + BuildContext context, { + bool redownload = false, + }) async { + final provider = StorageProvider(); + if (!(await provider.requestPermission())) { + return false; + } + final dir = await provider.getMpvDirectory(); + final mpvFile = File('${dir!.path}/mpv.conf'); + final inputFile = File('${dir.path}/input.conf'); + final filesMissing = + !(await mpvFile.exists()) && !(await inputFile.exists()); + if ((redownload || filesMissing) && context.mounted) { + final res = await showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: Text(context.l10n.mpv_download), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(context.l10n.cancel), + ), + const SizedBox(width: 15), + ElevatedButton( + onPressed: () async { + final bytes = await rootBundle.load( + "assets/mangayomi_mpv.zip", + ); + final archive = ZipDecoder().decodeBytes( + bytes.buffer.asUint8List(), + ); + String shadersDir = path.join(dir.path, 'shaders'); + await Directory(shadersDir).create(recursive: true); + String scriptsDir = path.join(dir.path, 'scripts'); + await Directory(scriptsDir).create(recursive: true); + for (final file in archive.files) { + if (file.name == "mpv.conf") { + await mpvFile.writeAsBytes(file.content); + } else if (file.name == "input.conf") { + await inputFile.writeAsBytes(file.content); + } else if (file.name.startsWith("shaders/") && + file.name.endsWith(".glsl")) { + final shaderFile = File( + '$shadersDir/${file.name.split("/").last}', + ); + await shaderFile.writeAsBytes(file.content); + } else if (file.name.startsWith("scripts/") && + (file.name.endsWith(".js") || + file.name.endsWith(".lua"))) { + final scriptFile = File( + '$scriptsDir/${file.name.split("/").last}', + ); + await scriptFile.writeAsBytes(file.content); + } + } + if (context.mounted) { + Navigator.pop(context, "ok"); + } + }, + child: Text(context.l10n.download), + ), + ], + ), + ], + ); + }, + ); + return res != null && res == "ok"; + } + return context.mounted; + } +} diff --git a/lib/modules/more/settings/player/player_audio_screen.dart b/lib/modules/more/settings/player/player_audio_screen.dart new file mode 100644 index 00000000..b6f64717 --- /dev/null +++ b/lib/modules/more/settings/player/player_audio_screen.dart @@ -0,0 +1,238 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/l10n/generated/app_localizations.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:mangayomi/modules/more/settings/player/custom_button_screen.dart'; +import 'package:mangayomi/modules/more/settings/player/providers/player_audio_state_provider.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; +import 'package:super_sliver_list/super_sliver_list.dart'; + +class PlayerAudioScreen extends ConsumerStatefulWidget { + const PlayerAudioScreen({super.key}); + + @override + ConsumerState createState() => _PlayerAudioScreenState(); +} + +class _PlayerAudioScreenState extends ConsumerState { + @override + Widget build(BuildContext context) { + final audioPreferredLang = ref.watch(audioPreferredLangStateProvider); + final enableAudioPitchCorrection = ref.watch( + enableAudioPitchCorrectionStateProvider, + ); + final audioChannel = ref.watch(audioChannelStateProvider); + final volumeBoostCap = ref.watch(volumeBoostCapStateProvider); + + return Scaffold( + appBar: AppBar(title: Text(context.l10n.video_audio)), + body: SingleChildScrollView( + child: Column( + children: [ + ListTile( + onTap: () => _showEditController(), + title: Text(context.l10n.audio_preferred_languages), + subtitle: Text( + audioPreferredLang, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + ), + SwitchListTile( + value: enableAudioPitchCorrection, + title: Text(context.l10n.enable_audio_pitch_correction), + subtitle: Text( + context.l10n.enable_audio_pitch_correction_info, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + onChanged: (value) { + ref + .read(enableAudioPitchCorrectionStateProvider.notifier) + .set(value); + }, + ), + ListTile( + onTap: () { + final values = [ + (AudioChannel.auto, "Auto"), + (AudioChannel.autoSafe, "Auto-safe"), + (AudioChannel.mono, "Mono"), + (AudioChannel.stereo, "Stereo"), + (AudioChannel.reverseStereo, "Reverse stereo"), + ]; + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text(context.l10n.audio_channels), + content: SizedBox( + width: context.width(0.8), + child: RadioGroup( + groupValue: audioChannel, + onChanged: (value) { + ref + .read(audioChannelStateProvider.notifier) + .set(value!); + Navigator.pop(context); + }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: values[index].$1, + title: Row(children: [Text(values[index].$2)]), + ); + }, + ), + ), + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () async { + Navigator.pop(context); + }, + child: Text( + context.l10n.cancel, + style: TextStyle(color: context.primaryColor), + ), + ), + ], + ), + ], + ); + }, + ); + }, + title: Text(context.l10n.audio_channels), + subtitle: Text( + audioChannel.name, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + ), + Padding( + padding: EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(context.l10n.volume_boost_cap), + Text( + "$volumeBoostCap", + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + const SizedBox(height: 20), + SliderTheme( + data: SliderTheme.of(context).copyWith( + overlayShape: const RoundSliderOverlayShape( + overlayRadius: 5.0, + ), + ), + child: Slider.adaptive( + min: 0, + max: 200, + value: volumeBoostCap.toDouble(), + onChanged: (value) { + HapticFeedback.vibrate(); + ref + .read(volumeBoostCapStateProvider.notifier) + .set(value.toInt()); + }, + onChangeEnd: (value) { + ref + .read(volumeBoostCapStateProvider.notifier) + .set(value.toInt()); + }, + ), + ), + ], + ), + ), + ], + ), + ), + ); + } + + void _showEditController() { + final audioPreferredLang = ref.read(audioPreferredLangStateProvider); + final langCodes = AppLocalizations.supportedLocales + .map((e) => e.languageCode) + .toList(); + bool isLangCodeError = false; + final textController = TextEditingController(text: audioPreferredLang); + showDialog( + context: context, + builder: (context) { + return StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: Column( + children: [ + Text(context.l10n.audio_preferred_languages), + Text( + context.l10n.audio_preferred_languages_info, + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + ], + ), + content: SizedBox( + width: context.width(0.8), + child: CustomTextFormField( + controller: textController, + context: context, + isMissing: isLangCodeError, + val: (text) => setState(() { + isLangCodeError = text + .split(",") + .any((e) => !langCodes.contains(e)); + }), + missing: (_) {}, + ), + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text( + context.l10n.cancel, + style: TextStyle(color: context.primaryColor), + ), + ), + TextButton( + onPressed: () { + ref + .read(audioPreferredLangStateProvider.notifier) + .set(textController.text); + Navigator.pop(context); + }, + child: Text( + context.l10n.ok, + style: TextStyle(color: context.primaryColor), + ), + ), + ], + ), + ], + ); + }, + ); + }, + ); + } +} diff --git a/lib/modules/more/settings/player/player_decoder_screen.dart b/lib/modules/more/settings/player/player_decoder_screen.dart new file mode 100644 index 00000000..9a3d112e --- /dev/null +++ b/lib/modules/more/settings/player/player_decoder_screen.dart @@ -0,0 +1,211 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:mangayomi/modules/more/settings/player/providers/player_decoder_state_provider.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; +import 'package:super_sliver_list/super_sliver_list.dart'; + +class PlayerDecoderScreen extends ConsumerStatefulWidget { + const PlayerDecoderScreen({super.key}); + + @override + ConsumerState createState() => + _PlayerDecoderScreenState(); +} + +class _PlayerDecoderScreenState extends ConsumerState { + @override + Widget build(BuildContext context) { + final enableHardwareAccel = ref.watch(enableHardwareAccelStateProvider); + final hwdecMode = ref.watch(hwdecModeStateProvider(rawValue: true)); + final useGpuNext = ref.watch(useGpuNextStateProvider); + final debandingType = ref.watch(debandingStateProvider); + final useYUV420P = ref.watch(useYUV420PStateProvider); + + return Scaffold( + appBar: AppBar(title: Text(context.l10n.decoder)), + body: SingleChildScrollView( + child: Column( + children: [ + SwitchListTile( + value: enableHardwareAccel, + title: Text(context.l10n.enable_hardware_accel), + subtitle: Text( + context.l10n.enable_hardware_accel_info, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + onChanged: (value) { + ref.read(enableHardwareAccelStateProvider.notifier).set(value); + }, + ), + ListTile( + onTap: () { + final values = [ + ("no", ""), + ("auto", ""), + ("d3d11va", "(Windows 8+)"), + ("d3d11va-copy", "(Windows 8+)"), + ("videotoolbox", "(iOS 9.0+)"), + ("videotoolbox-copy", "(iOS 9.0+)"), + ("nvdec", "(CUDA)"), + ("nvdec-copy", "(CUDA)"), + ("mediacodec", "- HW (Android)"), + ("mediacodec-copy", "- HW+ (Android)"), + ("crystalhd", ""), + ]; + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text(context.l10n.hwdec), + content: SizedBox( + width: context.width(0.8), + child: RadioGroup( + groupValue: hwdecMode, + onChanged: (value) { + ref + .read( + hwdecModeStateProvider( + rawValue: true, + ).notifier, + ) + .set(value!); + Navigator.pop(context); + }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: values[index].$1, + title: Row( + children: [ + Text( + "${values[index].$1} ${values[index].$2}", + ), + ], + ), + ); + }, + ), + ), + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () async { + Navigator.pop(context); + }, + child: Text( + context.l10n.cancel, + style: TextStyle(color: context.primaryColor), + ), + ), + ], + ), + ], + ); + }, + ); + }, + title: Text(context.l10n.hwdec), + subtitle: Text( + hwdecMode, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + ), + SwitchListTile( + value: useGpuNext, + title: Text(context.l10n.enable_gpu_next), + subtitle: Text( + context.l10n.enable_gpu_next_info, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + onChanged: (value) { + ref.read(useGpuNextStateProvider.notifier).set(value); + }, + ), + ListTile( + onTap: () { + final values = [ + (DebandingType.none, "None"), + (DebandingType.cpu, "CPU"), + (DebandingType.gpu, "GPU"), + ]; + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text(context.l10n.debanding), + content: SizedBox( + width: context.width(0.8), + child: RadioGroup( + groupValue: debandingType, + onChanged: (value) { + ref + .read(debandingStateProvider.notifier) + .set(value!); + Navigator.pop(context); + }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: values[index].$1, + title: Row(children: [Text(values[index].$2)]), + ); + }, + ), + ), + ), + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () async { + Navigator.pop(context); + }, + child: Text( + context.l10n.cancel, + style: TextStyle(color: context.primaryColor), + ), + ), + ], + ), + ], + ); + }, + ); + }, + title: Text(context.l10n.debanding), + subtitle: Text( + debandingType.name, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + ), + SwitchListTile( + value: useYUV420P, + title: Text(context.l10n.use_yuv420p), + subtitle: Text( + context.l10n.use_yuv420p_info, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ), + onChanged: (value) { + ref.read(useYUV420PStateProvider.notifier).set(value); + }, + ), + ], + ), + ), + ); + } +} diff --git a/lib/modules/more/settings/player/player_overview_screen.dart b/lib/modules/more/settings/player/player_overview_screen.dart new file mode 100644 index 00000000..04b98d83 --- /dev/null +++ b/lib/modules/more/settings/player/player_overview_screen.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:mangayomi/modules/more/widgets/list_tile_widget.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; + +class PlayerOverviewScreen extends StatelessWidget { + const PlayerOverviewScreen({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = l10nLocalizations(context); + return Scaffold( + appBar: AppBar(title: Text(l10n!.player)), + body: SingleChildScrollView( + child: Column( + children: [ + ListTileWidget( + title: l10n.internal_player, + subtitle: l10n.internal_player_info, + icon: Icons.play_circle_outline_outlined, + onTap: () => context.push('/playerMode'), + ), + ListTileWidget( + title: l10n.decoder, + subtitle: l10n.decoder_info, + icon: Icons.memory_outlined, + onTap: () => context.push('/playerDecoderScreen'), + ), + ListTileWidget( + title: l10n.video_audio, + subtitle: l10n.video_audio_info, + icon: Icons.audiotrack_outlined, + onTap: () => context.push('/playerAudioScreen'), + ), + ListTileWidget( + title: l10n.custom_buttons, + subtitle: l10n.custom_buttons_info, + icon: Icons.terminal_outlined, + onTap: () => context.push('/customButtonScreen'), + ), + ListTileWidget( + title: l10n.advanced, + subtitle: l10n.advanced_info, + icon: Icons.code_outlined, + onTap: () => context.push('/playerAdvancedScreen'), + ), + ], + ), + ), + ); + } +} diff --git a/lib/modules/more/settings/player/player_screen.dart b/lib/modules/more/settings/player/player_screen.dart index e9407515..8792b15a 100644 --- a/lib/modules/more/settings/player/player_screen.dart +++ b/lib/modules/more/settings/player/player_screen.dart @@ -8,11 +8,16 @@ import 'package:numberpicker/numberpicker.dart'; import 'package:super_sliver_list/super_sliver_list.dart'; import 'package:mangayomi/l10n/generated/app_localizations.dart'; -class PlayerScreen extends ConsumerWidget { +class PlayerScreen extends ConsumerStatefulWidget { const PlayerScreen({super.key}); @override - Widget build(BuildContext context, WidgetRef ref) { + ConsumerState createState() => _PlayerScreenState(); +} + +class _PlayerScreenState extends ConsumerState { + @override + Widget build(BuildContext context) { final defaultSubtitleLang = ref.watch(defaultSubtitleLangStateProvider); final markEpisodeAsSeenType = ref.watch(markEpisodeAsSeenTypeStateProvider); final defaultSkipIntroLength = ref.watch( @@ -26,11 +31,10 @@ class PlayerScreen extends ConsumerWidget { final enableAutoSkip = ref.watch(enableAutoSkipStateProvider); final aniSkipTimeoutLength = ref.watch(aniSkipTimeoutLengthStateProvider); final useLibass = ref.watch(useLibassStateProvider); - final hwdecMode = ref.watch(hwdecModeStateProvider(rawValue: true)); final fullScreenPlayer = ref.watch(fullScreenPlayerStateProvider); return Scaffold( - appBar: AppBar(title: Text(context.l10n.player)), + appBar: AppBar(title: Text(context.l10n.internal_player)), body: SingleChildScrollView( child: Column( children: [ @@ -43,30 +47,30 @@ class PlayerScreen extends ConsumerWidget { title: Text(context.l10n.default_subtitle_language), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: AppLocalizations.supportedLocales.length, - itemBuilder: (context, index) { - final locale = - AppLocalizations.supportedLocales[index]; - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: locale, - groupValue: defaultSubtitleLang, - onChanged: (value) { - ref - .read( - defaultSubtitleLangStateProvider.notifier, - ) - .setLocale(locale); - Navigator.pop(context); - }, - title: Text( - completeLanguageName(locale.toLanguageTag()), - ), - ); + child: RadioGroup( + groupValue: defaultSubtitleLang, + onChanged: (value) { + ref + .read(defaultSubtitleLangStateProvider.notifier) + .setLocale(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: AppLocalizations.supportedLocales.length, + itemBuilder: (context, index) { + final locale = + AppLocalizations.supportedLocales[index]; + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: locale, + title: Text( + completeLanguageName(locale.toLanguageTag()), + ), + ); + }, + ), ), ), actions: [ @@ -105,27 +109,30 @@ class PlayerScreen extends ConsumerWidget { title: Text(context.l10n.markEpisodeAsSeenSetting), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: values.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: values[index], - groupValue: markEpisodeAsSeenType, - onChanged: (value) { - ref - .read( - markEpisodeAsSeenTypeStateProvider - .notifier, - ) - .set(value!); - Navigator.pop(context); - }, - title: Row(children: [Text("${values[index]}%")]), - ); + child: RadioGroup( + groupValue: markEpisodeAsSeenType, + onChanged: (value) { + ref + .read( + markEpisodeAsSeenTypeStateProvider.notifier, + ) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: values[index], + title: Row( + children: [Text("${values[index]}%")], + ), + ); + }, + ), ), ), actions: [ @@ -235,27 +242,31 @@ class PlayerScreen extends ConsumerWidget { ), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: values.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: values[index], - groupValue: defaultDoubleTapToSkipLength, - onChanged: (value) { - ref - .read( - defaultDoubleTapToSkipLengthStateProvider - .notifier, - ) - .set(value!); - Navigator.pop(context); - }, - title: Row(children: [Text("${values[index]}s")]), - ); + child: RadioGroup( + groupValue: defaultDoubleTapToSkipLength, + onChanged: (value) { + ref + .read( + defaultDoubleTapToSkipLengthStateProvider + .notifier, + ) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: values[index], + title: Row( + children: [Text("${values[index]}s")], + ), + ); + }, + ), ), ), actions: [ @@ -294,27 +305,30 @@ class PlayerScreen extends ConsumerWidget { title: Text(context.l10n.default_playback_speed_length), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: values.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: values[index], - groupValue: defaultPlayBackSpeed, - onChanged: (value) { - ref - .read( - defaultPlayBackSpeedStateProvider - .notifier, - ) - .set(value!); - Navigator.pop(context); - }, - title: Row(children: [Text("x${values[index]}")]), - ); + child: RadioGroup( + groupValue: defaultPlayBackSpeed, + onChanged: (value) { + ref + .read( + defaultPlayBackSpeedStateProvider.notifier, + ) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: values[index], + title: Row( + children: [Text("x${values[index]}")], + ), + ); + }, + ), ), ), actions: [ @@ -343,23 +357,6 @@ class PlayerScreen extends ConsumerWidget { style: TextStyle(fontSize: 11, color: context.secondaryColor), ), ), - ListTile( - title: Padding( - padding: const EdgeInsets.only(bottom: 8), - child: Row( - children: [ - Icon( - Icons.info_outline_rounded, - color: context.secondaryColor, - ), - ], - ), - ), - subtitle: Text( - context.l10n.aniskip_requires_info, - style: TextStyle(fontSize: 11, color: context.secondaryColor), - ), - ), SwitchListTile( value: useLibass, title: Text(context.l10n.use_libass), @@ -380,6 +377,26 @@ class PlayerScreen extends ConsumerWidget { onExpansionChanged: (value) => ref.read(enableAniSkipStateProvider.notifier).set(value), children: [ + ListTile( + title: Padding( + padding: const EdgeInsets.only(bottom: 8), + child: Row( + children: [ + Icon( + Icons.info_outline_rounded, + color: context.secondaryColor, + ), + ], + ), + ), + subtitle: Text( + context.l10n.aniskip_requires_info, + style: TextStyle( + fontSize: 11, + color: context.secondaryColor, + ), + ), + ), SwitchListTile( value: enableAutoSkip, title: Text(context.l10n.enable_auto_skip), @@ -399,29 +416,31 @@ class PlayerScreen extends ConsumerWidget { ), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: values.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: values[index], - groupValue: aniSkipTimeoutLength, - onChanged: (value) { - ref - .read( - aniSkipTimeoutLengthStateProvider - .notifier, - ) - .set(value!); - Navigator.pop(context); - }, - title: Row( - children: [Text("${values[index]}s")], - ), - ); + child: RadioGroup( + groupValue: aniSkipTimeoutLength, + onChanged: (value) { + ref + .read( + aniSkipTimeoutLengthStateProvider + .notifier, + ) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: values[index], + title: Row( + children: [Text("${values[index]}s")], + ), + ); + }, + ), ), ), actions: [ @@ -468,80 +487,6 @@ class PlayerScreen extends ConsumerWidget { ref.read(fullScreenPlayerStateProvider.notifier).set(value); }, ), - ListTile( - onTap: () { - final values = [ - ("no", ""), - ("auto", ""), - ("d3d11va", "(Windows 8+)"), - ("d3d11va-copy", "(Windows 8+)"), - ("videotoolbox", "(iOS 9.0+)"), - ("videotoolbox-copy", "(iOS 9.0+)"), - ("nvdec", "(CUDA)"), - ("nvdec-copy", "(CUDA)"), - ("mediacodec", "- HW (Android)"), - ("mediacodec-copy", "- HW+ (Android)"), - ("crystalhd", ""), - ]; - showDialog( - context: context, - builder: (context) { - return AlertDialog( - title: Text(context.l10n.hwdec), - content: SizedBox( - width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: values.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: values[index].$1, - groupValue: hwdecMode, - onChanged: (value) { - ref - .read(hwdecModeStateProvider(rawValue: true).notifier) - .set(value!); - Navigator.pop(context); - }, - title: Row( - children: [ - Text( - "${values[index].$1} ${values[index].$2}", - ), - ], - ), - ); - }, - ), - ), - actions: [ - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - TextButton( - onPressed: () async { - Navigator.pop(context); - }, - child: Text( - context.l10n.cancel, - style: TextStyle(color: context.primaryColor), - ), - ), - ], - ), - ], - ); - }, - ); - }, - title: Text(context.l10n.hwdec), - subtitle: Text( - hwdecMode, - style: TextStyle(fontSize: 11, color: context.secondaryColor), - ), - ), ], ), ), diff --git a/lib/modules/more/settings/player/providers/custom_buttons_provider.dart b/lib/modules/more/settings/player/providers/custom_buttons_provider.dart new file mode 100644 index 00000000..40e7c12d --- /dev/null +++ b/lib/modules/more/settings/player/providers/custom_buttons_provider.dart @@ -0,0 +1,13 @@ +import 'package:isar/isar.dart'; +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/custom_button.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +part 'custom_buttons_provider.g.dart'; + +@riverpod +Stream> getCustomButtonsStream(Ref ref) async* { + yield* isar.customButtons.filter().idIsNotNull().sortByPos().watch( + fireImmediately: true, + ); +} diff --git a/lib/modules/more/settings/player/providers/custom_buttons_provider.g.dart b/lib/modules/more/settings/player/providers/custom_buttons_provider.g.dart new file mode 100644 index 00000000..84f11731 --- /dev/null +++ b/lib/modules/more/settings/player/providers/custom_buttons_provider.g.dart @@ -0,0 +1,30 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'custom_buttons_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$getCustomButtonsStreamHash() => + r'476c26eb3d20e9e9eed2e1d8bb15fa74ce357ba3'; + +/// See also [getCustomButtonsStream]. +@ProviderFor(getCustomButtonsStream) +final getCustomButtonsStreamProvider = + AutoDisposeStreamProvider>.internal( + getCustomButtonsStream, + name: r'getCustomButtonsStreamProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getCustomButtonsStreamHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +typedef GetCustomButtonsStreamRef = + AutoDisposeStreamProviderRef>; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/settings/player/providers/player_audio_state_provider.dart b/lib/modules/more/settings/player/providers/player_audio_state_provider.dart new file mode 100644 index 00000000..0bd54449 --- /dev/null +++ b/lib/modules/more/settings/player/providers/player_audio_state_provider.dart @@ -0,0 +1,86 @@ +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'player_audio_state_provider.g.dart'; + +@riverpod +class AudioPreferredLangState extends _$AudioPreferredLangState { + @override + String build() { + return isar.settings.getSync(227)!.audioPreferredLanguages ?? ""; + } + + void set(String value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..audioPreferredLanguages = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + +@riverpod +class EnableAudioPitchCorrectionState + extends _$EnableAudioPitchCorrectionState { + @override + bool build() { + return isar.settings.getSync(227)!.enableAudioPitchCorrection ?? true; + } + + void set(bool value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..enableAudioPitchCorrection = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + +@riverpod +class AudioChannelState extends _$AudioChannelState { + @override + AudioChannel build() { + return isar.settings.getSync(227)!.audioChannels; + } + + void set(AudioChannel value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..audioChannels = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + +@riverpod +class VolumeBoostCapState extends _$VolumeBoostCapState { + @override + int build() { + return isar.settings.getSync(227)!.volumeBoostCap ?? 30; + } + + void set(int value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..volumeBoostCap = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} diff --git a/lib/modules/more/settings/player/providers/player_audio_state_provider.g.dart b/lib/modules/more/settings/player/providers/player_audio_state_provider.g.dart new file mode 100644 index 00000000..d1d90083 --- /dev/null +++ b/lib/modules/more/settings/player/providers/player_audio_state_provider.g.dart @@ -0,0 +1,77 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'player_audio_state_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$audioPreferredLangStateHash() => + r'9d70ec2677efb51b8e0c174b55114865853f12ea'; + +/// See also [AudioPreferredLangState]. +@ProviderFor(AudioPreferredLangState) +final audioPreferredLangStateProvider = + AutoDisposeNotifierProvider.internal( + AudioPreferredLangState.new, + name: r'audioPreferredLangStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$audioPreferredLangStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$AudioPreferredLangState = AutoDisposeNotifier; +String _$enableAudioPitchCorrectionStateHash() => + r'6614f4b04ff8fe8ef57c9a6f160646d3d25e2f4d'; + +/// See also [EnableAudioPitchCorrectionState]. +@ProviderFor(EnableAudioPitchCorrectionState) +final enableAudioPitchCorrectionStateProvider = + AutoDisposeNotifierProvider.internal( + EnableAudioPitchCorrectionState.new, + name: r'enableAudioPitchCorrectionStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$enableAudioPitchCorrectionStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$EnableAudioPitchCorrectionState = AutoDisposeNotifier; +String _$audioChannelStateHash() => r'e71ffa85c37d545fb7b22e9539241b4926a2d384'; + +/// See also [AudioChannelState]. +@ProviderFor(AudioChannelState) +final audioChannelStateProvider = + AutoDisposeNotifierProvider.internal( + AudioChannelState.new, + name: r'audioChannelStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$audioChannelStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$AudioChannelState = AutoDisposeNotifier; +String _$volumeBoostCapStateHash() => + r'b0f5ad3bbb0e1a798ce229572b363465ad606a06'; + +/// See also [VolumeBoostCapState]. +@ProviderFor(VolumeBoostCapState) +final volumeBoostCapStateProvider = + AutoDisposeNotifierProvider.internal( + VolumeBoostCapState.new, + name: r'volumeBoostCapStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$volumeBoostCapStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$VolumeBoostCapState = AutoDisposeNotifier; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/settings/player/providers/player_decoder_state_provider.dart b/lib/modules/more/settings/player/providers/player_decoder_state_provider.dart new file mode 100644 index 00000000..39d0e21f --- /dev/null +++ b/lib/modules/more/settings/player/providers/player_decoder_state_provider.dart @@ -0,0 +1,133 @@ +import 'dart:io'; + +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'player_decoder_state_provider.g.dart'; + +final hwdecs = { + "no": ["all"], + "auto": ["all"], + "d3d11va": ["windows"], + "d3d11va-copy": ["windows"], + "videotoolbox": ["ios"], + "videotoolbox-copy": ["ios"], + "nvdec": ["all"], + "nvdec-copy": ["all"], + "mediacodec": ["android"], + "mediacodec-copy": ["android"], + "crystalhd": ["all"], +}; + +@riverpod +class HwdecModeState extends _$HwdecModeState { + @override + String build({bool rawValue = false}) { + final hwdecMode = isar.settings.getSync(227)!.hwdecMode ?? "auto"; + if (rawValue) { + return hwdecMode; + } + final hwdecSupport = hwdecs[hwdecMode] ?? []; + if (!hwdecSupport.contains("all") && + !hwdecSupport.contains(Platform.operatingSystem)) { + return Platform.isAndroid ? "auto-safe" : "auto"; + } + return hwdecMode; + } + + void set(String value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..hwdecMode = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + +@riverpod +class EnableHardwareAccelState extends _$EnableHardwareAccelState { + @override + bool build() { + return isar.settings.getSync(227)!.enableHardwareAcceleration ?? + Platform.isMacOS + ? false + : true; + } + + void set(bool value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..enableHardwareAcceleration = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + +@riverpod +class DebandingState extends _$DebandingState { + @override + DebandingType build() { + return isar.settings.getSync(227)!.debandingType; + } + + void set(DebandingType value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..debandingType = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + +@riverpod +class UseGpuNextState extends _$UseGpuNextState { + @override + bool build() { + return isar.settings.getSync(227)!.enableGpuNext ?? false; + } + + void set(bool value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..enableGpuNext = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} + +@riverpod +class UseYUV420PState extends _$UseYUV420PState { + @override + bool build() { + return isar.settings.getSync(227)!.useYUV420P ?? false; + } + + void set(bool value) { + final settings = isar.settings.getSync(227); + state = value; + isar.writeTxnSync( + () => isar.settings.putSync( + settings! + ..useYUV420P = value + ..updatedAt = DateTime.now().millisecondsSinceEpoch, + ), + ); + } +} diff --git a/lib/modules/more/settings/player/providers/player_decoder_state_provider.g.dart b/lib/modules/more/settings/player/providers/player_decoder_state_provider.g.dart new file mode 100644 index 00000000..99b87592 --- /dev/null +++ b/lib/modules/more/settings/player/providers/player_decoder_state_provider.g.dart @@ -0,0 +1,226 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'player_decoder_state_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$hwdecModeStateHash() => r'8186e3c5f3db0e952f629d56b2e580e546aed65e'; + +/// Copied from Dart SDK +class _SystemHash { + _SystemHash._(); + + static int combine(int hash, int value) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + value); + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); + return hash ^ (hash >> 6); + } + + static int finish(int hash) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); + // ignore: parameter_assignments + hash = hash ^ (hash >> 11); + return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + } +} + +abstract class _$HwdecModeState extends BuildlessAutoDisposeNotifier { + late final bool rawValue; + + String build({bool rawValue = false}); +} + +/// See also [HwdecModeState]. +@ProviderFor(HwdecModeState) +const hwdecModeStateProvider = HwdecModeStateFamily(); + +/// See also [HwdecModeState]. +class HwdecModeStateFamily extends Family { + /// See also [HwdecModeState]. + const HwdecModeStateFamily(); + + /// See also [HwdecModeState]. + HwdecModeStateProvider call({bool rawValue = false}) { + return HwdecModeStateProvider(rawValue: rawValue); + } + + @override + HwdecModeStateProvider getProviderOverride( + covariant HwdecModeStateProvider provider, + ) { + return call(rawValue: provider.rawValue); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'hwdecModeStateProvider'; +} + +/// See also [HwdecModeState]. +class HwdecModeStateProvider + extends AutoDisposeNotifierProviderImpl { + /// See also [HwdecModeState]. + HwdecModeStateProvider({bool rawValue = false}) + : this._internal( + () => HwdecModeState()..rawValue = rawValue, + from: hwdecModeStateProvider, + name: r'hwdecModeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$hwdecModeStateHash, + dependencies: HwdecModeStateFamily._dependencies, + allTransitiveDependencies: + HwdecModeStateFamily._allTransitiveDependencies, + rawValue: rawValue, + ); + + HwdecModeStateProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.rawValue, + }) : super.internal(); + + final bool rawValue; + + @override + String runNotifierBuild(covariant HwdecModeState notifier) { + return notifier.build(rawValue: rawValue); + } + + @override + Override overrideWith(HwdecModeState Function() create) { + return ProviderOverride( + origin: this, + override: HwdecModeStateProvider._internal( + () => create()..rawValue = rawValue, + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + rawValue: rawValue, + ), + ); + } + + @override + AutoDisposeNotifierProviderElement createElement() { + return _HwdecModeStateProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is HwdecModeStateProvider && other.rawValue == rawValue; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, rawValue.hashCode); + + return _SystemHash.finish(hash); + } +} + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +mixin HwdecModeStateRef on AutoDisposeNotifierProviderRef { + /// The parameter `rawValue` of this provider. + bool get rawValue; +} + +class _HwdecModeStateProviderElement + extends AutoDisposeNotifierProviderElement + with HwdecModeStateRef { + _HwdecModeStateProviderElement(super.provider); + + @override + bool get rawValue => (origin as HwdecModeStateProvider).rawValue; +} + +String _$enableHardwareAccelStateHash() => + r'4804b699c14a78db9c760ec4eaf8a88bb6ce1b9b'; + +/// See also [EnableHardwareAccelState]. +@ProviderFor(EnableHardwareAccelState) +final enableHardwareAccelStateProvider = + AutoDisposeNotifierProvider.internal( + EnableHardwareAccelState.new, + name: r'enableHardwareAccelStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$enableHardwareAccelStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$EnableHardwareAccelState = AutoDisposeNotifier; +String _$debandingStateHash() => r'b93e2fc826d98cc8bce1aab9a92900353e4d3958'; + +/// See also [DebandingState]. +@ProviderFor(DebandingState) +final debandingStateProvider = + AutoDisposeNotifierProvider.internal( + DebandingState.new, + name: r'debandingStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$debandingStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$DebandingState = AutoDisposeNotifier; +String _$useGpuNextStateHash() => r'cfc109cd7db66e359e9523102a84aa8cf37bf243'; + +/// See also [UseGpuNextState]. +@ProviderFor(UseGpuNextState) +final useGpuNextStateProvider = + AutoDisposeNotifierProvider.internal( + UseGpuNextState.new, + name: r'useGpuNextStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$useGpuNextStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$UseGpuNextState = AutoDisposeNotifier; +String _$useYUV420PStateHash() => r'c600001eff34b2b8df31ba604413b8b20edc3044'; + +/// See also [UseYUV420PState]. +@ProviderFor(UseYUV420PState) +final useYUV420PStateProvider = + AutoDisposeNotifierProvider.internal( + UseYUV420PState.new, + name: r'useYUV420PStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$useYUV420PStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$UseYUV420PState = AutoDisposeNotifier; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/settings/player/providers/player_state_provider.dart b/lib/modules/more/settings/player/providers/player_state_provider.dart index 55f1ca48..5996fb87 100644 --- a/lib/modules/more/settings/player/providers/player_state_provider.dart +++ b/lib/modules/more/settings/player/providers/player_state_provider.dart @@ -1,4 +1,3 @@ -import 'dart:io'; import 'dart:ui'; import 'package:mangayomi/main.dart'; @@ -218,45 +217,18 @@ class UseLibassState extends _$UseLibassState { } } -final hwdecs = { - "no": ["all"], - "auto": ["all"], - "d3d11va": ["windows"], - "d3d11va-copy": ["windows"], - "videotoolbox": ["ios"], - "videotoolbox-copy": ["ios"], - "nvdec": ["all"], - "nvdec-copy": ["all"], - "mediacodec": ["android"], - "mediacodec-copy": ["android"], - "crystalhd": ["all"], -}; - @riverpod -class HwdecModeState extends _$HwdecModeState { +class UseMpvConfigState extends _$UseMpvConfigState { @override - String build({bool rawValue = false}) { - final hwdecMode = isar.settings.getSync(227)!.hwdecMode ?? "auto"; - if (rawValue) { - return hwdecMode; - } - final hwdecSupport = hwdecs[hwdecMode] ?? []; - if (!hwdecSupport.contains("all") && - !hwdecSupport.contains(Platform.operatingSystem)) { - return Platform.isAndroid ? "auto-safe" : "auto"; - } - return hwdecMode; + bool build() { + return isar.settings.getSync(227)!.useMpvConfig ?? false; } - void set(String value) { + void set(bool value) { final settings = isar.settings.getSync(227); state = value; isar.writeTxnSync( - () => isar.settings.putSync( - settings! - ..hwdecMode = value - ..updatedAt = DateTime.now().millisecondsSinceEpoch, - ), + () => isar.settings.putSync(settings!..useMpvConfig = value), ); } } diff --git a/lib/modules/more/settings/player/providers/player_state_provider.g.dart b/lib/modules/more/settings/player/providers/player_state_provider.g.dart index 54e1f9ec..2d022eac 100644 --- a/lib/modules/more/settings/player/providers/player_state_provider.g.dart +++ b/lib/modules/more/settings/player/providers/player_state_provider.g.dart @@ -13,14 +13,14 @@ String _$defaultSubtitleLangStateHash() => @ProviderFor(DefaultSubtitleLangState) final defaultSubtitleLangStateProvider = AutoDisposeNotifierProvider.internal( - DefaultSubtitleLangState.new, - name: r'defaultSubtitleLangStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$defaultSubtitleLangStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + DefaultSubtitleLangState.new, + name: r'defaultSubtitleLangStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$defaultSubtitleLangStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$DefaultSubtitleLangState = AutoDisposeNotifier; String _$markEpisodeAsSeenTypeStateHash() => @@ -30,14 +30,14 @@ String _$markEpisodeAsSeenTypeStateHash() => @ProviderFor(MarkEpisodeAsSeenTypeState) final markEpisodeAsSeenTypeStateProvider = AutoDisposeNotifierProvider.internal( - MarkEpisodeAsSeenTypeState.new, - name: r'markEpisodeAsSeenTypeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$markEpisodeAsSeenTypeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + MarkEpisodeAsSeenTypeState.new, + name: r'markEpisodeAsSeenTypeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$markEpisodeAsSeenTypeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$MarkEpisodeAsSeenTypeState = AutoDisposeNotifier; String _$defaultSkipIntroLengthStateHash() => @@ -47,14 +47,14 @@ String _$defaultSkipIntroLengthStateHash() => @ProviderFor(DefaultSkipIntroLengthState) final defaultSkipIntroLengthStateProvider = AutoDisposeNotifierProvider.internal( - DefaultSkipIntroLengthState.new, - name: r'defaultSkipIntroLengthStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$defaultSkipIntroLengthStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + DefaultSkipIntroLengthState.new, + name: r'defaultSkipIntroLengthStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$defaultSkipIntroLengthStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$DefaultSkipIntroLengthState = AutoDisposeNotifier; String _$defaultDoubleTapToSkipLengthStateHash() => @@ -62,16 +62,19 @@ String _$defaultDoubleTapToSkipLengthStateHash() => /// See also [DefaultDoubleTapToSkipLengthState]. @ProviderFor(DefaultDoubleTapToSkipLengthState) -final defaultDoubleTapToSkipLengthStateProvider = AutoDisposeNotifierProvider< - DefaultDoubleTapToSkipLengthState, int>.internal( - DefaultDoubleTapToSkipLengthState.new, - name: r'defaultDoubleTapToSkipLengthStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$defaultDoubleTapToSkipLengthStateHash, - dependencies: null, - allTransitiveDependencies: null, -); +final defaultDoubleTapToSkipLengthStateProvider = + AutoDisposeNotifierProvider< + DefaultDoubleTapToSkipLengthState, + int + >.internal( + DefaultDoubleTapToSkipLengthState.new, + name: r'defaultDoubleTapToSkipLengthStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$defaultDoubleTapToSkipLengthStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$DefaultDoubleTapToSkipLengthState = AutoDisposeNotifier; String _$defaultPlayBackSpeedStateHash() => @@ -81,14 +84,14 @@ String _$defaultPlayBackSpeedStateHash() => @ProviderFor(DefaultPlayBackSpeedState) final defaultPlayBackSpeedStateProvider = AutoDisposeNotifierProvider.internal( - DefaultPlayBackSpeedState.new, - name: r'defaultPlayBackSpeedStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$defaultPlayBackSpeedStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + DefaultPlayBackSpeedState.new, + name: r'defaultPlayBackSpeedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$defaultPlayBackSpeedStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$DefaultPlayBackSpeedState = AutoDisposeNotifier; String _$fullScreenPlayerStateHash() => @@ -98,14 +101,14 @@ String _$fullScreenPlayerStateHash() => @ProviderFor(FullScreenPlayerState) final fullScreenPlayerStateProvider = AutoDisposeNotifierProvider.internal( - FullScreenPlayerState.new, - name: r'fullScreenPlayerStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$fullScreenPlayerStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + FullScreenPlayerState.new, + name: r'fullScreenPlayerStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$fullScreenPlayerStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$FullScreenPlayerState = AutoDisposeNotifier; String _$enableAniSkipStateHash() => @@ -115,14 +118,14 @@ String _$enableAniSkipStateHash() => @ProviderFor(EnableAniSkipState) final enableAniSkipStateProvider = AutoDisposeNotifierProvider.internal( - EnableAniSkipState.new, - name: r'enableAniSkipStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$enableAniSkipStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + EnableAniSkipState.new, + name: r'enableAniSkipStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$enableAniSkipStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$EnableAniSkipState = AutoDisposeNotifier; String _$enableAutoSkipStateHash() => @@ -132,14 +135,14 @@ String _$enableAutoSkipStateHash() => @ProviderFor(EnableAutoSkipState) final enableAutoSkipStateProvider = AutoDisposeNotifierProvider.internal( - EnableAutoSkipState.new, - name: r'enableAutoSkipStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$enableAutoSkipStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + EnableAutoSkipState.new, + name: r'enableAutoSkipStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$enableAutoSkipStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$EnableAutoSkipState = AutoDisposeNotifier; String _$aniSkipTimeoutLengthStateHash() => @@ -149,14 +152,14 @@ String _$aniSkipTimeoutLengthStateHash() => @ProviderFor(AniSkipTimeoutLengthState) final aniSkipTimeoutLengthStateProvider = AutoDisposeNotifierProvider.internal( - AniSkipTimeoutLengthState.new, - name: r'aniSkipTimeoutLengthStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$aniSkipTimeoutLengthStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + AniSkipTimeoutLengthState.new, + name: r'aniSkipTimeoutLengthStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$aniSkipTimeoutLengthStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$AniSkipTimeoutLengthState = AutoDisposeNotifier; String _$useLibassStateHash() => r'aa8024f8b754117dfe80594f85155b05311a3152'; @@ -165,179 +168,31 @@ String _$useLibassStateHash() => r'aa8024f8b754117dfe80594f85155b05311a3152'; @ProviderFor(UseLibassState) final useLibassStateProvider = AutoDisposeNotifierProvider.internal( - UseLibassState.new, - name: r'useLibassStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$useLibassStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + UseLibassState.new, + name: r'useLibassStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$useLibassStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$UseLibassState = AutoDisposeNotifier; -String _$hwdecModeStateHash() => r'8186e3c5f3db0e952f629d56b2e580e546aed65e'; +String _$useMpvConfigStateHash() => r'f91e6a7dbd3c5f7674ba74842521ecfca01c78b0'; -/// Copied from Dart SDK -class _SystemHash { - _SystemHash._(); - - static int combine(int hash, int value) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + value); - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); - return hash ^ (hash >> 6); - } - - static int finish(int hash) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); - // ignore: parameter_assignments - hash = hash ^ (hash >> 11); - return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); - } -} - -abstract class _$HwdecModeState extends BuildlessAutoDisposeNotifier { - late final bool rawValue; - - String build({ - bool rawValue = false, - }); -} - -/// See also [HwdecModeState]. -@ProviderFor(HwdecModeState) -const hwdecModeStateProvider = HwdecModeStateFamily(); - -/// See also [HwdecModeState]. -class HwdecModeStateFamily extends Family { - /// See also [HwdecModeState]. - const HwdecModeStateFamily(); - - /// See also [HwdecModeState]. - HwdecModeStateProvider call({ - bool rawValue = false, - }) { - return HwdecModeStateProvider( - rawValue: rawValue, +/// See also [UseMpvConfigState]. +@ProviderFor(UseMpvConfigState) +final useMpvConfigStateProvider = + AutoDisposeNotifierProvider.internal( + UseMpvConfigState.new, + name: r'useMpvConfigStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$useMpvConfigStateHash, + dependencies: null, + allTransitiveDependencies: null, ); - } - @override - HwdecModeStateProvider getProviderOverride( - covariant HwdecModeStateProvider provider, - ) { - return call( - rawValue: provider.rawValue, - ); - } - - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'hwdecModeStateProvider'; -} - -/// See also [HwdecModeState]. -class HwdecModeStateProvider - extends AutoDisposeNotifierProviderImpl { - /// See also [HwdecModeState]. - HwdecModeStateProvider({ - bool rawValue = false, - }) : this._internal( - () => HwdecModeState()..rawValue = rawValue, - from: hwdecModeStateProvider, - name: r'hwdecModeStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$hwdecModeStateHash, - dependencies: HwdecModeStateFamily._dependencies, - allTransitiveDependencies: - HwdecModeStateFamily._allTransitiveDependencies, - rawValue: rawValue, - ); - - HwdecModeStateProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.rawValue, - }) : super.internal(); - - final bool rawValue; - - @override - String runNotifierBuild( - covariant HwdecModeState notifier, - ) { - return notifier.build( - rawValue: rawValue, - ); - } - - @override - Override overrideWith(HwdecModeState Function() create) { - return ProviderOverride( - origin: this, - override: HwdecModeStateProvider._internal( - () => create()..rawValue = rawValue, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - rawValue: rawValue, - ), - ); - } - - @override - AutoDisposeNotifierProviderElement createElement() { - return _HwdecModeStateProviderElement(this); - } - - @override - bool operator ==(Object other) { - return other is HwdecModeStateProvider && other.rawValue == rawValue; - } - - @override - int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, rawValue.hashCode); - - return _SystemHash.finish(hash); - } -} - -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin HwdecModeStateRef on AutoDisposeNotifierProviderRef { - /// The parameter `rawValue` of this provider. - bool get rawValue; -} - -class _HwdecModeStateProviderElement - extends AutoDisposeNotifierProviderElement - with HwdecModeStateRef { - _HwdecModeStateProviderElement(super.provider); - - @override - bool get rawValue => (origin as HwdecModeStateProvider).rawValue; -} +typedef _$UseMpvConfigState = AutoDisposeNotifier; // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/settings/reader/providers/reader_state_provider.g.dart b/lib/modules/more/settings/reader/providers/reader_state_provider.g.dart index ef3f1215..480f14af 100644 --- a/lib/modules/more/settings/reader/providers/reader_state_provider.g.dart +++ b/lib/modules/more/settings/reader/providers/reader_state_provider.g.dart @@ -13,14 +13,14 @@ String _$defaultReadingModeStateHash() => @ProviderFor(DefaultReadingModeState) final defaultReadingModeStateProvider = AutoDisposeNotifierProvider.internal( - DefaultReadingModeState.new, - name: r'defaultReadingModeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$defaultReadingModeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + DefaultReadingModeState.new, + name: r'defaultReadingModeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$defaultReadingModeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$DefaultReadingModeState = AutoDisposeNotifier; String _$animatePageTransitionsStateHash() => @@ -30,14 +30,14 @@ String _$animatePageTransitionsStateHash() => @ProviderFor(AnimatePageTransitionsState) final animatePageTransitionsStateProvider = AutoDisposeNotifierProvider.internal( - AnimatePageTransitionsState.new, - name: r'animatePageTransitionsStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$animatePageTransitionsStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + AnimatePageTransitionsState.new, + name: r'animatePageTransitionsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$animatePageTransitionsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$AnimatePageTransitionsState = AutoDisposeNotifier; String _$doubleTapAnimationSpeedStateHash() => @@ -47,14 +47,14 @@ String _$doubleTapAnimationSpeedStateHash() => @ProviderFor(DoubleTapAnimationSpeedState) final doubleTapAnimationSpeedStateProvider = AutoDisposeNotifierProvider.internal( - DoubleTapAnimationSpeedState.new, - name: r'doubleTapAnimationSpeedStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$doubleTapAnimationSpeedStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + DoubleTapAnimationSpeedState.new, + name: r'doubleTapAnimationSpeedStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$doubleTapAnimationSpeedStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$DoubleTapAnimationSpeedState = AutoDisposeNotifier; String _$cropBordersStateHash() => r'b8a38a59e240909f81a5faad44b54d3ced025de8'; @@ -63,14 +63,14 @@ String _$cropBordersStateHash() => r'b8a38a59e240909f81a5faad44b54d3ced025de8'; @ProviderFor(CropBordersState) final cropBordersStateProvider = AutoDisposeNotifierProvider.internal( - CropBordersState.new, - name: r'cropBordersStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$cropBordersStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + CropBordersState.new, + name: r'cropBordersStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$cropBordersStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$CropBordersState = AutoDisposeNotifier; String _$scaleTypeStateHash() => r'07f29cba7193242795134b6d37bb393210a191a1'; @@ -79,14 +79,14 @@ String _$scaleTypeStateHash() => r'07f29cba7193242795134b6d37bb393210a191a1'; @ProviderFor(ScaleTypeState) final scaleTypeStateProvider = AutoDisposeNotifierProvider.internal( - ScaleTypeState.new, - name: r'scaleTypeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$scaleTypeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + ScaleTypeState.new, + name: r'scaleTypeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$scaleTypeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$ScaleTypeState = AutoDisposeNotifier; String _$pagePreloadAmountStateHash() => @@ -96,14 +96,14 @@ String _$pagePreloadAmountStateHash() => @ProviderFor(PagePreloadAmountState) final pagePreloadAmountStateProvider = AutoDisposeNotifierProvider.internal( - PagePreloadAmountState.new, - name: r'pagePreloadAmountStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$pagePreloadAmountStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + PagePreloadAmountState.new, + name: r'pagePreloadAmountStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$pagePreloadAmountStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$PagePreloadAmountState = AutoDisposeNotifier; String _$backgroundColorStateHash() => @@ -113,14 +113,14 @@ String _$backgroundColorStateHash() => @ProviderFor(BackgroundColorState) final backgroundColorStateProvider = AutoDisposeNotifierProvider.internal( - BackgroundColorState.new, - name: r'backgroundColorStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$backgroundColorStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + BackgroundColorState.new, + name: r'backgroundColorStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$backgroundColorStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$BackgroundColorState = AutoDisposeNotifier; String _$usePageTapZonesStateHash() => @@ -130,14 +130,14 @@ String _$usePageTapZonesStateHash() => @ProviderFor(UsePageTapZonesState) final usePageTapZonesStateProvider = AutoDisposeNotifierProvider.internal( - UsePageTapZonesState.new, - name: r'usePageTapZonesStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$usePageTapZonesStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + UsePageTapZonesState.new, + name: r'usePageTapZonesStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$usePageTapZonesStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$UsePageTapZonesState = AutoDisposeNotifier; String _$fullScreenReaderStateHash() => @@ -147,14 +147,14 @@ String _$fullScreenReaderStateHash() => @ProviderFor(FullScreenReaderState) final fullScreenReaderStateProvider = AutoDisposeNotifierProvider.internal( - FullScreenReaderState.new, - name: r'fullScreenReaderStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$fullScreenReaderStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + FullScreenReaderState.new, + name: r'fullScreenReaderStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$fullScreenReaderStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$FullScreenReaderState = AutoDisposeNotifier; String _$navigationOrderStateHash() => @@ -164,14 +164,14 @@ String _$navigationOrderStateHash() => @ProviderFor(NavigationOrderState) final navigationOrderStateProvider = AutoDisposeNotifierProvider>.internal( - NavigationOrderState.new, - name: r'navigationOrderStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$navigationOrderStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + NavigationOrderState.new, + name: r'navigationOrderStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$navigationOrderStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$NavigationOrderState = AutoDisposeNotifier>; String _$hideItemsStateHash() => r'3e719a5dfb38c1510214f7bcd8dbd786a13c4566'; @@ -180,14 +180,14 @@ String _$hideItemsStateHash() => r'3e719a5dfb38c1510214f7bcd8dbd786a13c4566'; @ProviderFor(HideItemsState) final hideItemsStateProvider = AutoDisposeNotifierProvider>.internal( - HideItemsState.new, - name: r'hideItemsStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$hideItemsStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + HideItemsState.new, + name: r'hideItemsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$hideItemsStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$HideItemsState = AutoDisposeNotifier>; String _$mergeLibraryNavMobileStateHash() => @@ -197,14 +197,14 @@ String _$mergeLibraryNavMobileStateHash() => @ProviderFor(MergeLibraryNavMobileState) final mergeLibraryNavMobileStateProvider = AutoDisposeNotifierProvider.internal( - MergeLibraryNavMobileState.new, - name: r'mergeLibraryNavMobileStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$mergeLibraryNavMobileStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + MergeLibraryNavMobileState.new, + name: r'mergeLibraryNavMobileStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$mergeLibraryNavMobileStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$MergeLibraryNavMobileState = AutoDisposeNotifier; String _$novelFontSizeStateHash() => @@ -214,14 +214,14 @@ String _$novelFontSizeStateHash() => @ProviderFor(NovelFontSizeState) final novelFontSizeStateProvider = AutoDisposeNotifierProvider.internal( - NovelFontSizeState.new, - name: r'novelFontSizeStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$novelFontSizeStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + NovelFontSizeState.new, + name: r'novelFontSizeStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$novelFontSizeStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$NovelFontSizeState = AutoDisposeNotifier; String _$novelTextAlignStateHash() => @@ -231,14 +231,14 @@ String _$novelTextAlignStateHash() => @ProviderFor(NovelTextAlignState) final novelTextAlignStateProvider = AutoDisposeNotifierProvider.internal( - NovelTextAlignState.new, - name: r'novelTextAlignStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$novelTextAlignStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + NovelTextAlignState.new, + name: r'novelTextAlignStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$novelTextAlignStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$NovelTextAlignState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/reader/reader_screen.dart b/lib/modules/more/settings/reader/reader_screen.dart index 6a36542a..b72e32c6 100644 --- a/lib/modules/more/settings/reader/reader_screen.dart +++ b/lib/modules/more/settings/reader/reader_screen.dart @@ -39,35 +39,35 @@ class ReaderScreen extends ConsumerWidget { title: Text(context.l10n.default_reading_mode), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: ReaderMode.values.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: ReaderMode.values[index], - groupValue: defaultReadingMode, - onChanged: (value) { - ref - .read( - defaultReadingModeStateProvider.notifier, - ) - .set(value!); - Navigator.pop(context); - }, - title: Row( - children: [ - Text( - getReaderModeName( - ReaderMode.values[index], - context, - ), - ), - ], - ), - ); + child: RadioGroup( + groupValue: defaultReadingMode, + onChanged: (value) { + ref + .read(defaultReadingModeStateProvider.notifier) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: ReaderMode.values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: ReaderMode.values[index], + title: Row( + children: [ + Text( + getReaderModeName( + ReaderMode.values[index], + context, + ), + ), + ], + ), + ); + }, + ), ), ), actions: [ @@ -105,31 +105,32 @@ class ReaderScreen extends ConsumerWidget { title: Text(context.l10n.double_tap_animation_speed), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: 3, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: index, - groupValue: doubleTapAnimationSpeed, - onChanged: (value) { - ref - .read( - doubleTapAnimationSpeedStateProvider - .notifier, - ) - .set(value!); - Navigator.pop(context); - }, - title: Row( - children: [ - Text(getAnimationSpeedName(index, context)), - ], - ), - ); + child: RadioGroup( + groupValue: doubleTapAnimationSpeed, + onChanged: (value) { + ref + .read( + doubleTapAnimationSpeedStateProvider.notifier, + ) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: 3, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: index, + title: Row( + children: [ + Text(getAnimationSpeedName(index, context)), + ], + ), + ); + }, + ), ), ), actions: [ @@ -167,33 +168,35 @@ class ReaderScreen extends ConsumerWidget { title: Text(context.l10n.background_color), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: BackgroundColor.values.length, - itemBuilder: (context, index) { - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: BackgroundColor.values[index], - groupValue: backgroundColor, - onChanged: (value) { - ref - .read(backgroundColorStateProvider.notifier) - .set(value!); - Navigator.pop(context); - }, - title: Row( - children: [ - Text( - getBackgroundColorName( - BackgroundColor.values[index], - context, - ), - ), - ], - ), - ); + child: RadioGroup( + groupValue: backgroundColor, + onChanged: (value) { + ref + .read(backgroundColorStateProvider.notifier) + .set(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: BackgroundColor.values.length, + itemBuilder: (context, index) { + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: BackgroundColor.values[index], + title: Row( + children: [ + Text( + getBackgroundColorName( + BackgroundColor.values[index], + context, + ), + ), + ], + ), + ); + }, + ), ), ), actions: [ @@ -301,32 +304,34 @@ class ReaderScreen extends ConsumerWidget { title: Text(context.l10n.scale_type), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: getScaleTypeNames(context).length, - itemBuilder: (context, index) { - return RadioListTile( - // dense: true, - contentPadding: const EdgeInsets.all(0), - value: index, - groupValue: scaleType.index, - onChanged: (value) { - ref - .read(scaleTypeStateProvider.notifier) - .set(ScaleType.values[value!]); - Navigator.pop(context); - }, - title: Row( - children: [ - Text( - getScaleTypeNames( - context, - )[index].toString(), - ), - ], - ), - ); + child: RadioGroup( + groupValue: scaleType.index, + onChanged: (value) { + ref + .read(scaleTypeStateProvider.notifier) + .set(ScaleType.values[value!]); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: getScaleTypeNames(context).length, + itemBuilder: (context, index) { + return RadioListTile( + // dense: true, + contentPadding: const EdgeInsets.all(0), + value: index, + title: Row( + children: [ + Text( + getScaleTypeNames( + context, + )[index].toString(), + ), + ], + ), + ); + }, + ), ), ), actions: [ diff --git a/lib/modules/more/settings/settings_screen.dart b/lib/modules/more/settings/settings_screen.dart index 8aec9eba..18c11eae 100644 --- a/lib/modules/more/settings/settings_screen.dart +++ b/lib/modules/more/settings/settings_screen.dart @@ -21,52 +21,43 @@ class SettingsScreen extends StatelessWidget { ), ListTileWidget( title: l10n.appearance, - subtitle: l10n.appearance_subtitle, icon: Icons.color_lens_rounded, onTap: () => context.push('/appearance'), ), ListTileWidget( title: l10n.reader, - subtitle: l10n.reader_subtitle, icon: Icons.chrome_reader_mode_rounded, onTap: () => context.push('/readerMode'), ), ListTileWidget( title: l10n.player, - subtitle: l10n.reader_subtitle, icon: Icons.play_circle_outline_outlined, - onTap: () => context.push('/playerMode'), + onTap: () => context.push('/playerOverview'), ), ListTileWidget( title: l10n.downloads, - subtitle: l10n.downloads_subtitle, icon: Icons.download_outlined, onTap: () => context.push('/downloads'), ), ListTileWidget( title: l10n.tracking, - subtitle: "", icon: Icons.sync_outlined, onTap: () => context.push('/track'), ), ListTileWidget( title: l10n.syncing, - subtitle: l10n.syncing_subtitle, icon: Icons.cloud_sync_outlined, onTap: () => context.push('/sync'), ), ListTileWidget( title: l10n.browse, - subtitle: l10n.browse_subtitle, icon: Icons.explore_rounded, onTap: () => context.push('/browseS'), ), ListTileWidget( - onTap: () { - context.push('/about'); - }, - icon: Icons.info_outline, title: l10n.about, + icon: Icons.info_outline, + onTap: () => context.push('/about'), ), ], ), diff --git a/lib/modules/more/settings/sync/providers/sync_providers.g.dart b/lib/modules/more/settings/sync/providers/sync_providers.g.dart index 798745a0..13329b37 100644 --- a/lib/modules/more/settings/sync/providers/sync_providers.g.dart +++ b/lib/modules/more/settings/sync/providers/sync_providers.g.dart @@ -32,9 +32,7 @@ class _SystemHash { abstract class _$Synching extends BuildlessAutoDisposeNotifier { late final int? syncId; - SyncPreference build({ - required int? syncId, - }); + SyncPreference build({required int? syncId}); } /// See also [Synching]. @@ -47,21 +45,13 @@ class SynchingFamily extends Family { const SynchingFamily(); /// See also [Synching]. - SynchingProvider call({ - required int? syncId, - }) { - return SynchingProvider( - syncId: syncId, - ); + SynchingProvider call({required int? syncId}) { + return SynchingProvider(syncId: syncId); } @override - SynchingProvider getProviderOverride( - covariant SynchingProvider provider, - ) { - return call( - syncId: provider.syncId, - ); + SynchingProvider getProviderOverride(covariant SynchingProvider provider) { + return call(syncId: provider.syncId); } static const Iterable? _dependencies = null; @@ -83,20 +73,18 @@ class SynchingFamily extends Family { class SynchingProvider extends AutoDisposeNotifierProviderImpl { /// See also [Synching]. - SynchingProvider({ - required int? syncId, - }) : this._internal( - () => Synching()..syncId = syncId, - from: synchingProvider, - name: r'synchingProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$synchingHash, - dependencies: SynchingFamily._dependencies, - allTransitiveDependencies: SynchingFamily._allTransitiveDependencies, - syncId: syncId, - ); + SynchingProvider({required int? syncId}) + : this._internal( + () => Synching()..syncId = syncId, + from: synchingProvider, + name: r'synchingProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$synchingHash, + dependencies: SynchingFamily._dependencies, + allTransitiveDependencies: SynchingFamily._allTransitiveDependencies, + syncId: syncId, + ); SynchingProvider._internal( super._createNotifier, { @@ -111,12 +99,8 @@ class SynchingProvider final int? syncId; @override - SyncPreference runNotifierBuild( - covariant Synching notifier, - ) { - return notifier.build( - syncId: syncId, - ); + SyncPreference runNotifierBuild(covariant Synching notifier) { + return notifier.build(syncId: syncId); } @override @@ -169,5 +153,6 @@ class _SynchingProviderElement @override int? get syncId => (origin as SynchingProvider).syncId; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/settings/sync/sync.dart b/lib/modules/more/settings/sync/sync.dart index 92f7d084..97f01536 100644 --- a/lib/modules/more/settings/sync/sync.dart +++ b/lib/modules/more/settings/sync/sync.dart @@ -65,30 +65,30 @@ class SyncScreen extends ConsumerWidget { title: Text(l10n.sync_auto), content: SizedBox( width: context.width(0.8), - child: SuperListView.builder( - shrinkWrap: true, - itemCount: autoSyncOptions.length, - itemBuilder: (context, index) { - final optionName = autoSyncOptions.keys - .elementAt(index); - final optionValue = autoSyncOptions.values - .elementAt(index); - return RadioListTile( - dense: true, - contentPadding: const EdgeInsets.all(0), - value: optionValue, - groupValue: syncPreference.autoSyncFrequency, - onChanged: (value) { - ref - .read( - synchingProvider(syncId: 1).notifier, - ) - .setAutoSyncFrequency(value!); - Navigator.pop(context); - }, - title: Text(optionName), - ); + child: RadioGroup( + groupValue: syncPreference.autoSyncFrequency, + onChanged: (value) { + ref + .read(synchingProvider(syncId: 1).notifier) + .setAutoSyncFrequency(value!); + Navigator.pop(context); }, + child: SuperListView.builder( + shrinkWrap: true, + itemCount: autoSyncOptions.length, + itemBuilder: (context, index) { + final optionName = autoSyncOptions.keys + .elementAt(index); + final optionValue = autoSyncOptions.values + .elementAt(index); + return RadioListTile( + dense: true, + contentPadding: const EdgeInsets.all(0), + value: optionValue, + title: Text(optionName), + ); + }, + ), ), ), actions: [ @@ -116,7 +116,9 @@ class SyncScreen extends ConsumerWidget { title: Text(l10n.sync_auto), subtitle: Text( autoSyncOptions.entries - .where((o) => o.value == syncPreference.autoSyncFrequency) + .where( + (o) => o.value == syncPreference.autoSyncFrequency, + ) .first .key, style: TextStyle( @@ -150,29 +152,35 @@ class SyncScreen extends ConsumerWidget { SwitchListTile( value: syncPreference.syncHistories, title: Text(context.l10n.sync_enable_histories), - onChanged: syncPreference.syncOn ? (value) { - ref - .read(SynchingProvider(syncId: 1).notifier) - .setSyncHistories(value); - } : null, + onChanged: syncPreference.syncOn + ? (value) { + ref + .read(SynchingProvider(syncId: 1).notifier) + .setSyncHistories(value); + } + : null, ), SwitchListTile( value: syncPreference.syncUpdates, title: Text(context.l10n.sync_enable_updates), - onChanged: syncPreference.syncOn ? (value) { - ref - .read(SynchingProvider(syncId: 1).notifier) - .setSyncUpdates(value); - } : null, + onChanged: syncPreference.syncOn + ? (value) { + ref + .read(SynchingProvider(syncId: 1).notifier) + .setSyncUpdates(value); + } + : null, ), SwitchListTile( value: syncPreference.syncSettings, title: Text(context.l10n.sync_enable_settings), - onChanged: syncPreference.syncOn ? (value) { - ref - .read(SynchingProvider(syncId: 1).notifier) - .setSyncSettings(value); - } : null, + onChanged: syncPreference.syncOn + ? (value) { + ref + .read(SynchingProvider(syncId: 1).notifier) + .setSyncSettings(value); + } + : null, ), Padding( padding: const EdgeInsets.only( @@ -288,6 +296,40 @@ class SyncScreen extends ConsumerWidget { Text(l10n.sync_button_sync), ], ), + const SizedBox(width: 20), + Column( + children: [ + IconButton( + onPressed: !syncPreference.syncOn || !isLogged + ? null + : () => _showConfirmDialog(context, ref, true), + icon: Icon( + Icons.file_upload_outlined, + color: !syncPreference.syncOn || !isLogged + ? context.secondaryColor + : context.primaryColor, + ), + ), + Text(l10n.sync_button_upload), + ], + ), + const SizedBox(width: 20), + Column( + children: [ + IconButton( + onPressed: !syncPreference.syncOn || !isLogged + ? null + : () => _showConfirmDialog(context, ref, false), + icon: Icon( + Icons.file_download_outlined, + color: !syncPreference.syncOn || !isLogged + ? context.secondaryColor + : context.primaryColor, + ), + ), + Text(l10n.sync_button_download), + ], + ), ], ), const SizedBox(height: 20), @@ -298,172 +340,220 @@ class SyncScreen extends ConsumerWidget { ), ); } -} -void _showDialogLogin( - BuildContext context, - WidgetRef ref, - SyncPreference syncPreference, -) { - final serverController = TextEditingController(text: syncPreference.server); - final emailController = TextEditingController(text: syncPreference.email); - final passwordController = TextEditingController(); - String server = ""; - String email = ""; - String password = ""; - String errorMessage = ""; - bool isLoading = false; - bool obscureText = true; - final l10n = l10nLocalizations(context)!; - showDialog( - context: context, - builder: (context) => StatefulBuilder( - builder: (context, setState) { + Future _showConfirmDialog( + BuildContext context, + WidgetRef ref, + bool isUpload, + ) async { + await showDialog( + context: context, + builder: (context) { return AlertDialog( - title: Text( - l10n.login_into("SyncServer"), - style: const TextStyle(fontSize: 30), + content: Text( + isUpload + ? context.l10n.sync_button_upload_info + : context.l10n.sync_button_download_info, + style: TextStyle(fontWeight: FontWeight.bold), ), - content: SizedBox( - height: 400, - width: MediaQuery.of(context).size.width, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + actions: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, children: [ - const SizedBox(height: 10), - Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: TextFormField( - controller: serverController, - autofocus: true, - onChanged: (value) => setState(() { - server = value; - }), - decoration: InputDecoration( - hintText: l10n.sync_server, - filled: false, - contentPadding: const EdgeInsets.all(12), - enabledBorder: OutlineInputBorder( - borderSide: const BorderSide(width: 0.4), - borderRadius: BorderRadius.circular(5), - ), - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide(), - borderRadius: BorderRadius.circular(5), - ), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(), - ), - ), - ), + TextButton( + onPressed: () => Navigator.pop(context), + child: Text(context.l10n.cancel), ), - const SizedBox(height: 10), - Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: TextFormField( - controller: emailController, - autofocus: true, - onChanged: (value) => setState(() { - email = value; - }), - decoration: InputDecoration( - hintText: l10n.email_adress, - filled: false, - contentPadding: const EdgeInsets.all(12), - enabledBorder: OutlineInputBorder( - borderSide: const BorderSide(width: 0.4), - borderRadius: BorderRadius.circular(5), - ), - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide(), - borderRadius: BorderRadius.circular(5), - ), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(), - ), - ), - ), - ), - const SizedBox(height: 10), - Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: TextFormField( - controller: passwordController, - obscureText: obscureText, - onChanged: (value) => setState(() { - password = value; - }), - decoration: InputDecoration( - hintText: l10n.sync_password, - suffixIcon: IconButton( - onPressed: () => setState(() { - obscureText = !obscureText; - }), - icon: Icon( - obscureText - ? Icons.visibility_outlined - : Icons.visibility_off_outlined, - ), - ), - filled: false, - contentPadding: const EdgeInsets.all(12), - enabledBorder: OutlineInputBorder( - borderSide: const BorderSide(width: 0.4), - borderRadius: BorderRadius.circular(5), - ), - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide(), - borderRadius: BorderRadius.circular(5), - ), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(), - ), - ), - ), - ), - const SizedBox(height: 10), - Text(errorMessage, style: const TextStyle(color: Colors.red)), - const SizedBox(height: 30), - Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: SizedBox( - width: context.width(1), - height: 50, - child: ElevatedButton( - onPressed: isLoading - ? null - : () async { - setState(() { - isLoading = true; - }); - final res = await ref - .read(syncServerProvider(syncId: 1).notifier) - .login(l10n, server, email, password); - if (!res.$1) { - setState(() { - isLoading = false; - errorMessage = res.$2; - }); - } else { - if (context.mounted) { - Navigator.pop(context); - } - } - }, - child: isLoading - ? const CircularProgressIndicator() - : Text(l10n.login), - ), - ), + const SizedBox(width: 15), + ElevatedButton( + onPressed: () { + ref + .read(syncServerProvider(syncId: 1).notifier) + .startSync( + context.l10n, + false, + upload: isUpload, + download: !isUpload, + ); + Navigator.pop(context); + }, + child: Text(context.l10n.dialog_confirm), ), ], ), - ), + ], ); }, - ), - ); + ); + } + + void _showDialogLogin( + BuildContext context, + WidgetRef ref, + SyncPreference syncPreference, + ) { + final serverController = TextEditingController(text: syncPreference.server); + final emailController = TextEditingController(text: syncPreference.email); + final passwordController = TextEditingController(); + String server = ""; + String email = ""; + String password = ""; + String errorMessage = ""; + bool isLoading = false; + bool obscureText = true; + final l10n = l10nLocalizations(context)!; + showDialog( + context: context, + builder: (context) => StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: Text( + l10n.login_into("SyncServer"), + style: const TextStyle(fontSize: 30), + ), + content: SizedBox( + height: 400, + width: MediaQuery.of(context).size.width, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: TextFormField( + controller: serverController, + autofocus: true, + onChanged: (value) => setState(() { + server = value; + }), + decoration: InputDecoration( + hintText: l10n.sync_server, + filled: false, + contentPadding: const EdgeInsets.all(12), + enabledBorder: OutlineInputBorder( + borderSide: const BorderSide(width: 0.4), + borderRadius: BorderRadius.circular(5), + ), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide(), + borderRadius: BorderRadius.circular(5), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(), + ), + ), + ), + ), + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: TextFormField( + controller: emailController, + autofocus: true, + onChanged: (value) => setState(() { + email = value; + }), + decoration: InputDecoration( + hintText: l10n.email_adress, + filled: false, + contentPadding: const EdgeInsets.all(12), + enabledBorder: OutlineInputBorder( + borderSide: const BorderSide(width: 0.4), + borderRadius: BorderRadius.circular(5), + ), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide(), + borderRadius: BorderRadius.circular(5), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(), + ), + ), + ), + ), + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: TextFormField( + controller: passwordController, + obscureText: obscureText, + onChanged: (value) => setState(() { + password = value; + }), + decoration: InputDecoration( + hintText: l10n.sync_password, + suffixIcon: IconButton( + onPressed: () => setState(() { + obscureText = !obscureText; + }), + icon: Icon( + obscureText + ? Icons.visibility_outlined + : Icons.visibility_off_outlined, + ), + ), + filled: false, + contentPadding: const EdgeInsets.all(12), + enabledBorder: OutlineInputBorder( + borderSide: const BorderSide(width: 0.4), + borderRadius: BorderRadius.circular(5), + ), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide(), + borderRadius: BorderRadius.circular(5), + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide(), + ), + ), + ), + ), + const SizedBox(height: 10), + Text(errorMessage, style: const TextStyle(color: Colors.red)), + const SizedBox(height: 30), + Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: SizedBox( + width: context.width(1), + height: 50, + child: ElevatedButton( + onPressed: isLoading + ? null + : () async { + setState(() { + isLoading = true; + }); + final res = await ref + .read( + syncServerProvider(syncId: 1).notifier, + ) + .login(l10n, server, email, password); + if (!res.$1) { + setState(() { + isLoading = false; + errorMessage = res.$2; + }); + } else { + if (context.mounted) { + Navigator.pop(context); + } + } + }, + child: isLoading + ? const CircularProgressIndicator() + : Text(l10n.login), + ), + ), + ), + ], + ), + ), + ); + }, + ), + ); + } } diff --git a/lib/modules/more/settings/track/manage_trackers/tracking_detail.dart b/lib/modules/more/settings/track/manage_trackers/tracking_detail.dart index ebd71e6e..00771288 100644 --- a/lib/modules/more/settings/track/manage_trackers/tracking_detail.dart +++ b/lib/modules/more/settings/track/manage_trackers/tracking_detail.dart @@ -5,6 +5,7 @@ import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/track.dart'; import 'package:mangayomi/models/track_preference.dart'; import 'package:mangayomi/modules/manga/detail/widgets/tracker_widget.dart'; +import 'package:mangayomi/modules/tracker_library/tracker_library_screen.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/utils/constant.dart'; import 'package:super_sliver_list/super_sliver_list.dart'; @@ -20,10 +21,14 @@ class TrackingDetail extends StatefulWidget { class _TrackingDetailState extends State with TickerProviderStateMixin { late TabController _tabBarController; + bool get isMovies => + widget.trackerPref.syncId == TrackerProviders.simkl.syncId || + widget.trackerPref.syncId == TrackerProviders.trakt.syncId; + @override void initState() { super.initState(); - _tabBarController = TabController(length: 2, vsync: this); + _tabBarController = TabController(length: isMovies ? 1 : 2, vsync: this); } @override @@ -35,9 +40,10 @@ class _TrackingDetailState extends State @override Widget build(BuildContext context) { final l10n = l10nLocalizations(context)!; + return DefaultTabController( animationDuration: Duration.zero, - length: 2, + length: isMovies ? 1 : 2, child: Scaffold( appBar: AppBar( elevation: 0, @@ -51,7 +57,7 @@ class _TrackingDetailState extends State indicatorSize: TabBarIndicatorSize.tab, controller: _tabBarController, tabs: [ - Tab(text: l10n.manga), + if (!isMovies) Tab(text: l10n.manga), Tab(text: l10n.anime), ], ), @@ -59,10 +65,11 @@ class _TrackingDetailState extends State body: TabBarView( controller: _tabBarController, children: [ - TrackingTab( - itemType: ItemType.manga, - syncId: widget.trackerPref.syncId!, - ), + if (!isMovies) + TrackingTab( + itemType: ItemType.manga, + syncId: widget.trackerPref.syncId!, + ), TrackingTab( itemType: ItemType.anime, syncId: widget.trackerPref.syncId!, diff --git a/lib/modules/more/settings/track/myanimelist/model.dart b/lib/modules/more/settings/track/myanimelist/model.dart index 99406758..daa4300f 100644 --- a/lib/modules/more/settings/track/myanimelist/model.dart +++ b/lib/modules/more/settings/track/myanimelist/model.dart @@ -3,14 +3,22 @@ class OAuth { int? expiresIn; String? accessToken; String? refreshToken; + String? clientId; - OAuth({this.tokenType, this.expiresIn, this.accessToken, this.refreshToken}); + OAuth({ + this.tokenType, + this.expiresIn, + this.accessToken, + this.refreshToken, + this.clientId, + }); OAuth.fromJson(Map json) { tokenType = json['token_type']; - expiresIn = json['expires_in'] as int; + expiresIn = json['expires_in'] as int?; accessToken = json['access_token']; refreshToken = json['refresh_token']; + clientId = json['client_id']; } Map toJson() { @@ -19,6 +27,7 @@ class OAuth { data['expires_in'] = expiresIn; data['access_token'] = accessToken; data['refresh_token'] = refreshToken; + data['client_id'] = clientId; return data; } } diff --git a/lib/modules/more/settings/track/providers/track_providers.dart b/lib/modules/more/settings/track/providers/track_providers.dart index 1d944576..24803ead 100644 --- a/lib/modules/more/settings/track/providers/track_providers.dart +++ b/lib/modules/more/settings/track/providers/track_providers.dart @@ -16,6 +16,15 @@ class Tracks extends _$Tracks { return isar.trackPreferences.getSync(syncId!); } + void setRefreshing(bool refreshing) { + if (state != null) { + state!.refreshing = refreshing; + isar.writeTxnSync(() { + isar.trackPreferences.putSync(state!); + }); + } + } + void login(TrackPreference trackPreference) { isar.writeTxnSync(() { isar.trackPreferences.putSync(trackPreference); diff --git a/lib/modules/more/settings/track/providers/track_providers.g.dart b/lib/modules/more/settings/track/providers/track_providers.g.dart index 80dc2447..f834c231 100644 --- a/lib/modules/more/settings/track/providers/track_providers.g.dart +++ b/lib/modules/more/settings/track/providers/track_providers.g.dart @@ -6,7 +6,7 @@ part of 'track_providers.dart'; // RiverpodGenerator // ************************************************************************** -String _$tracksHash() => r'71db9b803345d0b31c8efba0538a68fea356a71f'; +String _$tracksHash() => r'05f1531a3200b0ad9f1e4bf74cd9eb44301f9f21'; /// Copied from Dart SDK class _SystemHash { @@ -32,9 +32,7 @@ class _SystemHash { abstract class _$Tracks extends BuildlessAutoDisposeNotifier { late final int? syncId; - TrackPreference? build({ - required int? syncId, - }); + TrackPreference? build({required int? syncId}); } /// See also [Tracks]. @@ -47,21 +45,13 @@ class TracksFamily extends Family { const TracksFamily(); /// See also [Tracks]. - TracksProvider call({ - required int? syncId, - }) { - return TracksProvider( - syncId: syncId, - ); + TracksProvider call({required int? syncId}) { + return TracksProvider(syncId: syncId); } @override - TracksProvider getProviderOverride( - covariant TracksProvider provider, - ) { - return call( - syncId: provider.syncId, - ); + TracksProvider getProviderOverride(covariant TracksProvider provider) { + return call(syncId: provider.syncId); } static const Iterable? _dependencies = null; @@ -83,20 +73,18 @@ class TracksFamily extends Family { class TracksProvider extends AutoDisposeNotifierProviderImpl { /// See also [Tracks]. - TracksProvider({ - required int? syncId, - }) : this._internal( - () => Tracks()..syncId = syncId, - from: tracksProvider, - name: r'tracksProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$tracksHash, - dependencies: TracksFamily._dependencies, - allTransitiveDependencies: TracksFamily._allTransitiveDependencies, - syncId: syncId, - ); + TracksProvider({required int? syncId}) + : this._internal( + () => Tracks()..syncId = syncId, + from: tracksProvider, + name: r'tracksProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$tracksHash, + dependencies: TracksFamily._dependencies, + allTransitiveDependencies: TracksFamily._allTransitiveDependencies, + syncId: syncId, + ); TracksProvider._internal( super._createNotifier, { @@ -111,12 +99,8 @@ class TracksProvider final int? syncId; @override - TrackPreference? runNotifierBuild( - covariant Tracks notifier, - ) { - return notifier.build( - syncId: syncId, - ); + TrackPreference? runNotifierBuild(covariant Tracks notifier) { + return notifier.build(syncId: syncId); } @override @@ -177,14 +161,14 @@ String _$updateProgressAfterReadingStateHash() => @ProviderFor(UpdateProgressAfterReadingState) final updateProgressAfterReadingStateProvider = AutoDisposeNotifierProvider.internal( - UpdateProgressAfterReadingState.new, - name: r'updateProgressAfterReadingStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$updateProgressAfterReadingStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + UpdateProgressAfterReadingState.new, + name: r'updateProgressAfterReadingStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$updateProgressAfterReadingStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$UpdateProgressAfterReadingState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/modules/more/settings/track/track.dart b/lib/modules/more/settings/track/track.dart index 5d2ff978..bb5d24f9 100644 --- a/lib/modules/more/settings/track/track.dart +++ b/lib/modules/more/settings/track/track.dart @@ -7,10 +7,13 @@ import 'package:mangayomi/models/track_preference.dart'; import 'package:mangayomi/modules/more/settings/track/providers/track_providers.dart'; import 'package:mangayomi/modules/more/settings/track/widgets/track_listile.dart'; import 'package:mangayomi/modules/more/widgets/list_tile_widget.dart'; +import 'package:mangayomi/modules/tracker_library/tracker_library_screen.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/services/trackers/anilist.dart'; import 'package:mangayomi/services/trackers/kitsu.dart'; import 'package:mangayomi/services/trackers/myanimelist.dart'; +import 'package:mangayomi/services/trackers/simkl.dart'; +import 'package:mangayomi/services/trackers/trakt_tv.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; class TrackScreen extends ConsumerWidget { @@ -65,16 +68,22 @@ class TrackScreen extends ConsumerWidget { ), TrackListile( onTap: () async { - await ref.read(anilistProvider(syncId: 2).notifier).login(); + await ref + .read( + anilistProvider( + syncId: TrackerProviders.anilist.syncId, + ).notifier, + ) + .login(); }, - id: 2, + id: TrackerProviders.anilist.syncId, entries: entries!, ), TrackListile( onTap: () async { _showDialogLogin(context, ref); }, - id: 3, + id: TrackerProviders.kitsu.syncId, entries: entries, ), TrackListile( @@ -82,13 +91,41 @@ class TrackScreen extends ConsumerWidget { await ref .read( myAnimeListProvider( - syncId: 1, + syncId: TrackerProviders.myAnimeList.syncId, itemType: null, ).notifier, ) .login(); }, - id: 1, + id: TrackerProviders.myAnimeList.syncId, + entries: entries, + ), + TrackListile( + onTap: () async { + await ref + .read( + simklProvider( + syncId: TrackerProviders.simkl.syncId, + itemType: null, + ).notifier, + ) + .login(); + }, + id: TrackerProviders.simkl.syncId, + entries: entries, + ), + TrackListile( + onTap: () async { + await ref + .read( + traktTvProvider( + syncId: TrackerProviders.trakt.syncId, + itemType: null, + ).notifier, + ) + .login(); + }, + id: TrackerProviders.trakt.syncId, entries: entries, ), ListTile( @@ -231,7 +268,11 @@ void _showDialogLogin(BuildContext context, WidgetRef ref) { isLoading = true; }); final res = await ref - .read(kitsuProvider(syncId: 3).notifier) + .read( + kitsuProvider( + syncId: TrackerProviders.kitsu.syncId, + ).notifier, + ) .login(email, password); if (!res.$1) { setState(() { diff --git a/lib/modules/more/statistics/statistics_provider.g.dart b/lib/modules/more/statistics/statistics_provider.g.dart index 178007ee..c7611028 100644 --- a/lib/modules/more/statistics/statistics_provider.g.dart +++ b/lib/modules/more/statistics/statistics_provider.g.dart @@ -32,9 +32,7 @@ class _SystemHash { abstract class _$StatisticsState extends BuildlessAutoDisposeNotifier { late final ItemType itemType; - void build( - ItemType itemType, - ); + void build(ItemType itemType); } /// See also [StatisticsState]. @@ -47,21 +45,15 @@ class StatisticsStateFamily extends Family { const StatisticsStateFamily(); /// See also [StatisticsState]. - StatisticsStateProvider call( - ItemType itemType, - ) { - return StatisticsStateProvider( - itemType, - ); + StatisticsStateProvider call(ItemType itemType) { + return StatisticsStateProvider(itemType); } @override StatisticsStateProvider getProviderOverride( covariant StatisticsStateProvider provider, ) { - return call( - provider.itemType, - ); + return call(provider.itemType); } static const Iterable? _dependencies = null; @@ -83,21 +75,19 @@ class StatisticsStateFamily extends Family { class StatisticsStateProvider extends AutoDisposeNotifierProviderImpl { /// See also [StatisticsState]. - StatisticsStateProvider( - ItemType itemType, - ) : this._internal( - () => StatisticsState()..itemType = itemType, - from: statisticsStateProvider, - name: r'statisticsStateProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$statisticsStateHash, - dependencies: StatisticsStateFamily._dependencies, - allTransitiveDependencies: - StatisticsStateFamily._allTransitiveDependencies, - itemType: itemType, - ); + StatisticsStateProvider(ItemType itemType) + : this._internal( + () => StatisticsState()..itemType = itemType, + from: statisticsStateProvider, + name: r'statisticsStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$statisticsStateHash, + dependencies: StatisticsStateFamily._dependencies, + allTransitiveDependencies: + StatisticsStateFamily._allTransitiveDependencies, + itemType: itemType, + ); StatisticsStateProvider._internal( super._createNotifier, { @@ -112,12 +102,8 @@ class StatisticsStateProvider final ItemType itemType; @override - void runNotifierBuild( - covariant StatisticsState notifier, - ) { - return notifier.build( - itemType, - ); + void runNotifierBuild(covariant StatisticsState notifier) { + return notifier.build(itemType); } @override @@ -170,5 +156,6 @@ class _StatisticsStateProviderElement @override ItemType get itemType => (origin as StatisticsStateProvider).itemType; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/more/widgets/downloaded_only_widget.dart b/lib/modules/more/widgets/downloaded_only_widget.dart new file mode 100644 index 00000000..6a0a1276 --- /dev/null +++ b/lib/modules/more/widgets/downloaded_only_widget.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mangayomi/modules/more/providers/downloaded_only_state_provider.dart'; +import 'package:mangayomi/modules/more/widgets/list_tile_widget.dart'; +import 'package:mangayomi/providers/l10n_providers.dart'; + +class DownloadedOnlyWidget extends ConsumerWidget { + const DownloadedOnlyWidget({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final l10n = l10nLocalizations(context); + final downloadedOnly = ref.watch(downloadedOnlyStateProvider); + return ListTileWidget( + onTap: () => ref + .read(downloadedOnlyStateProvider.notifier) + .setDownloadedOnly(!downloadedOnly), + icon: Icons.cloud_off_outlined, + subtitle: l10n!.downloaded_only_description, + title: l10n.downloaded_only, + trailing: Switch( + value: downloadedOnly, + onChanged: (value) => ref + .read(downloadedOnlyStateProvider.notifier) + .setDownloadedOnly(value), + ), + ); + } +} diff --git a/lib/modules/more/widgets/list_tile_widget.dart b/lib/modules/more/widgets/list_tile_widget.dart index 4952b4de..31717dd1 100644 --- a/lib/modules/more/widgets/list_tile_widget.dart +++ b/lib/modules/more/widgets/list_tile_widget.dart @@ -31,6 +31,12 @@ class ListTileWidget extends StatelessWidget { child: Icon(icon, color: context.primaryColor), ), title: Text(title), + subtitle: subtitle != null + ? Text( + subtitle!, + style: TextStyle(fontSize: 11, color: context.secondaryColor), + ) + : null, trailing: trailing, ); } diff --git a/lib/modules/novel/novel_reader_controller_provider.g.dart b/lib/modules/novel/novel_reader_controller_provider.g.dart index 1ddf7923..42f2d479 100644 --- a/lib/modules/novel/novel_reader_controller_provider.g.dart +++ b/lib/modules/novel/novel_reader_controller_provider.g.dart @@ -34,9 +34,7 @@ abstract class _$NovelReaderController extends BuildlessAutoDisposeNotifier { late final Chapter chapter; - void build({ - required Chapter chapter, - }); + void build({required Chapter chapter}); } /// See also [NovelReaderController]. @@ -49,21 +47,15 @@ class NovelReaderControllerFamily extends Family { const NovelReaderControllerFamily(); /// See also [NovelReaderController]. - NovelReaderControllerProvider call({ - required Chapter chapter, - }) { - return NovelReaderControllerProvider( - chapter: chapter, - ); + NovelReaderControllerProvider call({required Chapter chapter}) { + return NovelReaderControllerProvider(chapter: chapter); } @override NovelReaderControllerProvider getProviderOverride( covariant NovelReaderControllerProvider provider, ) { - return call( - chapter: provider.chapter, - ); + return call(chapter: provider.chapter); } static const Iterable? _dependencies = null; @@ -85,21 +77,19 @@ class NovelReaderControllerFamily extends Family { class NovelReaderControllerProvider extends AutoDisposeNotifierProviderImpl { /// See also [NovelReaderController]. - NovelReaderControllerProvider({ - required Chapter chapter, - }) : this._internal( - () => NovelReaderController()..chapter = chapter, - from: novelReaderControllerProvider, - name: r'novelReaderControllerProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$novelReaderControllerHash, - dependencies: NovelReaderControllerFamily._dependencies, - allTransitiveDependencies: - NovelReaderControllerFamily._allTransitiveDependencies, - chapter: chapter, - ); + NovelReaderControllerProvider({required Chapter chapter}) + : this._internal( + () => NovelReaderController()..chapter = chapter, + from: novelReaderControllerProvider, + name: r'novelReaderControllerProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$novelReaderControllerHash, + dependencies: NovelReaderControllerFamily._dependencies, + allTransitiveDependencies: + NovelReaderControllerFamily._allTransitiveDependencies, + chapter: chapter, + ); NovelReaderControllerProvider._internal( super._createNotifier, { @@ -114,12 +104,8 @@ class NovelReaderControllerProvider final Chapter chapter; @override - void runNotifierBuild( - covariant NovelReaderController notifier, - ) { - return notifier.build( - chapter: chapter, - ); + void runNotifierBuild(covariant NovelReaderController notifier) { + return notifier.build(chapter: chapter); } @override @@ -140,7 +126,7 @@ class NovelReaderControllerProvider @override AutoDisposeNotifierProviderElement - createElement() { + createElement() { return _NovelReaderControllerProviderElement(this); } @@ -173,5 +159,6 @@ class _NovelReaderControllerProviderElement @override Chapter get chapter => (origin as NovelReaderControllerProvider).chapter; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/modules/novel/novel_reader_view.dart b/lib/modules/novel/novel_reader_view.dart index 57644f65..dd1f83f7 100644 --- a/lib/modules/novel/novel_reader_view.dart +++ b/lib/modules/novel/novel_reader_view.dart @@ -11,7 +11,6 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/chapter.dart'; -import 'package:mangayomi/models/page.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/anime/widgets/desktop.dart'; import 'package:mangayomi/modules/manga/reader/widgets/btn_chapter_list_dialog.dart'; @@ -22,9 +21,7 @@ import 'package:mangayomi/services/get_html_content.dart'; import 'package:mangayomi/utils/extensions/dom_extensions.dart'; import 'package:mangayomi/utils/utils.dart'; import 'package:mangayomi/modules/manga/reader/providers/push_router.dart'; -import 'package:mangayomi/services/get_chapter_pages.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; -import 'package:mangayomi/utils/global_style.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:window_manager/window_manager.dart'; import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; @@ -421,7 +418,11 @@ class _NovelWebViewState extends ConsumerState IconButton( onPressed: () async { final manga = chapter.manga.value!; - final source = getSource(manga.lang!, manga.source!)!; + final source = getSource( + manga.lang!, + manga.source!, + manga.sourceId, + )!; String url = chapter.url!.startsWith('/') ? "${source.baseUrl}/${chapter.url!}" : chapter.url!; @@ -759,104 +760,3 @@ class _NovelWebViewState extends ConsumerState return null; } } - -class UChapDataPreload { - Chapter? chapter; - Directory? directory; - PageUrl? pageUrl; - bool? isLocale; - Uint8List? archiveImage; - int? index; - GetChapterPagesModel? chapterUrlModel; - int? pageIndex; - Uint8List? cropImage; - UChapDataPreload( - this.chapter, - this.directory, - this.pageUrl, - this.isLocale, - this.archiveImage, - this.index, - this.chapterUrlModel, - this.pageIndex, { - this.cropImage, - }); -} - -class CustomPopupMenuButton extends StatelessWidget { - final String label; - final String title; - final ValueChanged onSelected; - final T value; - final List list; - final String Function(T) itemText; - const CustomPopupMenuButton({ - super.key, - required this.label, - required this.title, - required this.onSelected, - required this.value, - required this.list, - required this.itemText, - }); - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: PopupMenuButton( - popUpAnimationStyle: popupAnimationStyle, - tooltip: "", - offset: Offset.fromDirection(1), - color: Colors.black, - onSelected: onSelected, - itemBuilder: (context) => [ - for (var d in list) - PopupMenuItem( - value: d, - child: Row( - children: [ - Icon( - Icons.check, - color: d == value ? Colors.white : Colors.transparent, - ), - const SizedBox(width: 7), - Text( - itemText(d), - style: const TextStyle(color: Colors.white), - ), - ], - ), - ), - ], - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 15), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Flexible( - child: Text( - label, - style: TextStyle( - color: Theme.of( - context, - ).textTheme.bodyLarge!.color!.withValues(alpha: 0.9), - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - ), - Row( - children: [ - Text(title), - const SizedBox(width: 20), - const Icon(Icons.keyboard_arrow_down_outlined), - ], - ), - ], - ), - ), - ), - ); - } -} diff --git a/lib/modules/tracker_library/tracker_item_card.dart b/lib/modules/tracker_library/tracker_item_card.dart index 42627b08..07215c92 100644 --- a/lib/modules/tracker_library/tracker_item_card.dart +++ b/lib/modules/tracker_library/tracker_item_card.dart @@ -15,11 +15,13 @@ import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; class TrackerItemCard extends StatelessWidget { final TrackSearch track; final ItemType itemType; + final int? mangaId; const TrackerItemCard({ super.key, required this.track, required this.itemType, + this.mangaId, }); @override @@ -140,6 +142,12 @@ class TrackerItemCard extends StatelessWidget { initExpanded: false, onChanged: (value) {}, ), + if (mangaId != null) + TextButton.icon( + onPressed: () => _pushLocalLibrary(context), + label: Text(l10n.track_library_navigate), + icon: Icon(Icons.north_east), + ), TextButton.icon( onPressed: () => _pushMigrationScreen(context), label: Text(l10n.track_library_add), @@ -182,6 +190,12 @@ class TrackerItemCard extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ + if (mangaId != null) + TextButton.icon( + onPressed: () => _pushLocalLibrary(context), + label: Text(l10n.track_library_navigate), + icon: Icon(Icons.north_east), + ), TextButton.icon( onPressed: () => _pushMigrationScreen(context), label: Text(l10n.track_library_add), @@ -250,6 +264,10 @@ class TrackerItemCard extends StatelessWidget { ); } + void _pushLocalLibrary(BuildContext context) { + context.push('/manga-reader/detail', extra: mangaId); + } + void _pushMigrationScreen(BuildContext context) { context.push( "/migrate/tracker", @@ -266,6 +284,7 @@ class TrackerItemCard extends StatelessWidget { link: null, status: Status.unknown, description: "", + sourceId: null, ), track, ), diff --git a/lib/modules/tracker_library/tracker_library_card.dart b/lib/modules/tracker_library/tracker_library_card.dart index daccc867..78ea1b1e 100644 --- a/lib/modules/tracker_library/tracker_library_card.dart +++ b/lib/modules/tracker_library/tracker_library_card.dart @@ -33,18 +33,18 @@ class _TrackerLibraryImageCardState Widget build(BuildContext context) { super.build(context); final trackData = widget.track; - return GestureDetector( - onTap: () => _showCard(context), - child: StreamBuilder( - stream: isar.tracks - .filter() - .mangaIdIsNotNull() - .mediaIdEqualTo(trackData.mediaId) - .itemTypeEqualTo(widget.itemType) - .watch(fireImmediately: true), - builder: (context, snapshot) { - final hasData = snapshot.hasData && snapshot.data!.isNotEmpty; - return Padding( + return StreamBuilder( + stream: isar.tracks + .filter() + .mangaIdIsNotNull() + .mediaIdEqualTo(trackData.mediaId) + .itemTypeEqualTo(widget.itemType) + .watch(fireImmediately: true), + builder: (context, snapshot) { + final hasData = snapshot.hasData && snapshot.data!.isNotEmpty; + return GestureDetector( + onTap: () => _showCard(context, snapshot.data?.firstOrNull?.mangaId), + child: Padding( padding: const EdgeInsets.only(left: 10), child: Stack( children: [ @@ -129,17 +129,20 @@ class _TrackerLibraryImageCardState ), ], ), - ); - }, - ), + ), + ); + }, ); } - void _showCard(BuildContext context) { + void _showCard(BuildContext context, int? mangaId) { showDialog( context: context, - builder: (context) => - TrackerItemCard(track: widget.track, itemType: widget.itemType), + builder: (context) => TrackerItemCard( + track: widget.track, + itemType: widget.itemType, + mangaId: mangaId, + ), ); } diff --git a/lib/modules/tracker_library/tracker_library_screen.dart b/lib/modules/tracker_library/tracker_library_screen.dart index 4affe1ba..04154b73 100644 --- a/lib/modules/tracker_library/tracker_library_screen.dart +++ b/lib/modules/tracker_library/tracker_library_screen.dart @@ -24,7 +24,8 @@ enum TrackerProviders { myAnimeList(syncId: 1, name: "MAL"), anilist(syncId: 2, name: "AL"), kitsu(syncId: 3, name: "Kitsu"), - trakt(syncId: 4, name: "Trakt"); + simkl(syncId: 4, name: "Simkl"), + trakt(syncId: 5, name: "Trakt"); const TrackerProviders({required this.syncId, required this.name}); @@ -68,6 +69,8 @@ class _TrackerLibraryScreenState extends ConsumerState { 1 => _sectionsMAL(trackerProvider.syncId, itemType), 2 => _sectionsAL(trackerProvider.syncId, itemType), 3 => _sectionsKitsu(trackerProvider.syncId, itemType), + 4 => _sectionsSimkl(trackerProvider.syncId, itemType), + 5 => _sectionsTrakt(trackerProvider.syncId, itemType), _ => [], }; if (_isSearch && _query.isNotEmpty) { @@ -86,7 +89,10 @@ class _TrackerLibraryScreenState extends ConsumerState { return Scaffold( appBar: AppBar( title: Text( - "${trackerProvider.name} | ${itemType == ItemType.anime ? l10n.anime : l10n.manga}", + (trackerProvider.syncId == TrackerProviders.simkl.syncId || + trackerProvider.syncId == TrackerProviders.trakt.syncId) + ? trackerProvider.name + : "${trackerProvider.name} | ${itemType == ItemType.anime ? l10n.anime : l10n.manga}", ), leading: !_isSearch ? null : Container(), actions: [ @@ -157,9 +163,11 @@ class _TrackerLibraryScreenState extends ConsumerState { body: Padding( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5), child: StreamBuilder( - stream: isar.trackPreferences.filter().syncIdIsNotNull().watch( - fireImmediately: true, - ), + stream: isar.trackPreferences + .filter() + .syncIdIsNotNull() + .anyOf([false, null], (q, e) => q.refreshingEqualTo(e)) + .watch(fireImmediately: true), builder: (context, snapshot) { _preferences = snapshot.hasData ? snapshot.data ?? [] : []; return _preferences.any((p) => p.syncId == trackerProvider.syncId) @@ -201,6 +209,13 @@ class _TrackerLibraryScreenState extends ConsumerState { TrackerProviders trackerProvider, ItemType itemType, ) async { + final temp = Track( + syncId: trackerProvider.syncId, + status: TrackStatus.completed, + ); + await ref + .read(trackStateProvider(track: temp, itemType: null).notifier) + .checkRefresh(); final box = await Hive.openBox("tracker_library"); final keys = box.keys.where( (e) => (e as String).startsWith( @@ -211,6 +226,108 @@ class _TrackerLibraryScreenState extends ConsumerState { setState(() {}); } + List _sectionsTrakt(int syncId, ItemType itemType) { + return [ + TrackLibrarySection( + name: "Continue watching movies", + syncId: syncId, + func: _fetchUserData(syncId, ItemType.manga), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Continue watching series", + syncId: syncId, + func: _fetchUserData(syncId, ItemType.anime), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Trending Movies", + syncId: syncId, + func: _fetchGeneralData(syncId, ItemType.manga), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Trending Series", + syncId: syncId, + func: _fetchGeneralData(syncId, ItemType.anime), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Popular Movies", + syncId: syncId, + func: _fetchGeneralData(syncId, ItemType.manga, rankingType: "popular"), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Popular Series", + syncId: syncId, + func: _fetchGeneralData(syncId, ItemType.anime, rankingType: "popular"), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Top Movies (All Time)", + syncId: syncId, + func: _fetchGeneralData( + syncId, + ItemType.manga, + rankingType: "favorited/all", + ), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Top Series (All Time)", + syncId: syncId, + func: _fetchGeneralData( + syncId, + ItemType.anime, + rankingType: "favorited/all", + ), + itemType: ItemType.anime, + ), + ]; + } + + List _sectionsSimkl(int syncId, ItemType itemType) { + return [ + TrackLibrarySection( + name: "Continue watching movies", + syncId: syncId, + func: _fetchUserData(syncId, ItemType.manga), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Continue watching series", + syncId: syncId, + func: _fetchUserData(syncId, ItemType.anime), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Trending Movies", + syncId: syncId, + func: _fetchGeneralData(syncId, ItemType.manga), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Trending Series", + syncId: syncId, + func: _fetchGeneralData(syncId, ItemType.anime), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Airing Series", + syncId: syncId, + func: _fetchGeneralData(syncId, ItemType.anime, rankingType: "airing"), + itemType: ItemType.anime, + ), + TrackLibrarySection( + name: "Top Series (All Time)", + syncId: syncId, + func: _fetchGeneralData(syncId, ItemType.anime, rankingType: "best"), + itemType: ItemType.anime, + ), + ]; + } + List _sectionsMAL(int syncId, ItemType itemType) { return itemType == ItemType.anime ? [ @@ -505,6 +622,8 @@ class _TrackerLibraryScreenState extends ConsumerState { _getListile(l10n, TrackerProviders.myAnimeList.syncId), _getListile(l10n, TrackerProviders.anilist.syncId), _getListile(l10n, TrackerProviders.kitsu.syncId), + _getListile(l10n, TrackerProviders.simkl.syncId), + _getListile(l10n, TrackerProviders.trakt.syncId), ], ), ), @@ -561,13 +680,17 @@ class _TrackerLibraryScreenState extends ConsumerState { ), enabled: isLoggedIn, onTap: () { - if (isManga == null) { + if (isManga == null && + syncId != TrackerProviders.simkl.syncId && + syncId != TrackerProviders.trakt.syncId) { context.pop(); _openSwitchTypeDialog(l10n, syncId); } else { ref.read(lastTrackerLibraryLocationStateProvider.notifier).set(( syncId, - isManga, + isManga ?? + (syncId != TrackerProviders.simkl.syncId && + syncId != TrackerProviders.trakt.syncId), )); context.pop(); } diff --git a/lib/modules/updates/updates_screen.dart b/lib/modules/updates/updates_screen.dart index 822bb823..14ff535a 100644 --- a/lib/modules/updates/updates_screen.dart +++ b/lib/modules/updates/updates_screen.dart @@ -293,12 +293,14 @@ class _UpdatesScreenState extends ConsumerState ) .findAll(); final idsToDelete = []; - for (var update in updates) { - idsToDelete.add(update.id!); - ref - .read(synchingProvider(syncId: 1).notifier) - .addChangedPart(ActionType.removeUpdate, update.id, "{}", false); - } + isar.writeTxnSync(() { + for (var update in updates) { + idsToDelete.add(update.id!); + ref + .read(synchingProvider(syncId: 1).notifier) + .addChangedPart(ActionType.removeUpdate, update.id, "{}", false); + } + }); await isar.writeTxn(() => isar.updates.deleteAll(idsToDelete)); } diff --git a/lib/modules/updates/widgets/update_chapter_list_tile_widget.dart b/lib/modules/updates/widgets/update_chapter_list_tile_widget.dart index 40b162c2..4ec472ae 100644 --- a/lib/modules/updates/widgets/update_chapter_list_tile_widget.dart +++ b/lib/modules/updates/widgets/update_chapter_list_tile_widget.dart @@ -71,6 +71,7 @@ class UpdateChapterListTileWidget extends ConsumerWidget { headersProvider( source: manga.source!, lang: manga.lang!, + sourceId: manga.sourceId, ), ), ), diff --git a/lib/modules/webview/webview.dart b/lib/modules/webview/webview.dart index 5f6bb8f8..b5968977 100644 --- a/lib/modules/webview/webview.dart +++ b/lib/modules/webview/webview.dart @@ -239,7 +239,14 @@ class _MangaWebViewState extends ConsumerState { if (value == 0) { _webViewController?.reload(); } else if (value == 1) { - Share.share(_url); + final box = + context.findRenderObject() as RenderBox?; + Share.share( + _url, + sharePositionOrigin: + box!.localToGlobal(Offset.zero) & + box.size, + ); } else if (value == 2) { await InAppBrowser.openWithSystemBrowser( url: WebUri(_url), diff --git a/lib/modules/widgets/bottom_select_bar.dart b/lib/modules/widgets/bottom_select_bar.dart new file mode 100644 index 00000000..0f2cc56b --- /dev/null +++ b/lib/modules/widgets/bottom_select_bar.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; + +/// Bar, that appears at the bottom of the screen when long-pressing (selecting) +/// a Manga/Anime/Novel or Chapter/Episode +class BottomSelectBar extends StatelessWidget { + final bool isVisible; + final List actions; + + const BottomSelectBar({ + super.key, + required this.isVisible, + required this.actions, + }); + + @override + Widget build(BuildContext context) { + return AnimatedContainer( + curve: Curves.easeIn, + decoration: BoxDecoration( + color: context.primaryColor.withValues(alpha: 0.2), + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(20), + topRight: Radius.circular(20), + ), + ), + duration: const Duration(milliseconds: 100), + height: isVisible ? 70 : 0, + width: context.width(1), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: actions, + ), + ); + } +} + +/// Button for the BottomSelectBar +class BottomSelectButton extends StatelessWidget { + final Widget icon; + final VoidCallback onPressed; + + const BottomSelectButton({ + super.key, + required this.icon, + required this.onPressed, + }); + + @override + Widget build(BuildContext context) { + return Expanded( + child: SizedBox( + height: 70, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + elevation: 0, + backgroundColor: Colors.transparent, + shadowColor: Colors.transparent, + ), + onPressed: onPressed, + child: icon, + ), + ), + ); + } +} diff --git a/lib/modules/widgets/category_selection_dialog.dart b/lib/modules/widgets/category_selection_dialog.dart index 1d79cf21..19719f92 100644 --- a/lib/modules/widgets/category_selection_dialog.dart +++ b/lib/modules/widgets/category_selection_dialog.dart @@ -7,6 +7,7 @@ import 'package:mangayomi/models/category.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/modules/library/providers/library_state_provider.dart'; import 'package:mangayomi/modules/library/widgets/list_tile_manga_category.dart'; +import 'package:mangayomi/modules/manga/detail/providers/state_providers.dart'; import 'package:mangayomi/modules/manga/detail/widgets/chapter_filter_list_tile_widget.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; @@ -151,7 +152,7 @@ void showCategorySelectionDialog({ if (isBulk) { ref.read(mangasListStateProvider.notifier).clear(); ref - .read(isLongPressedMangaStateProvider.notifier) + .read(isLongPressedStateProvider.notifier) .update(false); } }); diff --git a/lib/modules/widgets/manga_image_card_widget.dart b/lib/modules/widgets/manga_image_card_widget.dart index faf8b92d..f0c648b2 100644 --- a/lib/modules/widgets/manga_image_card_widget.dart +++ b/lib/modules/widgets/manga_image_card_widget.dart @@ -41,7 +41,17 @@ class MangaImageCardWidget extends ConsumerWidget { .sourceEqualTo(source.name) .watch(fireImmediately: true), builder: (context, snapshot) { - final hasData = snapshot.hasData && snapshot.data!.isNotEmpty; + bool hasData = snapshot.hasData; + final mangaList = hasData + ? snapshot.data! + .where( + (element) => element.sourceId == null + ? true + : element.sourceId == source.id, + ) + .toList() + : []; + hasData = hasData && mangaList.isNotEmpty; return CoverViewWidget( bottomTextWidget: BottomTextWidget( maxLines: 1, @@ -49,19 +59,23 @@ class MangaImageCardWidget extends ConsumerWidget { isComfortableGrid: isComfortableGrid, ), isComfortableGrid: isComfortableGrid, - image: hasData && snapshot.data!.first.customCoverImage != null - ? MemoryImage(snapshot.data!.first.customCoverImage as Uint8List) + image: hasData && mangaList.first.customCoverImage != null + ? MemoryImage(mangaList.first.customCoverImage as Uint8List) as ImageProvider : CustomExtendedNetworkImageProvider( toImgUrl( hasData - ? snapshot.data!.first.customCoverFromTracker ?? - snapshot.data!.first.imageUrl ?? + ? mangaList.first.customCoverFromTracker ?? + mangaList.first.imageUrl ?? "" : getMangaDetail!.imageUrl ?? "", ), headers: ref.watch( - headersProvider(source: source.name!, lang: source.lang!), + headersProvider( + source: source.name!, + lang: source.lang!, + sourceId: source.id, + ), ), cache: true, cacheMaxAge: const Duration(days: 7), @@ -74,6 +88,7 @@ class MangaImageCardWidget extends ConsumerWidget { lang: source.lang!, source: source.name!, itemType: itemType, + sourceId: source.id, ); }, onLongPress: () { @@ -85,6 +100,7 @@ class MangaImageCardWidget extends ConsumerWidget { source: source.name!, itemType: itemType, addToFavourite: true, + sourceId: source.id, ); }, onSecondaryTap: () { @@ -96,15 +112,16 @@ class MangaImageCardWidget extends ConsumerWidget { source: source.name!, itemType: itemType, addToFavourite: true, + sourceId: source.id, ); }, children: [ Container( - color: hasData && snapshot.data!.first.favorite! + color: hasData && mangaList.first.favorite! ? Colors.black.withValues(alpha: 0.5) : null, ), - if (hasData && snapshot.data!.first.favorite!) + if (hasData && mangaList.first.favorite!) Positioned( top: 0, left: 0, @@ -160,20 +177,34 @@ class MangaImageCardListTileWidget extends ConsumerWidget { .sourceEqualTo(source.name) .watch(fireImmediately: true), builder: (context, snapshot) { - final hasData = snapshot.hasData && snapshot.data!.isNotEmpty; - final image = hasData && snapshot.data!.first.customCoverImage != null - ? MemoryImage(snapshot.data!.first.customCoverImage as Uint8List) + bool hasData = snapshot.hasData; + final mangaList = hasData + ? snapshot.data! + .where( + (element) => element.sourceId == null + ? true + : element.sourceId == source.id, + ) + .toList() + : []; + hasData = hasData && mangaList.isNotEmpty; + final image = hasData && mangaList.first.customCoverImage != null + ? MemoryImage(mangaList.first.customCoverImage as Uint8List) as ImageProvider : CustomExtendedNetworkImageProvider( toImgUrl( hasData - ? snapshot.data!.first.customCoverFromTracker ?? - snapshot.data!.first.imageUrl ?? + ? mangaList.first.customCoverFromTracker ?? + mangaList.first.imageUrl ?? "" : getMangaDetail!.imageUrl ?? "", ), headers: ref.watch( - headersProvider(source: source.name!, lang: source.lang!), + headersProvider( + source: source.name!, + lang: source.lang!, + sourceId: source.id, + ), ), ); return Padding( @@ -191,6 +222,7 @@ class MangaImageCardListTileWidget extends ConsumerWidget { lang: source.lang!, source: source.name!, itemType: itemType, + sourceId: source.id, ); }, onLongPress: () { @@ -202,6 +234,7 @@ class MangaImageCardListTileWidget extends ConsumerWidget { source: source.name!, itemType: itemType, addToFavourite: true, + sourceId: source.id, ); }, onSecondaryTap: () { @@ -213,6 +246,7 @@ class MangaImageCardListTileWidget extends ConsumerWidget { source: source.name!, itemType: itemType, addToFavourite: true, + sourceId: source.id, ); }, child: Row( @@ -235,7 +269,7 @@ class MangaImageCardListTileWidget extends ConsumerWidget { Container( height: 55, width: 40, - color: hasData && snapshot.data!.first.favorite! + color: hasData && mangaList.first.favorite! ? Colors.black.withValues(alpha: 0.5) : null, ), @@ -252,7 +286,7 @@ class MangaImageCardListTileWidget extends ConsumerWidget { ), ), ), - if (hasData && snapshot.data!.first.favorite!) + if (hasData && mangaList.first.favorite!) Padding( padding: const EdgeInsets.all(8.0), child: Container( @@ -286,6 +320,7 @@ Future pushToMangaReaderDetail({ required String lang, required BuildContext context, required String source, + required int? sourceId, int? archiveId, Manga? mangaM, ItemType? itemType, @@ -309,6 +344,7 @@ Future pushToMangaReaderDetail({ lastUpdate: 0, itemType: itemType ?? ItemType.manga, artist: getManga.artist ?? '', + sourceId: sourceId, ); final empty = isar.mangas .filter() @@ -322,6 +358,10 @@ Future pushToMangaReaderDetail({ manga..updatedAt = DateTime.now().millisecondsSinceEpoch, ); }); + } else { + isar.writeTxnSync(() { + isar.mangas.putSync(manga); + }); } mangaId = isar.mangas @@ -329,12 +369,21 @@ Future pushToMangaReaderDetail({ .langEqualTo(lang) .nameEqualTo(manga.name) .sourceEqualTo(manga.source) - .findFirstSync()! + .findAllSync() + .firstWhere( + (element) => + element.sourceId == null ? true : element.sourceId == sourceId, + ) .id!; } else { mangaId = archiveId; } - + final mang = isar.mangas.getSync(mangaId); + if (mang!.sourceId == null) { + isar.writeTxnSync(() { + isar.mangas.putSync(mang..sourceId = sourceId); + }); + } final settings = isar.settings.getSync(227)!; final sortList = settings.sortChapterList ?? []; final checkIfExist = sortList diff --git a/lib/providers/l10n_providers.g.dart b/lib/providers/l10n_providers.g.dart index 32e309dc..20482874 100644 --- a/lib/providers/l10n_providers.g.dart +++ b/lib/providers/l10n_providers.g.dart @@ -12,14 +12,14 @@ String _$l10nLocaleStateHash() => r'eb373ea1cc24b6d826f395755bbe0e445f592b0d'; @ProviderFor(L10nLocaleState) final l10nLocaleStateProvider = AutoDisposeNotifierProvider.internal( - L10nLocaleState.new, - name: r'l10nLocaleStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$l10nLocaleStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + L10nLocaleState.new, + name: r'l10nLocaleStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$l10nLocaleStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$L10nLocaleState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/providers/storage_provider.dart b/lib/providers/storage_provider.dart index 78af0fc5..5cd46369 100644 --- a/lib/providers/storage_provider.dart +++ b/lib/providers/storage_provider.dart @@ -7,6 +7,7 @@ import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/category.dart'; import 'package:mangayomi/models/changed.dart'; import 'package:mangayomi/models/chapter.dart'; +import 'package:mangayomi/models/custom_button.dart'; import 'package:mangayomi/models/download.dart'; import 'package:mangayomi/models/update.dart'; import 'package:mangayomi/models/history.dart'; @@ -61,6 +62,13 @@ class StorageProvider { return directory; } + Future getMpvDirectory() async { + final defaultDirectory = await getDefaultDirectory(); + String dbDir = path.join(defaultDirectory!.path, 'mpv'); + await Directory(dbDir).create(recursive: true); + return Directory(dbDir); + } + Future getBtDirectory() async { final dbDir = await _btDirectoryPath(); await createDirectorySafely(dbDir); @@ -208,6 +216,7 @@ class StorageProvider { ChangedPartSchema, ChapterSchema, CategorySchema, + CustomButtonSchema, UpdateSchema, HistorySchema, DownloadSchema, @@ -246,6 +255,53 @@ class StorageProvider { } } + final prefs = await isar.trackPreferences + .filter() + .syncIdIsNotNull() + .findAll(); + await isar.writeTxn(() async { + for (final pref in prefs) { + await isar.trackPreferences.put(pref..refreshing = true); + } + }); + + final customButton = await isar.customButtons + .filter() + .idIsNotNull() + .findFirst(); + if (customButton == null) { + await isar.writeTxn(() async { + await isar.customButtons.put( + CustomButton( + title: "+85 s", + codePress: + """local intro_length = mp.get_property_native("user-data/current-anime/intro-length") +aniyomi.right_seek_by(intro_length)""", + codeLongPress: + """aniyomi.int_picker("Change intro length", "%ds", 0, 255, 1, "user-data/current-anime/intro-length")""", + codeStartup: """function update_button(_, length) + if length ~= nil then + if length == 0 then + aniyomi.hide_button() + return + else + aniyomi.show_button() + end + aniyomi.set_button_title("+" .. length .. " s") + end +end + +if \$isPrimary then + mp.observe_property("user-data/current-anime/intro-length", "number", update_button) +end""", + isFavourite: true, + pos: 0, + updatedAt: DateTime.now().millisecondsSinceEpoch, + ), + ); + }); + } + return isar; } } diff --git a/lib/router/router.dart b/lib/router/router.dart index a0b24a97..d5965fe6 100644 --- a/lib/router/router.dart +++ b/lib/router/router.dart @@ -3,7 +3,9 @@ import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/foundation.dart'; import 'package:go_router/go_router.dart'; import 'package:mangayomi/models/manga.dart'; +import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/models/track.dart'; import 'package:mangayomi/models/track_preference.dart'; import 'package:mangayomi/models/track_search.dart'; import 'package:mangayomi/modules/anime/anime_player_view.dart'; @@ -11,11 +13,19 @@ import 'package:mangayomi/modules/browse/extension/edit_code.dart'; import 'package:mangayomi/modules/browse/extension/extension_detail.dart'; import 'package:mangayomi/modules/browse/extension/widgets/create_extension.dart'; import 'package:mangayomi/modules/browse/sources/sources_filter_screen.dart'; +import 'package:mangayomi/modules/calendar/calendar_screen.dart'; import 'package:mangayomi/modules/manga/detail/widgets/migrate_screen.dart'; +import 'package:mangayomi/modules/manga/detail/widgets/recommendation_screen.dart'; +import 'package:mangayomi/modules/manga/detail/widgets/watch_order_screen.dart'; import 'package:mangayomi/modules/more/data_and_storage/create_backup.dart'; import 'package:mangayomi/modules/more/data_and_storage/data_and_storage.dart'; import 'package:mangayomi/modules/more/settings/appearance/custom_navigation_settings.dart'; import 'package:mangayomi/modules/more/settings/browse/source_repositories.dart'; +import 'package:mangayomi/modules/more/settings/player/custom_button_screen.dart'; +import 'package:mangayomi/modules/more/settings/player/player_advanced_screen.dart'; +import 'package:mangayomi/modules/more/settings/player/player_audio_screen.dart'; +import 'package:mangayomi/modules/more/settings/player/player_decoder_screen.dart'; +import 'package:mangayomi/modules/more/settings/player/player_overview_screen.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; import 'package:mangayomi/modules/more/statistics/statistics_screen.dart'; import 'package:mangayomi/modules/novel/novel_reader_view.dart'; @@ -168,9 +178,9 @@ class RouterNotifier extends ChangeNotifier { name: "extension_detail", builder: (source) => ExtensionDetail(source: source), ), - _genericRoute( + _genericRoute<(String?, ItemType)>( name: "globalSearch", - builder: (itemType) => GlobalSearchScreen(itemType: itemType), + builder: (data) => GlobalSearchScreen(search: data.$1, itemType: data.$2), ), _genericRoute(name: "about", child: const AboutScreen()), _genericRoute(name: "track", child: const TrackScreen()), @@ -203,6 +213,7 @@ class RouterNotifier extends ChangeNotifier { name: "trackingDetail", builder: (trackerPref) => TrackingDetail(trackerPref: trackerPref), ), + _genericRoute(name: "playerOverview", child: const PlayerOverviewScreen()), _genericRoute(name: "playerMode", child: const PlayerScreen()), _genericRoute( name: "codeEditor", @@ -214,6 +225,23 @@ class RouterNotifier extends ChangeNotifier { name: "customNavigationSettings", child: const CustomNavigationSettings(), ), + _genericRoute( + name: "customButtonScreen", + child: const CustomButtonScreen(), + ), + _genericRoute( + name: "playerDecoderScreen", + child: const PlayerDecoderScreen(), + ), + _genericRoute(name: "playerAudioScreen", child: const PlayerAudioScreen()), + _genericRoute( + name: "playerAdvancedScreen", + child: const PlayerAdvancedScreen(), + ), + _genericRoute( + name: "calendarScreen", + builder: (itemType) => CalendarScreen(itemType: itemType), + ), _genericRoute( name: "migrate", builder: (manga) => MigrationScreen(manga: manga), @@ -222,6 +250,18 @@ class RouterNotifier extends ChangeNotifier { name: "migrate/tracker", builder: (data) => MigrationScreen(manga: data.$1, trackSearch: data.$2), ), + _genericRoute<(String, ItemType, AlgorithmWeights)>( + name: "recommendations", + builder: (data) => RecommendationScreen( + name: data.$1, + itemType: data.$2, + algorithmWeights: data.$3, + ), + ), + _genericRoute<(String, Track?)>( + name: "watchOrder", + builder: (data) => WatchOrderScreen(name: data.$1, track: data.$2), + ), ]; GoRoute _genericRoute({ diff --git a/lib/router/router.g.dart b/lib/router/router.g.dart index d87a4020..950a0ee3 100644 --- a/lib/router/router.g.dart +++ b/lib/router/router.g.dart @@ -13,8 +13,9 @@ String _$routerHash() => r'fe1b18b9e03bd3df71cf66eabd78f0da3ac36247'; final routerProvider = AutoDisposeProvider.internal( router, name: r'routerProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') ? null : _$routerHash, + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$routerHash, dependencies: null, allTransitiveDependencies: null, ); @@ -29,14 +30,14 @@ String _$routerCurrentLocationStateHash() => @ProviderFor(RouterCurrentLocationState) final routerCurrentLocationStateProvider = AutoDisposeNotifierProvider.internal( - RouterCurrentLocationState.new, - name: r'routerCurrentLocationStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$routerCurrentLocationStateHash, - dependencies: null, - allTransitiveDependencies: null, -); + RouterCurrentLocationState.new, + name: r'routerCurrentLocationStateProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$routerCurrentLocationStateHash, + dependencies: null, + allTransitiveDependencies: null, + ); typedef _$RouterCurrentLocationState = AutoDisposeNotifier; // ignore_for_file: type=lint diff --git a/lib/services/aniskip.g.dart b/lib/services/aniskip.g.dart index c05db920..f7d0b025 100644 --- a/lib/services/aniskip.g.dart +++ b/lib/services/aniskip.g.dart @@ -13,8 +13,9 @@ String _$aniSkipHash() => r'2e5d19b025a2207ff64da7bf7908450ea9e5ff8c'; final aniSkipProvider = AutoDisposeNotifierProvider.internal( AniSkip.new, name: r'aniSkipProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') ? null : _$aniSkipHash, + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$aniSkipHash, dependencies: null, allTransitiveDependencies: null, ); diff --git a/lib/services/download_manager/m3u8/m3u8_downloader.dart b/lib/services/download_manager/m3u8/m3u8_downloader.dart index 5a4537c9..b2384aa5 100644 --- a/lib/services/download_manager/m3u8/m3u8_downloader.dart +++ b/lib/services/download_manager/m3u8/m3u8_downloader.dart @@ -14,6 +14,7 @@ import 'package:mangayomi/services/download_manager/m3u8/models/download.dart'; import 'package:mangayomi/services/download_manager/m3u8/models/ts_info.dart'; import 'package:mangayomi/src/rust/frb_generated.dart'; import 'package:mangayomi/utils/extensions/string_extensions.dart'; +import 'package:mangayomi/utils/log/logger.dart'; import 'package:path/path.dart' as path; import 'package:encrypt/encrypt.dart' as encrypt; import 'package:convert/convert.dart'; @@ -50,6 +51,7 @@ class M3u8Downloader { if (kDebugMode) { log('[M3u8Downloader] $message'); } + AppLogger.log(message); } void close() { @@ -149,18 +151,30 @@ class M3u8Downloader { continue; } _log('Downloading subtitle file: ${element.label}'); - subtitleFile.createSync(recursive: true); - final response = await _withRetry( - () => httpClient.get(Uri.parse(element.file ?? ''), headers: headers), - ); - if (response.statusCode != 200) { - _log('Warning: Failed to download subtitle file: ${element.label}'); + if (element.file == null || element.file!.trim().isEmpty) { + _log('Warning: No subtitle file: ${element.label}'); continue; } - _log('Subtitle file downloaded: ${element.label}'); - await subtitleFile.writeAsBytes(response.bodyBytes); + subtitleFile.createSync(recursive: true); + if (element.file!.startsWith("http")) { + final response = await _withRetry( + () => + httpClient.get(Uri.parse(element.file ?? ''), headers: headers), + ); + if (response.statusCode != 200) { + _log('Warning: Failed to download subtitle file: ${element.label}'); + continue; + } + _log('Subtitle file downloaded: ${element.label}'); + await subtitleFile.writeAsBytes(response.bodyBytes); + } else { + _log('Subtitle file written: ${element.label}'); + await subtitleFile.writeAsString(element.file!); + } } } catch (e) { + AppLogger.log("Download failed", logLevel: LogLevel.error); + AppLogger.log(e.toString(), logLevel: LogLevel.error); throw M3u8DownloaderException('Download failed', e); } finally { close(); diff --git a/lib/services/fetch_item_sources.g.dart b/lib/services/fetch_item_sources.g.dart index e39993b3..e8f42101 100644 --- a/lib/services/fetch_item_sources.g.dart +++ b/lib/services/fetch_item_sources.g.dart @@ -86,25 +86,24 @@ class FetchItemSourcesListProvider extends FutureProvider { required bool reFresh, required ItemType itemType, }) : this._internal( - (ref) => fetchItemSourcesList( - ref as FetchItemSourcesListRef, - id: id, - reFresh: reFresh, - itemType: itemType, - ), - from: fetchItemSourcesListProvider, - name: r'fetchItemSourcesListProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$fetchItemSourcesListHash, - dependencies: FetchItemSourcesListFamily._dependencies, - allTransitiveDependencies: - FetchItemSourcesListFamily._allTransitiveDependencies, - id: id, - reFresh: reFresh, - itemType: itemType, - ); + (ref) => fetchItemSourcesList( + ref as FetchItemSourcesListRef, + id: id, + reFresh: reFresh, + itemType: itemType, + ), + from: fetchItemSourcesListProvider, + name: r'fetchItemSourcesListProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$fetchItemSourcesListHash, + dependencies: FetchItemSourcesListFamily._dependencies, + allTransitiveDependencies: + FetchItemSourcesListFamily._allTransitiveDependencies, + id: id, + reFresh: reFresh, + itemType: itemType, + ); FetchItemSourcesListProvider._internal( super._createNotifier, { @@ -190,5 +189,6 @@ class _FetchItemSourcesListProviderElement extends FutureProviderElement @override ItemType get itemType => (origin as FetchItemSourcesListProvider).itemType; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/services/fetch_sources_list.dart b/lib/services/fetch_sources_list.dart index d5256b5a..ce0c105c 100644 --- a/lib/services/fetch_sources_list.dart +++ b/lib/services/fetch_sources_list.dart @@ -1,7 +1,10 @@ import 'dart:convert'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:http_interceptor/http_interceptor.dart'; import 'package:isar/isar.dart'; import 'package:mangayomi/eval/lib.dart'; +import 'package:mangayomi/eval/model/filter.dart'; +import 'package:mangayomi/eval/model/source_preference.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/settings.dart'; @@ -25,7 +28,57 @@ Future fetchSourcesList({ final info = await PackageInfo.fromPlatform(); final sourceList = (jsonDecode(req.body) as List) - .map((e) => Source.fromJson(e)) + .expand((e) sync* { + if (e['name'] != null && + e['pkg'] != null && + e['version'] != null && + e['code'] != null && + e['lang'] != null && + e['nsfw'] != null && + e['sources'] != null && + e['apk'] != null) { + final repoUrl = url.replaceAll("/index.min.json", ""); + final sources = e['sources'] as List; + for (final source in sources) { + final src = Source.fromJson(e) + ..apiUrl = '' + ..appMinVerReq = '' + ..dateFormat = '' + ..dateFormatLocale = '' + ..hasCloudflare = false + ..headers = '' + ..isActive = true + ..isAdded = false + ..isFullData = false + ..isNsfw = e['nsfw'] == 1 + ..isPinned = false + ..lastUsed = false + ..sourceCode = '' + ..typeSource = '' + ..versionLast = '0.0.1' + ..isObsolete = false + ..isLocal = false + ..name = source['name'] + ..lang = source['lang'] + ..baseUrl = source['baseUrl'] + ..sourceCodeUrl = "$repoUrl/apk/${e['apk']}" + ..sourceCodeLanguage = SourceCodeLanguage.mihon + ..itemType = + (e['pkg'] as String).startsWith( + "eu.kanade.tachiyomi.animeextension", + ) + ? ItemType.anime + : ItemType.manga + ..iconUrl = "$repoUrl/icon/${e['pkg']}.png" + ..notes = + "Requires Android Proxy Server (ApkBridge) for installing and using the extensions!"; + src.id = 'mihon-${source['id']}'.hashCode; + yield src; + } + } else { + yield Source.fromJson(e); + } + }) .where( (source) => source.itemType == itemType && @@ -74,14 +127,51 @@ Future _updateSource( ) async { final http = MClient.init(reqcopyWith: {'useDartHttpClient': true}); final req = await http.get(Uri.parse(source.sourceCodeUrl!)); - final headers = getExtensionService( - source..sourceCode = req.body, - ).getHeaders(); + final sourceCode = source.sourceCodeLanguage == SourceCodeLanguage.mihon + ? base64.encode(req.bodyBytes) + : req.body; + final androidProxyServer = ref.read(androidProxyServerStateProvider); + Map headers = {}; + bool? supportLatest; + FilterList? filterList; + List? preferenceList; + if (source.sourceCodeLanguage == SourceCodeLanguage.mihon) { + headers = await fetchHeadersDalvik( + http, + source..sourceCode = sourceCode, + androidProxyServer, + ); + supportLatest = await fetchSupportLatestDalvik( + http, + source..sourceCode = sourceCode, + androidProxyServer, + ); + filterList = await fetchFilterListDalvik( + http, + source..sourceCode = sourceCode, + androidProxyServer, + ); + preferenceList = await fetchPreferencesDalvik( + http, + source..sourceCode = sourceCode, + androidProxyServer, + ); + } else { + headers = getExtensionService( + source..sourceCode = sourceCode, + androidProxyServer, + ).getHeaders(); + } final updatedSource = Source() ..headers = jsonEncode(headers) + ..supportLatest = supportLatest + ..filterList = filterList != null ? jsonEncode(filterList.toJson()) : null + ..preferenceList = preferenceList != null + ? jsonEncode(preferenceList.map((e) => e.toJson()).toList()) + : null ..isAdded = true - ..sourceCode = req.body + ..sourceCode = sourceCode ..sourceCodeUrl = source.sourceCodeUrl ..id = source.id ..apiUrl = source.apiUrl @@ -200,3 +290,160 @@ int compareVersions(String version1, String version2) { return v1Parts.length.compareTo(v2Parts.length); } + +Future> fetchHeadersDalvik( + InterceptedClient client, + Source source, + String androidProxyServer, +) async { + try { + final name = source.itemType == ItemType.anime ? "Anime" : "Manga"; + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({"method": "headers$name", "data": source.sourceCode}), + ); + final data = jsonDecode(res.body) as List; + final Map headers = {}; + for (var i = 0; i + 1 < data.length; i += 2) { + headers[data[i]] = data[i + 1]; + } + return headers; + } catch (_) { + return {}; + } +} + +Future fetchSupportLatestDalvik( + InterceptedClient client, + Source source, + String androidProxyServer, +) async { + try { + final name = source.itemType == ItemType.anime ? "Anime" : "Manga"; + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": "supportLatest$name", + "data": source.sourceCode, + }), + ); + return res.body.trim() == "true"; + } catch (_) { + return false; + } +} + +Future fetchFilterListDalvik( + InterceptedClient client, + Source source, + String androidProxyServer, +) async { + try { + final name = source.itemType == ItemType.anime ? "Anime" : "Manga"; + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({"method": "filters$name", "data": source.sourceCode}), + ); + final data = jsonDecode(res.body) as List; + final filters = data.expand((e) sync* { + if (e['name'] is String && + e['state'] is Map && + e['values'] is List) { + yield SortFilter( + "${e['name']}Filter", + e['name'], + SortState(e['state']['index'], e['state']['ascending'], null), + (e['values'] as List) + .map((e) => SelectFilterOption(e, e, null)) + .toList(), + null, + ); + } else if (e['name'] is String && + e['state'] is int && + (e['values'] is List || e['vals'] is List)) { + yield SelectFilter( + "${e['name']}Filter", + e['name'], + e['state'], + e['vals'] is List + ? (e['vals'] as List) + .map( + (e) => SelectFilterOption(e['first'], e['second'], null), + ) + .toList() + : e['values'] is List + ? (e['values'] as List) + .map((e) => SelectFilterOption(e, e, null)) + .toList() + : [], + "SelectFilter", + ); + } else if (e['name'] is String && e['state'] is List) { + yield GroupFilter( + "${e['name']}Filter", + e['name'], + (e['state'] as List).map((e) { + if (e['included'] is bool && + e['ignored'] is bool && + e['excluded'] is bool) { + return TriStateFilter( + null, + e['name'], + e['id'] ?? e['name'], + null, + state: e['state'], + ); + } + return CheckBoxFilter( + null, + e['name'], + e['id'] ?? e['name'], + null, + state: e['state'], + ); + }).toList(), + "GroupFilter", + ); + } else if (e['name'] is String && e['state'] is String) { + yield TextFilter( + "${e['name']}Filter", + e['name'], + null, + state: e['state'], + ); + } else if (e['name'] is String && e['state'] is int) { + yield HeaderFilter(e['name'], "${e['name']}Filter"); + } + }).toList(); + return FilterList(filters); + } catch (_) { + return null; + } +} + +Future?> fetchPreferencesDalvik( + InterceptedClient client, + Source source, + String androidProxyServer, +) async { + try { + final name = source.itemType == ItemType.anime ? "Anime" : "Manga"; + final res = await client.post( + Uri.parse("$androidProxyServer/dalvik"), + body: jsonEncode({ + "method": "preferences$name", + "data": source.sourceCode, + }), + ); + final data = jsonDecode(res.body) as List; + return data + .map( + (e) => SourcePreference.fromJson(e) + ..id = null + ..sourceId = source.id, + ) + .toList(); + } catch (_) { + return null; + } +} diff --git a/lib/services/fetch_subtitles.dart b/lib/services/fetch_subtitles.dart new file mode 100644 index 00000000..4ee8d7d5 --- /dev/null +++ b/lib/services/fetch_subtitles.dart @@ -0,0 +1,171 @@ +import 'dart:convert'; +import 'package:mangayomi/services/http/m_client.dart'; + +Future> fetchImdbTitles(String query) async { + final http = MClient.init(reqcopyWith: {'useDartHttpClient': true}); + try { + final url = "https://api.imdbapi.dev/search/titles?query=$query"; + final res = await http.get( + Uri.parse(url), + headers: { + "Accept": "application/json", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36", + }, + ); + final data = json.decode(res.body) as Map; + return (data["titles"] as List?) + ?.map((e) => ImdbTitle.fromJson(e)) + .toList() ?? + []; + } catch (_) { + return []; + } +} + +Future?> fetchImdbEpisodes(String imdbId) async { + final http = MClient.init(reqcopyWith: {'useDartHttpClient': true}); + try { + final url = "https://api.imdbapi.dev/titles/$imdbId/episodes"; + final res = await http.get( + Uri.parse(url), + headers: { + "Accept": "application/json", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36", + }, + ); + final data = json.decode(res.body) as Map; + return (data["episodes"] as List?) + ?.map((e) => ImdbEpisode.fromJson(e)) + .toList(); + } catch (_) { + return null; + } +} + +Future?> fetchImdbSubtitles(String imdbId) async { + final http = MClient.init(reqcopyWith: {'useDartHttpClient': true}); + try { + final url = "https://sub.wyzie.ru/search?id=$imdbId"; + final res = await http.get( + Uri.parse(url), + headers: { + "Accept": "application/json", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36", + }, + ); + final data = json.decode(res.body) as List?; + return data + ?.map((e) => ImdbSubtitle.fromJson(e)) + .where((e) => e.url != null) + .toList(); + } catch (_) { + return null; + } +} + +class ImdbTitle { + final String id; + final String? type; + final String primaryTitle; + final String? originalTitle; + final String? primaryImage; + final int? startYear; + final int? endYear; + final double? aggregateRating; + final int? voteCount; + + ImdbTitle({ + required this.id, + this.type, + required this.primaryTitle, + this.originalTitle, + this.primaryImage, + this.startYear, + this.endYear, + this.aggregateRating, + this.voteCount, + }); + + factory ImdbTitle.fromJson(Map json) { + return ImdbTitle( + id: json["id"], + type: json["type"], + primaryTitle: json["primaryTitle"] ?? "???", + originalTitle: json["originalTitle"], + primaryImage: json["primaryImage"]?["url"], + startYear: json["startYear"], + endYear: json["endYear"], + aggregateRating: json["rating"]?["aggregateRating"] is int + ? (json["rating"]?["aggregateRating"] as int).toDouble() + : json["rating"]?["aggregateRating"], + voteCount: json["rating"]?["voteCount"], + ); + } +} + +class ImdbEpisode { + final String id; + final String title; + final String? primaryImage; + final String season; + final String episode; + + ImdbEpisode({ + required this.id, + required this.title, + this.primaryImage, + required this.season, + required this.episode, + }); + + factory ImdbEpisode.fromJson(Map json) { + return ImdbEpisode( + id: json["id"], + title: json["title"] ?? "???", + primaryImage: json["primaryImage"]?["url"], + season: json["season"] ?? "?", + episode: (json["episodeNumber"] as int?)?.toString() ?? "?", + ); + } +} + +class ImdbSubtitle { + final String id; + final String? url; + final String? flagUrl; + final String? format; + final String? encoding; + final String? displayLang; + final String? language; + final String? name; + final bool isHearingImpaired; + + ImdbSubtitle({ + required this.id, + this.url, + this.flagUrl, + this.format, + this.encoding, + this.displayLang, + this.language, + this.name, + required this.isHearingImpaired, + }); + + factory ImdbSubtitle.fromJson(Map json) { + return ImdbSubtitle( + id: json["id"], + url: json["url"], + flagUrl: json["flagUrl"], + format: json["format"], + encoding: json["encoding"], + displayLang: json["display"], + language: json["language"], + name: json["media"], + isHearingImpaired: json["isHearingImpaired"] ?? false, + ); + } +} diff --git a/lib/services/fetch_watch_order.dart b/lib/services/fetch_watch_order.dart new file mode 100644 index 00000000..75c06636 --- /dev/null +++ b/lib/services/fetch_watch_order.dart @@ -0,0 +1,218 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:html/dom.dart'; +import 'package:mangayomi/services/http/m_client.dart'; +import 'package:mangayomi/utils/extensions/dom_extensions.dart'; + +const _sequelData = + "&types%5B%5D=1&types%5B%5D=3&types%5B%5D=2&types%5B%5D=4&types%5B%5D=9&score=0&date_from=false&date_to=false&include_ptw=1&exclude_h=1&exclude_planned=1&exclude_dropped=0&exclude_not_aired=0&exclude_short=1&exclude_short_value=3"; + +Future> fetchSequels( + String? malUsername, + String? anilistUsername, +) async { + if (malUsername == null && anilistUsername == null) { + return []; + } + final http = MClient.init(reqcopyWith: {'useDartHttpClient': true}); + try { + final url = Uri.parse("https://chiaki.site/?/tools/sequel_locator_fetch"); + final res = await http.post( + url, + headers: { + "content-type": "application/x-www-form-urlencoded; charset=UTF-8", + "priority": "u=1, i", + "Referer": "https://chiaki.site/?/tools/watch_order", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36", + }, + body: + "user=${malUsername ?? anilistUsername}&list_source=${malUsername != null ? "mal" : "anilist"}$_sequelData", + ); + final data = jsonDecode(res.body) as Map?; + return (data?["data"] as List?) + ?.map((e) => SequelItem.fromJson(e)) + .toList() ?? + []; + } catch (_) { + return []; + } +} + +Future> searchWatchOrder(String name) async { + final http = MClient.init(reqcopyWith: {'useDartHttpClient': true}); + try { + final url = Uri.parse( + "https://chiaki.site/?/tools/autocomplete_series&term=$name", + ); + final res = await http.get( + url, + headers: { + "priority": "u=1, i", + "Referer": "https://chiaki.site/?/tools/watch_order", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36", + }, + ); + final data = jsonDecode(res.body) as List?; + return data?.map((e) => WatchOrderSearch.fromJson(e)).toList() ?? []; + } catch (_) { + return []; + } +} + +Future> fetchWatchOrder(String id) async { + final http = MClient.init(reqcopyWith: {'useDartHttpClient': true}); + try { + final res = await http.get( + Uri.parse("https://chiaki.site/?/tools/watch_order/id/$id"), + headers: { + "priority": "u=1, i", + "Referer": "https://chiaki.site/?/tools/watch_order", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36", + }, + ); + final doc = Document.html(res.body); + return doc + .select("table > tbody > tr") + ?.map((e) { + final img = e.selectFirst("td > div.wo_avatar_big")?.outerHtml; + final startIdx = img?.indexOf("url('") ?? -1; + final endIdx = img?.indexOf("')", max(0, startIdx)) ?? -1; + return WatchOrderItem( + id: e.attr("data-id") ?? id, + anilistId: e.attr("data-anilist-id") ?? "", + image: startIdx != -1 && endIdx != -1 + ? "https://chiaki.site/${img?.substring(startIdx + 5, endIdx)}" + : "", + name: + e.selectFirst("td > span.wo_title")?.text ?? + "Unknown title", + nameEnglish: e.selectFirst("td > span.uk-text-small")?.text, + text: + e + .selectFirst("td > span.uk-text-muted.uk-text-small") + ?.text ?? + "", + ); + }) + .where((e) => e.name != "Unknown title") + .toList() ?? + []; + } catch (_) { + return []; + } +} + +class SequelItem { + final String id; + final String? anilistId; + final String image; + final String episodes; + final String title; + final String group; + final String groupId; + final String period; + final String score; + final String scoreUsers; + final String type; + final List reason; + + SequelItem({ + required this.id, + required this.anilistId, + required this.image, + required this.episodes, + required this.title, + required this.group, + required this.groupId, + required this.period, + required this.score, + required this.scoreUsers, + required this.type, + required this.reason, + }); + + factory SequelItem.fromJson(Map json) { + return SequelItem( + id: json["id"], + anilistId: json["anilist_id"], + image: "https://chiaki.site/${json["image_url"]}", + episodes: json["episodes"], + title: json["title"], + group: json["group"], + groupId: json["group_id"], + period: json["period"], + score: json["score"], + scoreUsers: json["score_users"], + type: json["type"], + reason: + (json["reason"] as List?) + ?.map((e) => SequelReason.fromJson(e)) + .toList() ?? + [], + ); + } +} + +class SequelReason { + final String id; + final String image; + final String title; + + SequelReason({required this.id, required this.image, required this.title}); + + factory SequelReason.fromJson(Map json) { + return SequelReason( + id: json["id"], + image: "https://chiaki.site/${json["image_url"]}", + title: json["title"], + ); + } +} + +class WatchOrderSearch { + final String id; + final String image; + final String type; + final String name; + final int year; + + WatchOrderSearch({ + required this.id, + required this.image, + required this.type, + required this.name, + required this.year, + }); + + factory WatchOrderSearch.fromJson(Map json) { + return WatchOrderSearch( + id: json["id"], + image: "https://chiaki.site/${json["image"]}", + type: json["type"], + name: json["value"], + year: json["year"], + ); + } +} + +class WatchOrderItem { + final String id; + final String anilistId; + final String image; + final String name; + final String? nameEnglish; + final String text; + + WatchOrderItem({ + required this.id, + required this.anilistId, + required this.image, + required this.name, + required this.nameEnglish, + required this.text, + }); +} diff --git a/lib/services/get_chapter_pages.dart b/lib/services/get_chapter_pages.dart index d073a765..d3129850 100644 --- a/lib/services/get_chapter_pages.dart +++ b/lib/services/get_chapter_pages.dart @@ -1,6 +1,8 @@ import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; +import 'package:mangayomi/modules/manga/reader/u_chap_data_preload.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:path/path.dart' as p; import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/eval/javascript/http.dart'; @@ -9,7 +11,6 @@ import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/page.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/manga/archive_reader/providers/archive_reader_providers.dart'; -import 'package:mangayomi/modules/manga/reader/reader_view.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/utils/utils.dart'; import 'package:mangayomi/utils/reg_exp_matcher.dart'; @@ -62,6 +63,7 @@ Future getChapterPages( final source = getSource( chapter.manga.value!.lang!, chapter.manga.value!.source!, + chapter.manga.value!.sourceId, )!; if ((isarPageUrls?.urls?.isNotEmpty ?? false) && (isarPageUrls?.chapterUrl ?? chapter.url) == chapter.url) { @@ -74,7 +76,10 @@ Future getChapterPages( pageUrls.add(PageUrl(isarPageUrls.urls![i], headers: headers)); } } else { - pageUrls = await getExtensionService(source).getPageList(chapter.url!); + pageUrls = await getExtensionService( + source, + ref.read(androidProxyServerStateProvider), + ).getPageList(chapter.url!); } } diff --git a/lib/services/get_chapter_pages.g.dart b/lib/services/get_chapter_pages.g.dart index 90f0e848..6923136c 100644 --- a/lib/services/get_chapter_pages.g.dart +++ b/lib/services/get_chapter_pages.g.dart @@ -6,7 +6,7 @@ part of 'get_chapter_pages.dart'; // RiverpodGenerator // ************************************************************************** -String _$getChapterPagesHash() => r'08f56022f03c4834c69c50d0020007fa8b26c091'; +String _$getChapterPagesHash() => r'129624607a92b6d3a896a03b450862ce1e941ff6'; /// Copied from Dart SDK class _SystemHash { @@ -39,21 +39,15 @@ class GetChapterPagesFamily extends Family> { const GetChapterPagesFamily(); /// See also [getChapterPages]. - GetChapterPagesProvider call({ - required Chapter chapter, - }) { - return GetChapterPagesProvider( - chapter: chapter, - ); + GetChapterPagesProvider call({required Chapter chapter}) { + return GetChapterPagesProvider(chapter: chapter); } @override GetChapterPagesProvider getProviderOverride( covariant GetChapterPagesProvider provider, ) { - return call( - chapter: provider.chapter, - ); + return call(chapter: provider.chapter); } static const Iterable? _dependencies = null; @@ -75,24 +69,19 @@ class GetChapterPagesFamily extends Family> { class GetChapterPagesProvider extends AutoDisposeFutureProvider { /// See also [getChapterPages]. - GetChapterPagesProvider({ - required Chapter chapter, - }) : this._internal( - (ref) => getChapterPages( - ref as GetChapterPagesRef, - chapter: chapter, - ), - from: getChapterPagesProvider, - name: r'getChapterPagesProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getChapterPagesHash, - dependencies: GetChapterPagesFamily._dependencies, - allTransitiveDependencies: - GetChapterPagesFamily._allTransitiveDependencies, - chapter: chapter, - ); + GetChapterPagesProvider({required Chapter chapter}) + : this._internal( + (ref) => getChapterPages(ref as GetChapterPagesRef, chapter: chapter), + from: getChapterPagesProvider, + name: r'getChapterPagesProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getChapterPagesHash, + dependencies: GetChapterPagesFamily._dependencies, + allTransitiveDependencies: + GetChapterPagesFamily._allTransitiveDependencies, + chapter: chapter, + ); GetChapterPagesProvider._internal( super._createNotifier, { @@ -158,5 +147,6 @@ class _GetChapterPagesProviderElement @override Chapter get chapter => (origin as GetChapterPagesProvider).chapter; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/services/get_detail.dart b/lib/services/get_detail.dart index 9911c663..4b9c458d 100644 --- a/lib/services/get_detail.dart +++ b/lib/services/get_detail.dart @@ -1,6 +1,7 @@ import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/eval/model/m_manga.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; part 'get_detail.g.dart'; @@ -11,5 +12,8 @@ Future getDetail( required String url, required Source source, }) async { - return getExtensionService(source).getDetail(url); + return getExtensionService( + source, + ref.read(androidProxyServerStateProvider), + ).getDetail(url); } diff --git a/lib/services/get_detail.g.dart b/lib/services/get_detail.g.dart index 719b45dd..97b734a1 100644 --- a/lib/services/get_detail.g.dart +++ b/lib/services/get_detail.g.dart @@ -6,7 +6,7 @@ part of 'get_detail.dart'; // RiverpodGenerator // ************************************************************************** -String _$getDetailHash() => r'84cc79aa0fd35a2d8efa95f75b85978f521c5daa'; +String _$getDetailHash() => r'6b758b79281cb00a7df2fe1903d4a67068052bca'; /// Copied from Dart SDK class _SystemHash { @@ -39,24 +39,13 @@ class GetDetailFamily extends Family> { const GetDetailFamily(); /// See also [getDetail]. - GetDetailProvider call({ - required String url, - required Source source, - }) { - return GetDetailProvider( - url: url, - source: source, - ); + GetDetailProvider call({required String url, required Source source}) { + return GetDetailProvider(url: url, source: source); } @override - GetDetailProvider getProviderOverride( - covariant GetDetailProvider provider, - ) { - return call( - url: provider.url, - source: provider.source, - ); + GetDetailProvider getProviderOverride(covariant GetDetailProvider provider) { + return call(url: provider.url, source: provider.source); } static const Iterable? _dependencies = null; @@ -77,26 +66,19 @@ class GetDetailFamily extends Family> { /// See also [getDetail]. class GetDetailProvider extends AutoDisposeFutureProvider { /// See also [getDetail]. - GetDetailProvider({ - required String url, - required Source source, - }) : this._internal( - (ref) => getDetail( - ref as GetDetailRef, - url: url, - source: source, - ), - from: getDetailProvider, - name: r'getDetailProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getDetailHash, - dependencies: GetDetailFamily._dependencies, - allTransitiveDependencies: GetDetailFamily._allTransitiveDependencies, - url: url, - source: source, - ); + GetDetailProvider({required String url, required Source source}) + : this._internal( + (ref) => getDetail(ref as GetDetailRef, url: url, source: source), + from: getDetailProvider, + name: r'getDetailProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getDetailHash, + dependencies: GetDetailFamily._dependencies, + allTransitiveDependencies: GetDetailFamily._allTransitiveDependencies, + url: url, + source: source, + ); GetDetailProvider._internal( super._createNotifier, { @@ -172,5 +154,6 @@ class _GetDetailProviderElement extends AutoDisposeFutureProviderElement @override Source get source => (origin as GetDetailProvider).source; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/services/get_filter_list.dart b/lib/services/get_filter_list.dart index 6fb387b2..b72e6182 100644 --- a/lib/services/get_filter_list.dart +++ b/lib/services/get_filter_list.dart @@ -1,6 +1,12 @@ import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/models/source.dart'; -List getFilterList({required Source source}) { - return getExtensionService(source).getFilterList().filters; +List getFilterList({ + required Source source, + String androidProxyServer = "", +}) { + return getExtensionService( + source, + androidProxyServer, + ).getFilterList().filters; } diff --git a/lib/services/get_html_content.dart b/lib/services/get_html_content.dart index fe99da6b..15a0b528 100644 --- a/lib/services/get_html_content.dart +++ b/lib/services/get_html_content.dart @@ -4,6 +4,7 @@ import 'package:epubx/epubx.dart'; import 'package:html/parser.dart'; import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/models/chapter.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/utils/utils.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; @@ -46,13 +47,19 @@ Future<(String, EpubBook?)> getHtmlContent( final source = getSource( chapter.manga.value!.lang!, chapter.manga.value!.source!, + chapter.manga.value!.sourceId, ); String? html; + final proxyServer = ref.read(androidProxyServerStateProvider); if (htmlContent != null) { - html = await getExtensionService(source!).cleanHtmlContent(htmlContent); + html = await getExtensionService( + source!, + proxyServer, + ).cleanHtmlContent(htmlContent); } else { html = await getExtensionService( source!, + proxyServer, ).getHtmlContent(chapter.manga.value!.name!, chapter.url!); } return (_buildHtml(html.substring(1, html.length - 1)), null); diff --git a/lib/services/get_html_content.g.dart b/lib/services/get_html_content.g.dart index 33bebfba..c954812d 100644 --- a/lib/services/get_html_content.g.dart +++ b/lib/services/get_html_content.g.dart @@ -6,7 +6,7 @@ part of 'get_html_content.dart'; // RiverpodGenerator // ************************************************************************** -String _$getHtmlContentHash() => r'19e6959d8fceb065b19c6c6d38cd1b5132a8ba94'; +String _$getHtmlContentHash() => r'fa74506c0adebbdb7a0dda5a8d16a784466b79bb'; /// Copied from Dart SDK class _SystemHash { @@ -39,21 +39,15 @@ class GetHtmlContentFamily extends Family> { const GetHtmlContentFamily(); /// See also [getHtmlContent]. - GetHtmlContentProvider call({ - required Chapter chapter, - }) { - return GetHtmlContentProvider( - chapter: chapter, - ); + GetHtmlContentProvider call({required Chapter chapter}) { + return GetHtmlContentProvider(chapter: chapter); } @override GetHtmlContentProvider getProviderOverride( covariant GetHtmlContentProvider provider, ) { - return call( - chapter: provider.chapter, - ); + return call(chapter: provider.chapter); } static const Iterable? _dependencies = null; @@ -75,24 +69,19 @@ class GetHtmlContentFamily extends Family> { class GetHtmlContentProvider extends AutoDisposeFutureProvider<(String, EpubBook?)> { /// See also [getHtmlContent]. - GetHtmlContentProvider({ - required Chapter chapter, - }) : this._internal( - (ref) => getHtmlContent( - ref as GetHtmlContentRef, - chapter: chapter, - ), - from: getHtmlContentProvider, - name: r'getHtmlContentProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getHtmlContentHash, - dependencies: GetHtmlContentFamily._dependencies, - allTransitiveDependencies: - GetHtmlContentFamily._allTransitiveDependencies, - chapter: chapter, - ); + GetHtmlContentProvider({required Chapter chapter}) + : this._internal( + (ref) => getHtmlContent(ref as GetHtmlContentRef, chapter: chapter), + from: getHtmlContentProvider, + name: r'getHtmlContentProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getHtmlContentHash, + dependencies: GetHtmlContentFamily._dependencies, + allTransitiveDependencies: + GetHtmlContentFamily._allTransitiveDependencies, + chapter: chapter, + ); GetHtmlContentProvider._internal( super._createNotifier, { @@ -158,5 +147,6 @@ class _GetHtmlContentProviderElement @override Chapter get chapter => (origin as GetHtmlContentProvider).chapter; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/services/get_latest_updates.dart b/lib/services/get_latest_updates.dart index ad7fb062..d743a5cc 100644 --- a/lib/services/get_latest_updates.dart +++ b/lib/services/get_latest_updates.dart @@ -1,6 +1,7 @@ import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/eval/model/m_pages.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; part 'get_latest_updates.g.dart'; @@ -11,5 +12,8 @@ Future getLatestUpdates( required Source source, required int page, }) async { - return getExtensionService(source).getLatestUpdates(page); + return getExtensionService( + source, + ref.read(androidProxyServerStateProvider), + ).getLatestUpdates(page); } diff --git a/lib/services/get_latest_updates.g.dart b/lib/services/get_latest_updates.g.dart index 268bdc9e..d6b6cfb3 100644 --- a/lib/services/get_latest_updates.g.dart +++ b/lib/services/get_latest_updates.g.dart @@ -6,7 +6,7 @@ part of 'get_latest_updates.dart'; // RiverpodGenerator // ************************************************************************** -String _$getLatestUpdatesHash() => r'93e1ba376d14006110e9a6c06d191ffd12b1fdfb'; +String _$getLatestUpdatesHash() => r'fd4ece1d796e079a469e5f80f456ee821ff0bc03'; /// Copied from Dart SDK class _SystemHash { @@ -39,24 +39,15 @@ class GetLatestUpdatesFamily extends Family> { const GetLatestUpdatesFamily(); /// See also [getLatestUpdates]. - GetLatestUpdatesProvider call({ - required Source source, - required int page, - }) { - return GetLatestUpdatesProvider( - source: source, - page: page, - ); + GetLatestUpdatesProvider call({required Source source, required int page}) { + return GetLatestUpdatesProvider(source: source, page: page); } @override GetLatestUpdatesProvider getProviderOverride( covariant GetLatestUpdatesProvider provider, ) { - return call( - source: provider.source, - page: provider.page, - ); + return call(source: provider.source, page: provider.page); } static const Iterable? _dependencies = null; @@ -77,27 +68,24 @@ class GetLatestUpdatesFamily extends Family> { /// See also [getLatestUpdates]. class GetLatestUpdatesProvider extends AutoDisposeFutureProvider { /// See also [getLatestUpdates]. - GetLatestUpdatesProvider({ - required Source source, - required int page, - }) : this._internal( - (ref) => getLatestUpdates( - ref as GetLatestUpdatesRef, - source: source, - page: page, - ), - from: getLatestUpdatesProvider, - name: r'getLatestUpdatesProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getLatestUpdatesHash, - dependencies: GetLatestUpdatesFamily._dependencies, - allTransitiveDependencies: - GetLatestUpdatesFamily._allTransitiveDependencies, + GetLatestUpdatesProvider({required Source source, required int page}) + : this._internal( + (ref) => getLatestUpdates( + ref as GetLatestUpdatesRef, source: source, page: page, - ); + ), + from: getLatestUpdatesProvider, + name: r'getLatestUpdatesProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getLatestUpdatesHash, + dependencies: GetLatestUpdatesFamily._dependencies, + allTransitiveDependencies: + GetLatestUpdatesFamily._allTransitiveDependencies, + source: source, + page: page, + ); GetLatestUpdatesProvider._internal( super._createNotifier, { @@ -165,7 +153,8 @@ mixin GetLatestUpdatesRef on AutoDisposeFutureProviderRef { } class _GetLatestUpdatesProviderElement - extends AutoDisposeFutureProviderElement with GetLatestUpdatesRef { + extends AutoDisposeFutureProviderElement + with GetLatestUpdatesRef { _GetLatestUpdatesProviderElement(super.provider); @override @@ -173,5 +162,6 @@ class _GetLatestUpdatesProviderElement @override int get page => (origin as GetLatestUpdatesProvider).page; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/services/get_popular.dart b/lib/services/get_popular.dart index a0fedd01..1a660da8 100644 --- a/lib/services/get_popular.dart +++ b/lib/services/get_popular.dart @@ -1,6 +1,7 @@ import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/eval/model/m_pages.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; part 'get_popular.g.dart'; @@ -11,5 +12,8 @@ Future getPopular( required Source source, required int page, }) async { - return getExtensionService(source).getPopular(page); + return getExtensionService( + source, + ref.read(androidProxyServerStateProvider), + ).getPopular(page); } diff --git a/lib/services/get_popular.g.dart b/lib/services/get_popular.g.dart index 278d11e3..0b9f61bf 100644 --- a/lib/services/get_popular.g.dart +++ b/lib/services/get_popular.g.dart @@ -6,7 +6,7 @@ part of 'get_popular.dart'; // RiverpodGenerator // ************************************************************************** -String _$getPopularHash() => r'02291ff9c3eba594b2344b853c34b2cea7be491b'; +String _$getPopularHash() => r'5fd933ce7e2b9c2dd113b7642ed54c1a1196f638'; /// Copied from Dart SDK class _SystemHash { @@ -39,24 +39,15 @@ class GetPopularFamily extends Family> { const GetPopularFamily(); /// See also [getPopular]. - GetPopularProvider call({ - required Source source, - required int page, - }) { - return GetPopularProvider( - source: source, - page: page, - ); + GetPopularProvider call({required Source source, required int page}) { + return GetPopularProvider(source: source, page: page); } @override GetPopularProvider getProviderOverride( covariant GetPopularProvider provider, ) { - return call( - source: provider.source, - page: provider.page, - ); + return call(source: provider.source, page: provider.page); } static const Iterable? _dependencies = null; @@ -77,27 +68,19 @@ class GetPopularFamily extends Family> { /// See also [getPopular]. class GetPopularProvider extends AutoDisposeFutureProvider { /// See also [getPopular]. - GetPopularProvider({ - required Source source, - required int page, - }) : this._internal( - (ref) => getPopular( - ref as GetPopularRef, - source: source, - page: page, - ), - from: getPopularProvider, - name: r'getPopularProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$getPopularHash, - dependencies: GetPopularFamily._dependencies, - allTransitiveDependencies: - GetPopularFamily._allTransitiveDependencies, - source: source, - page: page, - ); + GetPopularProvider({required Source source, required int page}) + : this._internal( + (ref) => getPopular(ref as GetPopularRef, source: source, page: page), + from: getPopularProvider, + name: r'getPopularProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$getPopularHash, + dependencies: GetPopularFamily._dependencies, + allTransitiveDependencies: GetPopularFamily._allTransitiveDependencies, + source: source, + page: page, + ); GetPopularProvider._internal( super._createNotifier, { @@ -165,7 +148,8 @@ mixin GetPopularRef on AutoDisposeFutureProviderRef { } class _GetPopularProviderElement - extends AutoDisposeFutureProviderElement with GetPopularRef { + extends AutoDisposeFutureProviderElement + with GetPopularRef { _GetPopularProviderElement(super.provider); @override @@ -173,5 +157,6 @@ class _GetPopularProviderElement @override int get page => (origin as GetPopularProvider).page; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/services/get_source_baseurl.dart b/lib/services/get_source_baseurl.dart index 7335454c..0390837e 100644 --- a/lib/services/get_source_baseurl.dart +++ b/lib/services/get_source_baseurl.dart @@ -1,11 +1,15 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/models/source.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'get_source_baseurl.g.dart'; @riverpod String sourceBaseUrl(Ref ref, {required Source source}) { - return getExtensionService(source).sourceBaseUrl; + return getExtensionService( + source, + ref.read(androidProxyServerStateProvider), + ).sourceBaseUrl; } diff --git a/lib/services/get_source_baseurl.g.dart b/lib/services/get_source_baseurl.g.dart index 1c3bee54..b9bed44c 100644 --- a/lib/services/get_source_baseurl.g.dart +++ b/lib/services/get_source_baseurl.g.dart @@ -6,7 +6,7 @@ part of 'get_source_baseurl.dart'; // RiverpodGenerator // ************************************************************************** -String _$sourceBaseUrlHash() => r'2eaf2f441085cec9e2f035763ef2ec64aa00f838'; +String _$sourceBaseUrlHash() => r'ead3cca719e2530502d97613e3168e0031eecde7'; /// Copied from Dart SDK class _SystemHash { @@ -39,21 +39,15 @@ class SourceBaseUrlFamily extends Family { const SourceBaseUrlFamily(); /// See also [sourceBaseUrl]. - SourceBaseUrlProvider call({ - required Source source, - }) { - return SourceBaseUrlProvider( - source: source, - ); + SourceBaseUrlProvider call({required Source source}) { + return SourceBaseUrlProvider(source: source); } @override SourceBaseUrlProvider getProviderOverride( covariant SourceBaseUrlProvider provider, ) { - return call( - source: provider.source, - ); + return call(source: provider.source); } static const Iterable? _dependencies = null; @@ -74,24 +68,19 @@ class SourceBaseUrlFamily extends Family { /// See also [sourceBaseUrl]. class SourceBaseUrlProvider extends AutoDisposeProvider { /// See also [sourceBaseUrl]. - SourceBaseUrlProvider({ - required Source source, - }) : this._internal( - (ref) => sourceBaseUrl( - ref as SourceBaseUrlRef, - source: source, - ), - from: sourceBaseUrlProvider, - name: r'sourceBaseUrlProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$sourceBaseUrlHash, - dependencies: SourceBaseUrlFamily._dependencies, - allTransitiveDependencies: - SourceBaseUrlFamily._allTransitiveDependencies, - source: source, - ); + SourceBaseUrlProvider({required Source source}) + : this._internal( + (ref) => sourceBaseUrl(ref as SourceBaseUrlRef, source: source), + from: sourceBaseUrlProvider, + name: r'sourceBaseUrlProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$sourceBaseUrlHash, + dependencies: SourceBaseUrlFamily._dependencies, + allTransitiveDependencies: + SourceBaseUrlFamily._allTransitiveDependencies, + source: source, + ); SourceBaseUrlProvider._internal( super._createNotifier, { @@ -106,9 +95,7 @@ class SourceBaseUrlProvider extends AutoDisposeProvider { final Source source; @override - Override overrideWith( - String Function(SourceBaseUrlRef provider) create, - ) { + Override overrideWith(String Function(SourceBaseUrlRef provider) create) { return ProviderOverride( origin: this, override: SourceBaseUrlProvider._internal( @@ -156,5 +143,6 @@ class _SourceBaseUrlProviderElement extends AutoDisposeProviderElement @override Source get source => (origin as SourceBaseUrlProvider).source; } + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/services/get_source_preference.dart b/lib/services/get_source_preference.dart index 1dff1acd..a18beffc 100644 --- a/lib/services/get_source_preference.dart +++ b/lib/services/get_source_preference.dart @@ -2,6 +2,9 @@ import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/eval/model/source_preference.dart'; import 'package:mangayomi/models/source.dart'; -List getSourcePreference({required Source source}) { - return getExtensionService(source).getSourcePreferences(); +List getSourcePreference({ + required Source source, + String androidProxyServer = "", +}) { + return getExtensionService(source, androidProxyServer).getSourcePreferences(); } diff --git a/lib/services/get_video_list.dart b/lib/services/get_video_list.dart index d1bf5984..31db1bce 100644 --- a/lib/services/get_video_list.dart +++ b/lib/services/get_video_list.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:mangayomi/eval/lib.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/video.dart'; +import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/services/torrent_server.dart'; import 'package:mangayomi/utils/utils.dart'; @@ -10,14 +11,17 @@ import 'package:mangayomi/utils/extensions/string_extensions.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:path/path.dart' as p; + +import '../models/source.dart'; part 'get_video_list.g.dart'; @riverpod -Future<(List

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, + ) { + switch (propertyId) {'''; + + for (var i = 0; i < object.objectProperties.length; i++) { + final property = object.objectProperties[i]; + final deser = _deserializeProperty(object, property, 'offset'); + code += 'case $i: return ($deser) as P;'; + } + + return ''' + $code + default: + throw IsarError('Unknown property with id \$propertyId'); + } + } + '''; +} + +String _deserializeProperty( + ObjectInfo object, + ObjectProperty property, + String propertyOffset, +) { + if (property.isId) { + return 'id'; + } + + final deser = _deserialize(property, propertyOffset); + + var defaultValue = ''; + if (!property.nullable) { + if (property.userDefaultValue != null) { + defaultValue = '?? ${property.userDefaultValue}'; + } else if (property.isarType == IsarType.object) { + defaultValue = '?? ${property.typeClassName}()'; + } else if (property.isarType.isList) { + defaultValue = '?? []'; + } else if (property.isEnum) { + defaultValue = '?? ${property.defaultEnumElement}'; + } + } + + if (property.isEnum) { + if (property.isarType.isList) { + final elDefault = + !property.elementNullable ? '?? ${property.defaultEnumElement}' : ''; + return '$deser?.map((e) => ${property.valueEnumMapName(object)}[e] ' + '$elDefault).toList() $defaultValue'; + } else { + return '${property.valueEnumMapName(object)}[$deser] $defaultValue'; + } + } else { + return '$deser $defaultValue'; + } +} + +String _deserialize(ObjectProperty property, String propertyOffset) { + final orNull = + property.nullable || property.userDefaultValue != null || property.isEnum + ? 'OrNull' + : ''; + final orElNull = property.elementNullable ? 'OrNull' : ''; + + switch (property.isarType) { + case IsarType.bool: + return 'reader.readBool$orNull($propertyOffset)'; + case IsarType.byte: + return 'reader.readByte$orNull($propertyOffset)'; + case IsarType.int: + return 'reader.readInt$orNull($propertyOffset)'; + case IsarType.float: + return 'reader.readFloat$orNull($propertyOffset)'; + case IsarType.long: + return 'reader.readLong$orNull($propertyOffset)'; + case IsarType.double: + return 'reader.readDouble$orNull($propertyOffset)'; + case IsarType.dateTime: + return 'reader.readDateTime$orNull($propertyOffset)'; + case IsarType.string: + return 'reader.readString$orNull($propertyOffset)'; + case IsarType.object: + return ''' + reader.readObjectOrNull<${property.typeClassName}>( + $propertyOffset, + ${property.targetSchema}.deserialize, + allOffsets, + )'''; + case IsarType.boolList: + return 'reader.readBool${orElNull}List($propertyOffset)'; + case IsarType.byteList: + return 'reader.readByteList($propertyOffset)'; + case IsarType.intList: + return 'reader.readInt${orElNull}List($propertyOffset)'; + case IsarType.floatList: + return 'reader.readFloat${orElNull}List($propertyOffset)'; + case IsarType.longList: + return 'reader.readLong${orElNull}List($propertyOffset)'; + case IsarType.doubleList: + return 'reader.readDouble${orElNull}List($propertyOffset)'; + case IsarType.dateTimeList: + return 'reader.readDateTime${orElNull}List($propertyOffset)'; + case IsarType.stringList: + return 'reader.readString${orElNull}List($propertyOffset)'; + case IsarType.objectList: + return ''' + reader.readObject${orElNull}List<${property.typeClassName}>( + $propertyOffset, + ${property.targetSchema}.deserialize, + allOffsets, + ${!property.elementNullable ? '${property.typeClassName}(),' : ''} + )'''; + } +} + +String generateGetId(ObjectInfo object) { + final defaultVal = object.idProperty.nullable ? '?? Isar.autoIncrement' : ''; + return ''' + Id ${object.getIdName}(${object.dartName} object) { + return object.${object.idProperty.dartName} $defaultVal; + } + '''; +} + +String generateGetLinks(ObjectInfo object) { + return ''' + List> ${object.getLinksName}(${object.dartName} object) { + return [${object.links.map((e) => 'object.${e.dartName}').join(',')}]; + } + '''; +} + +String generateAttach(ObjectInfo object) { + var code = ''' + void ${object.attachName}(IsarCollection col, Id id, ${object.dartName} object) {'''; + + if (object.idProperty.assignable) { + code += 'object.${object.idProperty.dartName} = id;'; + } + + for (final link in object.links) { + // ignore: leading_newlines_in_multiline_strings + code += '''object.${link.dartName}.attach( + col, + col.isar.collection<${link.targetCollectionDartName}>(), + r'${link.isarName}', + id + );'''; + } + return '$code}'; +} + +String generateEnumMaps(ObjectInfo object) { + var code = ''; + for (final property in object.properties) { + final enumName = property.typeClassName; + if (property.isEnum) { + code += 'const ${property.enumValueMapName(object)} = {'; + for (final enumElementName in property.enumMap!.keys) { + final value = property.enumMap![enumElementName]; + if (value is String) { + code += "r'$enumElementName': r'$value',"; + } else { + code += "'$enumElementName': $value,"; + } + } + code += '};'; + + code += 'const ${property.valueEnumMapName(object)} = {'; + for (final enumElementName in property.enumMap!.keys) { + final value = property.enumMap![enumElementName]; + if (value is String) { + code += "r'$value': $enumName.$enumElementName,"; + } else { + code += '$value: $enumName.$enumElementName,'; + } + } + code += '};'; + } + } + + return code; +} diff --git a/plugins/isar_generator/lib/src/collection_generator.dart b/plugins/isar_generator/lib/src/collection_generator.dart new file mode 100644 index 00000000..9231281b --- /dev/null +++ b/plugins/isar_generator/lib/src/collection_generator.dart @@ -0,0 +1,105 @@ +import 'dart:async'; + +import 'package:analyzer/dart/element/element.dart'; +import 'package:build/build.dart'; +import 'package:isar/isar.dart'; +import 'package:isar_generator/src/code_gen/by_index_generator.dart'; +import 'package:isar_generator/src/code_gen/collection_schema_generator.dart'; +import 'package:isar_generator/src/code_gen/query_distinct_by_generator.dart'; +import 'package:isar_generator/src/code_gen/query_filter_generator.dart'; +import 'package:isar_generator/src/code_gen/query_link_generator.dart'; +import 'package:isar_generator/src/code_gen/query_object_generator.dart'; +import 'package:isar_generator/src/code_gen/query_property_generator.dart'; +import 'package:isar_generator/src/code_gen/query_sort_by_generator.dart'; +import 'package:isar_generator/src/code_gen/query_where_generator.dart'; +import 'package:isar_generator/src/code_gen/type_adapter_generator.dart'; +import 'package:isar_generator/src/isar_analyzer.dart'; +import 'package:source_gen/source_gen.dart'; + +const ignoreLints = [ + 'duplicate_ignore', + 'non_constant_identifier_names', + 'constant_identifier_names', + 'invalid_use_of_protected_member', + 'unnecessary_cast', + 'prefer_const_constructors', + 'lines_longer_than_80_chars', + 'require_trailing_commas', + 'inference_failure_on_function_invocation', + 'unnecessary_parenthesis', + 'unnecessary_raw_strings', + 'unnecessary_null_checks', + 'join_return_with_assignment', + 'prefer_final_locals', + 'avoid_js_rounded_ints', + 'avoid_positional_boolean_parameters', + 'always_specify_types', +]; + +class IsarCollectionGenerator extends GeneratorForAnnotation { + @override + Future generateForAnnotatedElement( + Element element, + ConstantReader annotation, + BuildStep buildStep, + ) async { + final object = IsarAnalyzer().analyzeCollection(element); + return ''' + // coverage:ignore-file + // ignore_for_file: ${ignoreLints.join(', ')} + + extension Get${object.dartName}Collection on Isar { + IsarCollection<${object.dartName}> get ${object.accessor} => this.collection(); + } + + ${generateSchema(object)} + + ${generateEstimateSerialize(object)} + ${generateSerialize(object)} + ${generateDeserialize(object)} + ${generateDeserializeProp(object)} + + ${generateEnumMaps(object)} + + ${generateGetId(object)} + ${generateGetLinks(object)} + ${generateAttach(object)} + + ${generateByIndexExtension(object)} + ${WhereGenerator(object).generate()} + ${FilterGenerator(object).generate()} + ${generateQueryObjects(object)} + ${generateQueryLinks(object)} + ${generateSortBy(object)} + ${generateDistinctBy(object)} + ${generatePropertyQuery(object)} + '''; + } +} + +class IsarEmbeddedGenerator extends GeneratorForAnnotation { + @override + Future generateForAnnotatedElement( + Element element, + ConstantReader annotation, + BuildStep buildStep, + ) async { + final object = IsarAnalyzer().analyzeEmbedded(element); + return ''' + // coverage:ignore-file + // ignore_for_file: ${ignoreLints.join(', ')} + + ${generateSchema(object)} + + ${generateEstimateSerialize(object)} + ${generateSerialize(object)} + ${generateDeserialize(object)} + ${generateDeserializeProp(object)} + + ${generateEnumMaps(object)} + + ${FilterGenerator(object).generate()} + ${generateQueryObjects(object)} + '''; + } +} diff --git a/plugins/isar_generator/lib/src/helper.dart b/plugins/isar_generator/lib/src/helper.dart new file mode 100644 index 00000000..1f55b7ca --- /dev/null +++ b/plugins/isar_generator/lib/src/helper.dart @@ -0,0 +1,183 @@ +import 'package:analyzer/dart/constant/value.dart'; +import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/type.dart'; +import 'package:dartx/dartx.dart'; +import 'package:isar/isar.dart'; +import 'package:source_gen/source_gen.dart'; + +const TypeChecker _collectionChecker = TypeChecker.fromRuntime(Collection); +const TypeChecker _enumeratedChecker = TypeChecker.fromRuntime(Enumerated); +const TypeChecker _embeddedChecker = TypeChecker.fromRuntime(Embedded); +const TypeChecker _ignoreChecker = TypeChecker.fromRuntime(Ignore); +const TypeChecker _nameChecker = TypeChecker.fromRuntime(Name); +const TypeChecker _indexChecker = TypeChecker.fromRuntime(Index); +const TypeChecker _backlinkChecker = TypeChecker.fromRuntime(Backlink); + +extension ClassElementX on ClassElement { + bool get hasZeroArgsConstructor { + return constructors.any( + (ConstructorElement c) => + c.isPublic && + !c.parameters.any((ParameterElement p) => !p.isOptional), + ); + } + + List get allAccessors { + final ignoreFields = + collectionAnnotation?.ignore ?? embeddedAnnotation!.ignore; + return [ + ...fields, + if (collectionAnnotation?.inheritance ?? embeddedAnnotation!.inheritance) + for (final InterfaceType supertype in allSupertypes) ...[ + if (!supertype.isDartCoreObject) ...supertype.element.fields, + ], + ] + .where( + (PropertyInducingElement e) => + e.isPublic && + !e.isStatic && + !_ignoreChecker.hasAnnotationOf(e.nonSynthetic) && + !ignoreFields.contains(e.name), + ) + .distinctBy((e) => e.name) + .toList(); + } + + List get enumConsts { + return fields.where((e) => e.isEnumConstant).map((e) => e.name).toList(); + } +} + +extension PropertyElementX on PropertyInducingElement { + bool get isLink => type.element!.name == 'IsarLink'; + + bool get isLinks => type.element!.name == 'IsarLinks'; + + Enumerated? get enumeratedAnnotation { + final ann = _enumeratedChecker.firstAnnotationOfExact(nonSynthetic); + if (ann == null) { + return null; + } + final typeIndex = ann.getField('type')!.getField('index')!.toIntValue()!; + return Enumerated( + EnumType.values[typeIndex], + ann.getField('property')?.toStringValue(), + ); + } + + Backlink? get backlinkAnnotation { + final ann = _backlinkChecker.firstAnnotationOfExact(nonSynthetic); + if (ann == null) { + return null; + } + return Backlink(to: ann.getField('to')!.toStringValue()!); + } + + List get indexAnnotations { + return _indexChecker.annotationsOfExact(nonSynthetic).map((DartObject ann) { + final rawComposite = ann.getField('composite')!.toListValue(); + final composite = []; + if (rawComposite != null) { + for (final c in rawComposite) { + final indexTypeField = c.getField('type')!; + IndexType? indexType; + if (!indexTypeField.isNull) { + final indexTypeIndex = + indexTypeField.getField('index')!.toIntValue()!; + indexType = IndexType.values[indexTypeIndex]; + } + composite.add( + CompositeIndex( + c.getField('property')!.toStringValue()!, + type: indexType, + caseSensitive: c.getField('caseSensitive')!.toBoolValue(), + ), + ); + } + } + final indexTypeField = ann.getField('type')!; + IndexType? indexType; + if (!indexTypeField.isNull) { + final indexTypeIndex = indexTypeField.getField('index')!.toIntValue()!; + indexType = IndexType.values[indexTypeIndex]; + } + return Index( + name: ann.getField('name')!.toStringValue(), + composite: composite, + unique: ann.getField('unique')!.toBoolValue()!, + replace: ann.getField('replace')!.toBoolValue()!, + type: indexType, + caseSensitive: ann.getField('caseSensitive')!.toBoolValue(), + ); + }).toList(); + } +} + +extension ElementX on Element { + String get isarName { + final ann = _nameChecker.firstAnnotationOfExact(nonSynthetic); + late String name; + if (ann == null) { + name = displayName; + } else { + name = ann.getField('name')!.toStringValue()!; + } + checkIsarName(name, this); + return name; + } + + Collection? get collectionAnnotation { + final ann = _collectionChecker.firstAnnotationOfExact(nonSynthetic); + if (ann == null) { + return null; + } + return Collection( + inheritance: ann.getField('inheritance')!.toBoolValue()!, + accessor: ann.getField('accessor')!.toStringValue(), + ignore: ann + .getField('ignore')! + .toSetValue()! + .map((e) => e.toStringValue()!) + .toSet(), + ); + } + + String get collectionAccessor { + var accessor = collectionAnnotation?.accessor; + if (accessor != null) { + return accessor; + } + + accessor = displayName.decapitalize(); + if (!accessor.endsWith('s')) { + accessor += 's'; + } + + return accessor; + } + + Embedded? get embeddedAnnotation { + final ann = _embeddedChecker.firstAnnotationOfExact(nonSynthetic); + if (ann == null) { + return null; + } + return Embedded( + inheritance: ann.getField('inheritance')!.toBoolValue()!, + ignore: ann + .getField('ignore')! + .toSetValue()! + .map((e) => e.toStringValue()!) + .toSet(), + ); + } +} + +void checkIsarName(String name, Element element) { + if (name.isBlank || name.startsWith('_')) { + err('Names must not be blank or start with "_".', element); + } +} + +Never err(String msg, [Element? element]) { + throw InvalidGenerationSourceError(msg, element: element); +} diff --git a/plugins/isar_generator/lib/src/isar_analyzer.dart b/plugins/isar_generator/lib/src/isar_analyzer.dart new file mode 100644 index 00000000..55eb6d5c --- /dev/null +++ b/plugins/isar_generator/lib/src/isar_analyzer.dart @@ -0,0 +1,502 @@ +import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/nullability_suffix.dart'; +import 'package:analyzer/dart/element/type.dart'; +import 'package:dartx/dartx.dart'; +import 'package:isar/isar.dart'; + +import 'package:isar_generator/src/helper.dart'; +import 'package:isar_generator/src/isar_type.dart'; +import 'package:isar_generator/src/object_info.dart'; + +class IsarAnalyzer { + ObjectInfo analyzeCollection(Element element) { + final constructor = _checkValidClass(element); + final modelClass = element as ClassElement; + + final properties = []; + final links = []; + for (final propertyElement in modelClass.allAccessors) { + if (propertyElement.isLink || propertyElement.isLinks) { + final link = analyzeObjectLink(propertyElement); + links.add(link); + } else { + final property = analyzeObjectProperty(propertyElement, constructor); + properties.add(property); + } + } + _checkValidPropertiesConstructor(properties, constructor); + if (links.map((e) => e.isarName).distinct().length != links.length) { + err('Two or more links have the same name.', modelClass); + } + + final indexes = []; + for (final propertyElement in modelClass.allAccessors) { + indexes.addAll(analyzeObjectIndex(properties, propertyElement)); + } + if (indexes.map((e) => e.name).distinct().length != indexes.length) { + err('Two or more indexes have the same name.', modelClass); + } + + final idProperties = properties.where((it) => it.isId); + if (idProperties.isEmpty) { + err( + 'No id property defined. Use the "Id" type for your id property.', + modelClass, + ); + } else if (idProperties.length > 1) { + err('Two or more properties with type "Id" defined.', modelClass); + } + + return ObjectInfo( + dartName: modelClass.displayName, + isarName: modelClass.isarName, + accessor: modelClass.collectionAccessor, + properties: properties, + embeddedDartNames: _getEmbeddedDartNames(element), + indexes: indexes, + links: links, + ); + } + + ObjectInfo analyzeEmbedded(Element element) { + final constructor = _checkValidClass(element); + final modelClass = element as ClassElement; + + if (constructor.parameters.any((e) => e.isRequired)) { + err( + 'Constructors of embedded objects must not have required parameters.', + constructor, + ); + } + + final properties = []; + for (final propertyElement in modelClass.allAccessors) { + if (propertyElement.isLink || propertyElement.isLinks) { + err('Embedded objects must not contain links', propertyElement); + } else { + final property = analyzeObjectProperty(propertyElement, constructor); + properties.add(property); + } + } + _checkValidPropertiesConstructor(properties, constructor); + + final hasIndex = modelClass.allAccessors.any( + (it) => it.indexAnnotations.isNotEmpty, + ); + if (hasIndex) { + err('Embedded objects must not have indexes.', modelClass); + } + + final hasIdProperty = properties.any((it) => it.isId); + if (hasIdProperty) { + err('Embedded objects must not define an id.', modelClass); + } + + return ObjectInfo( + dartName: modelClass.displayName, + isarName: modelClass.isarName, + properties: properties, + ); + } + + ConstructorElement _checkValidClass(Element modelClass) { + if (modelClass is! ClassElement || + modelClass is EnumElement || + modelClass is MixinElement) { + err( + 'Only classes may be annotated with @Collection or @Embedded.', + modelClass, + ); + } + + if (modelClass.isAbstract) { + err('Class must not be abstract.', modelClass); + } + + if (!modelClass.isPublic) { + err('Class must be public.', modelClass); + } + + final constructor = modelClass.constructors + .firstOrNullWhere((ConstructorElement c) => c.periodOffset == null); + if (constructor == null) { + err('Class needs an unnamed constructor.', modelClass); + } + + final hasCollectionSupertype = modelClass.allSupertypes.any((type) { + return type.element.collectionAnnotation != null || + type.element.embeddedAnnotation != null; + }); + if (hasCollectionSupertype) { + err( + 'Class must not have a supertype annotated with @Collection or ' + '@Embedded.', + modelClass, + ); + } + + return constructor; + } + + void _checkValidPropertiesConstructor( + List properties, + ConstructorElement constructor, + ) { + if (properties.map((e) => e.isarName).distinct().length != + properties.length) { + err( + 'Two or more properties have the same name.', + constructor.enclosingElement3, + ); + } + + final unknownConstructorParameter = constructor.parameters.firstOrNullWhere( + (p) => p.isRequired && properties.none((e) => e.dartName == p.name), + ); + if (unknownConstructorParameter != null) { + err( + 'Constructor parameter does not match a property.', + unknownConstructorParameter, + ); + } + } + + Map _getEmbeddedDartNames(ClassElement element) { + void fillNames(Map names, ClassElement element) { + for (final property in element.allAccessors) { + final type = property.type.scalarType.element; + if (type is ClassElement && type.embeddedAnnotation != null) { + final isarName = type.isarName; + if (!names.containsKey(isarName)) { + names[type.isarName] = type.displayName; + fillNames(names, type); + } + } + } + } + + final names = {}; + fillNames(names, element); + return names; + } + + ObjectProperty analyzeObjectProperty( + PropertyInducingElement property, + ConstructorElement constructor, + ) { + final dartType = property.type; + final scalarDartType = dartType.scalarType; + Map? enumMap; + String? enumPropertyName; + String? defaultEnumElement; + + late final IsarType isarType; + if (scalarDartType.element is EnumElement) { + final enumeratedAnn = property.enumeratedAnnotation; + if (enumeratedAnn == null) { + err('Enum property must be annotated with @enumerated.', property); + } + + final enumClass = scalarDartType.element! as EnumElement; + final enumElements = + enumClass.fields.where((f) => f.isEnumConstant).toList(); + defaultEnumElement = '${enumClass.name}.${enumElements.first.name}'; + + if (enumeratedAnn.type == EnumType.ordinal) { + isarType = dartType.isDartCoreList ? IsarType.byteList : IsarType.byte; + enumMap = { + for (var i = 0; i < enumElements.length; i++) enumElements[i].name: i, + }; + enumPropertyName = 'index'; + } else if (enumeratedAnn.type == EnumType.ordinal32) { + isarType = dartType.isDartCoreList ? IsarType.intList : IsarType.int; + + enumMap = { + for (var i = 0; i < enumElements.length; i++) enumElements[i].name: i, + }; + enumPropertyName = 'index'; + } else if (enumeratedAnn.type == EnumType.name) { + isarType = + dartType.isDartCoreList ? IsarType.stringList : IsarType.string; + enumMap = { + for (final value in enumElements) value.name: value.name, + }; + enumPropertyName = 'name'; + } else { + enumPropertyName = enumeratedAnn.property; + if (enumPropertyName == null) { + err( + 'Enums with type EnumType.value must specify which property ' + 'should be used.', + property, + ); + } + final enumProperty = enumClass.getField(enumPropertyName); + if (enumProperty == null || enumProperty.isEnumConstant) { + err('Enum property "$enumProperty" does not exist.', property); + } else if (enumProperty.nonSynthetic is PropertyAccessorElement) { + err('Only fields are supported for enum properties', enumProperty); + } + + final enumIsarType = enumProperty.type.isarType; + if (enumIsarType != IsarType.byte && + enumIsarType != IsarType.int && + enumIsarType != IsarType.long && + enumIsarType != IsarType.string) { + err('Unsupported enum property type.', enumProperty); + } + + isarType = + dartType.isDartCoreList ? enumIsarType!.listType : enumIsarType!; + enumMap = {}; + for (final element in enumElements) { + final property = + element.computeConstantValue()!.getField(enumPropertyName)!; + final propertyValue = property.toBoolValue() ?? + property.toIntValue() ?? + property.toDoubleValue() ?? + property.toStringValue(); + if (propertyValue == null) { + err( + 'Null values are not supported for enum properties.', + enumProperty, + ); + } + + if (enumMap.values.contains(propertyValue)) { + err( + 'Enum property has duplicate values.', + enumProperty, + ); + } + enumMap[element.name] = propertyValue; + } + } + } else { + if (dartType.isarType != null) { + isarType = dartType.isarType!; + } else { + err( + 'Unsupported type. Please annotate the property with @ignore.', + property, + ); + } + } + + final nullable = dartType.nullabilitySuffix != NullabilitySuffix.none; + final elementNullable = isarType.isList && + dartType.scalarType.nullabilitySuffix != NullabilitySuffix.none; + + if ((isarType == IsarType.byte && nullable) || + (isarType == IsarType.byteList && elementNullable)) { + err('Bytes must not be nullable.', property); + } + + final constructorParameter = + constructor.parameters.firstOrNullWhere((p) => p.name == property.name); + int? constructorPosition; + late PropertyDeser deserialize; + if (constructorParameter != null) { + if (constructorParameter.type != property.type) { + err( + 'Constructor parameter type does not match property type', + constructorParameter, + ); + } + deserialize = constructorParameter.isNamed + ? PropertyDeser.namedParam + : PropertyDeser.positionalParam; + constructorPosition = + constructor.parameters.indexOf(constructorParameter); + } else { + deserialize = + property.setter == null ? PropertyDeser.none : PropertyDeser.assign; + } + + return ObjectProperty( + dartName: property.displayName, + isarName: property.isarName, + typeClassName: dartType.scalarType.element!.name!, + targetIsarName: isarType.containsObject + ? dartType.scalarType.element!.isarName + : null, + isarType: isarType, + isId: dartType.isIsarId, + enumMap: enumMap, + enumProperty: enumPropertyName, + defaultEnumElement: defaultEnumElement, + nullable: nullable, + elementNullable: elementNullable, + userDefaultValue: constructorParameter?.defaultValueCode, + deserialize: deserialize, + assignable: property.setter != null, + constructorPosition: constructorPosition, + ); + } + + ObjectLink analyzeObjectLink(PropertyInducingElement property) { + if (property.type.nullabilitySuffix != NullabilitySuffix.none) { + err('Link properties must not be nullable.', property); + } else if (property.isLate) { + err('Link properties must not be late.', property); + } + + final type = property.type as ParameterizedType; + final linkType = type.typeArguments[0]; + if (linkType.nullabilitySuffix != NullabilitySuffix.none) { + err('Links type must not be nullable.', property); + } + + final targetCol = linkType.element! as ClassElement; + if (targetCol.collectionAnnotation == null) { + err('Link target is not annotated with @collection'); + } + + final backlinkAnn = property.backlinkAnnotation; + String? targetLinkIsarName; + if (backlinkAnn != null) { + final targetProperty = targetCol.allAccessors + .firstOrNullWhere((e) => e.displayName == backlinkAnn.to); + if (targetProperty == null) { + err('Target of Backlink does not exist', property); + } else if (targetProperty.backlinkAnnotation != null) { + err('Target of Backlink is also a backlink', property); + } + + if (!targetProperty.isLink && !targetProperty.isLinks) { + err('Target of backlink is not a link', property); + } + + final targetLink = analyzeObjectLink(targetProperty); + targetLinkIsarName = targetLink.isarName; + } + + return ObjectLink( + dartName: property.displayName, + isarName: property.isarName, + targetLinkIsarName: targetLinkIsarName, + targetCollectionDartName: linkType.element!.name!, + targetCollectionIsarName: targetCol.isarName, + isSingle: property.isLink, + ); + } + + Iterable analyzeObjectIndex( + List properties, + PropertyInducingElement element, + ) sync* { + final property = + properties.firstOrNullWhere((it) => it.dartName == element.name); + if (property == null || property.isId) { + return; + } + + for (final index in element.indexAnnotations) { + final indexProperties = []; + final isString = property.isarType == IsarType.string || + property.isarType == IsarType.stringList; + final defaultType = property.isarType.isList || isString + ? IndexType.hash + : IndexType.value; + + indexProperties.add( + ObjectIndexProperty( + property: property, + type: index.type ?? defaultType, + caseSensitive: index.caseSensitive ?? isString, + ), + ); + for (final c in index.composite) { + final compositeProperty = + properties.firstOrNullWhere((it) => it.dartName == c.property); + if (compositeProperty == null) { + err('Property does not exist: "${c.property}".', element); + } else if (compositeProperty.isId) { + err('Ids cannot be indexed', element); + } else { + final isString = compositeProperty.isarType == IsarType.string || + compositeProperty.isarType == IsarType.stringList; + final defaultType = compositeProperty.isarType.isList || isString + ? IndexType.hash + : IndexType.value; + indexProperties.add( + ObjectIndexProperty( + property: compositeProperty, + type: c.type ?? defaultType, + caseSensitive: c.caseSensitive ?? isString, + ), + ); + } + } + + final name = index.name ?? + indexProperties.map((e) => e.property.isarName).join('_'); + checkIsarName(name, element); + + final objectIndex = ObjectIndex( + name: name, + properties: indexProperties, + unique: index.unique, + replace: index.replace, + ); + _verifyObjectIndex(objectIndex, element); + + yield objectIndex; + } + } + + void _verifyObjectIndex(ObjectIndex index, Element element) { + final properties = index.properties; + + if (properties.map((it) => it.property.isarName).distinct().length != + properties.length) { + err('Composite index contains duplicate properties.', element); + } + + for (var i = 0; i < properties.length; i++) { + final property = properties[i]; + if (property.isarType.isList && + property.type != IndexType.hash && + properties.length > 1) { + err('Composite indexes do not support non-hashed lists.', element); + } + if (property.isarType.containsFloat && i != properties.lastIndex) { + err( + 'Only the last property of a composite index may be a ' + 'double value.', + element, + ); + } + if (property.isarType == IsarType.string) { + if (property.type != IndexType.hash && i != properties.lastIndex) { + err( + 'Only the last property of a composite index may be a ' + 'non-hashed String.', + element, + ); + } + } + if (property.isarType.containsObject) { + err( + 'Embedded objects may not be indexed.', + element, + ); + } + if (property.type != IndexType.value) { + if (!property.isarType.isList && property.isarType != IsarType.string) { + err('Only Strings and Lists may be hashed.', element); + } else if (property.isarType.containsFloat) { + err('List may must not be hashed.', element); + } + } + if (property.isarType != IsarType.stringList && + property.type == IndexType.hashElements) { + err('Only String lists may have hashed elements.', element); + } + } + + if (!index.unique && index.replace) { + err('Only unique indexes can replace.', element); + } + } +} diff --git a/plugins/isar_generator/lib/src/isar_type.dart b/plugins/isar_generator/lib/src/isar_type.dart new file mode 100644 index 00000000..0ee6b166 --- /dev/null +++ b/plugins/isar_generator/lib/src/isar_type.dart @@ -0,0 +1,107 @@ +import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/type.dart'; +import 'package:isar/isar.dart'; +import 'package:isar_generator/src/helper.dart'; +import 'package:source_gen/source_gen.dart'; + +const TypeChecker _dateTimeChecker = TypeChecker.fromRuntime(DateTime); +bool _isDateTime(Element element) => _dateTimeChecker.isExactly(element); + +extension DartTypeX on DartType { + IsarType? get _primitiveIsarType { + if (isDartCoreBool) { + return IsarType.bool; + } else if (isDartCoreInt) { + if (alias?.element.name == 'byte') { + return IsarType.byte; + } else if (alias?.element.name == 'short') { + return IsarType.int; + } else { + return IsarType.long; + } + } else if (isDartCoreDouble) { + if (alias?.element.name == 'float') { + return IsarType.float; + } else { + return IsarType.double; + } + } else if (isDartCoreString) { + return IsarType.string; + } else if (_isDateTime(element!)) { + return IsarType.dateTime; + } else if (element!.embeddedAnnotation != null) { + return IsarType.object; + } + + return null; + } + + bool get isIsarId { + return alias?.element.name == 'Id'; + } + + DartType get scalarType { + if (isDartCoreList) { + final parameterizedType = this as ParameterizedType; + final typeArguments = parameterizedType.typeArguments; + if (typeArguments.isNotEmpty) { + return typeArguments[0]; + } + } + return this; + } + + IsarType? get isarType { + final primitiveType = _primitiveIsarType; + if (primitiveType != null) { + return primitiveType; + } + + if (isDartCoreList) { + switch (scalarType._primitiveIsarType) { + case IsarType.bool: + return IsarType.boolList; + case IsarType.byte: + return IsarType.byteList; + case IsarType.int: + return IsarType.intList; + case IsarType.float: + return IsarType.floatList; + case IsarType.long: + return IsarType.longList; + case IsarType.double: + return IsarType.doubleList; + case IsarType.dateTime: + return IsarType.dateTimeList; + case IsarType.string: + return IsarType.stringList; + case IsarType.object: + return IsarType.objectList; + // ignore: no_default_cases + default: + return null; + } + } + + return null; + } +} + +extension IsarTypeX on IsarType { + bool get containsBool => this == IsarType.bool || this == IsarType.boolList; + + bool get containsFloat => + this == IsarType.float || + this == IsarType.floatList || + this == IsarType.double || + this == IsarType.doubleList; + + bool get containsDate => + this == IsarType.dateTime || this == IsarType.dateTimeList; + + bool get containsString => + this == IsarType.string || this == IsarType.stringList; + + bool get containsObject => + this == IsarType.object || this == IsarType.objectList; +} diff --git a/plugins/isar_generator/lib/src/object_info.dart b/plugins/isar_generator/lib/src/object_info.dart new file mode 100644 index 00000000..52f8a404 --- /dev/null +++ b/plugins/isar_generator/lib/src/object_info.dart @@ -0,0 +1,210 @@ +import 'dart:convert'; + +import 'package:dartx/dartx.dart'; +import 'package:isar/isar.dart'; + +import 'package:xxh3/xxh3.dart'; + +class ObjectInfo { + ObjectInfo({ + required this.dartName, + required this.isarName, + this.accessor, + required List properties, + this.embeddedDartNames = const {}, + this.indexes = const [], + this.links = const [], + }) { + this.properties = properties.sortedBy((e) => e.isarName).toList(); + } + + final String dartName; + final String isarName; + final String? accessor; + late final List properties; + final Map embeddedDartNames; + final List indexes; + final List links; + + int get id => xxh3(utf8.encode(isarName)); + + bool get isEmbedded => accessor == null; + + ObjectProperty get idProperty => properties.firstWhere((it) => it.isId); + + List get objectProperties => + properties.where((it) => !it.isId).toList(); + + String get getIdName => '_${dartName.decapitalize()}GetId'; + String get getLinksName => '_${dartName.decapitalize()}GetLinks'; + String get attachName => '_${dartName.decapitalize()}Attach'; + + String get estimateSizeName => '_${dartName.decapitalize()}EstimateSize'; + String get serializeName => '_${dartName.decapitalize()}Serialize'; + String get deserializeName => '_${dartName.decapitalize()}Deserialize'; + String get deserializePropName => + '_${dartName.decapitalize()}DeserializeProp'; +} + +enum PropertyDeser { + none, + assign, + positionalParam, + namedParam, +} + +class ObjectProperty { + ObjectProperty({ + required this.dartName, + required this.isarName, + required this.typeClassName, + this.targetIsarName, + required this.isarType, + required this.isId, + required this.enumMap, + required this.enumProperty, + required this.defaultEnumElement, + required this.nullable, + required this.elementNullable, + this.userDefaultValue, + required this.deserialize, + required this.assignable, + this.constructorPosition, + }); + + final String dartName; + final String isarName; + final String typeClassName; + final String? targetIsarName; + + final bool isId; + final IsarType isarType; + final Map? enumMap; + final String? enumProperty; + final String? defaultEnumElement; + + final bool nullable; + final bool elementNullable; + final String? userDefaultValue; + + final PropertyDeser deserialize; + final bool assignable; + final int? constructorPosition; + + bool get isEnum => enumMap != null; + + String get scalarDartType { + if (isId) { + return 'Id'; + } else if (isEnum) { + return typeClassName; + } + + switch (isarType) { + case IsarType.bool: + case IsarType.boolList: + return 'bool'; + case IsarType.byte: + case IsarType.byteList: + case IsarType.int: + case IsarType.intList: + case IsarType.long: + case IsarType.longList: + return 'int'; + case IsarType.float: + case IsarType.floatList: + case IsarType.double: + case IsarType.doubleList: + return 'double'; + case IsarType.dateTime: + case IsarType.dateTimeList: + return 'DateTime'; + case IsarType.object: + case IsarType.objectList: + return typeClassName; + case IsarType.string: + case IsarType.stringList: + return 'String'; + } + } + + String get nScalarDartType => isarType.isList + ? '$scalarDartType${elementNullable ? '?' : ''}' + : '$scalarDartType${nullable ? '?' : ''}'; + + String get dartType => isarType.isList + ? 'List<$nScalarDartType>${nullable ? '?' : ''}' + : nScalarDartType; + + String get targetSchema => '${scalarDartType.capitalize()}Schema'; + + String enumValueMapName(ObjectInfo object) { + return '_${object.dartName}${dartName}EnumValueMap'; + } + + String valueEnumMapName(ObjectInfo object) { + return '_${object.dartName}${dartName}ValueEnumMap'; + } +} + +class ObjectIndexProperty { + const ObjectIndexProperty({ + required this.property, + required this.type, + required this.caseSensitive, + }); + + final ObjectProperty property; + final IndexType type; + final bool caseSensitive; + + IsarType get isarType => property.isarType; + + bool get isMultiEntry => isarType.isList && type != IndexType.hash; +} + +class ObjectIndex { + ObjectIndex({ + required this.name, + required this.properties, + required this.unique, + required this.replace, + }); + + final String name; + final List properties; + final bool unique; + final bool replace; + + late final id = xxh3(utf8.encode(name)); +} + +class ObjectLink { + const ObjectLink({ + required this.dartName, + required this.isarName, + this.targetLinkIsarName, + required this.targetCollectionDartName, + required this.targetCollectionIsarName, + required this.isSingle, + }); + + final String dartName; + final String isarName; + + // isar name of the original link (only for backlinks) + final String? targetLinkIsarName; + final String targetCollectionDartName; + final String targetCollectionIsarName; + final bool isSingle; + + bool get isBacklink => targetLinkIsarName != null; + + int id(String objectIsarName) { + final col = isBacklink ? targetCollectionIsarName : objectIsarName; + final colId = xxh3(utf8.encode(col), seed: isBacklink ? 1 : 0); + + final name = targetLinkIsarName ?? isarName; + return xxh3(utf8.encode(name), seed: colId); + } +} diff --git a/plugins/isar_generator/pubspec.lock b/plugins/isar_generator/pubspec.lock new file mode 100644 index 00000000..e2c81796 --- /dev/null +++ b/plugins/isar_generator/pubspec.lock @@ -0,0 +1,557 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + url: "https://pub.dev" + source: hosted + version: "85.0.0" + analyzer: + dependency: "direct main" + description: + name: analyzer + sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" + url: "https://pub.dev" + source: hosted + version: "7.7.1" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + async: + dependency: transitive + description: + name: async + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" + source: hosted + version: "2.13.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + build: + dependency: "direct main" + description: + name: build + sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + build_config: + dependency: transitive + description: + name: build_config + sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0 + url: "https://pub.dev" + source: hosted + version: "2.4.4" + build_test: + dependency: "direct dev" + description: + name: build_test + sha256: a580c76c28440d0006b75c6746bbbb3c1648959ba9e1afae2c2b0f2c26acdf3d + url: "https://pub.dev" + source: hosted + version: "2.2.3" + characters: + dependency: transitive + description: + name: characters + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + url: "https://pub.dev" + source: hosted + version: "1.4.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" + cli_config: + dependency: transitive + description: + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec + url: "https://pub.dev" + source: hosted + version: "0.2.0" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" + url: "https://pub.dev" + source: hosted + version: "1.15.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + csslib: + dependency: transitive + description: + name: csslib + sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + dart_style: + dependency: "direct main" + description: + name: dart_style + sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + dartx: + dependency: "direct main" + description: + name: dartx + sha256: "8b25435617027257d43e6508b5fe061012880ddfdaa75a71d607c3de2a13d244" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + ffi: + dependency: transitive + description: + name: ffi + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: "direct main" + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + html: + dependency: transitive + description: + name: html + sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" + url: "https://pub.dev" + source: hosted + version: "0.15.6" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + isar: + dependency: "direct main" + description: + name: isar + sha256: "99165dadb2cf2329d3140198363a7e7bff9bbd441871898a87e26914d25cf1ea" + url: "https://pub.dev" + source: hosted + version: "3.1.0+1" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + matcher: + dependency: "direct dev" + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + meta: + dependency: transitive + description: + name: meta + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + url: "https://pub.dev" + source: hosted + version: "1.17.0" + mime: + dependency: transitive + description: + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" + path: + dependency: "direct main" + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + source_gen: + dependency: "direct main" + description: + name: source_gen + sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 + url: "https://pub.dev" + source: hosted + version: "2.1.1" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test: + dependency: "direct dev" + description: + name: test + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" + url: "https://pub.dev" + source: hosted + version: "1.26.3" + test_api: + dependency: transitive + description: + name: test_api + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + url: "https://pub.dev" + source: hosted + version: "0.7.7" + test_core: + dependency: transitive + description: + name: test_core + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" + url: "https://pub.dev" + source: hosted + version: "0.6.12" + time: + dependency: transitive + description: + name: time + sha256: "370572cf5d1e58adcb3e354c47515da3f7469dac3a95b447117e728e7be6f461" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + very_good_analysis: + dependency: "direct dev" + description: + name: very_good_analysis + sha256: "4815adc7ded57657038d2bb2a7f332c50e3c8152f7d3c6acf8f6b7c0cc81e5e2" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + url: "https://pub.dev" + source: hosted + version: "15.0.2" + watcher: + dependency: transitive + description: + name: watcher + sha256: "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + xxh3: + dependency: "direct main" + description: + name: xxh3 + sha256: "399a0438f5d426785723c99da6b16e136f4953fb1e9db0bf270bd41dd4619916" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.8.0 <4.0.0" diff --git a/plugins/isar_generator/pubspec.yaml b/plugins/isar_generator/pubspec.yaml new file mode 100644 index 00000000..78cc3be1 --- /dev/null +++ b/plugins/isar_generator/pubspec.yaml @@ -0,0 +1,26 @@ +name: isar_generator +description: Code generator for the Isar Database. Finds classes annotated with @Collection. +version: 3.1.0+1 +repository: https://github.com/isar/isar +homepage: https://isar.dev +publish_to: none + +environment: + sdk: ">=2.17.0 <3.0.0" + +dependencies: + analyzer: ^7.0.0 + build: ^2.3.0 + dart_style: ^3.0.0 + dartx: ^1.1.0 + glob: ^2.0.2 + isar: 3.1.0+1 + path: ^1.8.1 + source_gen: ^2.0.0 + xxh3: ^1.0.1 + +dev_dependencies: + build_test: ^2.1.5 + matcher: ^0.12.12 + test: ^1.21.0 + very_good_analysis: ^3.0.1 diff --git a/plugins/isar_generator/test/error_test.dart b/plugins/isar_generator/test/error_test.dart new file mode 100644 index 00000000..3b90980f --- /dev/null +++ b/plugins/isar_generator/test/error_test.dart @@ -0,0 +1,33 @@ +import 'dart:io'; + +import 'package:build/build.dart'; +import 'package:build_test/build_test.dart'; +import 'package:isar_generator/isar_generator.dart'; +import 'package:test/test.dart'; + +void main() { + group('Error case', () { + for (final file in Directory('test/errors').listSync(recursive: true)) { + if (file is! File || !file.path.endsWith('.dart')) continue; + + test(file.path, () async { + final content = await file.readAsLines(); + + final errorMessage = content.first.split('//').last.trim(); + + var error = ''; + try { + await testBuilder( + getIsarGenerator(BuilderOptions.empty), + {'a|${file.path}': content.join('\n')}, + reader: await PackageAssetReader.currentIsolate(), + ); + } catch (e) { + error = e.toString(); + } + + expect(error.toLowerCase(), contains(errorMessage.toLowerCase())); + }); + } + }); +} diff --git a/plugins/isar_generator/test/errors/class/abstract.dart b/plugins/isar_generator/test/errors/class/abstract.dart new file mode 100644 index 00000000..b116529a --- /dev/null +++ b/plugins/isar_generator/test/errors/class/abstract.dart @@ -0,0 +1,8 @@ +// must not be abstract + +import 'package:isar/isar.dart'; + +@collection +abstract class Model { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/class/collection_supertype.dart b/plugins/isar_generator/test/errors/class/collection_supertype.dart new file mode 100644 index 00000000..e6e3f8de --- /dev/null +++ b/plugins/isar_generator/test/errors/class/collection_supertype.dart @@ -0,0 +1,19 @@ +// supertype annotated with @collection + +import 'package:isar/isar.dart'; + +@collection +class Supertype { + Id? id; +} + +class Subtype implements Supertype { + @override + Id? id; +} + +@collection +class Model implements Subtype { + @override + Id? id; +} diff --git a/plugins/isar_generator/test/errors/class/constructor_named.dart b/plugins/isar_generator/test/errors/class/constructor_named.dart new file mode 100644 index 00000000..713f7953 --- /dev/null +++ b/plugins/isar_generator/test/errors/class/constructor_named.dart @@ -0,0 +1,10 @@ +// unnamed constructor + +import 'package:isar/isar.dart'; + +@collection +class Model { + Model.create(); + + Id? id; +} diff --git a/plugins/isar_generator/test/errors/class/constructor_unknown_parameter.dart b/plugins/isar_generator/test/errors/class/constructor_unknown_parameter.dart new file mode 100644 index 00000000..768e349c --- /dev/null +++ b/plugins/isar_generator/test/errors/class/constructor_unknown_parameter.dart @@ -0,0 +1,13 @@ +// constructor parameter does not match a property + +import 'package:isar/isar.dart'; + +@collection +class Model { + // ignore: avoid_unused_constructor_parameters + Model(this.prop1, String somethingElse); + + Id? id; + + final String prop1; +} diff --git a/plugins/isar_generator/test/errors/class/constructor_wrong_parameter.dart b/plugins/isar_generator/test/errors/class/constructor_wrong_parameter.dart new file mode 100644 index 00000000..1274a5c0 --- /dev/null +++ b/plugins/isar_generator/test/errors/class/constructor_wrong_parameter.dart @@ -0,0 +1,13 @@ +// constructor parameter type does not match property type + +import 'package:isar/isar.dart'; + +@collection +class Model { + // ignore: avoid_unused_constructor_parameters + Model(int prop1); + + Id? id; + + String prop1 = '5'; +} diff --git a/plugins/isar_generator/test/errors/class/enum.dart b/plugins/isar_generator/test/errors/class/enum.dart new file mode 100644 index 00000000..a51d0889 --- /dev/null +++ b/plugins/isar_generator/test/errors/class/enum.dart @@ -0,0 +1,7 @@ +// only classes + +import 'package:isar/isar.dart'; + +// ignore: invalid_annotation_target +@collection +enum Test { a, b, c } diff --git a/plugins/isar_generator/test/errors/class/invalid_name.dart b/plugins/isar_generator/test/errors/class/invalid_name.dart new file mode 100644 index 00000000..b116529a --- /dev/null +++ b/plugins/isar_generator/test/errors/class/invalid_name.dart @@ -0,0 +1,8 @@ +// must not be abstract + +import 'package:isar/isar.dart'; + +@collection +abstract class Model { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/class/mixin.dart b/plugins/isar_generator/test/errors/class/mixin.dart new file mode 100644 index 00000000..a6a63747 --- /dev/null +++ b/plugins/isar_generator/test/errors/class/mixin.dart @@ -0,0 +1,7 @@ +// only classes + +import 'package:isar/isar.dart'; + +// ignore: invalid_annotation_target +@collection +mixin Test {} diff --git a/plugins/isar_generator/test/errors/class/private.dart b/plugins/isar_generator/test/errors/class/private.dart new file mode 100644 index 00000000..aa545b93 --- /dev/null +++ b/plugins/isar_generator/test/errors/class/private.dart @@ -0,0 +1,9 @@ +// must be public + +import 'package:isar/isar.dart'; + +@collection +// ignore: unused_element +class _Model { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/class/variable.dart b/plugins/isar_generator/test/errors/class/variable.dart new file mode 100644 index 00000000..543a78ec --- /dev/null +++ b/plugins/isar_generator/test/errors/class/variable.dart @@ -0,0 +1,7 @@ +// only classes + +import 'package:isar/isar.dart'; + +// ignore: invalid_annotation_target +@collection +const t = 'hello'; diff --git a/plugins/isar_generator/test/errors/id/duplicate.dart b/plugins/isar_generator/test/errors/id/duplicate.dart new file mode 100644 index 00000000..e96e21f4 --- /dev/null +++ b/plugins/isar_generator/test/errors/id/duplicate.dart @@ -0,0 +1,10 @@ +// two or more properties with type "Id" defined + +import 'package:isar/isar.dart'; + +@collection +class Test { + Id? id1; + + Id? id2; +} diff --git a/plugins/isar_generator/test/errors/id/missing.dart b/plugins/isar_generator/test/errors/id/missing.dart new file mode 100644 index 00000000..e4141747 --- /dev/null +++ b/plugins/isar_generator/test/errors/id/missing.dart @@ -0,0 +1,10 @@ +// no id property defined + +import 'package:isar/isar.dart'; + +@collection +class Test { + late int id; + + late String name; +} diff --git a/plugins/isar_generator/test/errors/index/composite_double_not_last.dart b/plugins/isar_generator/test/errors/index/composite_double_not_last.dart new file mode 100644 index 00000000..135b56ba --- /dev/null +++ b/plugins/isar_generator/test/errors/index/composite_double_not_last.dart @@ -0,0 +1,13 @@ +// only the last property of a composite index may be a double value + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(composite: [CompositeIndex('val2')]) + double? val1; + + String? val2; +} diff --git a/plugins/isar_generator/test/errors/index/composite_non_hashed_list.dart b/plugins/isar_generator/test/errors/index/composite_non_hashed_list.dart new file mode 100644 index 00000000..e93241e2 --- /dev/null +++ b/plugins/isar_generator/test/errors/index/composite_non_hashed_list.dart @@ -0,0 +1,13 @@ +// composite indexes do not support non-hashed lists + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(composite: [CompositeIndex('str')], type: IndexType.value) + List? list; + + String? str; +} diff --git a/plugins/isar_generator/test/errors/index/composite_string_value_not_last.dart b/plugins/isar_generator/test/errors/index/composite_string_value_not_last.dart new file mode 100644 index 00000000..52efbf87 --- /dev/null +++ b/plugins/isar_generator/test/errors/index/composite_string_value_not_last.dart @@ -0,0 +1,13 @@ +// last property of a composite index may be a non-hashed string + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(composite: [CompositeIndex('str2')], type: IndexType.value) + String? str1; + + String? str2; +} diff --git a/plugins/isar_generator/test/errors/index/contains_id.dart b/plugins/isar_generator/test/errors/index/contains_id.dart new file mode 100644 index 00000000..fd45fb2b --- /dev/null +++ b/plugins/isar_generator/test/errors/index/contains_id.dart @@ -0,0 +1,11 @@ +// ids cannot be indexed + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(composite: [CompositeIndex('id')]) + String? str; +} diff --git a/plugins/isar_generator/test/errors/index/double_list_hashed.dart b/plugins/isar_generator/test/errors/index/double_list_hashed.dart new file mode 100644 index 00000000..84563d49 --- /dev/null +++ b/plugins/isar_generator/test/errors/index/double_list_hashed.dart @@ -0,0 +1,11 @@ +// list may must not be hashed + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(type: IndexType.hash) + List? list; +} diff --git a/plugins/isar_generator/test/errors/index/duplicate_name.dart b/plugins/isar_generator/test/errors/index/duplicate_name.dart new file mode 100644 index 00000000..17e6cab4 --- /dev/null +++ b/plugins/isar_generator/test/errors/index/duplicate_name.dart @@ -0,0 +1,14 @@ +// same name + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(name: 'myindex') + String? prop1; + + @Index(name: 'myindex') + String? prop2; +} diff --git a/plugins/isar_generator/test/errors/index/duplicate_property.dart b/plugins/isar_generator/test/errors/index/duplicate_property.dart new file mode 100644 index 00000000..01c53f0c --- /dev/null +++ b/plugins/isar_generator/test/errors/index/duplicate_property.dart @@ -0,0 +1,13 @@ +// composite index contains duplicate properties + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(composite: [CompositeIndex('str1')], type: IndexType.value) + String? str1; + + String? str2; +} diff --git a/plugins/isar_generator/test/errors/index/invalid_name.dart b/plugins/isar_generator/test/errors/index/invalid_name.dart new file mode 100644 index 00000000..171fe3a4 --- /dev/null +++ b/plugins/isar_generator/test/errors/index/invalid_name.dart @@ -0,0 +1,11 @@ +// names must not be blank or start with "_" + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(name: '_index') + String? str; +} diff --git a/plugins/isar_generator/test/errors/index/non_string_hashed.dart b/plugins/isar_generator/test/errors/index/non_string_hashed.dart new file mode 100644 index 00000000..63267d65 --- /dev/null +++ b/plugins/isar_generator/test/errors/index/non_string_hashed.dart @@ -0,0 +1,11 @@ +// only strings and lists may be hashed + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(type: IndexType.hash) + int? val; +} diff --git a/plugins/isar_generator/test/errors/index/non_string_list_hashed_elements.dart b/plugins/isar_generator/test/errors/index/non_string_list_hashed_elements.dart new file mode 100644 index 00000000..4f119fc1 --- /dev/null +++ b/plugins/isar_generator/test/errors/index/non_string_list_hashed_elements.dart @@ -0,0 +1,11 @@ +// only string lists may have hashed elements + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(type: IndexType.hashElements) + List? list; +} diff --git a/plugins/isar_generator/test/errors/index/non_unique_replace.dart b/plugins/isar_generator/test/errors/index/non_unique_replace.dart new file mode 100644 index 00000000..9a49b374 --- /dev/null +++ b/plugins/isar_generator/test/errors/index/non_unique_replace.dart @@ -0,0 +1,11 @@ +// only unique indexes can replace + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(replace: true) + String? str; +} diff --git a/plugins/isar_generator/test/errors/index/object_hashed.dart b/plugins/isar_generator/test/errors/index/object_hashed.dart new file mode 100644 index 00000000..dd20d11e --- /dev/null +++ b/plugins/isar_generator/test/errors/index/object_hashed.dart @@ -0,0 +1,14 @@ +// objects may not be indexed + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index() + EmbeddedModel? obj; +} + +@embedded +class EmbeddedModel {} diff --git a/plugins/isar_generator/test/errors/index/object_list_hashed.dart b/plugins/isar_generator/test/errors/index/object_list_hashed.dart new file mode 100644 index 00000000..d149e19a --- /dev/null +++ b/plugins/isar_generator/test/errors/index/object_list_hashed.dart @@ -0,0 +1,14 @@ +// objects may not be indexed + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(type: IndexType.hash) + List? list; +} + +@embedded +class EmbeddedModel {} diff --git a/plugins/isar_generator/test/errors/index/property_does_not_exist.dart b/plugins/isar_generator/test/errors/index/property_does_not_exist.dart new file mode 100644 index 00000000..806515ec --- /dev/null +++ b/plugins/isar_generator/test/errors/index/property_does_not_exist.dart @@ -0,0 +1,11 @@ +// property does not exist + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Index(composite: [CompositeIndex('myProp')]) + String? str; +} diff --git a/plugins/isar_generator/test/errors/link/backlink_target_does_no_exist.dart b/plugins/isar_generator/test/errors/link/backlink_target_does_no_exist.dart new file mode 100644 index 00000000..ea285c22 --- /dev/null +++ b/plugins/isar_generator/test/errors/link/backlink_target_does_no_exist.dart @@ -0,0 +1,16 @@ +// target of backlink does not exist + +import 'package:isar/isar.dart'; + +@collection +class Model1 { + Id? id; + + @Backlink(to: 'abc') + final IsarLink link = IsarLink(); +} + +@collection +class Model2 { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/link/backlink_target_is_backlink.dart b/plugins/isar_generator/test/errors/link/backlink_target_is_backlink.dart new file mode 100644 index 00000000..5d5f48dc --- /dev/null +++ b/plugins/isar_generator/test/errors/link/backlink_target_is_backlink.dart @@ -0,0 +1,19 @@ +// target of backlink is also a backlink + +import 'package:isar/isar.dart'; + +@collection +class Model1 { + Id? id; + + @Backlink(to: 'link') + final IsarLink link = IsarLink(); +} + +@collection +class Model2 { + Id? id; + + @Backlink(to: 'link') + final IsarLink link = IsarLink(); +} diff --git a/plugins/isar_generator/test/errors/link/backlink_target_not_a_link.dart b/plugins/isar_generator/test/errors/link/backlink_target_not_a_link.dart new file mode 100644 index 00000000..459ecd3a --- /dev/null +++ b/plugins/isar_generator/test/errors/link/backlink_target_not_a_link.dart @@ -0,0 +1,18 @@ +// target of backlink is not a link + +import 'package:isar/isar.dart'; + +@collection +class Model1 { + Id? id; + + @Backlink(to: 'str') + final IsarLink link = IsarLink(); +} + +@collection +class Model2 { + Id? id; + + String? str; +} diff --git a/plugins/isar_generator/test/errors/link/duplicate_name.dart b/plugins/isar_generator/test/errors/link/duplicate_name.dart new file mode 100644 index 00000000..1405c4aa --- /dev/null +++ b/plugins/isar_generator/test/errors/link/duplicate_name.dart @@ -0,0 +1,18 @@ +// same name + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + final IsarLink prop1 = IsarLink(); + + @Name('prop1') + final IsarLinks prop2 = IsarLinks(); +} + +@collection +class Model2 { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/link/invalid_name.dart b/plugins/isar_generator/test/errors/link/invalid_name.dart new file mode 100644 index 00000000..47b89a9f --- /dev/null +++ b/plugins/isar_generator/test/errors/link/invalid_name.dart @@ -0,0 +1,16 @@ +// names must not be blank or start with + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Name('_link') + final IsarLink link = IsarLink(); +} + +@collection +class Model2 { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/link/late.dart b/plugins/isar_generator/test/errors/link/late.dart new file mode 100644 index 00000000..845cf27f --- /dev/null +++ b/plugins/isar_generator/test/errors/link/late.dart @@ -0,0 +1,15 @@ +// must not be late + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + late IsarLink link; +} + +@collection +class Model2 { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/link/nullable.dart b/plugins/isar_generator/test/errors/link/nullable.dart new file mode 100644 index 00000000..ab1f5885 --- /dev/null +++ b/plugins/isar_generator/test/errors/link/nullable.dart @@ -0,0 +1,15 @@ +// must not be nullable + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + IsarLink? link; +} + +@collection +class Model2 { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/link/target_not_a_collection.dart b/plugins/isar_generator/test/errors/link/target_not_a_collection.dart new file mode 100644 index 00000000..dd7d3cd8 --- /dev/null +++ b/plugins/isar_generator/test/errors/link/target_not_a_collection.dart @@ -0,0 +1,10 @@ +// link target is not annotated with @collection + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + final IsarLink link = IsarLink(); +} diff --git a/plugins/isar_generator/test/errors/link/type_nullable.dart b/plugins/isar_generator/test/errors/link/type_nullable.dart new file mode 100644 index 00000000..865d421f --- /dev/null +++ b/plugins/isar_generator/test/errors/link/type_nullable.dart @@ -0,0 +1,15 @@ +// links type must not be nullable + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + final IsarLink link = IsarLink(); +} + +@collection +class Model2 { + Id? id; +} diff --git a/plugins/isar_generator/test/errors/property/duplicate_name.dart b/plugins/isar_generator/test/errors/property/duplicate_name.dart new file mode 100644 index 00000000..0b275cbc --- /dev/null +++ b/plugins/isar_generator/test/errors/property/duplicate_name.dart @@ -0,0 +1,13 @@ +// same name + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + String? prop1; + + @Name('prop1') + String? prop2; +} diff --git a/plugins/isar_generator/test/errors/property/enum_bool_type.dart b/plugins/isar_generator/test/errors/property/enum_bool_type.dart new file mode 100644 index 00000000..d5b4b440 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/enum_bool_type.dart @@ -0,0 +1,17 @@ +// unsupported enum property type + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Enumerated(EnumType.value, 'value') + late MyEnum field; +} + +enum MyEnum { + optionA; + + final bool value = true; +} diff --git a/plugins/isar_generator/test/errors/property/enum_double_type.dart b/plugins/isar_generator/test/errors/property/enum_double_type.dart new file mode 100644 index 00000000..17567e69 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/enum_double_type.dart @@ -0,0 +1,17 @@ +// unsupported enum property type + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Enumerated(EnumType.value, 'value') + late MyEnum field; +} + +enum MyEnum { + optionA; + + final double value = 5.5; +} diff --git a/plugins/isar_generator/test/errors/property/enum_duplicate.dart b/plugins/isar_generator/test/errors/property/enum_duplicate.dart new file mode 100644 index 00000000..32ce0566 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/enum_duplicate.dart @@ -0,0 +1,21 @@ +// has duplicate values + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Enumerated(EnumType.value, 'value') + late MyEnum field; +} + +enum MyEnum { + option1(1), + option2(2), + option3(1); + + const MyEnum(this.value); + + final int value; +} diff --git a/plugins/isar_generator/test/errors/property/enum_float_type.dart b/plugins/isar_generator/test/errors/property/enum_float_type.dart new file mode 100644 index 00000000..abf3830e --- /dev/null +++ b/plugins/isar_generator/test/errors/property/enum_float_type.dart @@ -0,0 +1,17 @@ +// unsupported enum property type + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Enumerated(EnumType.value, 'value') + late MyEnum field; +} + +enum MyEnum { + optionA; + + final float value = 5.5; +} diff --git a/plugins/isar_generator/test/errors/property/enum_list_type.dart b/plugins/isar_generator/test/errors/property/enum_list_type.dart new file mode 100644 index 00000000..75d78e28 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/enum_list_type.dart @@ -0,0 +1,17 @@ +// unsupported enum property type + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Enumerated(EnumType.value, 'value') + late MyEnum prop; +} + +enum MyEnum { + optionA; + + final List value = []; +} diff --git a/plugins/isar_generator/test/errors/property/enum_not_annotated.dart b/plugins/isar_generator/test/errors/property/enum_not_annotated.dart new file mode 100644 index 00000000..456e8e47 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/enum_not_annotated.dart @@ -0,0 +1,14 @@ +// enum property must be annotated with @enumerated + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + late MyEnum? prop; +} + +enum MyEnum { + a; +} diff --git a/plugins/isar_generator/test/errors/property/enum_null_value.dart b/plugins/isar_generator/test/errors/property/enum_null_value.dart new file mode 100644 index 00000000..bdc2e301 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/enum_null_value.dart @@ -0,0 +1,17 @@ +// null values are not supported + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Enumerated(EnumType.value, 'value') + late MyEnum prop; +} + +enum MyEnum { + optionA; + + final String? value = null; +} diff --git a/plugins/isar_generator/test/errors/property/enum_object_type.dart b/plugins/isar_generator/test/errors/property/enum_object_type.dart new file mode 100644 index 00000000..afa6d961 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/enum_object_type.dart @@ -0,0 +1,20 @@ +// unsupported enum property type + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Enumerated(EnumType.value, 'value') + late MyEnum prop; +} + +enum MyEnum { + optionA; + + final value = EmbeddedModel(); +} + +@embedded +class EmbeddedModel {} diff --git a/plugins/isar_generator/test/errors/property/invalid_name.dart b/plugins/isar_generator/test/errors/property/invalid_name.dart new file mode 100644 index 00000000..5bc5341e --- /dev/null +++ b/plugins/isar_generator/test/errors/property/invalid_name.dart @@ -0,0 +1,11 @@ +// names must not be blank or start with "_" + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + @Name('_prop') + String? prop; +} diff --git a/plugins/isar_generator/test/errors/property/null_byte.dart b/plugins/isar_generator/test/errors/property/null_byte.dart new file mode 100644 index 00000000..c5813805 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/null_byte.dart @@ -0,0 +1,10 @@ +// bytes must not be nullable + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + late byte? prop; +} diff --git a/plugins/isar_generator/test/errors/property/null_byte_element.dart b/plugins/isar_generator/test/errors/property/null_byte_element.dart new file mode 100644 index 00000000..d45c4b14 --- /dev/null +++ b/plugins/isar_generator/test/errors/property/null_byte_element.dart @@ -0,0 +1,10 @@ +// bytes must not be nullable + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + late List prop; +} diff --git a/plugins/isar_generator/test/errors/property/unsupported_type.dart b/plugins/isar_generator/test/errors/property/unsupported_type.dart new file mode 100644 index 00000000..68af2cfc --- /dev/null +++ b/plugins/isar_generator/test/errors/property/unsupported_type.dart @@ -0,0 +1,10 @@ +// unsupported type + +import 'package:isar/isar.dart'; + +@collection +class Model { + Id? id; + + late Set? prop; +} diff --git a/pubspec.lock b/pubspec.lock index 456768e0..3adb08f5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,31 +5,26 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f url: "https://pub.dev" source: hosted - version: "76.0.0" - _macros: - dependency: transitive - description: dart - source: sdk - version: "0.3.3" + version: "85.0.0" analyzer: - dependency: "direct overridden" + dependency: transitive description: name: analyzer - sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" + sha256: f4ad0fea5f102201015c9aae9d93bc02f75dd9491529a8c21f88d17a8523d44c url: "https://pub.dev" source: hosted - version: "6.11.0" + version: "7.6.0" analyzer_plugin: - dependency: "direct overridden" + dependency: transitive description: name: analyzer_plugin - sha256: "9661b30b13a685efaee9f02e5d01ed9f2b423bd889d28a304d02d704aee69161" + sha256: a5ab7590c27b779f3d4de67f31c4109dbe13dd7339f86461a6f2a8ab2594d8ce url: "https://pub.dev" source: hosted - version: "0.11.3" + version: "0.13.4" antlr4: dependency: transitive description: @@ -346,26 +341,26 @@ packages: dependency: transitive description: name: custom_lint_visitor - sha256: "36282d85714af494ee2d7da8c8913630aa6694da99f104fb2ed4afcf8fc857d8" + sha256: "4a86a0d8415a91fbb8298d6ef03e9034dc8e323a599ddc4120a0e36c433983a2" url: "https://pub.dev" source: hosted - version: "1.0.0+7.3.0" + version: "1.0.0+7.7.0" d4rt: dependency: "direct main" description: name: d4rt - sha256: "40ecf0b73603a8268050e890eb4d037b5bdf4184f439cc18d593e83b100a19e7" + sha256: "802f4fed100431335d87912e97132117ad7dd2a455958c92b94995317d92402f" url: "https://pub.dev" source: hosted - version: "0.0.9" + version: "0.1.3" dart_style: dependency: transitive description: name: dart_style - sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820" + sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" url: "https://pub.dev" source: hosted - version: "2.3.8" + version: "3.1.1" dartx: dependency: transitive description: @@ -492,10 +487,10 @@ packages: dependency: "direct main" description: name: ffigen - sha256: "2119b4fe3aad0db94dc9531b90283c4640a6231070e613c400b426a4da08c704" + sha256: "2bd9a420ca42cb5ce8cff5d80f88547b547a042ae26807704b1698714e4464a2" url: "https://pub.dev" source: hosted - version: "16.1.0" + version: "19.1.0" file: dependency: transitive description: @@ -524,10 +519,10 @@ packages: dependency: "direct main" description: name: flex_color_scheme - sha256: "3344f8f6536c6ce0473b98e9f084ef80ca89024ad3b454f9c32cf840206f4387" + sha256: "034d5720747e6af39b2ad090d82dd92d33fde68e7964f1814b714c9d49ddbd64" url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.3.0" flex_seed_scheme: dependency: transitive description: @@ -739,18 +734,18 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "44c19278dd9d89292cf46e97dc0c1e52ce03275f40a97c5a348e802a924bf40e" + sha256: "6022db4c7bfa626841b2a10f34dd1e1b68e8f8f9650db6112dcdeeca45ca793c" url: "https://pub.dev" source: hosted - version: "2.5.7" + version: "3.0.6" freezed_annotation: dependency: "direct main" description: name: freezed_annotation - sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 + sha256: c87ff004c8aa6af2d531668b46a4ea379f7191dc6dfa066acd53d506da6e044b url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "3.0.0" frontend_server_client: dependency: transitive description: @@ -874,10 +869,9 @@ packages: hive_generator: dependency: "direct dev" description: - name: hive_generator - sha256: "06cb8f58ace74de61f63500564931f9505368f45f98958bd7a6c35ba24159db4" - url: "https://pub.dev" - source: hosted + path: "plugins/hive_generator" + relative: true + source: path version: "2.0.1" html: dependency: "direct main" @@ -891,10 +885,10 @@ packages: dependency: "direct main" description: name: http - sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" + sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.5.0" http_client_helper: dependency: transitive description: @@ -967,14 +961,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" - iregexp: - dependency: transitive - description: - name: iregexp - sha256: "143859dcaeecf6f683102786762d70a47ef8441a0d2287a158172d32d38799cf" - url: "https://pub.dev" - source: hosted - version: "0.1.2" isar: dependency: "direct main" description: @@ -994,10 +980,9 @@ packages: isar_generator: dependency: "direct dev" description: - name: isar_generator - sha256: "76c121e1295a30423604f2f819bc255bc79f852f3bc8743a24017df6068ad133" - url: "https://pub.dev" - source: hosted + path: "plugins/isar_generator" + relative: true + source: path version: "3.1.0+1" isolate_contactor: dependency: transitive @@ -1039,14 +1024,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.9.0" - json_path: - dependency: "direct main" - description: - name: json_path - sha256: a3a06eb005f2e93d0df7f263cdf76bbd02c7602f5c4bed9be94fcca4c36be03e - url: "https://pub.dev" - source: hosted - version: "0.7.5" json_view: dependency: "direct main" description: @@ -1083,26 +1060,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.1" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: @@ -1119,14 +1096,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" - macros: - dependency: transitive - description: - name: macros - sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" - url: "https://pub.dev" - source: hosted - version: "0.1.3-main.0" marquee: dependency: "direct main" description: @@ -1151,77 +1120,76 @@ packages: url: "https://pub.dev" source: hosted version: "0.11.1" - maybe_just_nothing: - dependency: transitive - description: - name: maybe_just_nothing - sha256: "0c06326e26d08f6ed43247404376366dc4d756cef23a4f1db765f546224c35e0" - url: "https://pub.dev" - source: hosted - version: "0.5.3" media_kit: dependency: "direct main" description: - name: media_kit - sha256: "48c10c3785df5d88f0eef970743f8c99b2e5da2b34b9d8f9876e598f62d9e776" - url: "https://pub.dev" - source: hosted + path: media_kit + ref: HEAD + resolved-ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + url: "https://github.com/Schnitzel5/media-kit.git" + source: git version: "1.2.0" media_kit_libs_android_video: dependency: transitive description: - name: media_kit_libs_android_video - sha256: adff9b571b8ead0867f9f91070f8df39562078c0eb3371d88b9029a2d547d7b7 - url: "https://pub.dev" - source: hosted + path: "libs/android/media_kit_libs_android_video" + ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + resolved-ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + url: "https://github.com/Schnitzel5/media-kit.git" + source: git version: "1.3.7" media_kit_libs_ios_video: dependency: transitive description: - name: media_kit_libs_ios_video - sha256: b5382994eb37a4564c368386c154ad70ba0cc78dacdd3fb0cd9f30db6d837991 - url: "https://pub.dev" - source: hosted + path: "libs/ios/media_kit_libs_ios_video" + ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + resolved-ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + url: "https://github.com/Schnitzel5/media-kit.git" + source: git version: "1.1.4" media_kit_libs_linux: dependency: transitive description: - name: media_kit_libs_linux - sha256: "2b473399a49ec94452c4d4ae51cfc0f6585074398d74216092bf3d54aac37ecf" - url: "https://pub.dev" - source: hosted + path: "libs/linux/media_kit_libs_linux" + ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + resolved-ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + url: "https://github.com/Schnitzel5/media-kit.git" + source: git version: "1.2.1" media_kit_libs_macos_video: dependency: transitive description: - name: media_kit_libs_macos_video - sha256: f26aa1452b665df288e360393758f84b911f70ffb3878032e1aabba23aa1032d - url: "https://pub.dev" - source: hosted + path: "libs/macos/media_kit_libs_macos_video" + ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + resolved-ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + url: "https://github.com/Schnitzel5/media-kit.git" + source: git version: "1.1.4" media_kit_libs_video: dependency: "direct main" description: - name: media_kit_libs_video - sha256: "958cc55e7065d9d01f52a2842dab2a0812a92add18489f1006d864fb5e42a3ef" - url: "https://pub.dev" - source: hosted + path: "libs/universal/media_kit_libs_video" + ref: HEAD + resolved-ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + url: "https://github.com/Schnitzel5/media-kit.git" + source: git version: "1.0.6" media_kit_libs_windows_video: dependency: transitive description: - name: media_kit_libs_windows_video - sha256: dff76da2778729ab650229e6b4ec6ec111eb5151431002cbd7ea304ff1f112ab - url: "https://pub.dev" - source: hosted + path: "libs/windows/media_kit_libs_windows_video" + ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + resolved-ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + url: "https://github.com/Schnitzel5/media-kit.git" + source: git version: "1.0.11" media_kit_video: dependency: "direct main" description: path: media_kit_video - ref: aeb29faa8ea93a386ad1185b69fd6225fa331c74 - resolved-ref: aeb29faa8ea93a386ad1185b69fd6225fa331c74 - url: "https://github.com/media-kit/media-kit.git" + ref: HEAD + resolved-ref: "62b08e33590cba8fba4797eaaa1e95b514adb437" + url: "https://github.com/Schnitzel5/media-kit.git" source: git version: "1.3.0" meta: @@ -1537,14 +1505,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.3" - rfc_6901: - dependency: transitive - description: - name: rfc_6901 - sha256: df1bbfa3d023009598f19636d6114c6ac1e0b7bb7bf6a260f0e6e6ce91416820 - url: "https://pub.dev" - source: hosted - version: "0.2.0" riverpod: dependency: transitive description: @@ -1557,10 +1517,10 @@ packages: dependency: transitive description: name: riverpod_analyzer_utils - sha256: c6b8222b2b483cb87ae77ad147d6408f400c64f060df7a225b127f4afef4f8c8 + sha256: "03a17170088c63aab6c54c44456f5ab78876a1ddb6032ffde1662ddab4959611" url: "https://pub.dev" source: hosted - version: "0.5.8" + version: "0.5.10" riverpod_annotation: dependency: "direct main" description: @@ -1573,10 +1533,10 @@ packages: dependency: "direct dev" description: name: riverpod_generator - sha256: "63546d70952015f0981361636bf8f356d9cfd9d7f6f0815e3c07789a41233188" + sha256: "44a0992d54473eb199ede00e2260bd3c262a86560e3c6f6374503d86d0580e36" url: "https://pub.dev" source: hosted - version: "2.6.3" + version: "2.6.5" rust_lib_mangayomi: dependency: "direct main" description: @@ -1736,6 +1696,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + simple_gesture_detector: + dependency: transitive + description: + name: simple_gesture_detector + sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3 + url: "https://pub.dev" + source: hosted + version: "0.2.1" sky_engine: dependency: transitive description: flutter @@ -1745,18 +1713,18 @@ packages: dependency: transitive description: name: source_gen - sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "2.0.0" source_helper: dependency: transitive description: name: source_helper - sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c" + sha256: a447acb083d3a5ef17f983dd36201aeea33fedadb3228fa831f2f0c92f0f3aca url: "https://pub.dev" source: hosted - version: "1.3.5" + version: "1.3.7" source_span: dependency: transitive description: @@ -1869,6 +1837,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.3.1" + table_calendar: + dependency: "direct main" + description: + name: table_calendar + sha256: "0c0c6219878b363a2d5f40c7afb159d845f253d061dc3c822aa0d5fe0f721982" + url: "https://pub.dev" + source: hosted + version: "3.2.0" term_glyph: dependency: transitive description: @@ -1881,10 +1857,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.6" time: dependency: transitive description: @@ -2025,10 +2001,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" video_player: dependency: transitive description: @@ -2081,10 +2057,10 @@ packages: dependency: transitive description: name: volume_controller - sha256: e82fd689bb8e1fe8e64be3fa5946ff8699058f8cf9f4c1679acdba20cda7f5bd + sha256: d75039e69c0d90e7810bfd47e3eedf29ff8543ea7a10392792e81f9bded7edf5 url: "https://pub.dev" source: hosted - version: "3.3.3" + version: "3.4.0" wakelock_plus: dependency: transitive description: @@ -2255,4 +2231,4 @@ packages: version: "2.2.2" sdks: dart: ">=3.8.1 <4.0.0" - flutter: ">=3.29.0" + flutter: ">=3.35.0" diff --git a/pubspec.yaml b/pubspec.yaml index 52aed72d..0c664c9d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: mangayomi description: Free and open source manga reader and anime streaming cross-plateform app inspired by Tachiyomi and Aniyomi. publish_to: "none" -version: 0.6.3+85 +version: 0.6.5+87 environment: sdk: ^3.8.1 @@ -17,7 +17,7 @@ dependencies: html: ^0.15.5 font_awesome_flutter: ^10.8.0 expandable_text: ^2.3.0 - flex_color_scheme: ^8.1.0 + flex_color_scheme: ^8.3.0 extended_image: ^10.0.0 photo_view: ^0.15.0 grouped_list: ^6.0.0 @@ -36,30 +36,34 @@ dependencies: file_picker: ^10.0.0 path_provider: ^2.1.5 scrollable_positioned_list: ^0.3.8 - json_path: ^0.7.4 bot_toast: ^4.1.3 flutter_web_auth_2: ^3.1.2 numberpicker: ^2.1.2 encrypt: ^5.0.3 - media_kit: ^1.2.0 + media_kit: + git: + url: https://github.com/Schnitzel5/media-kit.git + path: media_kit media_kit_video: git: - url: https://github.com/media-kit/media-kit.git + url: https://github.com/Schnitzel5/media-kit.git path: media_kit_video - ref: aeb29faa8ea93a386ad1185b69fd6225fa331c74 - media_kit_libs_video: ^1.0.6 + media_kit_libs_video: + git: + url: https://github.com/Schnitzel5/media-kit.git + path: libs/universal/media_kit_libs_video crypto: ^3.0.6 cupertino_icons: ^1.0.8 window_manager: ^0.4.3 ffi: ^2.1.3 - ffigen: ^16.0.0 + ffigen: 19.1.0 http_interceptor: ^2.0.0 js_packer: ^0.0.5 flutter_qjs: git: url: https://github.com/kodjodevf/flutter_qjs.git ref: main - http: ^1.3.0 + http: ^1.5.0 re_editor: git: url: https://github.com/kodjodevf/re-editor @@ -72,7 +76,7 @@ dependencies: path: rust_builder pseudom: ^1.0.1 path: ^1.9.0 - freezed_annotation: ^2.4.4 + freezed_annotation: ^3.0.0 desktop_webview_window: git: url: https://github.com/kodjodevf/desktop_webview_window.git @@ -91,37 +95,38 @@ dependencies: git: url: https://github.com/kodjodevf/epubx.dart.git ref: dev - d4rt: 0.0.9 + d4rt: 0.1.3 hive: ^2.2.3 hive_flutter: ^1.1.0 flutter_discord_rpc_fork: git: url: https://github.com/Schnitzel5/flutter-discord-rpc.git ref: main + table_calendar: ^3.2.0 dependency_overrides: ffi: ^2.1.3 - analyzer: ">=5.2.0 <7.0.0" html: ^0.15.4 flutter_web_auth_2: git: url: https://github.com/ThexXTURBOXx/flutter_web_auth_2.git ref: 3.x-without-v1 path: flutter_web_auth_2 - analyzer_plugin: ^0.11.3 dev_dependencies: flutter_test: sdk: flutter build_runner: ^2.4.6 - riverpod_generator: ^2.6.3 + riverpod_generator: ^2.6.5 flutter_launcher_icons: ^0.14.3 - isar_generator: ^3.1.0+1 + isar_generator: + path: plugins/isar_generator flutter_lints: ^5.0.0 - freezed: ^2.0.0 + freezed: ^3.0.0 inno_bundle: ^0.9.0 protoc_plugin: ^22.0.1 - hive_generator: ^2.0.1 + hive_generator: + path: plugins/hive_generator flutter: uses-material-design: true @@ -156,5 +161,4 @@ inno_bundle: - french - german admin: false - version: 0.6.3 - + version: 0.6.5 diff --git a/repo/source.json b/repo/source.json index f139de7c..a827cd93 100755 --- a/repo/source.json +++ b/repo/source.json @@ -14,25 +14,39 @@ "bundleIdentifier": "com.kodjodevf.mangayomi", "developerName": "Moustapha Kodjo Amadou", "subtitle": "Read manga, novels, and watch anime", - "version": "0.6.3", - "versionDate": "2025-07-09T14:01:54Z", - "versionDescription": "", - "downloadURL": "https://github.com/kodjodevf/mangayomi/releases/download/v0.6.3/Mangayomi-v0.6.3-ios.ipa", + "version": "0.6.5", + "versionDate": "2025-08-29T15:38:32Z", + "versionDescription": "What's Changed\r\n* Show correct version number on Windows by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/542\r\n* re\u2022added full upload and download by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/544\r\n* Fix MAL & Kitsu \"No Cover\" Exception by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/555\r\n* allow to swipe pages even if zoomed in by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/553\r\n* added Anibrain recommendations by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/552\r\n* move history to more screen if hidden by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/549\r\n* added downloaded only mode by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/551\r\n* added quick access to source settings by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/550\r\n* added missing arb entry by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/556\r\n* Refactor select bar widget and unify manga read state logic by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/536\r\n* enhanced mpv player by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/540\r\n* added support for Mihon extensions via ApkBridge by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/559\r\n* fixed local subtitles by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/565\r\n* enhanced calendar by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/564\r\n* added subtitles search by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/560\r\n* added watch order by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/562\r\n* changed from labels to icons by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/566\r\n* added Simkl tracker by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/561\r\n* add option to download online subtitles by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/567\r\n* fixed Trakt refresh token by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/569\r\n* added button link to the apk by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/570\r\n* added option to turn on/off mpv hardware acceleration by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/571\r\n\r\n\r\n**Full Changelog**: https://github.com/kodjodevf/mangayomi/compare/v0.6.35...v0.6.5", + "downloadURL": null, "localizedDescription": "Mangayomi is an open-source Flutter app for reading manga, novels, and watching anime across multiple platforms.", "iconURL": "https://raw.githubusercontent.com/kodjodevf/mangayomi/refs/heads/main/repo/images/icons/icon_default.webp", "tintColor": "EF4444", "category": "entertainment", - "size": 58376897, + "size": 59596148, "screenshotURLs": [ "https://raw.githubusercontent.com/kodjodevf/mangayomi/refs/heads/main/repo/images/screenshots/image_0_default.webp", "https://raw.githubusercontent.com/kodjodevf/mangayomi/refs/heads/main/repo/images/screenshots/image_1_default.webp", "https://raw.githubusercontent.com/kodjodevf/mangayomi/refs/heads/main/repo/images/screenshots/image_2_default.webp" ], "versions": [ + { + "version": "0.6.5", + "date": "2025-08-29T15:38:32Z", + "localizedDescription": "What's Changed\r\n* Show correct version number on Windows by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/542\r\n* re\u2022added full upload and download by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/544\r\n* Fix MAL & Kitsu \"No Cover\" Exception by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/555\r\n* allow to swipe pages even if zoomed in by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/553\r\n* added Anibrain recommendations by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/552\r\n* move history to more screen if hidden by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/549\r\n* added downloaded only mode by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/551\r\n* added quick access to source settings by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/550\r\n* added missing arb entry by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/556\r\n* Refactor select bar widget and unify manga read state logic by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/536\r\n* enhanced mpv player by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/540\r\n* added support for Mihon extensions via ApkBridge by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/559\r\n* fixed local subtitles by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/565\r\n* enhanced calendar by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/564\r\n* added subtitles search by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/560\r\n* added watch order by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/562\r\n* changed from labels to icons by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/566\r\n* added Simkl tracker by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/561\r\n* add option to download online subtitles by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/567\r\n* fixed Trakt refresh token by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/569\r\n* added button link to the apk by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/570\r\n* added option to turn on/off mpv hardware acceleration by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/571\r\n\r\n\r\n**Full Changelog**: https://github.com/kodjodevf/mangayomi/compare/v0.6.35...v0.6.5", + "downloadURL": "https://github.com/kodjodevf/mangayomi/releases/download/v0.6.5/Mangayomi-v0.6.5-ios.ipa", + "size": 59596148 + }, + { + "version": "0.6.35", + "date": "2025-08-05T14:52:24Z", + "localizedDescription": "What's Changed\r\n* Fix versioning and packaging issues for Windows and Linux builds; improve packaging consistency by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/515\r\n* Save lastPageRead before system kills app by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/521\r\n* Fix Exception by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/516\r\n* Use icons from macOS folder for linux builds by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/524\r\n* Properly dispose by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/519\r\n* Enhance Performance of Updates and History Screen by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/525\r\n* Improved UX for Migration, Anime Playback & Navigation by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/520\r\n* added support for local epubs and displaying its images by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/527\r\n* added discord rpc by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/526\r\n* added sync for settings by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/528\r\n* No discordRPC for iOS and Android by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/533\r\n* Reduce file size of AppImage by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/532\r\n* Fix regression: restore fullscreen exit logic on desktop by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/531\r\n* Fix MyAnimeList Token Refresh by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/534\r\n* Update manga to display correct number of unread chapters after marking chapters as read/unread by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/535\r\n* Fix AnyhowException (DiscordRPC) when restoring a backup by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/537\r\n* Added Hindi & Assamese Translations by @itsmechinmoy in https://github.com/kodjodevf/mangayomi/pull/538\r\n\r\nNew Contributors\r\n* @itsmechinmoy made their first contribution in https://github.com/kodjodevf/mangayomi/pull/538\r\n\r\n**Full Changelog**: https://github.com/kodjodevf/mangayomi/compare/v0.6.3...v0.6.35", + "downloadURL": "https://github.com/kodjodevf/mangayomi/releases/download/v0.6.35/Mangayomi-v0.6.35-ios.ipa", + "size": 59596142 + }, { "version": "0.6.3", "date": "2025-07-09T14:01:54Z", - "localizedDescription": "", + "localizedDescription": "What's Changed\r\n* added option to change hwdec by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/483\r\n* Fixes, Refactors, and Async Improvements by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/484\r\n* Fix Async Transaction Bug and Category Management Issues by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/489\r\n* Create PKGBUILD for Arch linux by @saberr26 in https://github.com/kodjodevf/mangayomi/pull/485\r\n* added two\u2022way\u2022tracking by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/490\r\n* Refactor: Consolidate _openCategory() Methods into Unified Dialog by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/491\r\n* Release file lock by closing InputStream by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/493\r\n* increased protobuf limit to 250 MB by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/494\r\n* Make buttons white for consistency in light mode by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/496\r\n* improved two\u2022way track screen by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/497\r\n* Don't allow zooming by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/502\r\n* adjusted tracker library + bug fixes by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/501\r\n* iOS CBZ import fix by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/503\r\n* \ud83c\udfac Improve Fullscreen Stability & Simplify AniSkip Logic by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/499\r\n* added option to disable merged library navigation by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/504\r\n* reworked sync server by @Schnitzel5 in https://github.com/kodjodevf/mangayomi/pull/506\r\n* Fix \"Read\" and \"Unread\" button [based on PR 506] by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/507\r\n* Fix labels on navigation bar [based on PR 506] by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/508\r\n* Refactor code by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/509\r\n* Fix menu colors on theme change by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/511\r\n* Fix delete \"Downloaded episodes/chapters\" by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/512\r\n* Add tracker button to localArchive by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/513\r\n* Changed the \"Page preload amount\" Setting to be a Slider by @NBA2K1 in https://github.com/kodjodevf/mangayomi/pull/510\r\n\r\nNew Contributors\r\n* @saberr26 made their first contribution in https://github.com/kodjodevf/mangayomi/pull/485\r\n\r\n**Full Changelog**: https://github.com/kodjodevf/mangayomi/compare/v0.6.25...v0.6.3", "downloadURL": "https://github.com/kodjodevf/mangayomi/releases/download/v0.6.3/Mangayomi-v0.6.3-ios.ipa", "size": 58376897 }, @@ -171,6 +185,28 @@ "imageURL": "https://raw.githubusercontent.com/kodjodevf/mangayomi/refs/heads/main/repo/images/news/update_default.webp", "notify": true, "url": "https://github.com/kodjodevf/mangayomi/releases/tag/v0.6.3" + }, + { + "appID": "com.kodjodevf.mangayomi", + "title": "0.6.35 - 05 Aug", + "identifier": "release-0.6.35", + "caption": "Update for Mangayomi now available!", + "date": "2025-08-05T14:52:24Z", + "tintColor": "EF4444", + "imageURL": "https://raw.githubusercontent.com/kodjodevf/mangayomi/refs/heads/main/repo/images/news/update_default.webp", + "notify": true, + "url": "https://github.com/kodjodevf/mangayomi/releases/tag/v0.6.35" + }, + { + "appID": "com.kodjodevf.mangayomi", + "title": "0.6.5 - 29 Aug", + "identifier": "release-0.6.5", + "caption": "Update for Mangayomi now available!", + "date": "2025-08-29T15:38:32Z", + "tintColor": "EF4444", + "imageURL": "https://raw.githubusercontent.com/kodjodevf/mangayomi/refs/heads/main/repo/images/news/update_default.webp", + "notify": true, + "url": "https://github.com/kodjodevf/mangayomi/releases/tag/v0.6.5" } ] } \ No newline at end of file