Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add custom Thumbnail Url. Support backup & restore #1059

Merged
merged 7 commits into from
Feb 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
Original file line number Diff line number Diff line change
Expand Up @@ -55,22 +55,22 @@ fun Manga.copyFrom(other: SManga): Manga {
// SY -->
val author = other.author ?: ogAuthor
val artist = other.artist ?: ogArtist
val thumbnailUrl = other.thumbnail_url ?: ogThumbnailUrl
val description = other.description ?: ogDescription
val genres = if (other.genre != null) {
other.getGenres()
} else {
ogGenre
}
// SY <--
val thumbnailUrl = other.thumbnail_url ?: thumbnailUrl
return this.copy(
// SY -->
ogAuthor = author,
ogArtist = artist,
ogThumbnailUrl = thumbnailUrl,
ogDescription = description,
ogGenre = genres,
// SY <--
thumbnailUrl = thumbnailUrl,
// SY -->
ogStatus = other.status.toLong(),
// SY <--
Expand All @@ -86,11 +86,11 @@ fun SManga.toDomainManga(sourceId: Long): Manga {
ogTitle = title,
ogArtist = artist,
ogAuthor = author,
ogThumbnailUrl = thumbnail_url,
ogDescription = description,
ogGenre = getGenres(),
ogStatus = status.toLong(),
// SY <--
thumbnailUrl = thumbnail_url,
updateStrategy = update_strategy,
initialized = initialized,
source = sourceId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ private fun BrowseSourceComfortableGridItem(
mangaId = manga.id,
sourceId = manga.source,
isMangaFavorite = manga.favorite,
url = manga.thumbnailUrl,
ogUrl = manga.thumbnailUrl,
lastModified = manga.coverLastModified,
),
coverAlpha = if (manga.favorite) CommonMangaItemDefaults.BrowseFavoriteCoverAlpha else 1f,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ private fun BrowseSourceCompactGridItem(
mangaId = manga.id,
sourceId = manga.source,
isMangaFavorite = manga.favorite,
url = manga.thumbnailUrl,
ogUrl = manga.thumbnailUrl,
lastModified = manga.coverLastModified,
),
coverAlpha = if (manga.favorite) CommonMangaItemDefaults.BrowseFavoriteCoverAlpha else 1f,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ private fun BrowseSourceListItem(
mangaId = manga.id,
sourceId = manga.source,
isMangaFavorite = manga.favorite,
url = manga.thumbnailUrl,
ogUrl = manga.thumbnailUrl,
lastModified = manga.coverLastModified,
),
coverAlpha = if (manga.favorite) CommonMangaItemDefaults.BrowseFavoriteCoverAlpha else 1f,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ class HistoryScreenModelStateProvider : PreviewParameterProvider<HistoryScreenMo
mangaId = Random.nextLong(),
sourceId = Random.nextLong(),
isMangaFavorite = Random.nextBoolean(),
url = "https://example.com/cover.png",
ogUrl = "https://example.com/cover.png",
lastModified = Random.nextLong(),
),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ internal class HistoryWithRelationsProvider : PreviewParameterProvider<HistoryWi
mangaId = 3L,
sourceId = 4L,
isMangaFavorite = false,
url = "https://example.com/cover.png",
ogUrl = "https://example.com/cover.png",
lastModified = 5L,
),
)
Expand All @@ -39,7 +39,7 @@ internal class HistoryWithRelationsProvider : PreviewParameterProvider<HistoryWi
mangaId = 3L,
sourceId = 4L,
isMangaFavorite = false,
url = "https://example.com/cover.png",
ogUrl = "https://example.com/cover.png",
lastModified = 5L,
),
)
Expand All @@ -58,7 +58,7 @@ internal class HistoryWithRelationsProvider : PreviewParameterProvider<HistoryWi
mangaId = 3L,
sourceId = 4L,
isMangaFavorite = false,
url = "https://example.com/cover.png",
ogUrl = "https://example.com/cover.png",
lastModified = 5L,
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ internal fun LibraryComfortableGrid(
mangaId = manga.id,
sourceId = manga.source,
isMangaFavorite = manga.favorite,
url = manga.thumbnailUrl,
ogUrl = manga.thumbnailUrl,
lastModified = manga.coverLastModified,
),
coverBadgeStart = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ internal fun LibraryCompactGrid(
mangaId = manga.id,
sourceId = manga.source,
isMangaFavorite = manga.favorite,
url = manga.thumbnailUrl,
ogUrl = manga.thumbnailUrl,
lastModified = manga.coverLastModified,
),
coverBadgeStart = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ internal fun LibraryList(
mangaId = manga.id,
sourceId = manga.source,
isMangaFavorite = manga.favorite,
url = manga.thumbnailUrl,
ogUrl = manga.thumbnailUrl,
lastModified = manga.coverLastModified,
),
badge = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ private fun Manga.toBackupManga(/* SY --> */customMangaInfo: CustomMangaInfo?/*
backupManga.customTitle = it.title
backupManga.customArtist = it.artist
backupManga.customAuthor = it.author
backupManga.customThumbnailUrl = it.thumbnailUrl
backupManga.customDescription = it.description
backupManga.customGenre = it.genre
backupManga.customStatus = it.status?.toInt() ?: 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ data class BackupManga(
@ProtoNumber(600) var mergedMangaReferences: List<BackupMergedMangaReference> = emptyList(),
@ProtoNumber(601) var flatMetadata: BackupFlatMetadata? = null,
@ProtoNumber(602) var customStatus: Int = 0,
@ProtoNumber(603) var customThumbnailUrl: String? = null,
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh right 800 is for j2k lol


// J2K specific values
@ProtoNumber(800) var customTitle: String? = null,
Expand All @@ -53,6 +54,7 @@ data class BackupManga(
// skipping 803 due to using duplicate value in previous builds
@ProtoNumber(804) var customDescription: String? = null,
@ProtoNumber(805) var customGenre: List<String>? = null,

) {
fun getMangaImpl(): Manga {
return Manga.create().copy(
Expand All @@ -61,11 +63,11 @@ data class BackupManga(
ogTitle = [email protected],
ogArtist = [email protected],
ogAuthor = [email protected],
ogThumbnailUrl = [email protected],
ogDescription = [email protected],
ogGenre = [email protected],
ogStatus = [email protected](),
// SY <--
thumbnailUrl = [email protected],
favorite = [email protected],
source = [email protected],
dateAdded = [email protected],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ class MangaRestorer(
ogArtist = newer.artist,
ogDescription = newer.description,
ogGenre = newer.genre,
thumbnailUrl = newer.thumbnailUrl,
ogThumbnailUrl = newer.thumbnailUrl,
ogStatus = newer.status,
// SY <--
initialized = this.initialized || newer.initialized,
Expand Down Expand Up @@ -507,6 +507,7 @@ class MangaRestorer(
if (customTitle != null ||
customArtist != null ||
customAuthor != null ||
customThumbnailUrl != null ||
customDescription != null ||
customGenre != null ||
customStatus != 0
Expand All @@ -516,6 +517,7 @@ class MangaRestorer(
title = customTitle,
author = customAuthor,
artist = customArtist,
thumbnailUrl = customThumbnailUrl,
description = customDescription,
genre = customGenre,
status = customStatus.takeUnless { it == 0 }?.toLong(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,7 @@ class LibraryScreenModel(
title = editedTitle.nullIfBlank(),
author = manga.author.takeUnless { it == manga.ogAuthor },
artist = manga.artist.takeUnless { it == manga.ogArtist },
thumbnailUrl = manga.thumbnailUrl.takeUnless { it == manga.ogThumbnailUrl },
description = manga.description.takeUnless { it == manga.ogDescription },
genre = manga.genre.takeUnless { it == manga.ogGenre },
status = manga.status.takeUnless { it == manga.ogStatus }?.toLong(),
Expand Down
14 changes: 14 additions & 0 deletions app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ fun EditMangaDialog(
title: String?,
author: String?,
artist: String?,
thumbnailUrl: String?,
description: String?,
tags: List<String>?,
status: Long?,
Expand All @@ -69,6 +70,7 @@ fun EditMangaDialog(
binding.title.text.toString(),
binding.mangaAuthor.text.toString(),
binding.mangaArtist.text.toString(),
binding.thumbnailUrl.text.toString(),
binding.mangaDescription.text.toString(),
binding.mangaGenresTags.getTextStrings(),
binding.status.selectedItemPosition.let {
Expand Down Expand Up @@ -157,6 +159,7 @@ private fun onViewCreated(manga: Manga, context: Context, binding: EditMangaDial
binding.title.hint = context.stringResource(SYMR.strings.title_hint, manga.url)
binding.mangaAuthor.setText(manga.author.orEmpty())
binding.mangaArtist.setText(manga.artist.orEmpty())
binding.thumbnailUrl.setText(manga.thumbnailUrl.orEmpty())
binding.mangaDescription.setText(manga.description.orEmpty())
binding.mangaGenresTags.setChips(manga.genre.orEmpty().dropBlank(), scope)
} else {
Expand All @@ -169,19 +172,30 @@ private fun onViewCreated(manga: Manga, context: Context, binding: EditMangaDial
if (manga.artist != manga.ogArtist) {
binding.mangaArtist.append(manga.artist.orEmpty())
}
if (manga.thumbnailUrl != manga.ogThumbnailUrl) {
binding.thumbnailUrl.append(manga.thumbnailUrl.orEmpty())
}
if (manga.description != manga.ogDescription) {
binding.mangaDescription.append(manga.description.orEmpty())
}
binding.mangaGenresTags.setChips(manga.genre.orEmpty().dropBlank(), scope)

binding.title.hint = context.stringResource(SYMR.strings.title_hint, manga.ogTitle)

binding.mangaAuthor.hint = context.stringResource(SYMR.strings.author_hint, manga.ogAuthor ?: "")
binding.mangaArtist.hint = context.stringResource(SYMR.strings.artist_hint, manga.ogArtist ?: "")
binding.mangaDescription.hint =
context.stringResource(
SYMR.strings.description_hint,
manga.ogDescription?.takeIf { it.isNotBlank() }?.let { it.replace("\n", " ").chop(20) } ?: ""
)
binding.thumbnailUrl.hint =
context.stringResource(
SYMR.strings.thumbnail_url_hint,
manga.ogThumbnailUrl?.let {
it.chop(40) + if (it.length > 46) "." + it.substringAfterLast(".").chop(6) else ""
} ?: ""
)
}
binding.mangaGenresTags.clearFocus()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,7 @@ class MangaScreenModel(
title: String?,
author: String?,
artist: String?,
thumbnailUrl: String?,
description: String?,
tags: List<String>?,
status: Long?,
Expand All @@ -498,11 +499,13 @@ class MangaScreenModel(
val newTitle = if (title.isNullOrBlank()) manga.url else title.trim()
val newAuthor = author?.trimOrNull()
val newArtist = artist?.trimOrNull()
val newThumbnailUrl = thumbnailUrl?.trimOrNull()
val newDesc = description?.trimOrNull()
manga = manga.copy(
ogTitle = newTitle,
ogAuthor = author?.trimOrNull(),
ogArtist = artist?.trimOrNull(),
ogThumbnailUrl = thumbnailUrl?.trimOrNull(),
ogDescription = description?.trimOrNull(),
ogGenre = tags?.nullIfEmpty(),
ogStatus = status ?: 0,
Expand All @@ -516,6 +519,7 @@ class MangaScreenModel(
title = newTitle,
author = newAuthor,
artist = newArtist,
thumbnailUrl = newThumbnailUrl,
description = newDesc,
genre = tags,
status = status,
Expand All @@ -534,6 +538,7 @@ class MangaScreenModel(
title?.trimOrNull(),
author?.trimOrNull(),
artist?.trimOrNull(),
thumbnailUrl?.trimOrNull(),
description?.trimOrNull(),
genre,
status.takeUnless { it == state.manga.ogStatus },
Expand Down
16 changes: 16 additions & 0 deletions app/src/main/res/layout/edit_manga_dialog.xml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,22 @@

</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp">

<eu.kanade.tachiyomi.widget.TachiyomiTextInputEditText
android:id="@+id/thumbnail_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text|textMultiLine"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent"
Expand Down
2 changes: 1 addition & 1 deletion data/src/main/java/tachiyomi/data/history/HistoryMapper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ object HistoryMapper {
mangaId = mangaId,
sourceId = sourceId,
isMangaFavorite = isFavorite,
url = thumbnailUrl,
ogUrl = thumbnailUrl,
lastModified = coverLastModified,
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class CustomMangaRepositoryImpl(context: Context) : CustomMangaRepository {
mangaInfo.title == null &&
mangaInfo.author == null &&
mangaInfo.artist == null &&
mangaInfo.thumbnailUrl == null &&
mangaInfo.description == null &&
mangaInfo.genre == null &&
mangaInfo.status == null
Expand Down Expand Up @@ -72,6 +73,7 @@ class CustomMangaRepositoryImpl(context: Context) : CustomMangaRepository {
val title: String? = null,
val author: String? = null,
val artist: String? = null,
val thumbnailUrl: String? = null,
val description: String? = null,
val genre: List<String>? = null,
val status: Long? = null,
Expand All @@ -82,6 +84,7 @@ class CustomMangaRepositoryImpl(context: Context) : CustomMangaRepository {
title = [email protected]?.takeUnless { it.isBlank() },
author = [email protected],
artist = [email protected],
thumbnailUrl = [email protected],
description = [email protected],
genre = [email protected],
status = [email protected]?.takeUnless { it == 0L },
Expand All @@ -94,6 +97,7 @@ class CustomMangaRepositoryImpl(context: Context) : CustomMangaRepository {
title,
author,
artist,
thumbnailUrl,
description,
genre,
status,
Expand Down
4 changes: 2 additions & 2 deletions data/src/main/java/tachiyomi/data/manga/MangaMapper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ object MangaMapper {
ogTitle = title,
ogArtist = artist,
ogAuthor = author,
ogThumbnailUrl = thumbnailUrl,
ogDescription = description,
ogGenre = genre,
ogStatus = status,
// SY <--
thumbnailUrl = thumbnailUrl,
updateStrategy = updateStrategy,
initialized = initialized,
lastModifiedAt = lastModifiedAt,
Expand Down Expand Up @@ -150,7 +150,7 @@ object MangaMapper {
ogDescription = libraryView.description,
ogGenre = libraryView.genre,
ogStatus = libraryView.status,
thumbnailUrl = libraryView.thumbnail_url,
ogThumbnailUrl = libraryView.thumbnail_url,
updateStrategy = libraryView.update_strategy,
initialized = libraryView.initialized,
fetchInterval = libraryView.calculate_interval.toInt(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class UpdatesRepositoryImpl(
mangaId = mangaId,
sourceId = sourceId,
isMangaFavorite = favorite,
url = thumbnailUrl,
ogUrl = thumbnailUrl,
lastModified = coverLastModified,
),
)
Expand All @@ -107,7 +107,7 @@ class UpdatesRepositoryImpl(
mangaId = updatesView.mangaId,
sourceId = updatesView.source,
isMangaFavorite = updatesView.favorite,
url = updatesView.thumbnailUrl,
ogUrl = updatesView.thumbnailUrl,
lastModified = updatesView.coverLastModified,
),
)
Expand Down
Loading
Loading