add novel support

This commit is contained in:
Schnitzel5 2024-12-02 23:04:52 +01:00
parent 161750f5dc
commit d46d30a30b
6 changed files with 55 additions and 21 deletions

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:mangayomi/eval/dart/model/m_bridge.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
@ -13,15 +14,16 @@ class CreateExtension extends StatefulWidget {
}
class _CreateExtensionState extends State<CreateExtension> {
bool _isManga = false;
String _name = "";
String _lang = "";
String _baseUrl = "";
String _apiUrl = "";
String _iconUrl = "";
int _sourceTypeIndex = 0;
int _itemTypeIndex = 0;
int _languageIndex = 0;
final List<String> _sourceTypes = ["single", "multi", "torrent"];
final List<String> _itemTypes = ["Manga", "Anime", "Novel"];
final List<String> _languages = ["Dart", "JavaScript"];
SourceCodeLanguage _sourceCodeLanguage = SourceCodeLanguage.dart;
@override
@ -129,12 +131,35 @@ class _CreateExtensionState extends State<CreateExtension> {
],
),
),
SwitchListTile(
title: const Text("isManga"),
value: _isManga,
onChanged: (value) => setState(() {
_isManga = value;
}),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 17),
child: Row(
children: [
const Text("Target"),
const SizedBox(width: 20),
Flexible(
child: DropdownButton(
icon: const Icon(Icons.keyboard_arrow_down),
isExpanded: true,
value: _itemTypeIndex,
hint: Text(_itemTypes[_itemTypeIndex],
style: const TextStyle(fontSize: 13)),
items: _itemTypes
.map((e) => DropdownMenuItem(
value: _itemTypes.indexOf(e),
child: Text(e,
style: const TextStyle(fontSize: 13)),
))
.toList(),
onChanged: (v) {
setState(() {
_itemTypeIndex = v!;
});
},
),
),
],
),
),
Padding(
padding: const EdgeInsets.all(8.0),
@ -159,7 +184,7 @@ class _CreateExtensionState extends State<CreateExtension> {
apiUrl: _apiUrl,
iconUrl: _iconUrl,
typeSource: _sourceTypes[_sourceTypeIndex],
isManga: _isManga,
itemType: ItemType.values.elementAt(_itemTypeIndex),
isAdded: true,
isActive: true,
version: "0.0.1",

View file

@ -2,10 +2,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/services/fetch_anime_sources.dart';
import 'package:mangayomi/services/fetch_manga_sources.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/services/fetch_novel_sources.dart';
import 'package:mangayomi/services/fetch_sources_list.dart';
import 'package:mangayomi/utils/cached_network.dart';
import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
@ -48,13 +50,17 @@ class _ExtensionListTileWidgetState
setState(() {
_isLoading = true;
});
widget.source.isManga!
widget.source.itemType == ItemType.manga
? await ref.watch(fetchMangaSourcesListProvider(
id: widget.source.id, reFresh: true)
.future)
: await ref.watch(fetchAnimeSourcesListProvider(
id: widget.source.id, reFresh: true)
.future);
: widget.source.itemType == ItemType.anime
? await ref.watch(fetchAnimeSourcesListProvider(
id: widget.source.id, reFresh: true)
.future)
: await ref.watch(fetchNovelSourcesListProvider(
id: widget.source.id, reFresh: true)
.future);
if (mounted) {
setState(() {
_isLoading = false;
@ -115,13 +121,17 @@ class _ExtensionListTileWidgetState
setState(() {
_isLoading = true;
});
widget.source.isManga!
widget.source.itemType == ItemType.manga
? await ref.watch(fetchMangaSourcesListProvider(
id: widget.source.id, reFresh: true)
.future)
: await ref.watch(fetchAnimeSourcesListProvider(
id: widget.source.id, reFresh: true)
.future);
: widget.source.itemType == ItemType.anime
? await ref.watch(fetchAnimeSourcesListProvider(
id: widget.source.id, reFresh: true)
.future)
: await ref.watch(fetchNovelSourcesListProvider(
id: widget.source.id, reFresh: true)
.future);
if (mounted) {
setState(() {
_isLoading = false;

View file

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

View file

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

View file

@ -9,10 +9,9 @@ part 'fetch_novel_sources.g.dart';
Future fetchNovelSourcesList(Ref ref,
{int? id, required reFresh}) async {
if (ref.watch(checkForExtensionsUpdateStateProvider) || reFresh) {
return;
await fetchSourcesList(
sourcesIndexUrl:
"https://kodjodevf.github.io/mangayomi-extensions/novel_index.json",
"https://raw.githubusercontent.com/Schnitzel5/mangayomi-extensions/refs/heads/main/novel_index.json",
refresh: reFresh,
id: id,
ref: ref,

View file

@ -7,7 +7,7 @@ part of 'fetch_novel_sources.dart';
// **************************************************************************
String _$fetchNovelSourcesListHash() =>
r'464573fff74edd4bf1f0bf36eb9ad44ef38accfc';
r'cc4b989c0248c3b16155444c0c429d1ed0025ecb';
/// Copied from Dart SDK
class _SystemHash {