From 01007bf870e46b5834569611a79570326eaaeb4b Mon Sep 17 00:00:00 2001 From: "Cuong M. Tran" Date: Thu, 2 May 2024 13:42:50 +0700 Subject: [PATCH] Add WebView button to SourceFeedScreen --- .../presentation/browse/SourceFeedScreen.kt | 20 +++++++++++++++++++ .../ui/browse/source/feed/SourceFeedScreen.kt | 12 +++++++++++ 2 files changed, 32 insertions(+) diff --git a/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt index 66cee3491..327b46bd3 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt @@ -3,6 +3,10 @@ package eu.kanade.presentation.browse import androidx.compose.animation.Crossfade import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Public +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.runtime.ReadOnlyComposable @@ -34,6 +38,7 @@ import tachiyomi.presentation.core.components.material.topSmallPaddingValues import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.screens.LoadingScreen import tachiyomi.presentation.core.util.plus +import tachiyomi.source.local.LocalSource sealed class SourceFeedUI { abstract val id: Long @@ -105,6 +110,7 @@ fun SourceFeedScreen( onSearchQueryChange: (String?) -> Unit, getMangaState: @Composable (Manga) -> State, // KMK --> + onWebViewClick: () -> Unit, sourceId: Long, onLongClickManga: (Manga) -> Unit, bulkFavoriteScreenModel: BulkFavoriteScreenModel, @@ -140,6 +146,7 @@ fun SourceFeedScreen( scrollBehavior = scrollBehavior, onClickSearch = onClickSearch, // KMK --> + onWebViewClick = onWebViewClick, sourceId = sourceId, toggleSelectionMode = bulkFavoriteScreenModel::toggleSelectionMode, // KMK <-- @@ -272,6 +279,7 @@ fun SourceFeedToolbar( scrollBehavior: TopAppBarScrollBehavior, onClickSearch: (String) -> Unit, // KMK --> + onWebViewClick: () -> Unit, sourceId: Long, toggleSelectionMode: () -> Unit, // KMK <-- @@ -292,6 +300,18 @@ fun SourceFeedToolbar( ) ) persistentListOf( + if (sourceId != LocalSource.ID) { + IconButton( + onClick = onWebViewClick + ) { + Icon( + imageVector = Icons.Outlined.Public, + contentDescription = stringResource(MR.strings.action_web_view), + ) + } + } else { + null + }, SourceSettingsButton(sourceId), ) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt index feb5976ae..08e052f8a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt @@ -15,6 +15,7 @@ import eu.kanade.presentation.browse.components.SourceFeedAddDialog import eu.kanade.presentation.browse.components.SourceFeedDeleteDialog import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel @@ -24,6 +25,7 @@ import eu.kanade.tachiyomi.ui.browse.RemoveMangaDialog import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen import eu.kanade.tachiyomi.ui.browse.source.browse.SourceFilterDialog import eu.kanade.tachiyomi.ui.manga.MangaScreen +import eu.kanade.tachiyomi.ui.webview.WebViewScreen import eu.kanade.tachiyomi.util.system.toast import exh.md.follows.MangaDexFollowsScreen import exh.ui.ifSourcesLoaded @@ -78,6 +80,16 @@ class SourceFeedScreen(val sourceId: Long) : Screen() { onSearchQueryChange = screenModel::search, getMangaState = { screenModel.getManga(initialManga = it) }, // KMK --> + onWebViewClick = { + val source = screenModel.source as? HttpSource ?: return@SourceFeedScreen + navigator.push( + WebViewScreen( + url = source.baseUrl, + initialTitle = source.name, + sourceId = source.id, + ), + ) + }, sourceId = screenModel.source.id, onLongClickManga = { manga -> if (!bulkFavoriteState.selectionMode) {