From 889b20797e449aa64bde381754f3ef6b4ef76310 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sat, 24 Aug 2024 20:30:19 +0700 Subject: [PATCH] fix(manga/details): Fix "Theme buttons based on cover" Palette doesn't like copy's bitmap, could be because of mutability is disabled or perhaps because it's set to HARDWARE configured, not entirely sure, because Google didn't document it. Classic Google behaviour :^) --- CHANGELOG.md | 1 + .../tachiyomi/ui/manga/MangaDetailsController.kt | 11 ++++++----- .../kanade/tachiyomi/util/manga/MangaCoverMetadata.kt | 7 +++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c325556c5..ee474463cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ --> ## Fixes - Fixed crashes caused by certain extension implementation +- Fixed "Theme buttons based on cover" doesn't work properly ## Other - More StorIO to SQLDelight migration effort diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt index 65cb3cefb1..42860bd38c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt @@ -586,15 +586,16 @@ class MangaDetailsController : ) } ?: drawable - val bitmap = (copy as? BitmapDrawable)?.bitmap + // Don't use 'copy', Palette doesn't like its bitmap, could be caused by mutability is disabled, + // or perhaps because it's HARDWARE configured, not entirely sure why, the behaviour is not + // documented by Google. + val bitmap = (drawable as? BitmapDrawable)?.bitmap // Generate the Palette on a background thread. if (bitmap != null) { - Palette.from(bitmap).generate { - if (it == null) return@generate + Palette.from(bitmap).generate { palette -> if (presenter.preferences.themeMangaDetails().get()) { launchUI { - view.context.getResourceColor(R.attr.colorSecondary) - val vibrantColor = it.getBestColor() ?: return@launchUI + val vibrantColor = palette?.getBestColor() ?: return@launchUI manga?.vibrantCoverColor = vibrantColor setAccentColorValue(vibrantColor) setHeaderColorValue(vibrantColor) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/manga/MangaCoverMetadata.kt b/app/src/main/java/eu/kanade/tachiyomi/util/manga/MangaCoverMetadata.kt index 111b3f0765..41ed89f945 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/manga/MangaCoverMetadata.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/manga/MangaCoverMetadata.kt @@ -68,14 +68,13 @@ object MangaCoverMetadata { } val bitmap = BitmapFactory.decodeFile(file.filePath, options) if (bitmap != null) { - Palette.from(bitmap).generate { - if (it == null) return@generate + Palette.from(bitmap).generate { palette -> if (isInLibrary) { - it.dominantSwatch?.let { swatch -> + palette?.dominantSwatch?.let { swatch -> addCoverColor(mangaId, swatch.rgb, swatch.titleTextColor) } } - val color = it.getBestColor() ?: return@generate + val color = palette?.getBestColor() ?: return@generate setVibrantColor(mangaId, color) } }