diff --git a/lib/main.dart b/lib/main.dart index dcb5051..e88e328 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,8 +18,6 @@ import 'package:mangayomi/modules/more/settings/appearance/providers/blend_level import 'package:mangayomi/modules/more/settings/appearance/providers/flex_scheme_color_state_provider.dart'; import 'package:mangayomi/modules/more/settings/appearance/providers/pure_black_dark_mode_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/services/sync_server.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:mangayomi/src/rust/frb_generated.dart'; import 'package:media_kit/media_kit.dart'; @@ -82,10 +80,6 @@ class _MyAppState extends ConsumerState { @override Widget build(BuildContext context) { - final syncOnAppLaunch = ref.watch(syncOnAppLaunchStateProvider); - if (syncOnAppLaunch) { - ref.read(syncServerProvider(syncId: 1).notifier).checkForSync(true); - } final isDarkTheme = ref.watch(themeModeStateProvider); final blendLevel = ref.watch(blendLevelStateProvider); final appFontFamily = ref.watch(appFontFamilyProvider); diff --git a/lib/models/changed_items.dart b/lib/models/changed_items.dart deleted file mode 100644 index 60555df..0000000 --- a/lib/models/changed_items.dart +++ /dev/null @@ -1,86 +0,0 @@ -import 'package:isar/isar.dart'; -part 'changed_items.g.dart'; - -@collection -@Name("Changed Items") -class ChangedItems { - Id? id; - List? deletedMangas; - List? updatedChapters; - List? deletedCategories; - ChangedItems( - {this.id = Isar.autoIncrement, - this.deletedMangas = const [], - this.updatedChapters = const [], - this.deletedCategories = const []}); - - ChangedItems.fromJson(Map json) { - id = json['id']; - deletedMangas = json['deletedMangas']; - updatedChapters = json['updatedChapters']; - deletedCategories = json['deletedCategories']; - } - - Map toJson() => { - 'id': id, - 'deletedMangas': deletedMangas, - 'updatedChapters': updatedChapters, - 'deletedCategories': deletedCategories - }; -} - -@embedded -class DeletedManga { - int? mangaId; - DeletedManga({this.mangaId}); - DeletedManga.fromJson(Map json) { - mangaId = json['mangaId']; - } - - Map toJson() => {'mangaId': mangaId}; -} - -@embedded -class UpdatedChapter { - int? chapterId; - int? mangaId; - bool? isBookmarked; - bool? isRead; - String? lastPageRead; - bool? deleted; - UpdatedChapter( - {this.chapterId, - this.mangaId, - this.isBookmarked, - this.isRead, - this.lastPageRead, - this.deleted}); - UpdatedChapter.fromJson(Map json) { - chapterId = json['chapterId']; - mangaId = json['mangaId']; - isBookmarked = json['isBookmarked']; - isRead = json['isRead']; - lastPageRead = json['lastPageRead']; - deleted = json['deleted']; - } - - Map toJson() => { - 'chapterId': chapterId, - 'mangaId': mangaId, - 'isBookmarked': isBookmarked, - 'isRead': isRead, - 'lastPageRead': lastPageRead, - 'deleted': deleted - }; -} - -@embedded -class DeletedCategory { - int? categoryId; - DeletedCategory({this.categoryId}); - DeletedCategory.fromJson(Map json) { - categoryId = json['categoryId']; - } - - Map toJson() => {'categoryId': categoryId}; -} diff --git a/lib/models/changed_items.g.dart b/lib/models/changed_items.g.dart deleted file mode 100644 index 16a1754..0000000 --- a/lib/models/changed_items.g.dart +++ /dev/null @@ -1,1555 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'changed_items.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 GetChangedItemsCollection on Isar { - IsarCollection get changedItems => this.collection(); -} - -const ChangedItemsSchema = CollectionSchema( - name: r'Changed Items', - id: 5738738771983667580, - properties: { - r'deletedCategories': PropertySchema( - id: 0, - name: r'deletedCategories', - type: IsarType.objectList, - target: r'DeletedCategory', - ), - r'deletedMangas': PropertySchema( - id: 1, - name: r'deletedMangas', - type: IsarType.objectList, - target: r'DeletedManga', - ), - r'updatedChapters': PropertySchema( - id: 2, - name: r'updatedChapters', - type: IsarType.objectList, - target: r'UpdatedChapter', - ) - }, - estimateSize: _changedItemsEstimateSize, - serialize: _changedItemsSerialize, - deserialize: _changedItemsDeserialize, - deserializeProp: _changedItemsDeserializeProp, - idName: r'id', - indexes: {}, - links: {}, - embeddedSchemas: { - r'DeletedManga': DeletedMangaSchema, - r'UpdatedChapter': UpdatedChapterSchema, - r'DeletedCategory': DeletedCategorySchema - }, - getId: _changedItemsGetId, - getLinks: _changedItemsGetLinks, - attach: _changedItemsAttach, - version: '3.1.0+1', -); - -int _changedItemsEstimateSize( - ChangedItems object, - List offsets, - Map> allOffsets, -) { - var bytesCount = offsets.last; - { - final list = object.deletedCategories; - if (list != null) { - bytesCount += 3 + list.length * 3; - { - final offsets = allOffsets[DeletedCategory]!; - for (var i = 0; i < list.length; i++) { - final value = list[i]; - bytesCount += - DeletedCategorySchema.estimateSize(value, offsets, allOffsets); - } - } - } - } - { - final list = object.deletedMangas; - if (list != null) { - bytesCount += 3 + list.length * 3; - { - final offsets = allOffsets[DeletedManga]!; - for (var i = 0; i < list.length; i++) { - final value = list[i]; - bytesCount += - DeletedMangaSchema.estimateSize(value, offsets, allOffsets); - } - } - } - } - { - final list = object.updatedChapters; - if (list != null) { - bytesCount += 3 + list.length * 3; - { - final offsets = allOffsets[UpdatedChapter]!; - for (var i = 0; i < list.length; i++) { - final value = list[i]; - bytesCount += - UpdatedChapterSchema.estimateSize(value, offsets, allOffsets); - } - } - } - } - return bytesCount; -} - -void _changedItemsSerialize( - ChangedItems object, - IsarWriter writer, - List offsets, - Map> allOffsets, -) { - writer.writeObjectList( - offsets[0], - allOffsets, - DeletedCategorySchema.serialize, - object.deletedCategories, - ); - writer.writeObjectList( - offsets[1], - allOffsets, - DeletedMangaSchema.serialize, - object.deletedMangas, - ); - writer.writeObjectList( - offsets[2], - allOffsets, - UpdatedChapterSchema.serialize, - object.updatedChapters, - ); -} - -ChangedItems _changedItemsDeserialize( - Id id, - IsarReader reader, - List offsets, - Map> allOffsets, -) { - final object = ChangedItems( - deletedCategories: reader.readObjectList( - offsets[0], - DeletedCategorySchema.deserialize, - allOffsets, - DeletedCategory(), - ), - deletedMangas: reader.readObjectList( - offsets[1], - DeletedMangaSchema.deserialize, - allOffsets, - DeletedManga(), - ), - id: id, - updatedChapters: reader.readObjectList( - offsets[2], - UpdatedChapterSchema.deserialize, - allOffsets, - UpdatedChapter(), - ), - ); - return object; -} - -P _changedItemsDeserializeProp

( - IsarReader reader, - int propertyId, - int offset, - Map> allOffsets, -) { - switch (propertyId) { - case 0: - return (reader.readObjectList( - offset, - DeletedCategorySchema.deserialize, - allOffsets, - DeletedCategory(), - )) as P; - case 1: - return (reader.readObjectList( - offset, - DeletedMangaSchema.deserialize, - allOffsets, - DeletedManga(), - )) as P; - case 2: - return (reader.readObjectList( - offset, - UpdatedChapterSchema.deserialize, - allOffsets, - UpdatedChapter(), - )) as P; - default: - throw IsarError('Unknown property with id $propertyId'); - } -} - -Id _changedItemsGetId(ChangedItems object) { - return object.id ?? Isar.autoIncrement; -} - -List> _changedItemsGetLinks(ChangedItems object) { - return []; -} - -void _changedItemsAttach( - IsarCollection col, Id id, ChangedItems object) { - object.id = id; -} - -extension ChangedItemsQueryWhereSort - on QueryBuilder { - QueryBuilder anyId() { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause(const IdWhereClause.any()); - }); - } -} - -extension ChangedItemsQueryWhere - 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 ChangedItemsQueryFilter - on QueryBuilder { - QueryBuilder - deletedCategoriesIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'deletedCategories', - )); - }); - } - - QueryBuilder - deletedCategoriesIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'deletedCategories', - )); - }); - } - - QueryBuilder - deletedCategoriesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedCategories', - length, - true, - length, - true, - ); - }); - } - - QueryBuilder - deletedCategoriesIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedCategories', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder - deletedCategoriesIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedCategories', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder - deletedCategoriesLengthLessThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedCategories', - 0, - true, - length, - include, - ); - }); - } - - QueryBuilder - deletedCategoriesLengthGreaterThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedCategories', - length, - include, - 999999, - true, - ); - }); - } - - QueryBuilder - deletedCategoriesLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedCategories', - lower, - includeLower, - upper, - includeUpper, - ); - }); - } - - QueryBuilder - deletedMangasIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'deletedMangas', - )); - }); - } - - QueryBuilder - deletedMangasIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'deletedMangas', - )); - }); - } - - QueryBuilder - deletedMangasLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedMangas', - length, - true, - length, - true, - ); - }); - } - - QueryBuilder - deletedMangasIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedMangas', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder - deletedMangasIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedMangas', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder - deletedMangasLengthLessThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedMangas', - 0, - true, - length, - include, - ); - }); - } - - QueryBuilder - deletedMangasLengthGreaterThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedMangas', - length, - include, - 999999, - true, - ); - }); - } - - QueryBuilder - deletedMangasLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'deletedMangas', - lower, - includeLower, - upper, - includeUpper, - ); - }); - } - - 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 - updatedChaptersIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'updatedChapters', - )); - }); - } - - QueryBuilder - updatedChaptersIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'updatedChapters', - )); - }); - } - - QueryBuilder - updatedChaptersLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'updatedChapters', - length, - true, - length, - true, - ); - }); - } - - QueryBuilder - updatedChaptersIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'updatedChapters', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder - updatedChaptersIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'updatedChapters', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder - updatedChaptersLengthLessThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'updatedChapters', - 0, - true, - length, - include, - ); - }); - } - - QueryBuilder - updatedChaptersLengthGreaterThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'updatedChapters', - length, - include, - 999999, - true, - ); - }); - } - - QueryBuilder - updatedChaptersLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'updatedChapters', - lower, - includeLower, - upper, - includeUpper, - ); - }); - } -} - -extension ChangedItemsQueryObject - on QueryBuilder { - QueryBuilder - deletedCategoriesElement(FilterQuery q) { - return QueryBuilder.apply(this, (query) { - return query.object(q, r'deletedCategories'); - }); - } - - QueryBuilder - deletedMangasElement(FilterQuery q) { - return QueryBuilder.apply(this, (query) { - return query.object(q, r'deletedMangas'); - }); - } - - QueryBuilder - updatedChaptersElement(FilterQuery q) { - return QueryBuilder.apply(this, (query) { - return query.object(q, r'updatedChapters'); - }); - } -} - -extension ChangedItemsQueryLinks - on QueryBuilder {} - -extension ChangedItemsQuerySortBy - on QueryBuilder {} - -extension ChangedItemsQuerySortThenBy - on QueryBuilder { - 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); - }); - } -} - -extension ChangedItemsQueryWhereDistinct - on QueryBuilder {} - -extension ChangedItemsQueryProperty - on QueryBuilder { - QueryBuilder idProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'id'); - }); - } - - QueryBuilder?, QQueryOperations> - deletedCategoriesProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'deletedCategories'); - }); - } - - QueryBuilder?, QQueryOperations> - deletedMangasProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'deletedMangas'); - }); - } - - QueryBuilder?, QQueryOperations> - updatedChaptersProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'updatedChapters'); - }); - } -} - -// ************************************************************************** -// IsarEmbeddedGenerator -// ************************************************************************** - -// 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 DeletedMangaSchema = Schema( - name: r'DeletedManga', - id: -4943524126252993118, - properties: { - r'mangaId': PropertySchema( - id: 0, - name: r'mangaId', - type: IsarType.long, - ) - }, - estimateSize: _deletedMangaEstimateSize, - serialize: _deletedMangaSerialize, - deserialize: _deletedMangaDeserialize, - deserializeProp: _deletedMangaDeserializeProp, -); - -int _deletedMangaEstimateSize( - DeletedManga object, - List offsets, - Map> allOffsets, -) { - var bytesCount = offsets.last; - return bytesCount; -} - -void _deletedMangaSerialize( - DeletedManga object, - IsarWriter writer, - List offsets, - Map> allOffsets, -) { - writer.writeLong(offsets[0], object.mangaId); -} - -DeletedManga _deletedMangaDeserialize( - Id id, - IsarReader reader, - List offsets, - Map> allOffsets, -) { - final object = DeletedManga( - mangaId: reader.readLongOrNull(offsets[0]), - ); - return object; -} - -P _deletedMangaDeserializeProp

( - IsarReader reader, - int propertyId, - int offset, - Map> allOffsets, -) { - switch (propertyId) { - case 0: - return (reader.readLongOrNull(offset)) as P; - default: - throw IsarError('Unknown property with id $propertyId'); - } -} - -extension DeletedMangaQueryFilter - on QueryBuilder { - QueryBuilder - mangaIdIsNull() { - return QueryBuilder.apply(this, (query) { - 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', - )); - }); - } - - QueryBuilder - mangaIdEqualTo(int? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'mangaId', - value: value, - )); - }); - } - - QueryBuilder - mangaIdGreaterThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); - }); - } - - QueryBuilder - mangaIdLessThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); - }); - } - - QueryBuilder - 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, - )); - }); - } -} - -extension DeletedMangaQueryObject - on QueryBuilder {} - -// 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 UpdatedChapterSchema = Schema( - name: r'UpdatedChapter', - id: -1728004238049586930, - properties: { - r'chapterId': PropertySchema( - id: 0, - name: r'chapterId', - type: IsarType.long, - ), - r'deleted': PropertySchema( - id: 1, - name: r'deleted', - type: IsarType.bool, - ), - r'isBookmarked': PropertySchema( - id: 2, - name: r'isBookmarked', - type: IsarType.bool, - ), - r'isRead': PropertySchema( - id: 3, - name: r'isRead', - type: IsarType.bool, - ), - r'lastPageRead': PropertySchema( - id: 4, - name: r'lastPageRead', - type: IsarType.string, - ), - r'mangaId': PropertySchema( - id: 5, - name: r'mangaId', - type: IsarType.long, - ) - }, - estimateSize: _updatedChapterEstimateSize, - serialize: _updatedChapterSerialize, - deserialize: _updatedChapterDeserialize, - deserializeProp: _updatedChapterDeserializeProp, -); - -int _updatedChapterEstimateSize( - UpdatedChapter object, - List offsets, - Map> allOffsets, -) { - var bytesCount = offsets.last; - { - final value = object.lastPageRead; - if (value != null) { - bytesCount += 3 + value.length * 3; - } - } - return bytesCount; -} - -void _updatedChapterSerialize( - UpdatedChapter object, - IsarWriter writer, - List offsets, - Map> allOffsets, -) { - writer.writeLong(offsets[0], object.chapterId); - writer.writeBool(offsets[1], object.deleted); - writer.writeBool(offsets[2], object.isBookmarked); - writer.writeBool(offsets[3], object.isRead); - writer.writeString(offsets[4], object.lastPageRead); - writer.writeLong(offsets[5], object.mangaId); -} - -UpdatedChapter _updatedChapterDeserialize( - Id id, - IsarReader reader, - List offsets, - Map> allOffsets, -) { - final object = UpdatedChapter( - chapterId: reader.readLongOrNull(offsets[0]), - deleted: reader.readBoolOrNull(offsets[1]), - isBookmarked: reader.readBoolOrNull(offsets[2]), - isRead: reader.readBoolOrNull(offsets[3]), - lastPageRead: reader.readStringOrNull(offsets[4]), - mangaId: reader.readLongOrNull(offsets[5]), - ); - return object; -} - -P _updatedChapterDeserializeProp

( - IsarReader reader, - int propertyId, - int offset, - Map> allOffsets, -) { - switch (propertyId) { - case 0: - return (reader.readLongOrNull(offset)) as P; - case 1: - return (reader.readBoolOrNull(offset)) as P; - case 2: - return (reader.readBoolOrNull(offset)) as P; - case 3: - return (reader.readBoolOrNull(offset)) as P; - case 4: - return (reader.readStringOrNull(offset)) as P; - case 5: - return (reader.readLongOrNull(offset)) as P; - default: - throw IsarError('Unknown property with id $propertyId'); - } -} - -extension UpdatedChapterQueryFilter - on QueryBuilder { - QueryBuilder - chapterIdIsNull() { - return QueryBuilder.apply(this, (query) { - 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', - )); - }); - } - - QueryBuilder - chapterIdEqualTo(int? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'chapterId', - value: value, - )); - }); - } - - QueryBuilder - chapterIdGreaterThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'chapterId', - value: value, - )); - }); - } - - QueryBuilder - chapterIdLessThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'chapterId', - value: value, - )); - }); - } - - QueryBuilder - 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, - )); - }); - } - - QueryBuilder - deletedIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'deleted', - )); - }); - } - - QueryBuilder - deletedIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'deleted', - )); - }); - } - - QueryBuilder - deletedEqualTo(bool? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'deleted', - value: value, - )); - }); - } - - QueryBuilder - isBookmarkedIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'isBookmarked', - )); - }); - } - - QueryBuilder - isBookmarkedIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'isBookmarked', - )); - }); - } - - QueryBuilder - isBookmarkedEqualTo(bool? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'isBookmarked', - value: value, - )); - }); - } - - QueryBuilder - isReadIsNull() { - return QueryBuilder.apply(this, (query) { - 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', - )); - }); - } - - QueryBuilder - isReadEqualTo(bool? value) { - return QueryBuilder.apply(this, (query) { - 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', - )); - }); - } - - QueryBuilder - lastPageReadIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'lastPageRead', - )); - }); - } - - QueryBuilder - lastPageReadEqualTo( - String? value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - lastPageReadGreaterThan( - String? value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - lastPageReadLessThan( - String? value, { - bool include = false, - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - lastPageReadBetween( - 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'lastPageRead', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - lastPageReadStartsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - lastPageReadEndsWith( - String value, { - bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - lastPageReadContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( - property: r'lastPageRead', - value: value, - caseSensitive: caseSensitive, - )); - }); - } - - QueryBuilder - lastPageReadMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - 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: '', - )); - }); - } - - QueryBuilder - lastPageReadIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - 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', - )); - }); - } - - QueryBuilder - mangaIdIsNotNull() { - return QueryBuilder.apply(this, (query) { - 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, - )); - }); - } - - QueryBuilder - mangaIdGreaterThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'mangaId', - value: value, - )); - }); - } - - QueryBuilder - mangaIdLessThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'mangaId', - value: value, - )); - }); - } - - QueryBuilder - 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, - )); - }); - } -} - -extension UpdatedChapterQueryObject - on QueryBuilder {} - -// 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 DeletedCategorySchema = Schema( - name: r'DeletedCategory', - id: -2357965502277606786, - properties: { - r'categoryId': PropertySchema( - id: 0, - name: r'categoryId', - type: IsarType.long, - ) - }, - estimateSize: _deletedCategoryEstimateSize, - serialize: _deletedCategorySerialize, - deserialize: _deletedCategoryDeserialize, - deserializeProp: _deletedCategoryDeserializeProp, -); - -int _deletedCategoryEstimateSize( - DeletedCategory object, - List offsets, - Map> allOffsets, -) { - var bytesCount = offsets.last; - return bytesCount; -} - -void _deletedCategorySerialize( - DeletedCategory object, - IsarWriter writer, - List offsets, - Map> allOffsets, -) { - writer.writeLong(offsets[0], object.categoryId); -} - -DeletedCategory _deletedCategoryDeserialize( - Id id, - IsarReader reader, - List offsets, - Map> allOffsets, -) { - final object = DeletedCategory( - categoryId: reader.readLongOrNull(offsets[0]), - ); - return object; -} - -P _deletedCategoryDeserializeProp

( - IsarReader reader, - int propertyId, - int offset, - Map> allOffsets, -) { - switch (propertyId) { - case 0: - return (reader.readLongOrNull(offset)) as P; - default: - throw IsarError('Unknown property with id $propertyId'); - } -} - -extension DeletedCategoryQueryFilter - on QueryBuilder { - QueryBuilder - categoryIdIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'categoryId', - )); - }); - } - - QueryBuilder - categoryIdIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'categoryId', - )); - }); - } - - QueryBuilder - categoryIdEqualTo(int? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'categoryId', - value: value, - )); - }); - } - - QueryBuilder - categoryIdGreaterThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'categoryId', - value: value, - )); - }); - } - - QueryBuilder - categoryIdLessThan( - int? value, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'categoryId', - value: value, - )); - }); - } - - QueryBuilder - categoryIdBetween( - int? lower, - int? upper, { - bool includeLower = true, - bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( - property: r'categoryId', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - )); - }); - } -} - -extension DeletedCategoryQueryObject - on QueryBuilder {} diff --git a/lib/models/settings.dart b/lib/models/settings.dart index cf1fa24..4d5a173 100644 --- a/lib/models/settings.dart +++ b/lib/models/settings.dart @@ -135,10 +135,6 @@ class Settings { List? backupFrequencyOptions; - bool? syncOnAppLaunch; - - bool? syncAfterReading; - String? autoBackupLocation; bool? usePageTapZones; @@ -276,8 +272,6 @@ class Settings { this.personalPageModeList, this.backupFrequency, this.backupFrequencyOptions, - this.syncOnAppLaunch, - this.syncAfterReading, this.autoBackupLocation, this.startDatebackup, this.usePageTapZones = true, @@ -436,8 +430,6 @@ class Settings { userAgent = json['userAgent']; backupFrequency = json['backupFrequency']; backupFrequencyOptions = json['backupFrequencyOptions']?.cast(); - syncOnAppLaunch = json['syncOnAppLaunch']; - syncAfterReading = json['syncAfterReading']; autoBackupLocation = json['autoBackupLocation']; startDatebackup = json['startDatebackup']; usePageTapZones = json['usePageTapZones']; @@ -559,8 +551,6 @@ class Settings { 'userAgent': userAgent, 'backupFrequency': backupFrequency, 'backupFrequencyOptions': backupFrequencyOptions, - 'syncOnAppLaunch': syncOnAppLaunch, - 'syncAfterReading': syncAfterReading, 'autoBackupLocation': autoBackupLocation, 'startDatebackup': startDatebackup, 'usePageTapZones': usePageTapZones, diff --git a/lib/models/settings.g.dart b/lib/models/settings.g.dart index daa0845..96fd70d 100644 --- a/lib/models/settings.g.dart +++ b/lib/models/settings.g.dart @@ -508,38 +508,28 @@ const SettingsSchema = CollectionSchema( name: r'startDatebackup', type: IsarType.long, ), - r'syncAfterReading': PropertySchema( - id: 93, - name: r'syncAfterReading', - type: IsarType.bool, - ), - r'syncOnAppLaunch': PropertySchema( - id: 94, - name: r'syncOnAppLaunch', - type: IsarType.bool, - ), r'themeIsDark': PropertySchema( - id: 95, + id: 93, name: r'themeIsDark', type: IsarType.bool, ), r'updateProgressAfterReading': PropertySchema( - id: 96, + id: 94, name: r'updateProgressAfterReading', type: IsarType.bool, ), r'useLibass': PropertySchema( - id: 97, + id: 95, name: r'useLibass', type: IsarType.bool, ), r'usePageTapZones': PropertySchema( - id: 98, + id: 96, name: r'usePageTapZones', type: IsarType.bool, ), r'userAgent': PropertySchema( - id: 99, + id: 97, name: r'userAgent', type: IsarType.string, ) @@ -1017,13 +1007,11 @@ void _settingsSerialize( object.sortLibraryNovel, ); writer.writeLong(offsets[92], object.startDatebackup); - writer.writeBool(offsets[93], object.syncAfterReading); - writer.writeBool(offsets[94], object.syncOnAppLaunch); - writer.writeBool(offsets[95], object.themeIsDark); - writer.writeBool(offsets[96], object.updateProgressAfterReading); - writer.writeBool(offsets[97], object.useLibass); - writer.writeBool(offsets[98], object.usePageTapZones); - writer.writeString(offsets[99], object.userAgent); + writer.writeBool(offsets[93], object.themeIsDark); + writer.writeBool(offsets[94], object.updateProgressAfterReading); + writer.writeBool(offsets[95], object.useLibass); + writer.writeBool(offsets[96], object.usePageTapZones); + writer.writeString(offsets[97], object.userAgent); } Settings _settingsDeserialize( @@ -1200,13 +1188,11 @@ Settings _settingsDeserialize( allOffsets, ), startDatebackup: reader.readLongOrNull(offsets[92]), - syncAfterReading: reader.readBoolOrNull(offsets[93]), - syncOnAppLaunch: reader.readBoolOrNull(offsets[94]), - themeIsDark: reader.readBoolOrNull(offsets[95]), - updateProgressAfterReading: reader.readBoolOrNull(offsets[96]), - useLibass: reader.readBoolOrNull(offsets[97]), - usePageTapZones: reader.readBoolOrNull(offsets[98]), - userAgent: reader.readStringOrNull(offsets[99]), + themeIsDark: reader.readBoolOrNull(offsets[93]), + updateProgressAfterReading: reader.readBoolOrNull(offsets[94]), + useLibass: reader.readBoolOrNull(offsets[95]), + usePageTapZones: reader.readBoolOrNull(offsets[96]), + userAgent: reader.readStringOrNull(offsets[97]), ); object.chapterFilterBookmarkedList = reader.readObjectList( @@ -1533,10 +1519,6 @@ P _settingsDeserializeProp

( case 96: return (reader.readBoolOrNull(offset)) as P; case 97: - return (reader.readBoolOrNull(offset)) as P; - case 98: - return (reader.readBoolOrNull(offset)) as P; - case 99: return (reader.readStringOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); @@ -7545,62 +7527,6 @@ extension SettingsQueryFilter }); } - QueryBuilder - syncAfterReadingIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'syncAfterReading', - )); - }); - } - - QueryBuilder - syncAfterReadingIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'syncAfterReading', - )); - }); - } - - QueryBuilder - syncAfterReadingEqualTo(bool? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncAfterReading', - value: value, - )); - }); - } - - QueryBuilder - syncOnAppLaunchIsNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNull( - property: r'syncOnAppLaunch', - )); - }); - } - - QueryBuilder - syncOnAppLaunchIsNotNull() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(const FilterCondition.isNotNull( - property: r'syncOnAppLaunch', - )); - }); - } - - QueryBuilder - syncOnAppLaunchEqualTo(bool? value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( - property: r'syncOnAppLaunch', - value: value, - )); - }); - } - QueryBuilder themeIsDarkIsNull() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(const FilterCondition.isNull( @@ -9032,30 +8958,6 @@ extension SettingsQuerySortBy on QueryBuilder { }); } - QueryBuilder sortBySyncAfterReading() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'syncAfterReading', Sort.asc); - }); - } - - QueryBuilder sortBySyncAfterReadingDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'syncAfterReading', Sort.desc); - }); - } - - QueryBuilder sortBySyncOnAppLaunch() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'syncOnAppLaunch', Sort.asc); - }); - } - - QueryBuilder sortBySyncOnAppLaunchDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'syncOnAppLaunch', Sort.desc); - }); - } - QueryBuilder sortByThemeIsDark() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'themeIsDark', Sort.asc); @@ -10122,30 +10024,6 @@ extension SettingsQuerySortThenBy }); } - QueryBuilder thenBySyncAfterReading() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'syncAfterReading', Sort.asc); - }); - } - - QueryBuilder thenBySyncAfterReadingDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'syncAfterReading', Sort.desc); - }); - } - - QueryBuilder thenBySyncOnAppLaunch() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'syncOnAppLaunch', Sort.asc); - }); - } - - QueryBuilder thenBySyncOnAppLaunchDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'syncOnAppLaunch', Sort.desc); - }); - } - QueryBuilder thenByThemeIsDark() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'themeIsDark', Sort.asc); @@ -10715,18 +10593,6 @@ extension SettingsQueryWhereDistinct }); } - QueryBuilder distinctBySyncAfterReading() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'syncAfterReading'); - }); - } - - QueryBuilder distinctBySyncOnAppLaunch() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'syncOnAppLaunch'); - }); - } - QueryBuilder distinctByThemeIsDark() { return QueryBuilder.apply(this, (query) { return query.addDistinctBy(r'themeIsDark'); @@ -11393,18 +11259,6 @@ extension SettingsQueryProperty }); } - QueryBuilder syncAfterReadingProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'syncAfterReading'); - }); - } - - QueryBuilder syncOnAppLaunchProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'syncOnAppLaunch'); - }); - } - QueryBuilder themeIsDarkProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'themeIsDark'); diff --git a/lib/modules/anime/anime_player_view.dart b/lib/modules/anime/anime_player_view.dart index 7eb8199..ca5cb15 100644 --- a/lib/modules/anime/anime_player_view.dart +++ b/lib/modules/anime/anime_player_view.dart @@ -324,7 +324,6 @@ class _AnimeStreamPageState extends riv.ConsumerState _currentPosition.value, _currentTotalDuration.value, save: save); _streamController.setAnimeHistoryUpdate(); - _streamController.checkAndSyncProgress(); } void _setLandscapeMode(bool state) { diff --git a/lib/modules/anime/providers/anime_player_controller_provider.dart b/lib/modules/anime/providers/anime_player_controller_provider.dart index fffa52d..7b2f7cb 100644 --- a/lib/modules/anime/providers/anime_player_controller_provider.dart +++ b/lib/modules/anime/providers/anime_player_controller_provider.dart @@ -7,9 +7,7 @@ import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/track.dart'; import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart'; import 'package:mangayomi/modules/more/settings/player/providers/player_state_provider.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/services/aniskip.dart'; -import 'package:mangayomi/services/sync_server.dart'; import 'package:mangayomi/utils/chapter_recognition.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'anime_player_controller_provider.g.dart'; @@ -151,13 +149,6 @@ class AnimeStreamController extends _$AnimeStreamController { }); } - void checkAndSyncProgress() { - final syncAfterReading = ref.watch(syncAfterReadingStateProvider); - if (syncAfterReading) { - ref.read(syncServerProvider(syncId: 1).notifier).checkForSync(true); - } - } - void setCurrentPosition(Duration duration, Duration? totalDuration, {bool save = false}) { if (episode.isRead!) return; @@ -174,9 +165,6 @@ class AnimeStreamController extends _$AnimeStreamController { isar.writeTxnSync(() { ep.isRead = isWatch; ep.lastPageRead = (duration.inMilliseconds).toString(); - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(ep, false, false); isar.chapters.putSync(ep); }); if (isWatch) { 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 6b4783b..b5baf06 100644 --- a/lib/modules/anime/providers/anime_player_controller_provider.g.dart +++ b/lib/modules/anime/providers/anime_player_controller_provider.g.dart @@ -7,7 +7,7 @@ part of 'anime_player_controller_provider.dart'; // ************************************************************************** String _$animeStreamControllerHash() => - r'd3ec7fe7ac2af84393b128e430fd2f5b9224ed14'; + r'57ebd35f033d51fd213763173c26cd887f5c42d7'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/modules/history/history_screen.dart b/lib/modules/history/history_screen.dart index db9b326..4723f15 100644 --- a/lib/modules/history/history_screen.dart +++ b/lib/modules/history/history_screen.dart @@ -10,7 +10,6 @@ import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/history.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/modules/history/providers/isar_providers.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/utils/cached_network.dart'; import 'package:mangayomi/utils/constant.dart'; @@ -380,29 +379,12 @@ class _HistoryTabState extends ConsumerState { .id!); for (var chapter in chapters) { - await ref - .read(changedItemsManagerProvider( - managerId: - 1) - .notifier) - .addUpdatedChapterAsync( - chapter, - true, - false); await isar .chapters .delete( chapter .id!); } - await ref - .read(changedItemsManagerProvider( - managerId: - 1) - .notifier) - .addDeletedMangaAsync( - manga, - false); await isar.mangas .delete(manga .id!); diff --git a/lib/modules/library/library_screen.dart b/lib/modules/library/library_screen.dart index 88b7111..6970661 100644 --- a/lib/modules/library/library_screen.dart +++ b/lib/modules/library/library_screen.dart @@ -21,7 +21,6 @@ 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/update_manga_detail_providers.dart'; import 'package:mangayomi/modules/more/categories/providers/isar_providers.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/widgets/custom_draggable_tabbar.dart'; import 'package:mangayomi/modules/widgets/manga_image_card_widget.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; @@ -1163,12 +1162,6 @@ class _LibraryScreenState extends ConsumerState } for (var chapter in manga.chapters) { - ref - .read(changedItemsManagerProvider( - managerId: 1) - .notifier) - .addUpdatedChapter( - chapter, true, false); isar.updates .filter() .mangaIdEqualTo(chapter.mangaId) @@ -1176,11 +1169,6 @@ class _LibraryScreenState extends ConsumerState .deleteAllSync(); isar.chapters.deleteSync(chapter.id!); } - ref - .read(changedItemsManagerProvider( - managerId: 1) - .notifier) - .addDeletedManga(manga, false); isar.mangas.deleteSync(manga.id!); } else { manga.favorite = false; diff --git a/lib/modules/library/providers/library_state_provider.dart b/lib/modules/library/providers/library_state_provider.dart index 93d2e77..3965762 100644 --- a/lib/modules/library/providers/library_state_provider.dart +++ b/lib/modules/library/providers/library_state_provider.dart @@ -4,7 +4,6 @@ import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'library_state_provider.g.dart'; @@ -786,9 +785,6 @@ class MangasSetIsReadState extends _$MangasSetIsReadState { for (var chapter in chapters) { chapter.isRead = true; chapter.lastPageRead = "1"; - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(chapter, false, false); isar.chapters.putSync(chapter..manga.value = manga); chapter.manga.saveSync(); } @@ -813,9 +809,6 @@ class MangasSetUnReadState extends _$MangasSetUnReadState { isar.writeTxnSync(() { for (var chapter in chapters) { chapter.isRead = false; - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(chapter, false, false); isar.chapters.putSync(chapter..manga.value = manga); chapter.manga.saveSync(); } diff --git a/lib/modules/library/providers/library_state_provider.g.dart b/lib/modules/library/providers/library_state_provider.g.dart index cc1c77a..44ade02 100644 --- a/lib/modules/library/providers/library_state_provider.g.dart +++ b/lib/modules/library/providers/library_state_provider.g.dart @@ -2551,7 +2551,7 @@ final isLongPressedMangaStateProvider = typedef _$IsLongPressedMangaState = AutoDisposeNotifier; String _$mangasSetIsReadStateHash() => - r'cb88914fe1c47c1e3a29d43c23a6652b0e8f2ac1'; + r'8f86296f588a48747de625e0471048978ee9bdeb'; abstract class _$MangasSetIsReadState extends BuildlessAutoDisposeNotifier { @@ -2698,7 +2698,7 @@ class _MangasSetIsReadStateProviderElement } String _$mangasSetUnReadStateHash() => - r'7b2f4c579f9cb392830ed4d70aff9ccc3e7952a0'; + r'3413e731b2fd8476a4032d3e47b943ca12f25090'; abstract class _$MangasSetUnReadState extends BuildlessAutoDisposeNotifier { diff --git a/lib/modules/manga/detail/manga_detail_view.dart b/lib/modules/manga/detail/manga_detail_view.dart index d13c7c5..11652e9 100644 --- a/lib/modules/manga/detail/manga_detail_view.dart +++ b/lib/modules/manga/detail/manga_detail_view.dart @@ -22,7 +22,6 @@ import 'package:mangayomi/modules/manga/detail/widgets/tracker_search_widget.dar 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/settings/appearance/providers/pure_black_dark_mode_state_provider.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/more/settings/track/widgets/track_listile.dart'; import 'package:mangayomi/modules/widgets/custom_draggable_tabbar.dart'; import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; @@ -733,11 +732,6 @@ class _MangaDetailViewState extends ConsumerState isar.writeTxnSync(() { for (var chapter in chapters) { chapter.isBookmarked = !chapter.isBookmarked!; - ref - .read(changedItemsManagerProvider( - managerId: 1) - .notifier) - .addUpdatedChapter(chapter, false, false); isar.chapters.putSync( chapter..manga.value = widget.manga); chapter.manga.saveSync(); @@ -778,11 +772,6 @@ class _MangaDetailViewState extends ConsumerState if (!chapter.isRead!) { chapter.lastPageRead = "1"; } - ref - .read(changedItemsManagerProvider( - managerId: 1) - .notifier) - .addUpdatedChapter(chapter, false, false); isar.chapters.putSync( chapter..manga.value = widget.manga); chapter.manga.saveSync(); @@ -828,12 +817,6 @@ class _MangaDetailViewState extends ConsumerState if (!chapters[i].isRead!) { chapters[i].isRead = true; chapters[i].lastPageRead = "1"; - ref - .read(changedItemsManagerProvider( - managerId: 1) - .notifier) - .addUpdatedChapter( - chapters[i], false, false); isar.chapters.putSync(chapters[i] ..manga.value = widget.manga); chapters[i].manga.saveSync(); diff --git a/lib/modules/manga/detail/providers/state_providers.dart b/lib/modules/manga/detail/providers/state_providers.dart index 017ccb7..7f07165 100644 --- a/lib/modules/manga/detail/providers/state_providers.dart +++ b/lib/modules/manga/detail/providers/state_providers.dart @@ -5,7 +5,6 @@ import 'package:mangayomi/models/download.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/manga/download/providers/download_provider.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'state_providers.g.dart'; @@ -310,9 +309,6 @@ class ChapterSetIsBookmarkState extends _$ChapterSetIsBookmarkState { isar.writeTxnSync(() { for (var chapter in chapters) { chapter.isBookmarked = !chapter.isBookmarked!; - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(chapter, false, false); isar.chapters.putSync(chapter..manga.value = manga); chapter.manga.saveSync(); } @@ -332,9 +328,6 @@ class ChapterSetIsReadState extends _$ChapterSetIsReadState { isar.writeTxnSync(() { for (var chapter in chapters) { chapter.isRead = !chapter.isRead!; - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(chapter, false, false); isar.chapters.putSync(chapter..manga.value = manga); chapter.manga.saveSync(); } diff --git a/lib/modules/manga/detail/providers/state_providers.g.dart b/lib/modules/manga/detail/providers/state_providers.g.dart index 86e3dbd..289dce7 100644 --- a/lib/modules/manga/detail/providers/state_providers.g.dart +++ b/lib/modules/manga/detail/providers/state_providers.g.dart @@ -816,7 +816,7 @@ class _ChapterFilterResultStateProviderElement } String _$chapterSetIsBookmarkStateHash() => - r'48d4f203ba51616e9d1142e0dd482d3ae065a4f4'; + r'113131bb13e50566390ee3e34aa2f08820a8870c'; abstract class _$ChapterSetIsBookmarkState extends BuildlessAutoDisposeNotifier { @@ -963,7 +963,7 @@ class _ChapterSetIsBookmarkStateProviderElement } String _$chapterSetIsReadStateHash() => - r'1e219dd68898fc30b6cb64d294377776516775d4'; + r'c319f81ec30565ad81a28cb0a8ce7fddcb47cd77'; abstract class _$ChapterSetIsReadState extends BuildlessAutoDisposeNotifier { 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 fe82482..cb08fe0 100644 --- a/lib/modules/manga/detail/providers/update_manga_detail_providers.dart +++ b/lib/modules/manga/detail/providers/update_manga_detail_providers.dart @@ -4,7 +4,6 @@ import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/update.dart'; import 'package:mangayomi/models/manga.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/services/get_detail.dart'; import 'package:mangayomi/utils/utils.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; @@ -80,9 +79,6 @@ Future updateMangaDetail(Ref ref, } if (chapters.isNotEmpty) { for (var chap in chapters.reversed.toList()) { - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(chap, false, false); isar.chapters.putSync(chap); chap.manga.saveSync(); if (manga.chapters.isNotEmpty) { @@ -108,9 +104,6 @@ Future updateMangaDetail(Ref ref, newChap.name == oldChap.name) { oldChap.url = newChap.url; oldChap.scanlator = newChap.scanlator; - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(oldChap, false, false); isar.chapters.putSync(oldChap); oldChap.manga.saveSync(); } 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 a51d9b2..a1b3dfa 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'a058dcca7f99974e89fce2aa7f048edf1a0f7854'; +String _$updateMangaDetailHash() => r'57330e79e3d1afcd9db5e8e0587bbc23d1e02379'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/modules/manga/reader/providers/reader_controller_provider.dart b/lib/modules/manga/reader/providers/reader_controller_provider.dart index ae8d0d3..b1b4fdc 100644 --- a/lib/modules/manga/reader/providers/reader_controller_provider.dart +++ b/lib/modules/manga/reader/providers/reader_controller_provider.dart @@ -11,9 +11,7 @@ import 'package:mangayomi/models/track.dart'; import 'package:mangayomi/models/track_preference.dart'; import 'package:mangayomi/modules/manga/detail/providers/track_state_providers.dart'; import 'package:mangayomi/modules/more/providers/incognito_mode_state_provider.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/more/settings/track/providers/track_providers.dart'; -import 'package:mangayomi/services/sync_server.dart'; import 'package:mangayomi/utils/chapter_recognition.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'reader_controller_provider.g.dart'; @@ -189,22 +187,12 @@ class ReaderController extends _$ReaderController { }); } - void checkAndSyncProgress() { - final syncAfterReading = ref.watch(syncAfterReadingStateProvider); - if (syncAfterReading) { - ref.read(syncServerProvider(syncId: 1).notifier).checkForSync(true); - } - } - void setChapterBookmarked() { if (incognitoMode) return; final isBookmarked = getChapterBookmarked(); final chap = chapter; isar.writeTxnSync(() { chap.isBookmarked = !isBookmarked; - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(chap, false, false); isar.chapters.putSync(chap); }); } @@ -342,9 +330,6 @@ class ReaderController extends _$ReaderController { getIsarSetting()..chapterPageIndexList = chapterPageIndexs); chap.isRead = isRead; chap.lastPageRead = isRead ? '1' : (newIndex + 1).toString(); - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(chap, false, false); isar.chapters.putSync(chap); }); if (isRead) { 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 07fcfe6..18900f9 100644 --- a/lib/modules/manga/reader/providers/reader_controller_provider.g.dart +++ b/lib/modules/manga/reader/providers/reader_controller_provider.g.dart @@ -171,7 +171,7 @@ class _CurrentIndexProviderElement Chapter get chapter => (origin as CurrentIndexProvider).chapter; } -String _$readerControllerHash() => r'6576f3506dc5ef309f870de3e5c6e92efe03eefd'; +String _$readerControllerHash() => r'471617bf6fa730d837c8e0d9504bde17cfb635a8'; abstract class _$ReaderController extends BuildlessAutoDisposeNotifier { late final Chapter chapter; diff --git a/lib/modules/manga/reader/reader_view.dart b/lib/modules/manga/reader/reader_view.dart index b7f5e71..b37dcce 100644 --- a/lib/modules/manga/reader/reader_view.dart +++ b/lib/modules/manga/reader/reader_view.dart @@ -143,7 +143,6 @@ class _MangaChapterPageGalleryState @override void dispose() { _readerController.setMangaHistoryUpdate(); - _readerController.checkAndSyncProgress(); _readerController.setPageIndex( _geCurrentIndex(_uChapDataPreload[_currentIndex!].index!), true); _rebuildDetail.close(); diff --git a/lib/modules/manga/reader/widgets/btn_chapter_list_dialog.dart b/lib/modules/manga/reader/widgets/btn_chapter_list_dialog.dart index d1dd431..a9c95a6 100644 --- a/lib/modules/manga/reader/widgets/btn_chapter_list_dialog.dart +++ b/lib/modules/manga/reader/widgets/btn_chapter_list_dialog.dart @@ -4,7 +4,6 @@ import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/modules/manga/reader/providers/push_router.dart'; import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provider.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/utils/date.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; import 'package:super_sliver_list/super_sliver_list.dart'; @@ -160,8 +159,6 @@ class _ChapterListTileState extends State { isBookmarked = !isBookmarked; }); isar.writeTxnSync(() => { - addUpdatedChapterIndependentProvider.call( - chapter, false, false), isar.chapters.putSync(chapter..isBookmarked = isBookmarked), }); }, diff --git a/lib/modules/more/categories/categories_screen.dart b/lib/modules/more/categories/categories_screen.dart index 01d1e39..2e9785c 100644 --- a/lib/modules/more/categories/categories_screen.dart +++ b/lib/modules/more/categories/categories_screen.dart @@ -5,7 +5,6 @@ import 'package:mangayomi/models/category.dart'; import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/modules/more/categories/providers/isar_providers.dart'; import 'package:mangayomi/modules/more/categories/widgets/custom_textfield.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/widgets/progress_center.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; @@ -183,15 +182,6 @@ class _CategoriesTabState extends ConsumerState { onPressed: () async { await isar.writeTxn( () async { - await ref - .read(changedItemsManagerProvider( - managerId: - 1) - .notifier) - .addDeletedCategoryAsync( - _entries[ - index], - false); await isar .categorys .delete(_entries[ diff --git a/lib/modules/more/settings/sync/providers/sync_providers.dart b/lib/modules/more/settings/sync/providers/sync_providers.dart index 67dc75c..07de85b 100644 --- a/lib/modules/more/settings/sync/providers/sync_providers.dart +++ b/lib/modules/more/settings/sync/providers/sync_providers.dart @@ -1,210 +1,8 @@ -import 'dart:convert'; -import 'dart:developer'; - import 'package:mangayomi/main.dart'; -import 'package:mangayomi/models/category.dart'; -import 'package:mangayomi/models/changed_items.dart'; -import 'package:mangayomi/models/chapter.dart'; -import 'package:mangayomi/models/manga.dart'; -import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/sync_preference.dart'; -import 'package:mangayomi/services/sync_server.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; part 'sync_providers.g.dart'; -@riverpod -void addUpdatedChapterIndependent( - Ref ref, Chapter chapter, bool deleted, bool txn) { - final changedItems = isar.changedItems.getSync(1) ?? ChangedItems(); - bool updated = false; - changedItems.updatedChapters = changedItems.updatedChapters?.map((e) { - if (e.chapterId == chapter.id) { - e.isBookmarked = chapter.isBookmarked; - e.isRead = chapter.isRead; - e.lastPageRead = chapter.lastPageRead; - e.deleted = deleted; - updated = true; - } - return e; - }).toList(); - if (!updated) { - final updatedChapter = UpdatedChapter( - chapterId: chapter.id, - isBookmarked: chapter.isBookmarked, - isRead: chapter.isRead, - lastPageRead: chapter.lastPageRead, - deleted: deleted); - changedItems.updatedChapters = changedItems.updatedChapters?.toList() - ?..add(updatedChapter); - } - if (!txn) { - isar.changedItems.putSync(changedItems); - } else { - isar.writeTxnSync(() { - isar.changedItems.putSync(changedItems); - }); - } -} - -@riverpod -void checkForSyncIndependent(Ref ref, bool silent) { - ref.read(SyncServerProvider(syncId: 1).notifier).checkForSync(silent); -} - -@riverpod -class ChangedItemsManager extends _$ChangedItemsManager { - @override - ChangedItems? build({required int? managerId}) { - return isar.changedItems.getSync(managerId!); - } - - void cleanChangedItems(bool txn) { - final changedItems = - isar.changedItems.getSync(managerId!) ?? ChangedItems(id: managerId); - changedItems.deletedMangas = []; - changedItems.updatedChapters = []; - changedItems.deletedCategories = []; - if (!txn) { - isar.changedItems.putSync(changedItems); - } else { - isar.writeTxnSync(() { - isar.changedItems.putSync(changedItems); - }); - } - } - - void addDeletedManga(Manga manga, bool txn) { - final changedItems = - isar.changedItems.getSync(managerId!) ?? ChangedItems(id: managerId); - log("DEBUG"); - log(jsonEncode(changedItems)); - final deletedManga = DeletedManga(mangaId: manga.id); - changedItems.deletedMangas = changedItems.deletedMangas?.toList() - ?..add(deletedManga); - if (!txn) { - isar.changedItems.putSync(changedItems); - } else { - isar.writeTxnSync(() { - isar.changedItems.putSync(changedItems); - }); - } - } - - Future addDeletedMangaAsync(Manga manga, bool txn) async { - final changedItems = - await isar.changedItems.get(managerId!) ?? ChangedItems(id: managerId); - final deletedManga = DeletedManga(mangaId: manga.id); - changedItems.deletedMangas = changedItems.deletedMangas?.toList() - ?..add(deletedManga); - if (!txn) { - await isar.changedItems.put(changedItems); - } else { - await isar.writeTxn(() async { - await isar.changedItems.put(changedItems); - }); - } - } - - void addUpdatedChapter(Chapter chapter, bool deleted, bool txn) { - final changedItems = - isar.changedItems.getSync(managerId!) ?? ChangedItems(id: managerId); - bool updated = false; - changedItems.updatedChapters = changedItems.updatedChapters?.map((e) { - if (e.chapterId == chapter.id && e.mangaId == chapter.mangaId) { - e.isBookmarked = chapter.isBookmarked; - e.isRead = chapter.isRead; - e.lastPageRead = chapter.lastPageRead; - e.deleted = deleted; - updated = true; - } - return e; - }).toList(); - if (!updated) { - final updatedChapter = UpdatedChapter( - chapterId: chapter.id, - mangaId: chapter.mangaId, - isBookmarked: chapter.isBookmarked, - isRead: chapter.isRead, - lastPageRead: chapter.lastPageRead, - deleted: deleted); - changedItems.updatedChapters = changedItems.updatedChapters?.toList() - ?..add(updatedChapter); - } - if (!txn) { - isar.changedItems.putSync(changedItems); - } else { - isar.writeTxnSync(() { - isar.changedItems.putSync(changedItems); - }); - } - } - - Future addUpdatedChapterAsync(Chapter chapter, bool deleted, bool txn) async { - final changedItems = - await isar.changedItems.get(managerId!) ?? ChangedItems(id: managerId); - bool updated = false; - changedItems.updatedChapters = changedItems.updatedChapters?.map((e) { - if (e.chapterId == chapter.id && e.mangaId == chapter.mangaId) { - e.isBookmarked = chapter.isBookmarked; - e.isRead = chapter.isRead; - e.lastPageRead = chapter.lastPageRead; - e.deleted = deleted; - updated = true; - } - return e; - }).toList(); - if (!updated) { - final updatedChapter = UpdatedChapter( - chapterId: chapter.id, - mangaId: chapter.mangaId, - isBookmarked: chapter.isBookmarked, - isRead: chapter.isRead, - lastPageRead: chapter.lastPageRead, - deleted: deleted); - changedItems.updatedChapters = changedItems.updatedChapters?.toList() - ?..add(updatedChapter); - } - if (!txn) { - await isar.changedItems.put(changedItems); - } else { - await isar.writeTxn(() async { - await isar.changedItems.put(changedItems); - }); - } - } - - void addDeletedCategory(Category category, bool txn) { - final changedItems = - isar.changedItems.getSync(managerId!) ?? ChangedItems(id: managerId); - final deletedCategory = DeletedCategory(categoryId: category.id); - changedItems.deletedCategories = changedItems.deletedCategories?.toList() - ?..add(deletedCategory); - if (!txn) { - isar.changedItems.putSync(changedItems); - } else { - isar.writeTxnSync(() { - isar.changedItems.putSync(changedItems); - }); - } - } - - Future addDeletedCategoryAsync(Category category, bool txn) async { - final changedItems = - await isar.changedItems.get(managerId!) ?? ChangedItems(id: managerId); - final deletedCategory = DeletedCategory(categoryId: category.id); - changedItems.deletedCategories = changedItems.deletedCategories?.toList() - ?..add(deletedCategory); - if (!txn) { - await isar.changedItems.put(changedItems); - } else { - await isar.writeTxn(() async { - await isar.changedItems.put(changedItems); - }); - } - } -} - @riverpod class Synching extends _$Synching { @override @@ -224,13 +22,6 @@ class Synching extends _$Synching { }); } - void setLastSync(int timestamp) { - isar.writeTxnSync(() { - isar.syncPreferences.putSync( - isar.syncPreferences.getSync(syncId!)!..lastSync = timestamp); - }); - } - void setLastUpload(int timestamp) { isar.writeTxnSync(() { isar.syncPreferences.putSync( @@ -252,33 +43,3 @@ class Synching extends _$Synching { }); } } - -@riverpod -class SyncOnAppLaunchState extends _$SyncOnAppLaunchState { - @override - bool build() { - return isar.settings.getSync(227)!.syncOnAppLaunch ?? false; - } - - void set(bool value) { - final settings = isar.settings.getSync(227); - state = value; - isar.writeTxnSync( - () => isar.settings.putSync(settings!..syncOnAppLaunch = value)); - } -} - -@riverpod -class SyncAfterReadingState extends _$SyncAfterReadingState { - @override - bool build() { - return isar.settings.getSync(227)!.syncAfterReading ?? false; - } - - void set(bool value) { - final settings = isar.settings.getSync(227); - state = value; - isar.writeTxnSync( - () => isar.settings.putSync(settings!..syncAfterReading = value)); - } -} 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 d654f2c..910c3bc 100644 --- a/lib/modules/more/settings/sync/providers/sync_providers.g.dart +++ b/lib/modules/more/settings/sync/providers/sync_providers.g.dart @@ -6,8 +6,7 @@ part of 'sync_providers.dart'; // RiverpodGenerator // ************************************************************************** -String _$addUpdatedChapterIndependentHash() => - r'7abb8f085a229ec0573c730234fa4fc4ff86d794'; +String _$synchingHash() => r'3ab44d9e753f2d4b51fd10af6c98ffac78cbf201'; /// Copied from Dart SDK class _SystemHash { @@ -30,450 +29,6 @@ class _SystemHash { } } -/// See also [addUpdatedChapterIndependent]. -@ProviderFor(addUpdatedChapterIndependent) -const addUpdatedChapterIndependentProvider = - AddUpdatedChapterIndependentFamily(); - -/// See also [addUpdatedChapterIndependent]. -class AddUpdatedChapterIndependentFamily extends Family { - /// See also [addUpdatedChapterIndependent]. - const AddUpdatedChapterIndependentFamily(); - - /// See also [addUpdatedChapterIndependent]. - AddUpdatedChapterIndependentProvider call( - Chapter chapter, - bool deleted, - bool txn, - ) { - return AddUpdatedChapterIndependentProvider( - chapter, - deleted, - txn, - ); - } - - @override - AddUpdatedChapterIndependentProvider getProviderOverride( - covariant AddUpdatedChapterIndependentProvider provider, - ) { - return call( - provider.chapter, - provider.deleted, - provider.txn, - ); - } - - 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'addUpdatedChapterIndependentProvider'; -} - -/// See also [addUpdatedChapterIndependent]. -class AddUpdatedChapterIndependentProvider extends AutoDisposeProvider { - /// See also [addUpdatedChapterIndependent]. - AddUpdatedChapterIndependentProvider( - Chapter chapter, - bool deleted, - bool txn, - ) : this._internal( - (ref) => addUpdatedChapterIndependent( - ref as AddUpdatedChapterIndependentRef, - chapter, - deleted, - txn, - ), - from: addUpdatedChapterIndependentProvider, - name: r'addUpdatedChapterIndependentProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$addUpdatedChapterIndependentHash, - dependencies: AddUpdatedChapterIndependentFamily._dependencies, - allTransitiveDependencies: - AddUpdatedChapterIndependentFamily._allTransitiveDependencies, - chapter: chapter, - deleted: deleted, - txn: txn, - ); - - AddUpdatedChapterIndependentProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.chapter, - required this.deleted, - required this.txn, - }) : super.internal(); - - final Chapter chapter; - final bool deleted; - final bool txn; - - @override - Override overrideWith( - void Function(AddUpdatedChapterIndependentRef provider) create, - ) { - return ProviderOverride( - origin: this, - override: AddUpdatedChapterIndependentProvider._internal( - (ref) => create(ref as AddUpdatedChapterIndependentRef), - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - chapter: chapter, - deleted: deleted, - txn: txn, - ), - ); - } - - @override - AutoDisposeProviderElement createElement() { - return _AddUpdatedChapterIndependentProviderElement(this); - } - - @override - bool operator ==(Object other) { - return other is AddUpdatedChapterIndependentProvider && - other.chapter == chapter && - other.deleted == deleted && - other.txn == txn; - } - - @override - int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, chapter.hashCode); - hash = _SystemHash.combine(hash, deleted.hashCode); - hash = _SystemHash.combine(hash, txn.hashCode); - - return _SystemHash.finish(hash); - } -} - -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin AddUpdatedChapterIndependentRef on AutoDisposeProviderRef { - /// The parameter `chapter` of this provider. - Chapter get chapter; - - /// The parameter `deleted` of this provider. - bool get deleted; - - /// The parameter `txn` of this provider. - bool get txn; -} - -class _AddUpdatedChapterIndependentProviderElement - extends AutoDisposeProviderElement - with AddUpdatedChapterIndependentRef { - _AddUpdatedChapterIndependentProviderElement(super.provider); - - @override - Chapter get chapter => - (origin as AddUpdatedChapterIndependentProvider).chapter; - @override - bool get deleted => (origin as AddUpdatedChapterIndependentProvider).deleted; - @override - bool get txn => (origin as AddUpdatedChapterIndependentProvider).txn; -} - -String _$checkForSyncIndependentHash() => - r'3a3658a67cd6cb210e76126b33592bd1ea67e3f0'; - -/// See also [checkForSyncIndependent]. -@ProviderFor(checkForSyncIndependent) -const checkForSyncIndependentProvider = CheckForSyncIndependentFamily(); - -/// See also [checkForSyncIndependent]. -class CheckForSyncIndependentFamily extends Family { - /// See also [checkForSyncIndependent]. - const CheckForSyncIndependentFamily(); - - /// See also [checkForSyncIndependent]. - CheckForSyncIndependentProvider call( - bool silent, - ) { - return CheckForSyncIndependentProvider( - silent, - ); - } - - @override - CheckForSyncIndependentProvider getProviderOverride( - covariant CheckForSyncIndependentProvider provider, - ) { - return call( - provider.silent, - ); - } - - 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'checkForSyncIndependentProvider'; -} - -/// See also [checkForSyncIndependent]. -class CheckForSyncIndependentProvider extends AutoDisposeProvider { - /// See also [checkForSyncIndependent]. - CheckForSyncIndependentProvider( - bool silent, - ) : this._internal( - (ref) => checkForSyncIndependent( - ref as CheckForSyncIndependentRef, - silent, - ), - from: checkForSyncIndependentProvider, - name: r'checkForSyncIndependentProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$checkForSyncIndependentHash, - dependencies: CheckForSyncIndependentFamily._dependencies, - allTransitiveDependencies: - CheckForSyncIndependentFamily._allTransitiveDependencies, - silent: silent, - ); - - CheckForSyncIndependentProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.silent, - }) : super.internal(); - - final bool silent; - - @override - Override overrideWith( - void Function(CheckForSyncIndependentRef provider) create, - ) { - return ProviderOverride( - origin: this, - override: CheckForSyncIndependentProvider._internal( - (ref) => create(ref as CheckForSyncIndependentRef), - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - silent: silent, - ), - ); - } - - @override - AutoDisposeProviderElement createElement() { - return _CheckForSyncIndependentProviderElement(this); - } - - @override - bool operator ==(Object other) { - return other is CheckForSyncIndependentProvider && other.silent == silent; - } - - @override - int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, silent.hashCode); - - return _SystemHash.finish(hash); - } -} - -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin CheckForSyncIndependentRef on AutoDisposeProviderRef { - /// The parameter `silent` of this provider. - bool get silent; -} - -class _CheckForSyncIndependentProviderElement - extends AutoDisposeProviderElement with CheckForSyncIndependentRef { - _CheckForSyncIndependentProviderElement(super.provider); - - @override - bool get silent => (origin as CheckForSyncIndependentProvider).silent; -} - -String _$changedItemsManagerHash() => - r'a4f0363ab430ddb6c2a23fde6f5671ba8ec252cf'; - -abstract class _$ChangedItemsManager - extends BuildlessAutoDisposeNotifier { - late final int? managerId; - - ChangedItems? build({ - required int? managerId, - }); -} - -/// See also [ChangedItemsManager]. -@ProviderFor(ChangedItemsManager) -const changedItemsManagerProvider = ChangedItemsManagerFamily(); - -/// See also [ChangedItemsManager]. -class ChangedItemsManagerFamily extends Family { - /// See also [ChangedItemsManager]. - const ChangedItemsManagerFamily(); - - /// See also [ChangedItemsManager]. - ChangedItemsManagerProvider call({ - required int? managerId, - }) { - return ChangedItemsManagerProvider( - managerId: managerId, - ); - } - - @override - ChangedItemsManagerProvider getProviderOverride( - covariant ChangedItemsManagerProvider provider, - ) { - return call( - managerId: provider.managerId, - ); - } - - 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'changedItemsManagerProvider'; -} - -/// See also [ChangedItemsManager]. -class ChangedItemsManagerProvider extends AutoDisposeNotifierProviderImpl< - ChangedItemsManager, ChangedItems?> { - /// See also [ChangedItemsManager]. - ChangedItemsManagerProvider({ - required int? managerId, - }) : this._internal( - () => ChangedItemsManager()..managerId = managerId, - from: changedItemsManagerProvider, - name: r'changedItemsManagerProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$changedItemsManagerHash, - dependencies: ChangedItemsManagerFamily._dependencies, - allTransitiveDependencies: - ChangedItemsManagerFamily._allTransitiveDependencies, - managerId: managerId, - ); - - ChangedItemsManagerProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.managerId, - }) : super.internal(); - - final int? managerId; - - @override - ChangedItems? runNotifierBuild( - covariant ChangedItemsManager notifier, - ) { - return notifier.build( - managerId: managerId, - ); - } - - @override - Override overrideWith(ChangedItemsManager Function() create) { - return ProviderOverride( - origin: this, - override: ChangedItemsManagerProvider._internal( - () => create()..managerId = managerId, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - managerId: managerId, - ), - ); - } - - @override - AutoDisposeNotifierProviderElement - createElement() { - return _ChangedItemsManagerProviderElement(this); - } - - @override - bool operator ==(Object other) { - return other is ChangedItemsManagerProvider && other.managerId == managerId; - } - - @override - int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, managerId.hashCode); - - return _SystemHash.finish(hash); - } -} - -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin ChangedItemsManagerRef on AutoDisposeNotifierProviderRef { - /// The parameter `managerId` of this provider. - int? get managerId; -} - -class _ChangedItemsManagerProviderElement - extends AutoDisposeNotifierProviderElement with ChangedItemsManagerRef { - _ChangedItemsManagerProviderElement(super.provider); - - @override - int? get managerId => (origin as ChangedItemsManagerProvider).managerId; -} - -String _$synchingHash() => r'2ef7fd99da4292ed236252d2b727cff9a69f43a9'; - abstract class _$Synching extends BuildlessAutoDisposeNotifier { late final int? syncId; @@ -616,40 +171,5 @@ class _SynchingProviderElement @override int? get syncId => (origin as SynchingProvider).syncId; } - -String _$syncOnAppLaunchStateHash() => - r'dc7f3243e38a748462628229066c8fc0653c908b'; - -/// See also [SyncOnAppLaunchState]. -@ProviderFor(SyncOnAppLaunchState) -final syncOnAppLaunchStateProvider = - AutoDisposeNotifierProvider.internal( - SyncOnAppLaunchState.new, - name: r'syncOnAppLaunchStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$syncOnAppLaunchStateHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef _$SyncOnAppLaunchState = AutoDisposeNotifier; -String _$syncAfterReadingStateHash() => - r'e507acd490b5aea7fc1a8fd7a369ec01f4c47192'; - -/// See also [SyncAfterReadingState]. -@ProviderFor(SyncAfterReadingState) -final syncAfterReadingStateProvider = - AutoDisposeNotifierProvider.internal( - SyncAfterReadingState.new, - name: r'syncAfterReadingStateProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$syncAfterReadingStateHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef _$SyncAfterReadingState = 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/sync/sync.dart b/lib/modules/more/settings/sync/sync.dart index ad41286..70dfb14 100644 --- a/lib/modules/more/settings/sync/sync.dart +++ b/lib/modules/more/settings/sync/sync.dart @@ -4,7 +4,6 @@ import 'package:isar/isar.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/utils/date.dart'; import 'package:mangayomi/models/sync_preference.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/more/settings/sync/widgets/sync_listile.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/services/sync_server.dart'; @@ -15,8 +14,6 @@ class SyncScreen extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final syncAfterReading = ref.watch(syncAfterReadingStateProvider); - final syncOnAppLaunch = ref.watch(syncOnAppLaunchStateProvider); final l10n = l10nLocalizations(context)!; return Scaffold( appBar: AppBar( @@ -36,26 +33,6 @@ class SyncScreen extends ConsumerWidget { syncPreference.authToken?.isNotEmpty ?? false; return Column( children: [ - SwitchListTile( - value: syncAfterReading, - title: Text(context.l10n.syncAfterReading), - onChanged: !isLogged - ? null - : (value) { - ref - .read(syncAfterReadingStateProvider.notifier) - .set(value); - }), - SwitchListTile( - value: syncOnAppLaunch, - title: Text(context.l10n.syncOnAppLaunch), - onChanged: !isLogged - ? null - : (value) { - ref - .read(syncOnAppLaunchStateProvider.notifier) - .set(value); - }), Padding( padding: const EdgeInsets.only( left: 15, right: 15, bottom: 10, top: 5), @@ -103,12 +80,6 @@ class SyncScreen extends ConsumerWidget { const SizedBox(width: 10), Column(children: [ const SizedBox(width: 20), - Text( - "${l10n.last_sync}: ${dateFormat((syncPreference.lastSync ?? 0).toString(), ref: ref, context: context)} ${dateFormatHour((syncPreference.lastSync ?? 0).toString(), context)}", - style: TextStyle( - fontSize: 11, - color: context.secondaryColor)), - const SizedBox(width: 20), Text( "${l10n.last_upload}: ${dateFormat((syncPreference.lastUpload ?? 0).toString(), ref: ref, context: context)} ${dateFormatHour((syncPreference.lastUpload ?? 0).toString(), context)}", style: TextStyle( @@ -127,27 +98,6 @@ class SyncScreen extends ConsumerWidget { ), Row( children: [ - const SizedBox(width: 20), - Column( - children: [ - IconButton( - onPressed: !isLogged - ? null - : () { - ref - .read(syncServerProvider(syncId: 1) - .notifier) - .checkForSync(false); - }, - icon: Icon( - Icons.sync, - color: !isLogged - ? context.secondaryColor - : context.primaryColor, - )), - Text(l10n.sync_button_sync), - ], - ), const SizedBox(width: 20), Column( children: [ diff --git a/lib/modules/novel/novel_reader_controller_provider.dart b/lib/modules/novel/novel_reader_controller_provider.dart index 68347ec..0cb110d 100644 --- a/lib/modules/novel/novel_reader_controller_provider.dart +++ b/lib/modules/novel/novel_reader_controller_provider.dart @@ -10,9 +10,7 @@ import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/track.dart'; import 'package:mangayomi/models/track_preference.dart'; import 'package:mangayomi/modules/manga/detail/providers/track_state_providers.dart'; -import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/more/settings/track/providers/track_providers.dart'; -import 'package:mangayomi/services/sync_server.dart'; import 'package:mangayomi/utils/chapter_recognition.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'novel_reader_controller_provider.g.dart'; @@ -81,10 +79,16 @@ class NovelReaderController extends _$NovelReaderController { }); } - void checkAndSyncProgress() { - final syncAfterReading = ref.watch(syncAfterReadingStateProvider); - if (syncAfterReading) { - ref.read(syncServerProvider(syncId: 1).notifier).checkForSync(true); + void setChapterOffset(double newOffset, double maxOffset, bool save) { + if (incognitoMode) return; + final isRead = (newOffset / (maxOffset != 0 ? maxOffset : 1)) >= 0.9; + if (isRead || save) { + final ch = chapter; + isar.writeTxnSync(() { + ch.isRead = isRead; + ch.lastPageRead = (maxOffset != 0 ? newOffset / maxOffset : 0).toString(); + isar.chapters.putSync(ch); + }); } } @@ -94,9 +98,6 @@ class NovelReaderController extends _$NovelReaderController { final chap = chapter; isar.writeTxnSync(() { chap.isBookmarked = !isBookmarked; - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .addUpdatedChapter(chap, false, false); isar.chapters.putSync(chap); }); } diff --git a/lib/modules/novel/novel_reader_controller_provider.g.dart b/lib/modules/novel/novel_reader_controller_provider.g.dart index b32e177..9229468 100644 --- a/lib/modules/novel/novel_reader_controller_provider.g.dart +++ b/lib/modules/novel/novel_reader_controller_provider.g.dart @@ -7,7 +7,7 @@ part of 'novel_reader_controller_provider.dart'; // ************************************************************************** String _$novelReaderControllerHash() => - r'74ebbf38d60283d308646b59cfd5cfee07c85535'; + r'9ac937ab7fcc82a99088128f0f12f1aaad7fa1e8'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/modules/novel/novel_reader_view.dart b/lib/modules/novel/novel_reader_view.dart index f10febe..cbc768f 100644 --- a/lib/modules/novel/novel_reader_view.dart +++ b/lib/modules/novel/novel_reader_view.dart @@ -64,12 +64,28 @@ class _NovelWebViewState extends ConsumerState with TickerProviderStateMixin { late final NovelReaderController _readerController = ref.read(novelReaderControllerProvider(chapter: chapter).notifier); + final _scrollController = ScrollController( + initialScrollOffset: 0, + keepScrollOffset: true, + ); + bool scrolled = false; + double offset = 0; + double maxOffset = 0; bool isDesktop = Platform.isMacOS || Platform.isLinux || Platform.isWindows; + void onScroll() { + if (_scrollController.hasClients) { + offset = _scrollController.offset; + maxOffset = _scrollController.position.maxScrollExtent; + } + } + @override void dispose() { + _readerController.setChapterOffset(offset, maxOffset, true); _readerController.setMangaHistoryUpdate(); - _readerController.checkAndSyncProgress(); + _scrollController.removeListener(onScroll); + _scrollController.dispose(); _rebuildDetail.close(); clearGestureDetailsCache(); if (isDesktop) { @@ -88,6 +104,9 @@ class _NovelWebViewState extends ConsumerState @override void initState() { super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) { + _scrollController.addListener(onScroll); + }); } late bool _isBookmarked = _readerController.getChapterBookmarked(); @@ -113,7 +132,6 @@ class _NovelWebViewState extends ConsumerState Widget build(BuildContext context) { final backgroundColor = ref.watch(backgroundColorStateProvider); final fullScreenReader = ref.watch(fullScreenReaderStateProvider); - final l10n = l10nLocalizations(context)!; return KeyboardListener( autofocus: true, focusNode: FocusNode(), @@ -183,39 +201,92 @@ class _NovelWebViewState extends ConsumerState children: [ widget.htmlContent.when( data: (htmlContent) { + Future.delayed(const Duration(milliseconds: 1000), + () { + if (!scrolled && _scrollController.hasClients) { + _scrollController.animateTo( + _scrollController.position.maxScrollExtent * + (double.tryParse(chapter.lastPageRead!) ?? + 0), + duration: Duration(seconds: 2), + curve: Curves.fastOutSlowIn); + scrolled = true; + } + }); return Expanded( - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: HtmlWidget( - htmlContent, - customStylesBuilder: (element) { - switch (backgroundColor) { - case BackgroundColor.black: - return { - 'background-color': 'black', - }; - default: - return { - 'background-color': '#F0F0F0', - }; - } - }, - onTapUrl: (url) { - print('tapped $url'); - return true; - }, - renderMode: RenderMode.column, - textStyle: TextStyle( - color: backgroundColor == - BackgroundColor.white - ? Colors.black - : Colors.white, - //fontFamily: "Times New Roman", - //fontFamilyFallback: ["Times", "serif"], - fontSize: 14), - ), + child: SingleChildScrollView( + controller: _scrollController, + physics: const BouncingScrollPhysics(), + child: Column( + children: [ + HtmlWidget( + htmlContent, + customStylesBuilder: (element) { + switch (backgroundColor) { + case BackgroundColor.black: + return { + 'background-color': 'black', + }; + default: + return { + 'background-color': '#F0F0F0', + }; + } + }, + onTapUrl: (url) { + context.push("/mangawebview", + extra: {'url': url, 'title': url}); + return true; + }, + renderMode: RenderMode.column, + textStyle: TextStyle( + color: backgroundColor == + BackgroundColor.white + ? Colors.black + : Colors.white, + fontSize: 14), + ), + Center( + child: IconButton( + padding: const EdgeInsets.all(5), + onPressed: () => + pushReplacementMangaReaderView( + context: context, + chapter: + _readerController.getPrevChapter(), + ), + icon: Icon( + Icons.arrow_back, + color: backgroundColor == + BackgroundColor.white + ? Colors.black + : Colors.white, + ), + ), + ), + Center( + child: IconButton( + padding: const EdgeInsets.all(5), + onPressed: () => + pushReplacementMangaReaderView( + context: context, + chapter: + _readerController.getNextChapter(), + ), + icon: Icon( + Icons.arrow_forward, + color: backgroundColor == + BackgroundColor.white + ? Colors.black + : Colors.white, + ), + ), + ), + ], ), - );}, + ), + ); + }, loading: () => const Expanded( child: Center( child: CircularProgressIndicator(), diff --git a/lib/providers/storage_provider.dart b/lib/providers/storage_provider.dart index 039651d..a2977e8 100644 --- a/lib/providers/storage_provider.dart +++ b/lib/providers/storage_provider.dart @@ -4,7 +4,6 @@ import 'package:isar/isar.dart'; import 'package:mangayomi/eval/model/source_preference.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/category.dart'; -import 'package:mangayomi/models/changed_items.dart'; import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/download.dart'; import 'package:mangayomi/models/update.dart'; @@ -147,7 +146,6 @@ class StorageProvider { final isar = Isar.openSync([ MangaSchema, - ChangedItemsSchema, ChapterSchema, CategorySchema, UpdateSchema, diff --git a/lib/services/get_html_content.dart b/lib/services/get_html_content.dart index f9de323..5501250 100644 --- a/lib/services/get_html_content.dart +++ b/lib/services/get_html_content.dart @@ -23,5 +23,5 @@ Future getHtmlContent(Ref ref, {required Chapter chapter}) async { return '''

${html.substring(1, html.length - 1)}
''' .replaceAll("\\n", "") .replaceAll("\\t", "") - .replaceAll("\\", ""); + .replaceAll("\\\"", "\""); } diff --git a/lib/services/get_html_content.g.dart b/lib/services/get_html_content.g.dart index 8bf4df3..5444182 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'5369236d1d8058cd42a832d1d641a37777da653b'; +String _$getHtmlContentHash() => r'0c964239912b7f93bfb4c80a47f7266ff1ae3f5e'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/services/sync_server.dart b/lib/services/sync_server.dart index 948b87b..0078c4a 100644 --- a/lib/services/sync_server.dart +++ b/lib/services/sync_server.dart @@ -1,9 +1,7 @@ -import 'package:crypto/crypto.dart'; import 'package:isar/isar.dart'; import 'package:mangayomi/eval/model/m_bridge.dart'; import 'package:mangayomi/eval/model/source_preference.dart'; import 'package:mangayomi/main.dart'; -import 'package:mangayomi/models/changed_items.dart'; import 'package:mangayomi/models/update.dart'; import 'package:mangayomi/models/sync_preference.dart'; import 'package:mangayomi/models/track.dart'; @@ -30,8 +28,6 @@ part 'sync_server.g.dart'; class SyncServer extends _$SyncServer { final http = MClient.init(reqcopyWith: {'useDartHttpClient': true}); final String _loginUrl = '/login'; - final String _checkUrl = '/check'; - final String _syncUrl = '/sync'; final String _uploadUrl = '/upload/full'; final String _downloadUrl = '/download'; @@ -67,78 +63,6 @@ class SyncServer extends _$SyncServer { } } - Future checkForSync(bool silent) async { - if (!silent) { - botToast("Checking for sync...", second: 2); - } - try { - final datas = _getData(); - final accessToken = _getAccessToken(); - final localHash = _getDataHash(datas); - - var response = await http.get( - Uri.parse('${_getServer()}$_checkUrl'), - headers: { - 'Content-Type': 'application/json', - 'Authorization': 'Bearer $accessToken' - }, - ); - if (response.statusCode != 200) { - botToast("Check failed", second: 5); - return; - } - var jsonData = jsonDecode(response.body) as Map; - final remoteHash = jsonData["hash"]; - if (localHash != remoteHash) { - syncToServer(silent); - } else if (!silent) { - botToast("Sync up to date", second: 2); - } - } catch (error) { - botToast(error.toString(), second: 5); - } - } - - Future syncToServer(bool silent) async { - if (!silent) { - botToast("Sync started...", second: 2); - } - try { - final datas = _getData(); - final accessToken = _getAccessToken(); - - var response = await http.post( - Uri.parse('${_getServer()}$_syncUrl'), - headers: { - 'Content-Type': 'application/json', - 'Authorization': 'Bearer $accessToken' - }, - body: jsonEncode( - {'backupData': datas, 'changedItems': _getChangedData()}), - ); - if (response.statusCode != 200) { - botToast("Sync failed", second: 5); - return; - } - var jsonData = jsonDecode(response.body) as Map; - final decodedBackupData = jsonData["backupData"] is String - ? jsonDecode(jsonData["backupData"]) - : jsonData["backupData"]; - _restoreMerge(decodedBackupData); - ref - .read(synchingProvider(syncId: syncId).notifier) - .setLastSync(DateTime.now().millisecondsSinceEpoch); - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .cleanChangedItems(true); - if (!silent) { - botToast("Sync finished", second: 2); - } - } catch (error) { - botToast(error.toString(), second: 5); - } - } - Future uploadToServer(AppLocalizations l10n) async { botToast(l10n.sync_uploading, second: 2); try { @@ -160,9 +84,6 @@ class SyncServer extends _$SyncServer { ref .read(synchingProvider(syncId: syncId).notifier) .setLastUpload(DateTime.now().millisecondsSinceEpoch); - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .cleanChangedItems(true); botToast(l10n.sync_upload_finished, second: 2); } catch (error) { botToast(error.toString(), second: 5); @@ -192,49 +113,12 @@ class SyncServer extends _$SyncServer { ref .read(synchingProvider(syncId: syncId).notifier) .setLastDownload(DateTime.now().millisecondsSinceEpoch); - ref - .read(changedItemsManagerProvider(managerId: 1).notifier) - .cleanChangedItems(true); botToast(l10n.sync_download_finished, second: 2); } catch (error) { botToast(error.toString(), second: 5); } } - String _getDataHash(Map data) { - Map datas = {}; - datas["version"] = data["version"]; - datas["manga"] = data["manga"]; - datas["categories"] = data["categories"]; - datas["chapters"] = data["chapters"]; - datas["tracks"] = data["tracks"]; - datas["history"] = data["history"]; - datas["updates"] = data["updates"]; - var encodedJson = jsonEncode(datas); - return sha256.convert(utf8.encode(encodedJson)).toString(); - } - - Map _getChangedData() { - Map data = {}; - final changedItems = isar.changedItems.getSync(1); - if (changedItems != null) { - data.addAll({ - "deletedMangas": - changedItems.deletedMangas?.map((e) => e.toJson()).toList() ?? [] - }); - data.addAll({ - "updatedChapters": - changedItems.updatedChapters?.map((e) => e.toJson()).toList() ?? [] - }); - data.addAll({ - "deletedCategories": - changedItems.deletedCategories?.map((e) => e.toJson()).toList() ?? - [] - }); - } - return data; - } - Map _getData() { Map datas = {}; datas.addAll({"version": "1"}); @@ -309,93 +193,6 @@ class SyncServer extends _$SyncServer { return datas; } - void _restoreMerge(Map backup) { - if (backup['version'] == "1") { - try { - final manga = - (backup["manga"] as List?)?.map((e) => Manga.fromJson(e)).toList(); - final chapters = (backup["chapters"] as List?) - ?.map((e) => Chapter.fromJson(e)) - .toList(); - final categories = (backup["categories"] as List?) - ?.map((e) => Category.fromJson(e)) - .toList(); - final track = - (backup["tracks"] as List?)?.map((e) => Track.fromJson(e)).toList(); - final history = (backup["history"] as List?) - ?.map((e) => History.fromJson(e)) - .toList(); - final updates = (backup["updates"] as List?) - ?.map((e) => Update.fromJson(e)) - .toList(); - - isar.writeTxnSync(() { - isar.mangas.clearSync(); - if (manga != null) { - isar.mangas.putAllSync(manga); - if (chapters != null) { - isar.chapters.clearSync(); - for (var chapter in chapters) { - final manga = isar.mangas.getSync(chapter.mangaId!); - if (manga != null) { - isar.chapters.putSync(chapter..manga.value = manga); - chapter.manga.saveSync(); - } - } - - isar.historys.clearSync(); - if (history != null) { - for (var element in history) { - final chapter = isar.chapters.getSync(element.chapterId!); - if (chapter != null) { - isar.historys.putSync(element..chapter.value = chapter); - element.chapter.saveSync(); - } - } - } - - isar.updates.clearSync(); - if (updates != null) { - final tempChapters = - isar.chapters.filter().idIsNotNull().findAllSync().toList(); - for (var update in updates) { - final matchingChapter = tempChapters - .where((chapter) => - chapter.mangaId == update.mangaId && - chapter.name == update.chapterName) - .firstOrNull; - if (matchingChapter != null) { - isar.updates - .putSync(update..chapter.value = matchingChapter); - update.chapter.saveSync(); - } - } - } - } - - isar.categorys.clearSync(); - if (categories != null) { - isar.categorys.putAllSync(categories); - } - } - - isar.tracks.clearSync(); - if (track != null) { - isar.tracks.putAllSync(track); - } - - ref.invalidate(themeModeStateProvider); - ref.invalidate(blendLevelStateProvider); - ref.invalidate(flexSchemeColorStateProvider); - ref.invalidate(pureBlackDarkModeStateProvider); - ref.invalidate(l10nLocaleStateProvider); - }); - } catch (e) { - botToast(e.toString()); - } - } - } - void _restore(Map backup) { if (backup['version'] == "1") { try { @@ -489,8 +286,6 @@ class SyncServer extends _$SyncServer { if (extensionsPref != null) { isar.sourcePreferences.putAllSync(extensionsPref); } - final syncAfterReading = isar.settings.getSync(227)!.syncAfterReading; - final syncOnAppLaunch = isar.settings.getSync(227)!.syncOnAppLaunch; isar.settings.clearSync(); if (settings != null) { isar.settings.putAllSync(settings); @@ -498,10 +293,6 @@ class SyncServer extends _$SyncServer { if (isar.settings.getSync(227) == null) { isar.settings.putSync(Settings(id: 227)); } - isar.settings.putSync( - isar.settings.getSync(227)!..syncAfterReading = syncAfterReading); - isar.settings.putSync( - isar.settings.getSync(227)!..syncOnAppLaunch = syncOnAppLaunch); ref.invalidate(themeModeStateProvider); ref.invalidate(blendLevelStateProvider); ref.invalidate(flexSchemeColorStateProvider); diff --git a/lib/services/sync_server.g.dart b/lib/services/sync_server.g.dart index b2a9cd6..7efca60 100644 --- a/lib/services/sync_server.g.dart +++ b/lib/services/sync_server.g.dart @@ -6,7 +6,7 @@ part of 'sync_server.dart'; // RiverpodGenerator // ************************************************************************** -String _$syncServerHash() => r'99e16d503937f2973f00c0cf2e834a03cf4aa245'; +String _$syncServerHash() => r'db0f27093c2e76d4158b7af7960359c54c9a00b2'; /// Copied from Dart SDK class _SystemHash {