This commit is contained in:
kodjomoustapha 2023-12-21 23:00:50 +01:00
parent d9bcdd726b
commit da5c350be8
16 changed files with 160 additions and 18 deletions

View file

@ -272,5 +272,6 @@
"player": "لاعب",
"markEpisodeAsSeenSetting": "في أي نقطة لوضع علامة على الحلقة كمشاهدة",
"default_skip_intro_length": "طول تخطي المقدمة الافتراضي",
"default_playback_speed_length": "طول سرعة التشغيل الافتراضية"
"default_playback_speed_length": "طول سرعة التشغيل الافتراضية",
"updateProgressAfterReading": "تحديث التقدم بعد القراءة"
}

View file

@ -272,5 +272,6 @@
"player": "Player",
"markEpisodeAsSeenSetting": "At what point to mark the episode as seen",
"default_skip_intro_length": "Default Skip intro length",
"default_playback_speed_length": "Default Playback speed length"
"default_playback_speed_length": "Default Playback speed length",
"updateProgressAfterReading": "Update progress after reading"
}

View file

@ -272,5 +272,6 @@
"player": "Jugador",
"markEpisodeAsSeenSetting": "En qué punto marcar el episodio como visto",
"default_skip_intro_length": "Duración predeterminada para saltar la introducción",
"default_playback_speed_length": "Duración predeterminada de la velocidad de reproducción"
"default_playback_speed_length": "Duración predeterminada de la velocidad de reproducción",
"updateProgressAfterReading": "Actualizar el progreso después de leer"
}

View file

@ -272,5 +272,6 @@
"player": "Lecteur",
"markEpisodeAsSeenSetting": "À quel moment marquer l'épisode comme vu",
"default_skip_intro_length": "Longueur par défaut du passage de l'intro",
"default_playback_speed_length": "Longueur par défaut de la vitesse de lecture"
"default_playback_speed_length": "Longueur par défaut de la vitesse de lecture",
"updateProgressAfterReading": "Synchroniser la progression après lecture"
}

View file

@ -272,5 +272,6 @@
"player": "Pemain",
"markEpisodeAsSeenSetting": "Pada titik mana menandai episode sebagai terlihat",
"default_skip_intro_length": "Panjang lewati intro default",
"default_playback_speed_length": "Panjang kecepatan pemutaran default"
"default_playback_speed_length": "Panjang kecepatan pemutaran default",
"updateProgressAfterReading": "Perbarui kemajuan setelah membaca"
}

View file

@ -272,5 +272,6 @@
"player": "Giocatore",
"markEpisodeAsSeenSetting": "In quale momento contrassegnare l'episodio come visto",
"default_skip_intro_length": "Durata predefinita per saltare l'introduzione",
"default_playback_speed_length": "Durata predefinita per la velocità di riproduzione"
"default_playback_speed_length": "Durata predefinita per la velocità di riproduzione",
"updateProgressAfterReading": "Aggiorna il progresso dopo aver letto"
}

View file

@ -272,5 +272,6 @@
"player": "Jogador",
"markEpisodeAsSeenSetting": "Em que ponto marcar o episódio como visto",
"default_skip_intro_length": "Duração padrão para pular a introdução",
"default_playback_speed_length": "Duração padrão da velocidade de reprodução"
"default_playback_speed_length": "Duração padrão da velocidade de reprodução",
"updateProgressAfterReading": "Atualizar progresso após a leitura"
}

View file

@ -272,5 +272,6 @@
"player": "Jogador",
"markEpisodeAsSeenSetting": "Em que ponto marcar o episódio como visto",
"default_skip_intro_length": "Duração padrão para pular a introdução",
"default_playback_speed_length": "Duração padrão da velocidade de reprodução"
"default_playback_speed_length": "Duração padrão da velocidade de reprodução",
"updateProgressAfterReading": "Atualize o progresso após a leitura"
}

View file

@ -272,5 +272,6 @@
"player": "Игрок",
"markEpisodeAsSeenSetting": "В какой момент отметить эпизод как просмотренный",
"default_skip_intro_length": "Стандартная длина пропуска вступления",
"default_playback_speed_length": "Стандартная длина скорости воспроизведения"
"default_playback_speed_length": "Стандартная длина скорости воспроизведения",
"updateProgressAfterReading": "Обновить прогресс после чтения"
}

View file

@ -272,5 +272,6 @@
"player": "Oyuncu",
"markEpisodeAsSeenSetting": "Bölümün izlendiği olarak işaretleneceği nokta",
"default_skip_intro_length": "Varsayılan Giriş Atla süresi",
"default_playback_speed_length": "Varsayılan Oynatma hızı süresi"
"default_playback_speed_length": "Varsayılan Oynatma hızı süresi",
"updateProgressAfterReading": "Okuduktan Sonra İlerlemeyi Güncelle"
}

View file

@ -151,6 +151,8 @@ class Settings {
double? defaultPlayBackSpeed;
bool? updateProgressAfterReading;
Settings(
{this.id = 227,
this.displayType = DisplayType.compactGrid,
@ -216,7 +218,8 @@ class Settings {
this.markEpisodeAsSeenType = 85,
this.defaultSkipIntroLength = 85,
this.defaultDoubleTapToSkipLength = 10,
this.defaultPlayBackSpeed = 1.0});
this.defaultPlayBackSpeed = 1.0,
this.updateProgressAfterReading = true});
Settings.fromJson(Map<String, dynamic> json) {
animatePageTransitions = json['animatePageTransitions'];
@ -338,6 +341,7 @@ class Settings {
defaultSkipIntroLength = json['defaultSkipIntroLength'];
defaultDoubleTapToSkipLength = json['defaultDoubleTapToSkipLength'];
defaultPlayBackSpeed = json['defaultPlayBackSpeed'];
updateProgressAfterReading = json['updateProgressAfterReading'];
}
Map<String, dynamic> toJson() => {
@ -427,7 +431,8 @@ class Settings {
'markEpisodeAsSeenType': markEpisodeAsSeenType,
'defaultSkipIntroLength': defaultSkipIntroLength,
'defaultDoubleTapToSkipLength': defaultDoubleTapToSkipLength,
'defaultPlayBackSpeed': defaultPlayBackSpeed
'defaultPlayBackSpeed': defaultPlayBackSpeed,
'updateProgressAfterReading': updateProgressAfterReading
};
}

View file

@ -366,13 +366,18 @@ const SettingsSchema = CollectionSchema(
name: r'themeIsDark',
type: IsarType.bool,
),
r'usePageTapZones': PropertySchema(
r'updateProgressAfterReading': PropertySchema(
id: 66,
name: r'updateProgressAfterReading',
type: IsarType.bool,
),
r'usePageTapZones': PropertySchema(
id: 67,
name: r'usePageTapZones',
type: IsarType.bool,
),
r'userAgent': PropertySchema(
id: 67,
id: 68,
name: r'userAgent',
type: IsarType.string,
)
@ -770,8 +775,9 @@ void _settingsSerialize(
);
writer.writeLong(offsets[64], object.startDatebackup);
writer.writeBool(offsets[65], object.themeIsDark);
writer.writeBool(offsets[66], object.usePageTapZones);
writer.writeString(offsets[67], object.userAgent);
writer.writeBool(offsets[66], object.updateProgressAfterReading);
writer.writeBool(offsets[67], object.usePageTapZones);
writer.writeString(offsets[68], object.userAgent);
}
Settings _settingsDeserialize(
@ -902,8 +908,9 @@ Settings _settingsDeserialize(
),
startDatebackup: reader.readLongOrNull(offsets[64]),
themeIsDark: reader.readBoolOrNull(offsets[65]),
usePageTapZones: reader.readBoolOrNull(offsets[66]),
userAgent: reader.readStringOrNull(offsets[67]),
updateProgressAfterReading: reader.readBoolOrNull(offsets[66]),
usePageTapZones: reader.readBoolOrNull(offsets[67]),
userAgent: reader.readStringOrNull(offsets[68]),
);
object.chapterFilterBookmarkedList =
reader.readObjectList<ChapterFilterBookmarked>(
@ -1149,6 +1156,8 @@ P _settingsDeserializeProp<P>(
case 66:
return (reader.readBoolOrNull(offset)) as P;
case 67:
return (reader.readBoolOrNull(offset)) as P;
case 68:
return (reader.readStringOrNull(offset)) as P;
default:
throw IsarError('Unknown property with id $propertyId');
@ -5595,6 +5604,34 @@ extension SettingsQueryFilter
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
updateProgressAfterReadingIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'updateProgressAfterReading',
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
updateProgressAfterReadingIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'updateProgressAfterReading',
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
updateProgressAfterReadingEqualTo(bool? value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'updateProgressAfterReading',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition>
usePageTapZonesIsNull() {
return QueryBuilder.apply(this, (query) {
@ -6608,6 +6645,20 @@ extension SettingsQuerySortBy on QueryBuilder<Settings, Settings, QSortBy> {
});
}
QueryBuilder<Settings, Settings, QAfterSortBy>
sortByUpdateProgressAfterReading() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'updateProgressAfterReading', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy>
sortByUpdateProgressAfterReadingDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'updateProgressAfterReading', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByUsePageTapZones() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'usePageTapZones', Sort.asc);
@ -7320,6 +7371,20 @@ extension SettingsQuerySortThenBy
});
}
QueryBuilder<Settings, Settings, QAfterSortBy>
thenByUpdateProgressAfterReading() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'updateProgressAfterReading', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy>
thenByUpdateProgressAfterReadingDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'updateProgressAfterReading', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByUsePageTapZones() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'usePageTapZones', Sort.asc);
@ -7692,6 +7757,13 @@ extension SettingsQueryWhereDistinct
});
}
QueryBuilder<Settings, Settings, QDistinct>
distinctByUpdateProgressAfterReading() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'updateProgressAfterReading');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByUsePageTapZones() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'usePageTapZones');
@ -8158,6 +8230,13 @@ extension SettingsQueryProperty
});
}
QueryBuilder<Settings, bool?, QQueryOperations>
updateProgressAfterReadingProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'updateProgressAfterReading');
});
}
QueryBuilder<Settings, bool?, QQueryOperations> usePageTapZonesProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'usePageTapZones');

View file

@ -10,6 +10,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/track/providers/track_providers.dart';
import 'package:mangayomi/utils/chapter_recognition.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'reader_controller_provider.g.dart';
@ -350,6 +351,9 @@ class ReaderController extends _$ReaderController {
extension ChapterExtensions on Chapter {
void updateTrackChapterRead(AutoDisposeNotifierProviderRef ref) {
final updateProgressAfterReading =
ref.watch(updateProgressAfterReadingStateProvider);
if (!updateProgressAfterReading) return;
final manga = this.manga.value!;
final chapterNumber =
ChapterRecognition().parseChapterNumber(manga.name!, name!);

View file

@ -1,5 +1,6 @@
import 'package:isar/isar.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/models/track.dart';
import 'package:mangayomi/models/track_preference.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@ -45,3 +46,18 @@ class Tracks extends _$Tracks {
isar.writeTxnSync(() => isar.tracks.deleteSync(track.id!));
}
}
@riverpod
class UpdateProgressAfterReadingState extends _$UpdateProgressAfterReadingState {
@override
bool build() {
return isar.settings.getSync(227)!.updateProgressAfterReading ?? true;
}
void set(bool value) {
final settings = isar.settings.getSync(227);
state = value;
isar.writeTxnSync(
() => isar.settings.putSync(settings!..updateProgressAfterReading = value));
}
}

View file

@ -167,5 +167,23 @@ class _TracksProviderElement
@override
int? get syncId => (origin as TracksProvider).syncId;
}
String _$updateProgressAfterReadingStateHash() =>
r'ad615c0c03d376adf8bc4728aac4288e61facee5';
/// See also [UpdateProgressAfterReadingState].
@ProviderFor(UpdateProgressAfterReadingState)
final updateProgressAfterReadingStateProvider =
AutoDisposeNotifierProvider<UpdateProgressAfterReadingState, bool>.internal(
UpdateProgressAfterReadingState.new,
name: r'updateProgressAfterReadingStateProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$updateProgressAfterReadingStateHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$UpdateProgressAfterReadingState = AutoDisposeNotifier<bool>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

View file

@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart';
import 'package:isar/isar.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/track_preference.dart';
import 'package:mangayomi/modules/more/settings/track/providers/track_providers.dart';
import 'package:mangayomi/modules/more/settings/track/widgets/track_listile.dart';
import 'package:mangayomi/modules/more/widgets/list_tile_widget.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
@ -18,6 +19,7 @@ class TrackScreen extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final updateProgressAfterReading = ref.watch(updateProgressAfterReadingStateProvider);
final l10n = l10nLocalizations(context)!;
return Scaffold(
appBar: AppBar(
@ -34,6 +36,14 @@ class TrackScreen extends ConsumerWidget {
snapshot.hasData ? snapshot.data : [];
return Column(
children: [
SwitchListTile(
value: updateProgressAfterReading,
title: Text(context.l10n.updateProgressAfterReading),
onChanged: (value) {
ref
.read(updateProgressAfterReadingStateProvider.notifier)
.set(value);
}),
Padding(
padding: const EdgeInsets.only(
left: 15, right: 15, bottom: 10, top: 5),