mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-20 19:12:04 +00:00
Merge remote-tracking branch 'upstream/main'
This commit is contained in:
commit
3060663e2b
42 changed files with 160 additions and 42 deletions
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "بحث النوع في المكتبة",
|
||||
"genre_search_source": "تصفح في المصدر",
|
||||
"source_not_added": "المصدر غير مثبت!",
|
||||
"load_own_subtitles": "تحميل الترجمة الخاصة بك..."
|
||||
"load_own_subtitles": "تحميل الترجمة الخاصة بك...",
|
||||
"unsupported_repo": "لقد حاولت إضافة مستودع غير مدعوم. يرجى التحقق من خادم الخلاف للحصول على الدعم!"
|
||||
}
|
||||
|
|
@ -465,5 +465,6 @@
|
|||
"clear_all_sources_msg": "Dies wird alle Quellen der Anwendung vollständig löschen. Möchten Sie wirklich fortfahren?",
|
||||
"sources_cleared": "Quellen gelöscht!",
|
||||
"add_repo": "Repository hinzufügen?",
|
||||
"extension_notes": "Hinweis: {notes}"
|
||||
"extension_notes": "Hinweis: {notes}",
|
||||
"unsupported_repo": "Du hast gerade versucht, ein ungültiges Repository hinzuzufügen. Bitte schau mal beim Discord Server vorbei!"
|
||||
}
|
||||
|
|
@ -465,5 +465,6 @@
|
|||
"genre_search_source": "Browse in source",
|
||||
"source_not_added": "Source is not installed!",
|
||||
"load_own_subtitles": "Load your own subtitles...",
|
||||
"extension_notes": "Notes: {notes}"
|
||||
"extension_notes": "Notes: {notes}",
|
||||
"unsupported_repo": "You've tried to add an unsupported repository. Please check the discord server for support!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Buscar género en la biblioteca",
|
||||
"genre_search_source": "Explorar en la fuente",
|
||||
"source_not_added": "¡La fuente no está instalada!",
|
||||
"load_own_subtitles": "Cargar tus propios subtítulos..."
|
||||
"load_own_subtitles": "Cargar tus propios subtítulos...",
|
||||
"unsupported_repo": "Has intentado añadir un repositorio no soportado. Por favor, ¡consulta el servidor discord para soporte!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Buscar género en la biblioteca",
|
||||
"genre_search_source": "Explorar en la fuente",
|
||||
"source_not_added": "¡La fuente no está instalada!",
|
||||
"load_own_subtitles": "Cargar tus propios subtítulos..."
|
||||
"load_own_subtitles": "Cargar tus propios subtítulos...",
|
||||
"unsupported_repo": "Has intentado añadir un repositorio no soportado. Por favor, ¡consulta el servidor discord para soporte!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Rechercher un genre dans la bibliothèque",
|
||||
"genre_search_source": "Explorer dans la source",
|
||||
"source_not_added": "La source n'est pas installée !",
|
||||
"load_own_subtitles": "Charger vos propres sous-titres..."
|
||||
"load_own_subtitles": "Charger vos propres sous-titres...",
|
||||
"unsupported_repo": "Vous avez essayé d'ajouter un dépôt qui n'est pas pris en charge. Veuillez consulter le serveur discord pour obtenir de l'aide!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Cari genre di perpustakaan",
|
||||
"genre_search_source": "Jelajahi di sumber",
|
||||
"source_not_added": "Sumber tidak diinstal!",
|
||||
"load_own_subtitles": "Muat subtitle Anda sendiri..."
|
||||
"load_own_subtitles": "Muat subtitle Anda sendiri...",
|
||||
"unsupported_repo": "Anda telah mencoba menambahkan repositori yang tidak didukung. Silakan periksa server discord untuk mendapatkan dukungan!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Cerca genere nella libreria",
|
||||
"genre_search_source": "Esplora nella fonte",
|
||||
"source_not_added": "La fonte non è installata!",
|
||||
"load_own_subtitles": "Carica i tuoi sottotitoli..."
|
||||
"load_own_subtitles": "Carica i tuoi sottotitoli...",
|
||||
"unsupported_repo": "Hai provato ad aggiungere un repository non supportato. Controlla il server discord per ricevere supporto!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Pesquisar gênero na biblioteca",
|
||||
"genre_search_source": "Explorar na fonte",
|
||||
"source_not_added": "A fonte não está instalada!",
|
||||
"load_own_subtitles": "Carregar suas próprias legendas..."
|
||||
"load_own_subtitles": "Carregar suas próprias legendas...",
|
||||
"unsupported_repo": "Tentou adicionar um repositório não suportado. Por favor, verifique o servidor discord para obter suporte!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Pesquisar gênero na biblioteca",
|
||||
"genre_search_source": "Explorar na fonte",
|
||||
"source_not_added": "A fonte não está instalada!",
|
||||
"load_own_subtitles": "Carregar suas próprias legendas..."
|
||||
"load_own_subtitles": "Carregar suas próprias legendas...",
|
||||
"unsupported_repo": "Você tentou adicionar um repositório sem suporte. Consulte o servidor do Discord para obter suporte!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Поиск жанра в библиотеке",
|
||||
"genre_search_source": "Просмотр в источнике",
|
||||
"source_not_added": "Источник не установлен!",
|
||||
"load_own_subtitles": "Загрузить свои собственные субтитры..."
|
||||
"load_own_subtitles": "Загрузить свои собственные субтитры...",
|
||||
"unsupported_repo": "Вы попытались добавить неподдерживаемый репозиторий. Пожалуйста, обратитесь за поддержкой на сервер discord!"
|
||||
}
|
||||
|
|
@ -466,5 +466,6 @@
|
|||
"genre_search_library": "ค้นหาประเภทในห้องสมุด",
|
||||
"genre_search_source": "เรียกดูในแหล่งข้อมูล",
|
||||
"source_not_added": "แหล่งข้อมูลไม่ได้ติดตั้ง!",
|
||||
"load_own_subtitles": "โหลดคำบรรยายของคุณเอง..."
|
||||
"load_own_subtitles": "โหลดคำบรรยายของคุณเอง...",
|
||||
"unsupported_repo": "คุณพยายามเพิ่มที่เก็บข้อมูลที่ไม่รองรับ โปรดตรวจสอบเซิร์ฟเวอร์ Discord เพื่อรับการสนับสนุน!"
|
||||
}
|
||||
|
|
@ -463,5 +463,6 @@
|
|||
"genre_search_library": "Kütüphanede tür ara",
|
||||
"genre_search_source": "Kaynağı keşfet",
|
||||
"source_not_added": "Kaynak yüklenmedi!",
|
||||
"load_own_subtitles": "Kendi altyazılarınızı yükleyin..."
|
||||
"load_own_subtitles": "Kendi altyazılarınızı yükleyin...",
|
||||
"unsupported_repo": "Desteklenmeyen bir depo eklemeye çalıştınız. Lütfen destek için discord sunucusunu kontrol edin!"
|
||||
}
|
||||
|
|
@ -468,5 +468,6 @@
|
|||
"genre_search_library": "按类别搜索图书馆",
|
||||
"genre_search_source": "按类别搜索来源",
|
||||
"source_not_added": "来源未添加",
|
||||
"load_own_subtitles": "加载自定义字幕"
|
||||
"load_own_subtitles": "加载自定义字幕",
|
||||
"unsupported_repo": "您试图添加不支持的版本库。请查看 discord 服务器以获得支持!"
|
||||
}
|
||||
|
|
@ -2912,6 +2912,12 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Notes: {notes}'**
|
||||
String extension_notes(Object notes);
|
||||
|
||||
/// No description provided for @unsupported_repo.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'You\'ve tried to add an unsupported repository. Please check the discord server for support!'**
|
||||
String get unsupported_repo;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsAr extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'لقد حاولت إضافة مستودع غير مدعوم. يرجى التحقق من خادم الخلاف للحصول على الدعم!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Hinweis: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Du hast gerade versucht, ein ungültiges Repository hinzuzufügen. Bitte schau mal beim Discord Server vorbei!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'You\'ve tried to add an unsupported repository. Please check the discord server for support!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,6 +1455,9 @@ class AppLocalizationsEs extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Has intentado añadir un repositorio no soportado. Por favor, ¡consulta el servidor discord para soporte!';
|
||||
}
|
||||
|
||||
/// The translations for Spanish Castilian, as used in Latin America and the Caribbean (`es_419`).
|
||||
|
|
@ -2894,4 +2897,7 @@ class AppLocalizationsEs419 extends AppLocalizationsEs {
|
|||
|
||||
@override
|
||||
String get load_own_subtitles => 'Cargar tus propios subtítulos...';
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Has intentado añadir un repositorio no soportado. Por favor, ¡consulta el servidor discord para soporte!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsFr extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Vous avez essayé d\'ajouter un dépôt qui n\'est pas pris en charge. Veuillez consulter le serveur discord pour obtenir de l\'aide!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsId extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Anda telah mencoba menambahkan repositori yang tidak didukung. Silakan periksa server discord untuk mendapatkan dukungan!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsIt extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Hai provato ad aggiungere un repository non supportato. Controlla il server discord per ricevere supporto!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,6 +1455,9 @@ class AppLocalizationsPt extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Tentou adicionar um repositório não suportado. Por favor, verifique o servidor discord para obter suporte!';
|
||||
}
|
||||
|
||||
/// The translations for Portuguese, as used in Brazil (`pt_BR`).
|
||||
|
|
@ -2894,4 +2897,7 @@ class AppLocalizationsPtBr extends AppLocalizationsPt {
|
|||
|
||||
@override
|
||||
String get load_own_subtitles => 'Carregar suas próprias legendas...';
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Você tentou adicionar um repositório sem suporte. Consulte o servidor do Discord para obter suporte!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsRu extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Вы попытались добавить неподдерживаемый репозиторий. Пожалуйста, обратитесь за поддержкой на сервер discord!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsTh extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'คุณพยายามเพิ่มที่เก็บข้อมูลที่ไม่รองรับ โปรดตรวจสอบเซิร์ฟเวอร์ Discord เพื่อรับการสนับสนุน!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsTr extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => 'Desteklenmeyen bir depo eklemeye çalıştınız. Lütfen destek için discord sunucusunu kontrol edin!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1455,4 +1455,7 @@ class AppLocalizationsZh extends AppLocalizations {
|
|||
String extension_notes(Object notes) {
|
||||
return 'Notes: $notes';
|
||||
}
|
||||
|
||||
@override
|
||||
String get unsupported_repo => '您试图添加不支持的版本库。请查看 discord 服务器以获得支持!';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:app_links/app_links.dart';
|
||||
import 'package:bot_toast/bot_toast.dart';
|
||||
|
|
@ -12,6 +13,7 @@ import 'package:isar/isar.dart';
|
|||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/modules/more/data_and_storage/providers/storage_usage.dart';
|
||||
import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart';
|
||||
import 'package:mangayomi/providers/l10n_providers.dart';
|
||||
|
|
@ -19,6 +21,7 @@ import 'package:mangayomi/providers/storage_provider.dart';
|
|||
import 'package:mangayomi/router/router.dart';
|
||||
import 'package:mangayomi/modules/more/settings/appearance/providers/theme_mode_state_provider.dart';
|
||||
import 'package:mangayomi/l10n/generated/app_localizations.dart';
|
||||
import 'package:mangayomi/services/http/m_client.dart';
|
||||
import 'package:mangayomi/src/rust/frb_generated.dart';
|
||||
import 'package:mangayomi/utils/url_protocol/api.dart';
|
||||
import 'package:mangayomi/modules/more/settings/appearance/providers/theme_provider.dart';
|
||||
|
|
@ -160,8 +163,19 @@ class _MyAppState extends ConsumerState<MyApp> {
|
|||
),
|
||||
FilledButton(
|
||||
child: Text(l10n.add),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
onPressed: () async {
|
||||
if (context.mounted) Navigator.of(context).pop();
|
||||
|
||||
final validUrls = await _checkValidUrls([
|
||||
...mangaRepoUrls ?? [],
|
||||
...animeRepoUrls ?? [],
|
||||
...novelRepoUrls ?? [],
|
||||
]);
|
||||
|
||||
if (!validUrls) {
|
||||
botToast(l10n.unsupported_repo);
|
||||
return;
|
||||
}
|
||||
|
||||
void addRepos(ItemType type, List<String>? urls) {
|
||||
if (urls == null) return;
|
||||
|
|
@ -198,4 +212,22 @@ class _MyAppState extends ConsumerState<MyApp> {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
Future<bool> _checkValidUrls(List<String> urls) async {
|
||||
final http = MClient.init(reqcopyWith: {'useDartHttpClient': true});
|
||||
for (final url in urls) {
|
||||
final req = await http.get(Uri.parse(url));
|
||||
try {
|
||||
final sourceList = (jsonDecode(req.body) as List).map(
|
||||
(e) => Source.fromJson(e),
|
||||
);
|
||||
if (sourceList.firstOrNull?.name == null) {
|
||||
return false;
|
||||
}
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'file_scanner.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$scanLocalLibraryHash() => r'8a80e2582c4abda500034c9e139cdb8be58942e7';
|
||||
String _$scanLocalLibraryHash() => r'7e028c45097e5802ee974d9f0c5a2bc540bba91c';
|
||||
|
||||
/// Scans `Mangayomi/local` folder (if exists) for Mangas/Animes and imports in library.
|
||||
///
|
||||
|
|
@ -29,10 +29,9 @@ String _$scanLocalLibraryHash() => r'8a80e2582c4abda500034c9e139cdb8be58942e7';
|
|||
final scanLocalLibraryProvider = AutoDisposeFutureProvider<void>.internal(
|
||||
scanLocalLibrary,
|
||||
name: r'scanLocalLibraryProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$scanLocalLibraryHash,
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$scanLocalLibraryHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'track_state_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$trackStateHash() => r'1aecb0459141daa3e44fe3bbf6b49c0992b5f8bc';
|
||||
String _$trackStateHash() => r'4d31a8a939412cabd800f9747bff7a1ac0ef1996';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'update_manga_detail_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$updateMangaDetailHash() => r'47fb1d79d48c4832fa7027ea76020044eb1fa2b4';
|
||||
String _$updateMangaDetailHash() => r'98557168ef42d117f52ac5d92810dd5ae562cb53';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ class _AddDownloadToQueueProviderElement
|
|||
Chapter get chapter => (origin as AddDownloadToQueueProvider).chapter;
|
||||
}
|
||||
|
||||
String _$downloadChapterHash() => r'd20136bb2b86f930c3c48bc0dd07b16eaf1de133';
|
||||
String _$downloadChapterHash() => r'ee2f93aaa7fd64b46d5ce729d1e58ba20a6fa0fc';
|
||||
|
||||
/// See also [downloadChapter].
|
||||
@ProviderFor(downloadChapter)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'restore.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$doRestoreHash() => r'd60314f193636cc87fecc8d21d1a83d735cd75e1';
|
||||
String _$doRestoreHash() => r'196cb936fe7bfcb6535f5e6b4d86e0c77064f45e';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ part of 'storage_usage.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$totalChapterCacheSizeStateHash() =>
|
||||
r'83bf78de5ef674d61d3a9311061ef0933e59109b';
|
||||
r'bb403516c1d94652146d0a38101b51ffe8ea72f8';
|
||||
|
||||
/// See also [TotalChapterCacheSizeState].
|
||||
@ProviderFor(TotalChapterCacheSizeState)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
import 'dart:convert';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:http/http.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/settings.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/services/fetch_novel_sources.dart';
|
||||
|
|
@ -104,20 +106,39 @@ class CheckForExtensionsUpdateState extends _$CheckForExtensionsUpdateState {
|
|||
}
|
||||
|
||||
@riverpod
|
||||
Future<Repo> getRepoInfos(Ref ref, {required String jsonUrl}) async {
|
||||
Future<Repo?> getRepoInfos(Ref ref, {required String jsonUrl}) async {
|
||||
final http = MClient.init(reqcopyWith: {'useDartHttpClient': true});
|
||||
|
||||
Map<String, dynamic> infos = {};
|
||||
final match = RegExp(r'^(.*)/[^/]+\.json$').firstMatch(jsonUrl);
|
||||
|
||||
final res = await http.get(Uri.parse(jsonUrl));
|
||||
if (!_checkValidUrl(res)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (match != null) {
|
||||
String url = match.group(1)!;
|
||||
final req = await http.get(Uri.parse("$url/repo.json"));
|
||||
if (req.statusCode == 200) {
|
||||
infos.addAll(jsonDecode(req.body));
|
||||
final res = await http.get(Uri.parse("$url/repo.json"));
|
||||
if (res.statusCode == 200) {
|
||||
infos.addAll(jsonDecode(res.body));
|
||||
}
|
||||
}
|
||||
|
||||
infos["jsonUrl"] = jsonUrl;
|
||||
return Repo.fromJson(infos);
|
||||
}
|
||||
|
||||
bool _checkValidUrl(Response res) {
|
||||
try {
|
||||
final sourceList = (jsonDecode(res.body) as List).map(
|
||||
(e) => Source.fromJson(e),
|
||||
);
|
||||
if (sourceList.firstOrNull?.name == null) {
|
||||
return false;
|
||||
}
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'browse_state_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getRepoInfosHash() => r'250bc0082ac2841114d6f1815303955b8798240e';
|
||||
String _$getRepoInfosHash() => r'aae66dfcaadf7f59867fbc599b900862ef1dd3e7';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -34,7 +34,7 @@ class _SystemHash {
|
|||
const getRepoInfosProvider = GetRepoInfosFamily();
|
||||
|
||||
/// See also [getRepoInfos].
|
||||
class GetRepoInfosFamily extends Family<AsyncValue<Repo>> {
|
||||
class GetRepoInfosFamily extends Family<AsyncValue<Repo?>> {
|
||||
/// See also [getRepoInfos].
|
||||
const GetRepoInfosFamily();
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ class GetRepoInfosFamily extends Family<AsyncValue<Repo>> {
|
|||
}
|
||||
|
||||
/// See also [getRepoInfos].
|
||||
class GetRepoInfosProvider extends AutoDisposeFutureProvider<Repo> {
|
||||
class GetRepoInfosProvider extends AutoDisposeFutureProvider<Repo?> {
|
||||
/// See also [getRepoInfos].
|
||||
GetRepoInfosProvider({
|
||||
required String jsonUrl,
|
||||
|
|
@ -107,7 +107,7 @@ class GetRepoInfosProvider extends AutoDisposeFutureProvider<Repo> {
|
|||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<Repo> Function(GetRepoInfosRef provider) create,
|
||||
FutureOr<Repo?> Function(GetRepoInfosRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
|
|
@ -124,7 +124,7 @@ class GetRepoInfosProvider extends AutoDisposeFutureProvider<Repo> {
|
|||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<Repo> createElement() {
|
||||
AutoDisposeFutureProviderElement<Repo?> createElement() {
|
||||
return _GetRepoInfosProviderElement(this);
|
||||
}
|
||||
|
||||
|
|
@ -144,13 +144,13 @@ class GetRepoInfosProvider extends AutoDisposeFutureProvider<Repo> {
|
|||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetRepoInfosRef on AutoDisposeFutureProviderRef<Repo> {
|
||||
mixin GetRepoInfosRef on AutoDisposeFutureProviderRef<Repo?> {
|
||||
/// The parameter `jsonUrl` of this provider.
|
||||
String get jsonUrl;
|
||||
}
|
||||
|
||||
class _GetRepoInfosProviderElement
|
||||
extends AutoDisposeFutureProviderElement<Repo> with GetRepoInfosRef {
|
||||
extends AutoDisposeFutureProviderElement<Repo?> with GetRepoInfosRef {
|
||||
_GetRepoInfosProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
|
|
|
|||
|
|
@ -290,6 +290,10 @@ class _SourceRepositoriesState extends ConsumerState<SourceRepositories> {
|
|||
jsonUrl: controller.text,
|
||||
).future,
|
||||
);
|
||||
if (repo == null) {
|
||||
botToast(l10n.unsupported_repo);
|
||||
return;
|
||||
}
|
||||
mangaRepos.add(repo);
|
||||
ref
|
||||
.read(
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'get_chapter_pages.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getChapterPagesHash() => r'5b18b20360abecf1125f27c32b10977dd18f1831';
|
||||
String _$getChapterPagesHash() => r'7ec8b6adb94e33df9b5374bd423f7864a4c2f8ef';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'get_html_content.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getHtmlContentHash() => r'c88d61e16b50cef52da04efc5c53de7390f4910d';
|
||||
String _$getHtmlContentHash() => r'6bdc17222f959cb5f91b56027d4f98e26571175d';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'anilist.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$anilistHash() => r'ddd07acc8d28d2aa95c942566109e9393ca9e5ed';
|
||||
String _$anilistHash() => r'd672e47052f0b40088dd477b7918dc1e06654b48';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'kitsu.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$kitsuHash() => r'09e9b9599bd536b94ca24bc087c8e9310d2b9ef9';
|
||||
String _$kitsuHash() => r'40d57c539caed9208081f3330472a75dbf9ff8f9';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'myanimelist.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$myAnimeListHash() => r'6cdb81f9bff9bd510d822e81408f36894a517f1b';
|
||||
String _$myAnimeListHash() => r'a7d644ee61119350613a9cff2fbe87dbd2f98912';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
Loading…
Reference in a new issue