From f99bc996b1104671ee8e6f72c57def36a12659fd Mon Sep 17 00:00:00 2001 From: kodjomoustapha <107993382+kodjodevf@users.noreply.github.com> Date: Thu, 19 Dec 2024 17:52:47 +0100 Subject: [PATCH] fix --- lib/eval/dart/bridge/m_provider.dart | 11 +---- .../manga/detail/manga_detail_view.dart | 45 +++++++++++-------- lib/modules/manga/reader/reader_view.dart | 14 +++--- lib/utils/extensions/string_extensions.dart | 12 +++++ 4 files changed, 48 insertions(+), 34 deletions(-) diff --git a/lib/eval/dart/bridge/m_provider.dart b/lib/eval/dart/bridge/m_provider.dart index 814cda2..25ff0b8 100644 --- a/lib/eval/dart/bridge/m_provider.dart +++ b/lib/eval/dart/bridge/m_provider.dart @@ -17,6 +17,7 @@ import 'package:mangayomi/eval/dart/model/m_provider.dart'; import 'package:mangayomi/eval/javascript/http.dart'; import 'package:mangayomi/models/video.dart'; import 'package:mangayomi/modules/browse/extension/providers/extension_preferences_providers.dart'; +import 'package:mangayomi/utils/extensions/string_extensions.dart'; import 'package:mangayomi/utils/log/log.dart'; class $MProvider extends MProvider with $Bridge { @@ -854,15 +855,7 @@ class $MProvider extends MProvider with $Bridge { .then((value) => $String(value.stringResult))); }), 'getUrlWithoutDomain' => $Function((_, __, List<$Value?> args) { - final uri = Uri.parse(args[0]!.$value.replaceAll(' ', '%20')); - String out = uri.path; - if (uri.query.isNotEmpty) { - out += '?${uri.query}'; - } - if (uri.fragment.isNotEmpty) { - out += '#${uri.fragment}'; - } - return $String(out); + return $String((args[0]!.$value as String).getUrlWithoutDomain); }), 'parseHtml' => $Function((_, __, List<$Value?> args) { final res = MBridge.parsHtml(args[0]!.$reified); diff --git a/lib/modules/manga/detail/manga_detail_view.dart b/lib/modules/manga/detail/manga_detail_view.dart index f694137..f729fb6 100644 --- a/lib/modules/manga/detail/manga_detail_view.dart +++ b/lib/modules/manga/detail/manga_detail_view.dart @@ -28,7 +28,7 @@ import 'package:mangayomi/modules/widgets/custom_draggable_tabbar.dart'; import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/storage_provider.dart'; -import 'package:mangayomi/services/get_source_baseurl.dart'; +import 'package:mangayomi/utils/extensions/string_extensions.dart'; import 'package:mangayomi/utils/utils.dart'; import 'package:mangayomi/utils/cached_network.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; @@ -382,23 +382,32 @@ class _MangaDetailViewState extends ConsumerState return [ PopupMenuItem( value: 0, - child: Text( - widget.isManga ? context.l10n.next_chapter : context.l10n.next_episode)), + child: Text(widget.isManga + ? context.l10n.next_chapter + : context.l10n.next_episode)), PopupMenuItem( value: 1, - child: Text( - widget.isManga ? context.l10n.next_5_chapters : context.l10n.next_5_episodes)), + child: Text(widget.isManga + ? context.l10n.next_5_chapters + : context + .l10n.next_5_episodes)), PopupMenuItem( value: 2, - child: Text( - widget.isManga ? context.l10n.next_10_chapters : context.l10n.next_10_episodes)), + child: Text(widget.isManga + ? context.l10n.next_10_chapters + : context + .l10n.next_10_episodes)), PopupMenuItem( value: 3, - child: Text( - widget.isManga ? context.l10n.next_25_chapters : context.l10n.next_25_episodes)), + child: Text(widget.isManga + ? context.l10n.next_25_chapters + : context + .l10n.next_25_episodes)), PopupMenuItem( value: 4, - child: Text(widget.isManga ? context.l10n.unread : context.l10n.unwatched)), + child: Text(widget.isManga + ? context.l10n.unread + : context.l10n.unwatched)), ]; }, onSelected: (value) { @@ -519,8 +528,8 @@ class _MangaDetailViewState extends ConsumerState final source = getSource( widget.manga!.lang!, widget.manga!.source!); - String url = "${source?.baseUrl}${widget.manga!.link!}"; - + final url = + "${source!.baseUrl}${widget.manga!.link!.getUrlWithoutDomain}"; Share.share(url); } }), @@ -1184,7 +1193,8 @@ class _MangaDetailViewState extends ConsumerState ), RadioListTile( dense: true, - title: Text(widget.isManga ? l10n.chapter_number : l10n.episode_number), + title: Text( + widget.isManga ? l10n.chapter_number : l10n.episode_number), value: "ej", groupValue: "e", selected: false, @@ -1548,12 +1558,9 @@ class _MangaDetailViewState extends ConsumerState final manga = widget.manga!; final source = - getSource(widget.manga!.lang!, widget.manga!.source!)!; - final baseUrl = - ref.watch(sourceBaseUrlProvider(source: source)); - String url = widget.manga!.link!.startsWith('/') - ? "$baseUrl${widget.manga!.link!}" - : widget.manga!.link!; + getSource(widget.manga!.lang!, widget.manga!.source!); + final url = + "${source!.baseUrl}${widget.manga!.link!.getUrlWithoutDomain}"; Map data = { 'url': url, diff --git a/lib/modules/manga/reader/reader_view.dart b/lib/modules/manga/reader/reader_view.dart index 08d2893..9034024 100644 --- a/lib/modules/manga/reader/reader_view.dart +++ b/lib/modules/manga/reader/reader_view.dart @@ -25,6 +25,7 @@ import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_pr import 'package:mangayomi/modules/widgets/custom_draggable_tabbar.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/storage_provider.dart'; +import 'package:mangayomi/utils/extensions/string_extensions.dart'; import 'package:mangayomi/utils/utils.dart'; import 'package:mangayomi/modules/manga/reader/providers/push_router.dart'; import 'package:mangayomi/services/get_chapter_pages.dart'; @@ -301,7 +302,8 @@ class _MangaChapterPageGalleryState width: 35, decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), - color: context.secondaryColor.withValues(alpha: 0.4)), + color: + context.secondaryColor.withValues(alpha: 0.4)), ), ), Row( @@ -721,8 +723,9 @@ class _MangaChapterPageGalleryState l10n.image_loading_error, style: TextStyle( color: Colors.white - .withValues(alpha: - 0.7)), + .withValues( + alpha: + 0.7)), ), Padding( padding: @@ -1336,9 +1339,8 @@ class _MangaChapterPageGalleryState onPressed: () async { final manga = chapter.manga.value!; final source = getSource(manga.lang!, manga.source!)!; - String url = chapter.url!.startsWith('/') - ? "${source.baseUrl}/${chapter.url!}" - : chapter.url!; + final url = + "${source.baseUrl}${chapter.url!.getUrlWithoutDomain}"; Map data = { 'url': url, 'sourceId': source.id.toString(), diff --git a/lib/utils/extensions/string_extensions.dart b/lib/utils/extensions/string_extensions.dart index e765f87..8b803f9 100644 --- a/lib/utils/extensions/string_extensions.dart +++ b/lib/utils/extensions/string_extensions.dart @@ -43,6 +43,18 @@ extension StringExtensions on String { source); } + String get getUrlWithoutDomain { + final uri = Uri.parse(replaceAll(' ', '%20')); + String out = uri.path; + if (uri.query.isNotEmpty) { + out += '?${uri.query}'; + } + if (uri.fragment.isNotEmpty) { + out += '#${uri.fragment}'; + } + return out; + } + bool isMediaVideo() { return [ "3gp",