+
This commit is contained in:
parent
10fabff5b8
commit
e55cc03525
8 changed files with 203 additions and 3 deletions
|
|
@ -32,6 +32,11 @@ class $MProvider extends MProvider with $Bridge<MProvider> {
|
|||
'': BridgeConstructorDef(
|
||||
BridgeFunctionDef(returns: BridgeTypeAnnotation($type)))
|
||||
},
|
||||
getters: {
|
||||
'supportsLatest': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)),
|
||||
)),
|
||||
},
|
||||
methods: {
|
||||
'getLatestUpdates': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
|
|
@ -949,6 +954,9 @@ class $MProvider extends MProvider with $Bridge<MProvider> {
|
|||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
bool get supportsLatest => $_get('supportsLatest');
|
||||
|
||||
@override
|
||||
Future<MManga> getDetail(MSource source, String url) async =>
|
||||
await $_invoke('getDetail', [$MSource.wrap(source), $String(url)]);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import 'package:mangayomi/models/video.dart';
|
|||
abstract class MProvider {
|
||||
MProvider();
|
||||
|
||||
bool get supportsLatest => true;
|
||||
|
||||
Future<MPages> getLatestUpdates(MSource source, int page);
|
||||
|
||||
Future<MPages> getPopular(MSource source, int page);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'download_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$downloadChapterHash() => r'5d6f104706b7f29989ef52b67eccfb4142584777';
|
||||
String _$downloadChapterHash() => r'dcb0ade7f80a1ec593667e7311cdafc2d31222cf';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import 'package:mangayomi/services/get_filter_list.dart';
|
|||
import 'package:mangayomi/services/get_latest_updates.dart';
|
||||
import 'package:mangayomi/services/get_popular.dart';
|
||||
import 'package:mangayomi/services/search.dart';
|
||||
import 'package:mangayomi/services/supports_latest.dart';
|
||||
import 'package:mangayomi/utils/colors.dart';
|
||||
import 'package:mangayomi/utils/media_query.dart';
|
||||
import 'package:mangayomi/modules/library/widgets/search_text_form_field.dart';
|
||||
|
|
@ -103,6 +104,8 @@ class _MangaHomeScreenState extends ConsumerState<MangaHomeScreen> {
|
|||
bool _isFiltering = false;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final supportsLatest =
|
||||
ref.watch(supportsLatestProvider(source: widget.source));
|
||||
final filterList = getFilterList(source: widget.source);
|
||||
if (_selectedIndex == 2 && (_isSearch && _query.isNotEmpty) ||
|
||||
_isFiltering) {
|
||||
|
|
@ -196,6 +199,9 @@ class _MangaHomeScreenState extends ConsumerState<MangaHomeScreen> {
|
|||
if (filterList.isEmpty && index == 2) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
if (!supportsLatest && index == 1) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return MangasCardSelector(
|
||||
icon: _types(context)[index].icon,
|
||||
selected: _selectedIndex == index,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'check_for_update.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$checkForUpdateHash() => r'e32dea3bda782fc470006c1d3758b523629a091d';
|
||||
String _$checkForUpdateHash() => r'2c53166482e6584a6004d6788beb7d27d89bc67c';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'get_video_list.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getVideoListHash() => r'aafdf726ba8dd830fea1f9a2784012258bf541bb';
|
||||
String _$getVideoListHash() => r'924c2961d148f9ebb0952239c0528d5269a4526a';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
26
lib/services/supports_latest.dart
Normal file
26
lib/services/supports_latest.dart
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import 'package:mangayomi/eval/compiler/compiler.dart';
|
||||
import 'package:mangayomi/eval/model/m_provider.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/eval/runtime/runtime.dart';
|
||||
import 'package:mangayomi/sources/source_test.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'supports_latest.g.dart';
|
||||
|
||||
@riverpod
|
||||
bool supportsLatest(SupportsLatestRef ref, {required Source source}) {
|
||||
bool? supportsLatest;
|
||||
|
||||
try {
|
||||
final bytecode =
|
||||
compilerEval(useTestSourceCode ? testSourceCode : source.sourceCode!);
|
||||
|
||||
final runtime = runtimeEval(bytecode);
|
||||
|
||||
var res = runtime.executeLib('package:mangayomi/main.dart', 'main');
|
||||
supportsLatest = (res as MProvider).supportsLatest;
|
||||
} catch (e) {
|
||||
supportsLatest = true;
|
||||
}
|
||||
|
||||
return supportsLatest;
|
||||
}
|
||||
158
lib/services/supports_latest.g.dart
Normal file
158
lib/services/supports_latest.g.dart
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'supports_latest.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$supportsLatestHash() => r'14d8db1a09da5467ba96f3d62a80fdd44d303b9c';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
_SystemHash._();
|
||||
|
||||
static int combine(int hash, int value) {
|
||||
// ignore: parameter_assignments
|
||||
hash = 0x1fffffff & (hash + value);
|
||||
// ignore: parameter_assignments
|
||||
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
|
||||
return hash ^ (hash >> 6);
|
||||
}
|
||||
|
||||
static int finish(int hash) {
|
||||
// ignore: parameter_assignments
|
||||
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
|
||||
// ignore: parameter_assignments
|
||||
hash = hash ^ (hash >> 11);
|
||||
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
|
||||
}
|
||||
}
|
||||
|
||||
/// See also [supportsLatest].
|
||||
@ProviderFor(supportsLatest)
|
||||
const supportsLatestProvider = SupportsLatestFamily();
|
||||
|
||||
/// See also [supportsLatest].
|
||||
class SupportsLatestFamily extends Family<bool> {
|
||||
/// See also [supportsLatest].
|
||||
const SupportsLatestFamily();
|
||||
|
||||
/// See also [supportsLatest].
|
||||
SupportsLatestProvider call({
|
||||
required Source source,
|
||||
}) {
|
||||
return SupportsLatestProvider(
|
||||
source: source,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
SupportsLatestProvider getProviderOverride(
|
||||
covariant SupportsLatestProvider provider,
|
||||
) {
|
||||
return call(
|
||||
source: provider.source,
|
||||
);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'supportsLatestProvider';
|
||||
}
|
||||
|
||||
/// See also [supportsLatest].
|
||||
class SupportsLatestProvider extends AutoDisposeProvider<bool> {
|
||||
/// See also [supportsLatest].
|
||||
SupportsLatestProvider({
|
||||
required Source source,
|
||||
}) : this._internal(
|
||||
(ref) => supportsLatest(
|
||||
ref as SupportsLatestRef,
|
||||
source: source,
|
||||
),
|
||||
from: supportsLatestProvider,
|
||||
name: r'supportsLatestProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$supportsLatestHash,
|
||||
dependencies: SupportsLatestFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
SupportsLatestFamily._allTransitiveDependencies,
|
||||
source: source,
|
||||
);
|
||||
|
||||
SupportsLatestProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.source,
|
||||
}) : super.internal();
|
||||
|
||||
final Source source;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
bool Function(SupportsLatestRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: SupportsLatestProvider._internal(
|
||||
(ref) => create(ref as SupportsLatestRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
source: source,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeProviderElement<bool> createElement() {
|
||||
return _SupportsLatestProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is SupportsLatestProvider && other.source == source;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, source.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
}
|
||||
|
||||
mixin SupportsLatestRef on AutoDisposeProviderRef<bool> {
|
||||
/// The parameter `source` of this provider.
|
||||
Source get source;
|
||||
}
|
||||
|
||||
class _SupportsLatestProviderElement extends AutoDisposeProviderElement<bool>
|
||||
with SupportsLatestRef {
|
||||
_SupportsLatestProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Source get source => (origin as SupportsLatestProvider).source;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
Loading…
Reference in a new issue