Merge pull request #255 from Schnitzel5/fix/sync-server
Fix/sync server
This commit is contained in:
commit
bb1423969d
12 changed files with 25 additions and 20 deletions
|
|
@ -25,7 +25,7 @@ class Feed {
|
||||||
Feed.fromJson(Map<String, dynamic> json) {
|
Feed.fromJson(Map<String, dynamic> json) {
|
||||||
id = json['id'];
|
id = json['id'];
|
||||||
mangaId = json['mangaId'];
|
mangaId = json['mangaId'];
|
||||||
mangaId = json['chapterName'];
|
chapterName = json['chapterName'];
|
||||||
date = json['date'];
|
date = json['date'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -338,7 +338,7 @@ class Settings {
|
||||||
.map((e) => FilterScanlator.fromJson(e))
|
.map((e) => FilterScanlator.fromJson(e))
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
flexColorSchemeBlendLevel = json['flexColorSchemeBlendLevel'];
|
flexColorSchemeBlendLevel = json['flexColorSchemeBlendLevel'] is double ? json['flexColorSchemeBlendLevel'] : (json['flexColorSchemeBlendLevel'] as int).toDouble();
|
||||||
flexSchemeColorIndex = json['flexSchemeColorIndex'];
|
flexSchemeColorIndex = json['flexSchemeColorIndex'];
|
||||||
id = json['id'];
|
id = json['id'];
|
||||||
incognitoMode = json['incognitoMode'];
|
incognitoMode = json['incognitoMode'];
|
||||||
|
|
|
||||||
|
|
@ -313,6 +313,7 @@ class _AnimeStreamPageState extends riv.ConsumerState<AnimeStreamPage>
|
||||||
_currentPosition.value, _currentTotalDuration.value,
|
_currentPosition.value, _currentTotalDuration.value,
|
||||||
save: save);
|
save: save);
|
||||||
_streamController.setAnimeHistoryUpdate();
|
_streamController.setAnimeHistoryUpdate();
|
||||||
|
_streamController.checkAndSyncProgress();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _setLandscapeMode(bool state) {
|
void _setLandscapeMode(bool state) {
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provi
|
||||||
import 'package:mangayomi/modules/more/settings/player/providers/player_state_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/modules/more/settings/sync/providers/sync_providers.dart';
|
||||||
import 'package:mangayomi/services/aniskip.dart';
|
import 'package:mangayomi/services/aniskip.dart';
|
||||||
|
import 'package:mangayomi/services/sync_server.dart';
|
||||||
import 'package:mangayomi/utils/chapter_recognition.dart';
|
import 'package:mangayomi/utils/chapter_recognition.dart';
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
part 'anime_player_controller_provider.g.dart';
|
part 'anime_player_controller_provider.g.dart';
|
||||||
|
|
@ -140,6 +141,7 @@ class AnimeStreamController extends _$AnimeStreamController {
|
||||||
.filter()
|
.filter()
|
||||||
.mangaIdEqualTo(getAnime().id)
|
.mangaIdEqualTo(getAnime().id)
|
||||||
.findFirstSync())!
|
.findFirstSync())!
|
||||||
|
..chapterId = episode.id
|
||||||
..chapter.value = episode
|
..chapter.value = episode
|
||||||
..date = DateTime.now().millisecondsSinceEpoch.toString();
|
..date = DateTime.now().millisecondsSinceEpoch.toString();
|
||||||
}
|
}
|
||||||
|
|
@ -149,6 +151,13 @@ 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,
|
void setCurrentPosition(Duration duration, Duration? totalDuration,
|
||||||
{bool save = false}) {
|
{bool save = false}) {
|
||||||
if (episode.isRead!) return;
|
if (episode.isRead!) return;
|
||||||
|
|
@ -172,7 +181,6 @@ class AnimeStreamController extends _$AnimeStreamController {
|
||||||
});
|
});
|
||||||
if (isWatch) {
|
if (isWatch) {
|
||||||
episode.updateTrackChapterRead(ref);
|
episode.updateTrackChapterRead(ref);
|
||||||
episode.syncProgressAfterChapterRead(ref);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ part of 'anime_player_controller_provider.dart';
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$animeStreamControllerHash() =>
|
String _$animeStreamControllerHash() =>
|
||||||
r'afa475dbb6f73d33b2495dd6d4502f3df1ab931d';
|
r'0d97207a4d015d5089766ccbeeba093c55cb1ef9';
|
||||||
|
|
||||||
/// Copied from Dart SDK
|
/// Copied from Dart SDK
|
||||||
class _SystemHash {
|
class _SystemHash {
|
||||||
|
|
|
||||||
|
|
@ -658,7 +658,6 @@ class MangasSetIsReadState extends _$MangasSetIsReadState {
|
||||||
chapter.manga.saveSync();
|
chapter.manga.saveSync();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
chapters.last.syncProgressAfterChapterRead(ref);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2520,7 +2520,7 @@ final isLongPressedMangaStateProvider =
|
||||||
|
|
||||||
typedef _$IsLongPressedMangaState = AutoDisposeNotifier<bool>;
|
typedef _$IsLongPressedMangaState = AutoDisposeNotifier<bool>;
|
||||||
String _$mangasSetIsReadStateHash() =>
|
String _$mangasSetIsReadStateHash() =>
|
||||||
r'926659caebb85b15952f66f437f773a4b660bb78';
|
r'cb88914fe1c47c1e3a29d43c23a6652b0e8f2ac1';
|
||||||
|
|
||||||
abstract class _$MangasSetIsReadState
|
abstract class _$MangasSetIsReadState
|
||||||
extends BuildlessAutoDisposeNotifier<void> {
|
extends BuildlessAutoDisposeNotifier<void> {
|
||||||
|
|
|
||||||
|
|
@ -764,7 +764,6 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
||||||
chapter.manga.saveSync();
|
chapter.manga.saveSync();
|
||||||
if (chapter.isRead!) {
|
if (chapter.isRead!) {
|
||||||
chapter.updateTrackChapterRead(ref);
|
chapter.updateTrackChapterRead(ref);
|
||||||
chapter.syncProgressAfterChapterRead(ref);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -823,8 +822,6 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
||||||
.read(chaptersListStateProvider.notifier)
|
.read(chaptersListStateProvider.notifier)
|
||||||
.clear();
|
.clear();
|
||||||
});
|
});
|
||||||
chapters[index + 1]
|
|
||||||
.syncProgressAfterChapterRead(ref);
|
|
||||||
},
|
},
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ part of 'update_manga_detail_providers.dart';
|
||||||
// RiverpodGenerator
|
// RiverpodGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
String _$updateMangaDetailHash() => r'c21ac4f7725b5ac4403902bac07a3b5462488bbd';
|
String _$updateMangaDetailHash() => r'f72eb5e66fd9fb7ed61aa08365e068d77737438d';
|
||||||
|
|
||||||
/// Copied from Dart SDK
|
/// Copied from Dart SDK
|
||||||
class _SystemHash {
|
class _SystemHash {
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import 'package:mangayomi/modules/manga/detail/providers/track_state_providers.d
|
||||||
import 'package:mangayomi/modules/more/providers/incognito_mode_state_provider.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/sync/providers/sync_providers.dart';
|
||||||
import 'package:mangayomi/modules/more/settings/track/providers/track_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:mangayomi/utils/chapter_recognition.dart';
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
part 'reader_controller_provider.g.dart';
|
part 'reader_controller_provider.g.dart';
|
||||||
|
|
@ -188,6 +189,13 @@ class ReaderController extends _$ReaderController {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void checkAndSyncProgress() {
|
||||||
|
final syncAfterReading = ref.watch(syncAfterReadingStateProvider);
|
||||||
|
if (syncAfterReading) {
|
||||||
|
ref.read(syncServerProvider(syncId: 1).notifier).checkForSync(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void setChapterBookmarked() {
|
void setChapterBookmarked() {
|
||||||
if (incognitoMode) return;
|
if (incognitoMode) return;
|
||||||
final isBookmarked = getChapterBookmarked();
|
final isBookmarked = getChapterBookmarked();
|
||||||
|
|
@ -341,7 +349,6 @@ class ReaderController extends _$ReaderController {
|
||||||
});
|
});
|
||||||
if (isRead) {
|
if (isRead) {
|
||||||
chapter.updateTrackChapterRead(ref);
|
chapter.updateTrackChapterRead(ref);
|
||||||
chapter.syncProgressAfterChapterRead(ref);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -405,14 +412,6 @@ extension ChapterExtensions on Chapter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void syncProgressAfterChapterRead(dynamic ref) {
|
|
||||||
if (!(ref is WidgetRef || ref is AutoDisposeNotifierProviderRef)) return;
|
|
||||||
final syncAfterReading = ref.watch(syncAfterReadingStateProvider);
|
|
||||||
if (!syncAfterReading) return;
|
|
||||||
checkForSyncIndependentProvider.call(true);
|
|
||||||
// ref.read(syncServerProvider(syncId: 1).notifier).checkForSync(ref, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MangaExtensions on Manga {
|
extension MangaExtensions on Manga {
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ class _CurrentIndexProviderElement
|
||||||
Chapter get chapter => (origin as CurrentIndexProvider).chapter;
|
Chapter get chapter => (origin as CurrentIndexProvider).chapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$readerControllerHash() => r'f615f15a622ac5ccdb16318dcdefc097a175fd33';
|
String _$readerControllerHash() => r'cc4f5fbe4192def4d19d9150340d305ba0ecf463';
|
||||||
|
|
||||||
abstract class _$ReaderController extends BuildlessAutoDisposeNotifier<void> {
|
abstract class _$ReaderController extends BuildlessAutoDisposeNotifier<void> {
|
||||||
late final Chapter chapter;
|
late final Chapter chapter;
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,7 @@ class _MangaChapterPageGalleryState
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_readerController.setMangaHistoryUpdate();
|
_readerController.setMangaHistoryUpdate();
|
||||||
|
_readerController.checkAndSyncProgress();
|
||||||
_readerController.setPageIndex(
|
_readerController.setPageIndex(
|
||||||
_geCurrentIndex(_uChapDataPreload[_currentIndex!].index!), true);
|
_geCurrentIndex(_uChapDataPreload[_currentIndex!].index!), true);
|
||||||
_rebuildDetail.close();
|
_rebuildDetail.close();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue