Add WebView button to SourceFeedScreen

This commit is contained in:
Cuong M. Tran 2024-05-02 13:42:50 +07:00
parent 329417c431
commit 01007bf870
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
2 changed files with 32 additions and 0 deletions

View file

@ -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<Manga>,
// 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),
)
},

View file

@ -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) {