This commit is contained in:
kodjomoustapha 2024-04-15 09:57:04 +01:00
parent 3b9f6f7a5e
commit 5932181138
12 changed files with 65 additions and 59 deletions

View file

@ -139,7 +139,10 @@ class _CodeEditorState extends ConsumerState<CodeEditor> {
final filterList = source != null ? getFilterList(source: source!) : [];
return Scaffold(
appBar: AppBar(
leading: BackButton(onPressed: () => Navigator.pop(context, source)),
leading: BackButton(onPressed: () {
isar.writeTxnSync(() => isar.sources.putSync(source!));
Navigator.pop(context, source);
}),
),
body: Column(
children: [

View file

@ -130,7 +130,7 @@ class _DoubleColummViewState extends State<DoubleColummView>
if (widget.datas[0] != null)
Flexible(
child: ImageViewCenter(
datas: widget.datas[0]!,
data: widget.datas[0]!,
loadStateChanged: (state) {
if (state.extendedImageLoadState ==
LoadState.loading) {
@ -209,7 +209,7 @@ class _DoubleColummViewState extends State<DoubleColummView>
if (widget.datas[1] != null)
Flexible(
child: ImageViewCenter(
datas: widget.datas[1]!,
data: widget.datas[1]!,
loadStateChanged: (state) {
if (state.extendedImageLoadState ==
LoadState.loading) {

View file

@ -40,7 +40,7 @@ class DoubleColummVerticalView extends StatelessWidget {
if (datas[0] != null)
Flexible(
child: ImageViewCenter(
datas: datas[0]!,
data: datas[0]!,
loadStateChanged: (state) {
if (state.extendedImageLoadState == LoadState.loading) {
final ImageChunkEvent? loadingProgress =
@ -112,7 +112,7 @@ class DoubleColummVerticalView extends StatelessWidget {
if (datas[1] != null)
Flexible(
child: ImageViewCenter(
datas: datas[1]!,
data: datas[1]!,
loadStateChanged: (state) {
if (state.extendedImageLoadState == LoadState.loading) {
final ImageChunkEvent? loadingProgress =

View file

@ -12,16 +12,16 @@ import 'package:mangayomi/utils/headers.dart';
import 'package:mangayomi/utils/reg_exp_matcher.dart';
class ImageViewCenter extends ConsumerWidget {
final UChapDataPreload datas;
final UChapDataPreload data;
final bool cropBorders;
final Function(UChapDataPreload datas) onLongPressData;
final Function(UChapDataPreload data) onLongPressData;
final Widget? Function(ExtendedImageState state) loadStateChanged;
final Function(ExtendedImageGestureState state)? onDoubleTap;
final GestureConfig Function(ExtendedImageState state)?
initGestureConfigHandler;
const ImageViewCenter({
super.key,
required this.datas,
required this.data,
required this.cropBorders,
required this.onLongPressData,
required this.loadStateChanged,
@ -31,10 +31,10 @@ class ImageViewCenter extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final cropImageExist = cropBorders && datas.cropImage != null;
final cropImageExist = cropBorders && data.cropImage != null;
return _imageView(cropImageExist ? true : datas.isLocale!,
cropImageExist ? datas.cropImage : datas.archiveImage, ref);
return _imageView(cropImageExist ? true : data.isLocale!,
cropImageExist ? data.cropImage : data.archiveImage, ref);
}
Widget _imageView(bool isLocale, Uint8List? archiveImage, WidgetRef ref) {
@ -43,16 +43,17 @@ class ImageViewCenter extends ConsumerWidget {
? archiveImage != null
? ExtendedMemoryImageProvider(archiveImage)
: ExtendedFileImageProvider(
File('${datas.path!.path}${padIndex(datas.index! + 1)}.jpg'))
: CustomExtendedNetworkImageProvider(datas.url!.trim().trimLeft().trimRight(),
File('${data.directory!.path}${padIndex(data.index! + 1)}.jpg'))
: CustomExtendedNetworkImageProvider(
data.url!.trim().trimLeft().trimRight(),
cache: true,
cacheMaxAge: const Duration(days: 7),
headers: ref.watch(headersProvider(
source: datas.chapter!.manga.value!.source!,
lang: datas.chapter!.manga.value!.lang!)));
source: data.chapter!.manga.value!.source!,
lang: data.chapter!.manga.value!.lang!)));
return GestureDetector(
onLongPress: () => onLongPressData.call(datas),
onLongPress: () => onLongPressData.call(data),
child: ColorFilterWidget(
child: ExtendedImage(
image: image as ImageProvider<Object>,

View file

@ -15,25 +15,25 @@ import 'package:mangayomi/utils/reg_exp_matcher.dart';
import 'package:mangayomi/modules/manga/reader/widgets/circular_progress_indicator_animate_rotate.dart';
class ImageViewVertical extends ConsumerWidget {
final UChapDataPreload datas;
final Function(UChapDataPreload datas) onLongPressData;
final UChapDataPreload data;
final Function(UChapDataPreload data) onLongPressData;
final bool cropBorders;
final Function(bool) failedToLoadImage;
const ImageViewVertical(
{super.key,
required this.datas,
required this.data,
required this.onLongPressData,
required this.cropBorders,
required this.failedToLoadImage});
@override
Widget build(BuildContext context, WidgetRef ref) {
final cropImageExist = cropBorders && datas.cropImage != null;
final cropImageExist = cropBorders && data.cropImage != null;
return _imageView(cropImageExist ? true : datas.isLocale!,
cropImageExist ? datas.cropImage : datas.archiveImage, context, ref);
return _imageView(cropImageExist ? true : data.isLocale!,
cropImageExist ? data.cropImage : data.archiveImage, context, ref);
}
Widget _imageView(bool isLocale, Uint8List? archiveImage,
@ -42,22 +42,23 @@ class ImageViewVertical extends ConsumerWidget {
? archiveImage != null
? ExtendedMemoryImageProvider(archiveImage)
: ExtendedFileImageProvider(
File('${datas.path!.path}${padIndex(datas.index! + 1)}.jpg'))
: CustomExtendedNetworkImageProvider(datas.url!.trim().trimLeft().trimRight(),
File('${data.directory!.path}${padIndex(data.index! + 1)}.jpg'))
: CustomExtendedNetworkImageProvider(
data.url!.trim().trimLeft().trimRight(),
cache: true,
cacheMaxAge: const Duration(days: 7),
headers: ref.watch(headersProvider(
source: datas.chapter!.manga.value!.source!,
lang: datas.chapter!.manga.value!.lang!)));
source: data.chapter!.manga.value!.source!,
lang: data.chapter!.manga.value!.lang!)));
final scaleType = ref.watch(scaleTypeStateProvider);
final l10n = l10nLocalizations(context)!;
return GestureDetector(
onLongPress: () => onLongPressData.call(datas),
onLongPress: () => onLongPressData.call(data),
child: ColorFilterWidget(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (datas.index == 0)
if (data.index == 0)
SizedBox(
height: MediaQuery.of(context).padding.top,
),
@ -112,7 +113,8 @@ class ImageViewVertical extends ConsumerWidget {
child: Container(
decoration: BoxDecoration(
color: context.primaryColor,
borderRadius: BorderRadius.circular(30)),
borderRadius:
BorderRadius.circular(30)),
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 8, horizontal: 16),

View file

@ -10,11 +10,11 @@ int nextId = 0;
@Riverpod(keepAlive: true)
Future<Uint8List?> cropBorders(CropBordersRef ref,
{required UChapDataPreload datas, required bool cropBorder}) async {
{required UChapDataPreload data, required bool cropBorder}) async {
Uint8List? imageBytes;
if (cropBorder) {
imageBytes = await datas.getImageBytes;
imageBytes = await data.getImageBytes;
if (imageBytes == null) {
return null;

View file

@ -6,7 +6,7 @@ part of 'crop_borders_provider.dart';
// RiverpodGenerator
// **************************************************************************
String _$cropBordersHash() => r'c08c1fdfcd66915e86c3c6571bde1783703f1142';
String _$cropBordersHash() => r'dc0e5abe7adbe8c2980957c82e470a0cd1edc799';
/// Copied from Dart SDK
class _SystemHash {
@ -40,11 +40,11 @@ class CropBordersFamily extends Family<AsyncValue<Uint8List?>> {
/// See also [cropBorders].
CropBordersProvider call({
required UChapDataPreload datas,
required UChapDataPreload data,
required bool cropBorder,
}) {
return CropBordersProvider(
datas: datas,
data: data,
cropBorder: cropBorder,
);
}
@ -54,7 +54,7 @@ class CropBordersFamily extends Family<AsyncValue<Uint8List?>> {
covariant CropBordersProvider provider,
) {
return call(
datas: provider.datas,
data: provider.data,
cropBorder: provider.cropBorder,
);
}
@ -78,12 +78,12 @@ class CropBordersFamily extends Family<AsyncValue<Uint8List?>> {
class CropBordersProvider extends FutureProvider<Uint8List?> {
/// See also [cropBorders].
CropBordersProvider({
required UChapDataPreload datas,
required UChapDataPreload data,
required bool cropBorder,
}) : this._internal(
(ref) => cropBorders(
ref as CropBordersRef,
datas: datas,
data: data,
cropBorder: cropBorder,
),
from: cropBordersProvider,
@ -95,7 +95,7 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
dependencies: CropBordersFamily._dependencies,
allTransitiveDependencies:
CropBordersFamily._allTransitiveDependencies,
datas: datas,
data: data,
cropBorder: cropBorder,
);
@ -106,11 +106,11 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.datas,
required this.data,
required this.cropBorder,
}) : super.internal();
final UChapDataPreload datas;
final UChapDataPreload data;
final bool cropBorder;
@override
@ -126,7 +126,7 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
datas: datas,
data: data,
cropBorder: cropBorder,
),
);
@ -140,14 +140,14 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
@override
bool operator ==(Object other) {
return other is CropBordersProvider &&
other.datas == datas &&
other.data == data &&
other.cropBorder == cropBorder;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, datas.hashCode);
hash = _SystemHash.combine(hash, data.hashCode);
hash = _SystemHash.combine(hash, cropBorder.hashCode);
return _SystemHash.finish(hash);
@ -155,8 +155,8 @@ class CropBordersProvider extends FutureProvider<Uint8List?> {
}
mixin CropBordersRef on FutureProviderRef<Uint8List?> {
/// The parameter `datas` of this provider.
UChapDataPreload get datas;
/// The parameter `data` of this provider.
UChapDataPreload get data;
/// The parameter `cropBorder` of this provider.
bool get cropBorder;
@ -167,7 +167,7 @@ class _CropBordersProviderElement extends FutureProviderElement<Uint8List?>
_CropBordersProviderElement(super.provider);
@override
UChapDataPreload get datas => (origin as CropBordersProvider).datas;
UChapDataPreload get data => (origin as CropBordersProvider).data;
@override
bool get cropBorder => (origin as CropBordersProvider).cropBorder;
}

View file

@ -169,7 +169,7 @@ class _CurrentIndexProviderElement
Chapter get chapter => (origin as CurrentIndexProvider).chapter;
}
String _$readerControllerHash() => r'0b60b5d4cafa82d45d1e180969af0b7c982b1f82';
String _$readerControllerHash() => r'b334d7b508df43c66ce57f0d2bf7c59ea4bf3ff7';
abstract class _$ReaderController extends BuildlessAutoDisposeNotifier<void> {
late final Chapter chapter;

View file

@ -550,7 +550,7 @@ class _MangaChapterPageGalleryState
},
)
: ImageViewVertical(
datas:
data:
_uChapDataPreload[index],
failedToLoadImage: (value) {
// _failedToLoadImage.value = value;
@ -634,7 +634,7 @@ class _MangaChapterPageGalleryState
itemBuilder:
(BuildContext context, int index) {
return ImageViewCenter(
datas: _uChapDataPreload[index],
data: _uChapDataPreload[index],
loadStateChanged:
(ExtendedImageState state) {
if (state.extendedImageLoadState ==
@ -858,7 +858,7 @@ class _MangaChapterPageGalleryState
} else {
precacheImage(
ExtendedFileImageProvider(File(
"${_uChapDataPreload[index].path!.path}${padIndex(_uChapDataPreload[index].index! + 1)}.jpg")),
"${_uChapDataPreload[index].directory!.path}${padIndex(_uChapDataPreload[index].index! + 1)}.jpg")),
context);
}
}
@ -1255,7 +1255,7 @@ class _MangaChapterPageGalleryState
_cropBorderCheckList.add(i);
ref
.watch(cropBordersProvider(
datas: _uChapDataPreload[i], cropBorder: true)
data: _uChapDataPreload[i], cropBorder: true)
.future)
.then((value) {
_uChapDataPreload[i] = _uChapDataPreload[i]..cropImage = value;
@ -1272,7 +1272,7 @@ class _MangaChapterPageGalleryState
_cropBorderCheckList.add(index);
ref
.watch(cropBordersProvider(
datas: _uChapDataPreload[index], cropBorder: true)
data: _uChapDataPreload[index], cropBorder: true)
.future)
.then((value) {
_uChapDataPreload[index] = _uChapDataPreload[index]..cropImage = value;
@ -1285,7 +1285,7 @@ class _MangaChapterPageGalleryState
_uChapDataPreload[index].cropImage == null) {
ref
.watch(cropBordersProvider(
datas: _uChapDataPreload[index], cropBorder: true)
data: _uChapDataPreload[index], cropBorder: true)
.future)
.then((value) {
_uChapDataPreload[index] = _uChapDataPreload[index]
@ -2275,7 +2275,7 @@ class _MangaChapterPageGalleryState
class UChapDataPreload {
Chapter? chapter;
Directory? path;
Directory? directory;
String? url;
bool? isLocale;
Uint8List? archiveImage;
@ -2283,7 +2283,7 @@ class UChapDataPreload {
GetChapterPagesModel? chapterUrlModel;
int? pageIndex;
Uint8List? cropImage;
UChapDataPreload(this.chapter, this.path, this.url, this.isLocale,
UChapDataPreload(this.chapter, this.directory, this.url, this.isLocale,
this.archiveImage, this.index, this.chapterUrlModel, this.pageIndex,
{this.cropImage});
}

View file

@ -7,7 +7,7 @@ part of 'fetch_anime_sources.dart';
// **************************************************************************
String _$fetchAnimeSourcesListHash() =>
r'c84ceb974ca48efdaccd9e3fc44ce7aaab42f086';
r'd3bd9a4e8842f55c823ba355a8666b6ffedbb590';
/// Copied from Dart SDK
class _SystemHash {

View file

@ -7,7 +7,7 @@ part of 'fetch_manga_sources.dart';
// **************************************************************************
String _$fetchMangaSourcesListHash() =>
r'6eee9171e2fc6a27faa6350b074391b8250274b0';
r'f32cfd3a729d0659a98a35d06e3df940173bb077';
/// Copied from Dart SDK
class _SystemHash {

View file

@ -39,8 +39,8 @@ extension UChapDataPreloadExtensions on UChapDataPreload {
if (archiveImage != null) {
imageBytes = archiveImage;
} else if (isLocale!) {
imageBytes =
File('${path!.path}${padIndex(index! + 1)}.jpg').readAsBytesSync();
imageBytes = File('${directory!.path}${padIndex(index! + 1)}.jpg')
.readAsBytesSync();
} else {
File? cachedImage;
if (url != null) {