Implement copying of Manga URL to Clipboard (#8587)

feat: Implement copying of Manga URL to Clipboard
(cherry picked from commit ef3a6c80a7638209a5a41a0923bd9195380429aa)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
This commit is contained in:
Joseph Olugbohunmi 2022-11-22 05:09:23 +01:00 committed by Jobobby04
parent 6a79e90b53
commit c07ccf7943
3 changed files with 21 additions and 0 deletions

View File

@ -102,6 +102,7 @@ fun MangaScreen(
onDownloadChapter: ((List<ChapterItem>, ChapterDownloadAction) -> Unit)?, onDownloadChapter: ((List<ChapterItem>, ChapterDownloadAction) -> Unit)?,
onAddToLibraryClicked: () -> Unit, onAddToLibraryClicked: () -> Unit,
onWebViewClicked: (() -> Unit)?, onWebViewClicked: (() -> Unit)?,
onWebViewLongClicked: (() -> Unit)?,
onTrackingClicked: (() -> Unit)?, onTrackingClicked: (() -> Unit)?,
onTagClicked: (String) -> Unit, onTagClicked: (String) -> Unit,
onFilterButtonClicked: () -> Unit, onFilterButtonClicked: () -> Unit,
@ -148,6 +149,7 @@ fun MangaScreen(
onDownloadChapter = onDownloadChapter, onDownloadChapter = onDownloadChapter,
onAddToLibraryClicked = onAddToLibraryClicked, onAddToLibraryClicked = onAddToLibraryClicked,
onWebViewClicked = onWebViewClicked, onWebViewClicked = onWebViewClicked,
onWebViewLongClicked = onWebViewLongClicked,
onTrackingClicked = onTrackingClicked, onTrackingClicked = onTrackingClicked,
onTagClicked = onTagClicked, onTagClicked = onTagClicked,
onFilterClicked = onFilterButtonClicked, onFilterClicked = onFilterButtonClicked,
@ -186,6 +188,7 @@ fun MangaScreen(
onDownloadChapter = onDownloadChapter, onDownloadChapter = onDownloadChapter,
onAddToLibraryClicked = onAddToLibraryClicked, onAddToLibraryClicked = onAddToLibraryClicked,
onWebViewClicked = onWebViewClicked, onWebViewClicked = onWebViewClicked,
onWebViewLongClicked = onWebViewLongClicked,
onTrackingClicked = onTrackingClicked, onTrackingClicked = onTrackingClicked,
onTagClicked = onTagClicked, onTagClicked = onTagClicked,
onFilterButtonClicked = onFilterButtonClicked, onFilterButtonClicked = onFilterButtonClicked,
@ -227,6 +230,7 @@ private fun MangaScreenSmallImpl(
onDownloadChapter: ((List<ChapterItem>, ChapterDownloadAction) -> Unit)?, onDownloadChapter: ((List<ChapterItem>, ChapterDownloadAction) -> Unit)?,
onAddToLibraryClicked: () -> Unit, onAddToLibraryClicked: () -> Unit,
onWebViewClicked: (() -> Unit)?, onWebViewClicked: (() -> Unit)?,
onWebViewLongClicked: (() -> Unit)?,
onTrackingClicked: (() -> Unit)?, onTrackingClicked: (() -> Unit)?,
onTagClicked: (String) -> Unit, onTagClicked: (String) -> Unit,
onFilterClicked: () -> Unit, onFilterClicked: () -> Unit,
@ -403,6 +407,7 @@ private fun MangaScreenSmallImpl(
trackingCount = state.trackingCount, trackingCount = state.trackingCount,
onAddToLibraryClicked = onAddToLibraryClicked, onAddToLibraryClicked = onAddToLibraryClicked,
onWebViewClicked = onWebViewClicked, onWebViewClicked = onWebViewClicked,
onWebViewLongClicked = onWebViewLongClicked,
onTrackingClicked = onTrackingClicked, onTrackingClicked = onTrackingClicked,
onEditCategory = onEditCategoryClicked, onEditCategory = onEditCategoryClicked,
// SY --> // SY -->
@ -505,6 +510,7 @@ fun MangaScreenLargeImpl(
onDownloadChapter: ((List<ChapterItem>, ChapterDownloadAction) -> Unit)?, onDownloadChapter: ((List<ChapterItem>, ChapterDownloadAction) -> Unit)?,
onAddToLibraryClicked: () -> Unit, onAddToLibraryClicked: () -> Unit,
onWebViewClicked: (() -> Unit)?, onWebViewClicked: (() -> Unit)?,
onWebViewLongClicked: (() -> Unit)?,
onTrackingClicked: (() -> Unit)?, onTrackingClicked: (() -> Unit)?,
onTagClicked: (String) -> Unit, onTagClicked: (String) -> Unit,
onFilterButtonClicked: () -> Unit, onFilterButtonClicked: () -> Unit,
@ -669,6 +675,7 @@ fun MangaScreenLargeImpl(
trackingCount = state.trackingCount, trackingCount = state.trackingCount,
onAddToLibraryClicked = onAddToLibraryClicked, onAddToLibraryClicked = onAddToLibraryClicked,
onWebViewClicked = onWebViewClicked, onWebViewClicked = onWebViewClicked,
onWebViewLongClicked = onWebViewLongClicked,
onTrackingClicked = onTrackingClicked, onTrackingClicked = onTrackingClicked,
onEditCategory = onEditCategoryClicked, onEditCategory = onEditCategoryClicked,
// SY --> // SY -->

View File

@ -160,6 +160,7 @@ fun MangaActionRow(
trackingCount: Int, trackingCount: Int,
onAddToLibraryClicked: () -> Unit, onAddToLibraryClicked: () -> Unit,
onWebViewClicked: (() -> Unit)?, onWebViewClicked: (() -> Unit)?,
onWebViewLongClicked: (() -> Unit)?,
onTrackingClicked: (() -> Unit)?, onTrackingClicked: (() -> Unit)?,
onEditCategory: (() -> Unit)?, onEditCategory: (() -> Unit)?,
// SY --> // SY -->
@ -197,6 +198,7 @@ fun MangaActionRow(
icon = Icons.Outlined.Public, icon = Icons.Outlined.Public,
color = defaultActionButtonColor, color = defaultActionButtonColor,
onClick = onWebViewClicked, onClick = onWebViewClicked,
onLongClick = onWebViewLongClicked,
) )
} }
// SY --> // SY -->

View File

@ -77,6 +77,7 @@ import eu.kanade.tachiyomi.ui.webview.WebViewActivity
import eu.kanade.tachiyomi.util.chapter.getNextUnread import eu.kanade.tachiyomi.util.chapter.getNextUnread
import eu.kanade.tachiyomi.util.lang.launchUI import eu.kanade.tachiyomi.util.lang.launchUI
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
import eu.kanade.tachiyomi.util.system.copyToClipboard
import eu.kanade.tachiyomi.util.system.toShareIntent import eu.kanade.tachiyomi.util.system.toShareIntent
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
import exh.md.similar.MangaDexSimilarController import exh.md.similar.MangaDexSimilarController
@ -152,6 +153,7 @@ class MangaScreen(
} }
}.takeIf { isHttpSource }, }.takeIf { isHttpSource },
// SY <-- // SY <--
onWebViewLongClicked = { copyMangaUrl(context, screenModel.manga, screenModel.source) }.takeIf { isHttpSource },
onTrackingClicked = screenModel::showTrackDialog.takeIf { successState.trackingAvailable }, onTrackingClicked = screenModel::showTrackDialog.takeIf { successState.trackingAvailable },
onTagClicked = { performGenreSearch(router, it, screenModel.source!!) }, onTagClicked = { performGenreSearch(router, it, screenModel.source!!) },
onFilterButtonClicked = screenModel::showSettingsDialog, onFilterButtonClicked = screenModel::showSettingsDialog,
@ -433,6 +435,16 @@ class MangaScreen(
// SY <-- // SY <--
} }
/**
* Copy Manga URL to Clipboard
*/
private fun copyMangaUrl(context: Context, manga_: Manga?, source_: Source?) {
val manga = manga_ ?: return
val source = source_ as? HttpSource ?: return
val url = source.getMangaUrl(manga.toSManga())
context.copyToClipboard(url, url)
}
// SY --> // SY -->
private fun openMetadataViewer(router: Router, manga: Manga) { private fun openMetadataViewer(router: Router, manga: Manga) {
router.pushController(MetadataViewController(manga)) router.pushController(MetadataViewController(manga))