From d46d30a30b2c80f95d4d119b3d3455d7231e512a Mon Sep 17 00:00:00 2001 From: Schnitzel5 Date: Mon, 2 Dec 2024 23:04:52 +0100 Subject: [PATCH] add novel support --- .../extension/widgets/create_extension.dart | 41 +++++++++++++++---- .../widgets/extension_list_tile_widget.dart | 26 ++++++++---- lib/services/fetch_anime_sources.g.dart | 2 +- lib/services/fetch_manga_sources.g.dart | 2 +- lib/services/fetch_novel_sources.dart | 3 +- lib/services/fetch_novel_sources.g.dart | 2 +- 6 files changed, 55 insertions(+), 21 deletions(-) diff --git a/lib/modules/browse/extension/widgets/create_extension.dart b/lib/modules/browse/extension/widgets/create_extension.dart index 76cdf63..316f161 100644 --- a/lib/modules/browse/extension/widgets/create_extension.dart +++ b/lib/modules/browse/extension/widgets/create_extension.dart @@ -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 { - bool _isManga = false; String _name = ""; String _lang = ""; String _baseUrl = ""; String _apiUrl = ""; String _iconUrl = ""; int _sourceTypeIndex = 0; + int _itemTypeIndex = 0; int _languageIndex = 0; final List _sourceTypes = ["single", "multi", "torrent"]; + final List _itemTypes = ["Manga", "Anime", "Novel"]; final List _languages = ["Dart", "JavaScript"]; SourceCodeLanguage _sourceCodeLanguage = SourceCodeLanguage.dart; @override @@ -129,12 +131,35 @@ class _CreateExtensionState extends State { ], ), ), - 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 { apiUrl: _apiUrl, iconUrl: _iconUrl, typeSource: _sourceTypes[_sourceTypeIndex], - isManga: _isManga, + itemType: ItemType.values.elementAt(_itemTypeIndex), isAdded: true, isActive: true, version: "0.0.1", diff --git a/lib/modules/browse/extension/widgets/extension_list_tile_widget.dart b/lib/modules/browse/extension/widgets/extension_list_tile_widget.dart index 816fa10..c1ed5af 100644 --- a/lib/modules/browse/extension/widgets/extension_list_tile_widget.dart +++ b/lib/modules/browse/extension/widgets/extension_list_tile_widget.dart @@ -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; diff --git a/lib/services/fetch_anime_sources.g.dart b/lib/services/fetch_anime_sources.g.dart index 4a80780..3c1c4e6 100644 --- a/lib/services/fetch_anime_sources.g.dart +++ b/lib/services/fetch_anime_sources.g.dart @@ -7,7 +7,7 @@ part of 'fetch_anime_sources.dart'; // ************************************************************************** String _$fetchAnimeSourcesListHash() => - r'8fbe1642aee4d475583a1f04b2d236984c6fcfb4'; + r'75185e008e90491987fabb55851c536de89653a4'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/services/fetch_manga_sources.g.dart b/lib/services/fetch_manga_sources.g.dart index 44c0863..6bf219e 100644 --- a/lib/services/fetch_manga_sources.g.dart +++ b/lib/services/fetch_manga_sources.g.dart @@ -7,7 +7,7 @@ part of 'fetch_manga_sources.dart'; // ************************************************************************** String _$fetchMangaSourcesListHash() => - r'8bc08c334cfdba887227c154e249355f33e69da4'; + r'f66f3011e72a3b234d7729ef203fc5f255870db3'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/services/fetch_novel_sources.dart b/lib/services/fetch_novel_sources.dart index a37c892..ae9b6c9 100644 --- a/lib/services/fetch_novel_sources.dart +++ b/lib/services/fetch_novel_sources.dart @@ -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, diff --git a/lib/services/fetch_novel_sources.g.dart b/lib/services/fetch_novel_sources.g.dart index c234f06..c212a85 100644 --- a/lib/services/fetch_novel_sources.g.dart +++ b/lib/services/fetch_novel_sources.g.dart @@ -7,7 +7,7 @@ part of 'fetch_novel_sources.dart'; // ************************************************************************** String _$fetchNovelSourcesListHash() => - r'464573fff74edd4bf1f0bf36eb9ad44ef38accfc'; + r'cc4b989c0248c3b16155444c0c429d1ed0025ecb'; /// Copied from Dart SDK class _SystemHash {